<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: I am glad I am not a CSci prof</title>
	<atom:link href="http://almaer.com/blog/i-am-glad-i-am-not-a-csci-prof/feed" rel="self" type="application/rss+xml" />
	<link>http://almaer.com/blog/i-am-glad-i-am-not-a-csci-prof</link>
	<description>blogging about life, the universe, and everything tech</description>
	<lastBuildDate>Sat, 08 Sep 2012 07:06:53 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Cay Horstmann</title>
		<link>http://almaer.com/blog/i-am-glad-i-am-not-a-csci-prof/comment-page-1#comment-37267</link>
		<dc:creator>Cay Horstmann</dc:creator>
		<pubDate>Wed, 02 May 2007 16:50:42 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog2/i-am-glad-i-am-not-a-csci-prof#comment-37267</guid>
		<description>I am a computer science professor, and I agree that it is depressing for the students (and teachers) when they realize that they will never know everything about the Java language and library that there is to know.
But what does that have to do with your example? This syntax is unfamiliar to you and me because it is new. Well, every Java syntax is unfamiliar to students because it is new to them.
public Employee(String name, String department) {
super(name);
this.department = department;
}
That&#039;s easy for you, but it is no picnic for a freshman.
Or how about
Writer out = new FileWriter(&quot;output.txt&quot;);
try {
...
} finally {
out.close();
}
Piece of cake, right?
Umm, I would prefer if my students learned

with (Writer out = new FileWriter(&quot;output.txt&quot;)) {
...
}

Now you may say &quot;If you let them use with, shouldn&#039;t you teach them how it is implemented?&quot;
If I follwed that logic, I surely should tell them how FileWriter is implemented. Let&#039;s see. FileWriter is a simple wrapper around FileOutputStream. Here is the FileOutputStream constructor
public FileOutputStream(File file, boolean append)
throws FileNotFoundException
{
String name = (file != null ? file.getPath() : null);
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(name);
}
if (name == null) {
throw new NullPointerException();
}
fd = new FileDescriptor();
this.append = append;
if (append) {
openAppend(name);
} else {
open(name);
}
}

Ok, boys and girls. Listen carefully, for we have a long road ahead of us. Let me tell you about the SecurityManager...
I don&#039;t think so.

