<?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"
	>
<channel>
	<title>Comments on: Programming Languages: Is newer always better?</title>
	<atom:link href="http://www.databasesandlife.com/programming-languages-is-newer-always-better/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.databasesandlife.com/programming-languages-is-newer-always-better/</link>
	<description>Adrian Smith's blog</description>
	<pubDate>Wed, 20 Aug 2008 02:57:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
		<item>
		<title>By: Nick</title>
		<link>http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-372</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Sun, 13 Apr 2008 15:07:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-372</guid>
		<description>Basically, you're right, though a few of the points are debatable. The example that I agree with most strongly is the last, auto-creation of variables. Didn't people learn in about 1972 that auto-creation of variables is a Very Bad Thing? Every good Perl programmer I know puts "use strict" at the beginning of all executable code (which forces declaration of all variables). So why doesn't PHP have "use strict"? If you ask this question on the PHP forums, you get answers that reveal the responders just don't understand the issue.</description>
		<content:encoded><![CDATA[<p>Basically, you&#8217;re right, though a few of the points are debatable. The example that I agree with most strongly is the last, auto-creation of variables. Didn&#8217;t people learn in about 1972 that auto-creation of variables is a Very Bad Thing? Every good Perl programmer I know puts &#8220;use strict&#8221; at the beginning of all executable code (which forces declaration of all variables). So why doesn&#8217;t PHP have &#8220;use strict&#8221;? If you ask this question on the PHP forums, you get answers that reveal the responders just don&#8217;t understand the issue.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anon</title>
		<link>http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-362</link>
		<dc:creator>Anon</dc:creator>
		<pubDate>Sat, 05 Apr 2008 09:47:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-362</guid>
		<description>Ruby has symbols which are the preferred way of doing enumeration.</description>
		<content:encoded><![CDATA[<p>Ruby has symbols which are the preferred way of doing enumeration.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fortis</title>
		<link>http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-351</link>
		<dc:creator>Fortis</dc:creator>
		<pubDate>Sun, 30 Mar 2008 23:40:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-351</guid>
		<description>Bobo the Sperm Whale, really, no use for that what-so-ever?  You just knocked out one of the pillars of object oriented programming, polymorphism.  Perhaps you've never come across the need for inheritance or encapsulation either.</description>
		<content:encoded><![CDATA[<p>Bobo the Sperm Whale, really, no use for that what-so-ever?  You just knocked out one of the pillars of object oriented programming, polymorphism.  Perhaps you&#8217;ve never come across the need for inheritance or encapsulation either.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Doug @ Straw Dogs</title>
		<link>http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-340</link>
		<dc:creator>Doug @ Straw Dogs</dc:creator>
		<pubDate>Sat, 29 Mar 2008 01:21:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-340</guid>
		<description>I think creme has hit the nail on the head.  I agreed with the original posts point until it descending into petty, ignorant criticisms of languages and methods.

"In this example, you don’t know the languages you are criticizing." - Creme

I think that goes for many of the examples given.</description>
		<content:encoded><![CDATA[<p>I think creme has hit the nail on the head.  I agreed with the original posts point until it descending into petty, ignorant criticisms of languages and methods.</p>
<p>&#8220;In this example, you don’t know the languages you are criticizing.&#8221; - Creme</p>
<p>I think that goes for many of the examples given.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: adrian</title>
		<link>http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-335</link>
		<dc:creator>adrian</dc:creator>
		<pubDate>Fri, 28 Mar 2008 07:52:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-335</guid>
		<description>My responses here:

http://www.databasesandlife.com/programming-languages-is-newer-always-better-part-2/

@Helge: Response coming in a future post.</description>
		<content:encoded><![CDATA[<p>My responses here:</p>
<p><a href="http://www.databasesandlife.com/programming-languages-is-newer-always-better-part-2/" rel="nofollow">http://www.databasesandlife.com/programming-languages-is-newer-always-better-part-2/</a></p>
<p>@Helge: Response coming in a future post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Helge</title>
		<link>http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-330</link>
		<dc:creator>Helge</dc:creator>
		<pubDate>Thu, 27 Mar 2008 19:45:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-330</guid>
		<description>I just had a discussion with &lt;a href="http://max.xaok.org/weblog" rel="nofollow"&gt;Max&lt;/a&gt; about you posting (I'm sure he'll still post his thoughts on it) - and we came to a slightly different conclusion.

I don't know enough about programming languages, so I'll shut up on your main point. As to your example with network vs. standalone computer: This is a very effective and productive cycle, it's not the same things coming back but technologies being built on top of each other. 

The terminals of the early mainframes were entirely stupid. The workstations that came then were an added bonus to those mainframes, an *addition*. The notion of "the web is the computer" enables us to do the same things as locally but collaboratively - a real *addition* in value again. (Note that these "terminals" of today are not stupid any more, they interpret (html/css) and run (javascript) web applications locally.) But one wants to be able to use these great because collaborative services also when, say, on a plane. So offline versions are being added. Are real *addition* in value again.

Every step in your cycle is a real addition to the previous one, and is built on top of it. Standing on the shoulders of giants, as Newton said I believe.

Bottom line: If your main argument follows your central-local-central metaphor then re-inventing programming languages from time to time is a very good, productive and innovative thing.</description>
		<content:encoded><![CDATA[<p>I just had a discussion with <a href="http://max.xaok.org/weblog" rel="nofollow">Max</a> about you posting (I&#8217;m sure he&#8217;ll still post his thoughts on it) - and we came to a slightly different conclusion.</p>
<p>I don&#8217;t know enough about programming languages, so I&#8217;ll shut up on your main point. As to your example with network vs. standalone computer: This is a very effective and productive cycle, it&#8217;s not the same things coming back but technologies being built on top of each other. </p>
<p>The terminals of the early mainframes were entirely stupid. The workstations that came then were an added bonus to those mainframes, an *addition*. The notion of &#8220;the web is the computer&#8221; enables us to do the same things as locally but collaboratively - a real *addition* in value again. (Note that these &#8220;terminals&#8221; of today are not stupid any more, they interpret (html/css) and run (javascript) web applications locally.) But one wants to be able to use these great because collaborative services also when, say, on a plane. So offline versions are being added. Are real *addition* in value again.</p>
<p>Every step in your cycle is a real addition to the previous one, and is built on top of it. Standing on the shoulders of giants, as Newton said I believe.</p>
<p>Bottom line: If your main argument follows your central-local-central metaphor then re-inventing programming languages from time to time is a very good, productive and innovative thing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Web 2.0 Announcer</title>
		<link>http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-329</link>
		<dc:creator>Web 2.0 Announcer</dc:creator>
		<pubDate>Thu, 27 Mar 2008 16:15:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-329</guid>
		<description>&lt;strong&gt;Programming Languages: Is newer always better?...&lt;/strong&gt;

[...]I constantly hear the belief that modern programming languages and environment are better than older programming languages. More productive, easier to user, and so on. It would stand to reason: nobody would make a new programming language with wor...</description>
		<content:encoded><![CDATA[<p><strong>Programming Languages: Is newer always better?&#8230;</strong></p>
<p>[&#8230;]I constantly hear the belief that modern programming languages and environment are better than older programming languages. More productive, easier to user, and so on. It would stand to reason: nobody would make a new programming language with wor&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bobo the Sperm Whale</title>
		<link>http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-328</link>
		<dc:creator>Bobo the Sperm Whale</dc:creator>
		<pubDate>Thu, 27 Mar 2008 15:55:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-328</guid>
		<description>Also, dynamic typing is pointless and should be banished to the nether realms from whence it came.  I've never come across any instance where I suddenly need to change the type of a variable in the middle of an algorithm.  I don't even think such a situation exists in the Real World(tm).</description>
		<content:encoded><![CDATA[<p>Also, dynamic typing is pointless and should be banished to the nether realms from whence it came.  I&#8217;ve never come across any instance where I suddenly need to change the type of a variable in the middle of an algorithm.  I don&#8217;t even think such a situation exists in the Real World(tm).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cremes</title>
		<link>http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-327</link>
		<dc:creator>cremes</dc:creator>
		<pubDate>Thu, 27 Mar 2008 14:53:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-327</guid>
		<description>Wow, while I agree with the thesis, I disagree with almost every example. Let's take each one in turn.

Variable Bounds
You really have two components here. One are primitives like integers, floats and byte arrays. Second is objects which reflect higher level abstractions like strings, byte arrays (again), hashes, etc. I don't think variable checks are all that useful as a feature of the language. This should be part of the library of higher level functions. In any OOP language (including Simula) this can easily be supported and sometimes is.

Strict typing
This is really a static vs dynamic typing argument. You want the compiler to check that a method can only receive an object of type SomeObject while I want any method to be able to receive any object as long as it responds to (or has the same interface) as SomeObject. Lisp (old), Smalltalk (old), Perl (new), Ruby (new), Python (new), etc all have this dynamic feature and benefit greatly for it. C, Fortran, C++, Java and Pascal require static  definitions and suffer greatly for it. C++ (again) and Java (again) have templates/generics to fake this kind of feature and suffer horribly for it. OCaml allows either and therefore has a leg up on both camps by giving the developer the greatest flexibility.

Knowing what’s going on
This is a terrible example. You are really arguing that PHP programmers don't know how their language works while C programmers do. This is a horribly wrong-headed assertion. How about I counter your straw man with one of my own. I know plenty of new (as of the last 5 years) C programmers who have no idea that 0 is equivalent to NULL.

Enumerated types
This is a great feature modern day languages have though maybe it isn't called "enumerated type." Ruby has symbols so you can say your types are :hot, :warm, :lukewarm, :cold. These symbols mean the same thing everywhere. To use your PHP example in Ruby, how about error_log(”user not found”, :user_not_found). In this example, you don't know the languages you are criticizing.

No compiler
Please point me to a modern language that is slower with longer variable and method names. Ruby, Perl, Python, OCaml and Erlang all "compile" the code to an intermediate form (bytecodes) and then execute those. Long variable names or method names have no performance impact except during this "compile" stage when it parses the languages. *Every* language bears this cost because they *all* to have to parse the code at some point to either turn it into bytes or machine code.

No linker
Your argument here is about memory footprint. This is a total non-starter on any modern operating system that does demand paging. If huge sections of your ruby/perl/python/whatever library are not used, the OS will never page them into RAM. If I am misreading this and you are really arguing over disk space, then let's just agree to disagree.

Multiple compile errors
This is a criticism of coding style. Apparently you think programmers who used these older languages sat down and spewed forth entire programs in a single sitting and then debugged them in one shot after getting a list of syntax errors. I prefer to write a test, watch it fail, write the code to make it pass. My programs generally never have more than a single error. But that's just my style; use whatever you like but don't blame the language if your style doesn't fit it.

Formatted strings
This isn't a language feature. It's a feature of a language's library.  Any language, no matter how old or new, can easily support "sprintf" semantics including C++. You don't have to use "&#60;&#60;" if it doesn't have the feature you need.

Auto-creation of variables
This is another style criticism like your "Multiple compile errors" criticism. Let's agree to disagree. I'm never more than one test away from discovering a misspelling which is equivalent to the compiler spitting out the error.</description>
		<content:encoded><![CDATA[<p>Wow, while I agree with the thesis, I disagree with almost every example. Let&#8217;s take each one in turn.</p>
<p>Variable Bounds<br />
You really have two components here. One are primitives like integers, floats and byte arrays. Second is objects which reflect higher level abstractions like strings, byte arrays (again), hashes, etc. I don&#8217;t think variable checks are all that useful as a feature of the language. This should be part of the library of higher level functions. In any OOP language (including Simula) this can easily be supported and sometimes is.</p>
<p>Strict typing<br />
This is really a static vs dynamic typing argument. You want the compiler to check that a method can only receive an object of type SomeObject while I want any method to be able to receive any object as long as it responds to (or has the same interface) as SomeObject. Lisp (old), Smalltalk (old), Perl (new), Ruby (new), Python (new), etc all have this dynamic feature and benefit greatly for it. C, Fortran, C++, Java and Pascal require static  definitions and suffer greatly for it. C++ (again) and Java (again) have templates/generics to fake this kind of feature and suffer horribly for it. OCaml allows either and therefore has a leg up on both camps by giving the developer the greatest flexibility.</p>
<p>Knowing what’s going on<br />
This is a terrible example. You are really arguing that PHP programmers don&#8217;t know how their language works while C programmers do. This is a horribly wrong-headed assertion. How about I counter your straw man with one of my own. I know plenty of new (as of the last 5 years) C programmers who have no idea that 0 is equivalent to NULL.</p>
<p>Enumerated types<br />
This is a great feature modern day languages have though maybe it isn&#8217;t called &#8220;enumerated type.&#8221; Ruby has symbols so you can say your types are :hot, :warm, :lukewarm, :cold. These symbols mean the same thing everywhere. To use your PHP example in Ruby, how about error_log(”user not found”, :user_not_found). In this example, you don&#8217;t know the languages you are criticizing.</p>
<p>No compiler<br />
Please point me to a modern language that is slower with longer variable and method names. Ruby, Perl, Python, OCaml and Erlang all &#8220;compile&#8221; the code to an intermediate form (bytecodes) and then execute those. Long variable names or method names have no performance impact except during this &#8220;compile&#8221; stage when it parses the languages. *Every* language bears this cost because they *all* to have to parse the code at some point to either turn it into bytes or machine code.</p>
<p>No linker<br />
Your argument here is about memory footprint. This is a total non-starter on any modern operating system that does demand paging. If huge sections of your ruby/perl/python/whatever library are not used, the OS will never page them into RAM. If I am misreading this and you are really arguing over disk space, then let&#8217;s just agree to disagree.</p>
<p>Multiple compile errors<br />
This is a criticism of coding style. Apparently you think programmers who used these older languages sat down and spewed forth entire programs in a single sitting and then debugged them in one shot after getting a list of syntax errors. I prefer to write a test, watch it fail, write the code to make it pass. My programs generally never have more than a single error. But that&#8217;s just my style; use whatever you like but don&#8217;t blame the language if your style doesn&#8217;t fit it.</p>
<p>Formatted strings<br />
This isn&#8217;t a language feature. It&#8217;s a feature of a language&#8217;s library.  Any language, no matter how old or new, can easily support &#8220;sprintf&#8221; semantics including C++. You don&#8217;t have to use &#8220;&lt;&lt;&#8221; if it doesn&#8217;t have the feature you need.</p>
<p>Auto-creation of variables<br />
This is another style criticism like your &#8220;Multiple compile errors&#8221; criticism. Let&#8217;s agree to disagree. I&#8217;m never more than one test away from discovering a misspelling which is equivalent to the compiler spitting out the error.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ronie Uliana</title>
		<link>http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-326</link>
		<dc:creator>Ronie Uliana</dc:creator>
		<pubDate>Thu, 27 Mar 2008 14:52:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/programming-languages-is-newer-always-better/#comment-326</guid>
		<description>IMHO 2 factors contribute for this "back and forth" way of programming languages:

1 - There are so many new technologies that we spend less and less energy studying the past.

2 - Several features are dropped from new languages because the designers consider it "very dangerous, no _real_ programmer would ever use that". As that's a matter of opinion, we lose several powerful features just because they are... hmm... powerful. For example: GOTOs and Multiple Inheritance.</description>
		<content:encoded><![CDATA[<p>IMHO 2 factors contribute for this &#8220;back and forth&#8221; way of programming languages:</p>
<p>1 - There are so many new technologies that we spend less and less energy studying the past.</p>
<p>2 - Several features are dropped from new languages because the designers consider it &#8220;very dangerous, no _real_ programmer would ever use that&#8221;. As that&#8217;s a matter of opinion, we lose several powerful features just because they are&#8230; hmm&#8230; powerful. For example: GOTOs and Multiple Inheritance.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