</description>
		<content:encoded><![CDATA[<p>I am a computer science professor, and I agree that it is depressing for the students (and teachers) when they realize that they will never know everything about the Java language and library that there is to know.<br />
But what does that have to do with your example? This syntax is unfamiliar to you and me because it is new. Well, every Java syntax is unfamiliar to students because it is new to them.<br />
public Employee(String name, String department) {<br />
super(name);<br />
this.department = department;<br />
}<br />
That&#8217;s easy for you, but it is no picnic for a freshman.<br />
Or how about<br />
Writer out = new FileWriter(&#8221;output.txt&#8221;);<br />
try {<br />
&#8230;<br />
} finally {<br />
out.close();<br />
}<br />
Piece of cake, right?<br />
Umm, I would prefer if my students learned</p>
<p>with (Writer out = new FileWriter(&#8221;output.txt&#8221;)) {<br />
&#8230;<br />
}</p>
<p>Now you may say &#8220;If you let them use with, shouldn&#8217;t you teach them how it is implemented?&#8221;<br />
If I follwed that logic, I surely should tell them how FileWriter is implemented. Let&#8217;s see. FileWriter is a simple wrapper around FileOutputStream. Here is the FileOutputStream constructor<br />
public FileOutputStream(File file, boolean append)<br />
throws FileNotFoundException<br />
{<br />
String name = (file != null ? file.getPath() : null);<br />
SecurityManager security = System.getSecurityManager();<br />
if (security != null) {<br />
security.checkWrite(name);<br />
}<br />
if (name == null) {<br />
throw new NullPointerException();<br />
}<br />
fd = new FileDescriptor();<br />
this.append = append;<br />
if (append) {<br />
openAppend(name);<br />
} else {<br />
open(name);<br />
}<br />
}</p>
<p>Ok, boys and girls. Listen carefully, for we have a long road ahead of us. Let me tell you about the SecurityManager&#8230;<br />
I don&#8217;t think so.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Augusto</title>
		<link>http://almaer.com/blog/i-am-glad-i-am-not-a-csci-prof/comment-page-1#comment-37266</link>
		<dc:creator>Augusto</dc:creator>
		<pubDate>Tue, 01 May 2007 20:34:43 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog2/i-am-glad-i-am-not-a-csci-prof#comment-37266</guid>
		<description>You should be teaching algorithms, software engineering, language and compiler theory, etc to students, not arcane language constructs or Java/C#/Scale/Ruby 101.

So in this case, unless you are trying to teach about closures, your students shouldn&#039;t see this code, but hopefully they&#039;ll be able to read a document and understand it someday (if you are a decent professor).
</description>
		<content:encoded><![CDATA[<p>You should be teaching algorithms, software engineering, language and compiler theory, etc to students, not arcane language constructs or Java/C#/Scale/Ruby 101.</p>
<p>So in this case, unless you are trying to teach about closures, your students shouldn&#8217;t see this code, but hopefully they&#8217;ll be able to read a document and understand it someday (if you are a decent professor).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dion Almaer</title>
		<link>http://almaer.com/blog/i-am-glad-i-am-not-a-csci-prof/comment-page-1#comment-37265</link>
		<dc:creator>Dion Almaer</dc:creator>
		<pubDate>Tue, 01 May 2007 01:47:11 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog2/i-am-glad-i-am-not-a-csci-prof#comment-37265</guid>
		<description>It was hand picked from the proposal itself. Since that is the only place to look at.... hardly like I scoured the world to find it ;)

Cheers,

Dion
</description>
		<content:encoded><![CDATA[<p>It was hand picked from the proposal itself. Since that is the only place to look at&#8230;. hardly like I scoured the world to find it ;)</p>
<p>Cheers,</p>
<p>Dion</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: afsina</title>
		<link>http://almaer.com/blog/i-am-glad-i-am-not-a-csci-prof/comment-page-1#comment-37264</link>
		<dc:creator>afsina</dc:creator>
		<pubDate>Mon, 30 Apr 2007 02:16:27 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog2/i-am-glad-i-am-not-a-csci-prof#comment-37264</guid>
		<description>generics for API design is an advanced topic. All langyages has advanced and complex sytax stuff. this features are not meant to be taught as undergrad lectures. Also, the example you show is an extreme and handpicked. lame.
</description>
		<content:encoded><![CDATA[<p>generics for API design is an advanced topic. All langyages has advanced and complex sytax stuff. this features are not meant to be taught as undergrad lectures. Also, the example you show is an extreme and handpicked. lame.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Colebourne</title>
		<link>http://almaer.com/blog/i-am-glad-i-am-not-a-csci-prof/comment-page-1#comment-37263</link>
		<dc:creator>Stephen Colebourne</dc:creator>
		<pubDate>Mon, 30 Apr 2007 01:52:18 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog2/i-am-glad-i-am-not-a-csci-prof#comment-37263</guid>
		<description>Is this a syntax issue? Or a semantic issue? That is the real question. For example, what about this syntax:

&lt;R, T extends java.io.Closeable, throws E&gt;
R with(T t, Closure&lt;T return R throws E&gt; block) throws E {
. try {
.. return block.invoke(t);
. } finally {
.. try { t.close(); } catch (IOException ex) {}
. }
}

</description>
		<content:encoded><![CDATA[<p>Is this a syntax issue? Or a semantic issue? That is the real question. For example, what about this syntax:</p>
<p>&lt;R, T extends java.io.Closeable, throws E&gt;<br />
R with(T t, Closure&lt;T return R throws E&gt; block) throws E {<br />
. try {<br />
.. return block.invoke(t);<br />
. } finally {<br />
.. try { t.close(); } catch (IOException ex) {}<br />
. }<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dion Almaer</title>
		<link>http://almaer.com/blog/i-am-glad-i-am-not-a-csci-prof/comment-page-1#comment-37262</link>
		<dc:creator>Dion Almaer</dc:creator>
		<pubDate>Mon, 30 Apr 2007 00:33:23 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog2/i-am-glad-i-am-not-a-csci-prof#comment-37262</guid>
		<description>Ricky,

I agree with a lot that you are saying. Closures are like the conditional tense. It was great when I was twelve and could use &quot;me gustaria&quot; to get points for using the conditional tense. Often closures are so clearly a better way of doing things, so you use them without knowing &quot;I am using a closure now&quot;.

I love closures. I use a Closure.java. It will be great to have them as first class citizens in Java.

However, I worry that we are strapping on too much to Java itself. We don&#039;t have to keep adding and adding and adding to Java the language. The beauty of Java is the top class VM and stdlib. Maybe we don&#039;t have to keep throwing mud on the ball to &quot;keep up with the jones&#039;&quot;.

Cheers,

Dion
</description>
		<content:encoded><![CDATA[<p>Ricky,</p>
<p>I agree with a lot that you are saying. Closures are like the conditional tense. It was great when I was twelve and could use &#8220;me gustaria&#8221; to get points for using the conditional tense. Often closures are so clearly a better way of doing things, so you use them without knowing &#8220;I am using a closure now&#8221;.</p>
<p>I love closures. I use a Closure.java. It will be great to have them as first class citizens in Java.</p>
<p>However, I worry that we are strapping on too much to Java itself. We don&#8217;t have to keep adding and adding and adding to Java the language. The beauty of Java is the top class VM and stdlib. Maybe we don&#8217;t have to keep throwing mud on the ball to &#8220;keep up with the jones&#8217;&#8221;.</p>
<p>Cheers,</p>
<p>Dion</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ricky Clarkson</title>
		<link>http://almaer.com/blog/i-am-glad-i-am-not-a-csci-prof/comment-page-1#comment-37261</link>
		<dc:creator>Ricky Clarkson</dc:creator>
		<pubDate>Sun, 29 Apr 2007 12:32:59 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog2/i-am-glad-i-am-not-a-csci-prof#comment-37261</guid>
		<description>I do teach Java, and I&#039;ll be happy for students to look at the documentation for &#039;with&#039;, and not worry about the funny notation for a while.  After all, they&#039;ll never actually need to write closure-accepting methods.

My students are more likely to use addActionListener() {
stuff..
}

and understand it, than they are the anonymous class route.

Java just keeps pushing the bar up for other languages.  Can you imagine a new popular statically typed language now without generics?  Soon we won&#039;t be able to imagine one without a good notation for closures.

By the way, I&#039;m not sure how you think closures will affect your data structures lectures, unless you cover useful constructs like map, fold (reduce), etc., in which case they would certainly make it easier.

Sure, the standard &quot;this is a drawing of a linked list, go and write your own&quot; lecture isn&#039;t going to be improved by closures, but isn&#039;t it time to move on from that?
</description>
		<content:encoded><![CDATA[<p>I do teach Java, and I&#8217;ll be happy for students to look at the documentation for &#8216;with&#8217;, and not worry about the funny notation for a while.  After all, they&#8217;ll never actually need to write closure-accepting methods.</p>
<p>My students are more likely to use addActionListener() {<br />
stuff..<br />
}</p>
<p>and understand it, than they are the anonymous class route.</p>
<p>Java just keeps pushing the bar up for other languages.  Can you imagine a new popular statically typed language now without generics?  Soon we won&#8217;t be able to imagine one without a good notation for closures.</p>
<p>By the way, I&#8217;m not sure how you think closures will affect your data structures lectures, unless you cover useful constructs like map, fold (reduce), etc., in which case they would certainly make it easier.</p>
<p>Sure, the standard &#8220;this is a drawing of a linked list, go and write your own&#8221; lecture isn&#8217;t going to be improved by closures, but isn&#8217;t it time to move on from that?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mathias</title>
		<link>http://almaer.com/blog/i-am-glad-i-am-not-a-csci-prof/comment-page-1#comment-37260</link>
		<dc:creator>Mathias</dc:creator>
		<pubDate>Sun, 29 Apr 2007 12:31:14 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog2/i-am-glad-i-am-not-a-csci-prof#comment-37260</guid>
		<description>Now that&#039;s some readable code. Java is getting closer to a write-only language.
</description>
		<content:encoded><![CDATA[<p>Now that&#8217;s some readable code. Java is getting closer to a write-only language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Romain Guy</title>
		<link>http://almaer.com/blog/i-am-glad-i-am-not-a-csci-prof/comment-page-1#comment-37259</link>
		<dc:creator>Romain Guy</dc:creator>
		<pubDate>Sun, 29 Apr 2007 11:01:08 +0000</pubDate>
		<guid isPermaLink="false">http://almaer.com/blog2/i-am-glad-i-am-not-a-csci-prof#comment-37259</guid>
		<description>And so Java became C++.
</description>
		<content:encoded><![CDATA[<p>And so Java became C++.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
