<?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: First Programming Language &#8211; Python/Ruby?</title>
	<atom:link href="http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/</link>
	<description>Utterly random, incoherent and disjointed rants and ramblings...</description>
	<lastBuildDate>Mon, 15 Mar 2010 17:38:34 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Jason Aren</title>
		<link>http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/comment-page-1/#comment-10801</link>
		<dc:creator>Jason Aren</dc:creator>
		<pubDate>Mon, 24 Nov 2008 20:42:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/#comment-10801</guid>
		<description>Thanks Luke.  

Given that I don&#039;t have a firm foundation in any programming language yet and have just hacked around with Java, PHP, and Python, with which would you start?  I don&#039;t expect to work seriously on a big project at this point - I realize I have a lot to learn - but would like to set myself up to start doing some (minor) work on the project ASAP. 

Basically, I want a good language to learn from, that will be a good stepping stone to other languages, and that will be useful for AI / Natural Language, some data analysis, and web/network (though I know a decent amount of php, so can use this for web stuff that is not performance critical).</description>
		<content:encoded><![CDATA[<span id="co_10801"><p>Thanks Luke.  </p>
<p>Given that I don&#8217;t have a firm foundation in any programming language yet and have just hacked around with Java, PHP, and Python, with which would you start?  I don&#8217;t expect to work seriously on a big project at this point &#8211; I realize I have a lot to learn &#8211; but would like to set myself up to start doing some (minor) work on the project ASAP. </p>
<p>Basically, I want a good language to learn from, that will be a good stepping stone to other languages, and that will be useful for AI / Natural Language, some data analysis, and web/network (though I know a decent amount of php, so can use this for web stuff that is not performance critical).</p>
</span><div class="comment-toolbar" style="text-align: right"><a href="#comment" onclick="CF_Reply('10801','Jason Aren'); return false;">Reply</a>  |  <a href="#comment" onclick="CF_Quote('10801','Jason Aren'); return false;">Quote</a></div>]]></content:encoded>
	</item>
	<item>
		<title>By: Paddy3118</title>
		<link>http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/comment-page-1/#comment-10793</link>
		<dc:creator>Paddy3118</dc:creator>
		<pubDate>Mon, 24 Nov 2008 16:01:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/#comment-10793</guid>
		<description>&lt;blockquote&gt;Python lags behind a bit, but if you use Psyco you can pretty much compete on speed with Ruby&lt;/blockquote&gt;

I think you mean compete with Java. Normal Python is faster than Ruby.</description>
		<content:encoded><![CDATA[<span id="co_10793"><blockquote><p>Python lags behind a bit, but if you use Psyco you can pretty much compete on speed with Ruby</p></blockquote>
<p>I think you mean compete with Java. Normal Python is faster than Ruby.</p>
</span><div class="comment-toolbar" style="text-align: right"><a href="#comment" onclick="CF_Reply('10793','Paddy3118'); return false;">Reply</a>  |  <a href="#comment" onclick="CF_Quote('10793','Paddy3118'); return false;">Quote</a></div>]]></content:encoded>
	</item>
	<item>
		<title>By: Luke Maciak</title>
		<link>http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/comment-page-1/#comment-10792</link>
		<dc:creator>Luke Maciak</dc:creator>
		<pubDate>Mon, 24 Nov 2008 14:51:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/#comment-10792</guid>
		<description>Only if you are terribly worried about performance issues since these days Java ships with a better JIT compiler and &lt;a href=&quot;http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;lang=java&amp;lang2=python&quot; rel=&quot;nofollow&quot;&gt;performs better&lt;/a&gt; under most circumstances.

Here is &lt;a href=&quot;http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/&quot; rel=&quot;nofollow&quot;&gt;another benchmark&lt;/a&gt; which shows that to beat unoptimized Java, you actually need to put some thought into your C code. Python lags behind a bit, but if you use Psyco you can pretty much compete on speed with Ruby.

The thing about Java is that it is a forest of syntax compared to Python. It is statically typed, and loooves boilerplate code.

Here is my thing: I think it is good to learn new languages. I&#039;d suggest picking up Java, and messing around with C++ just to see how they work. Do few small projects with them and see how you like them. Since you know Python fairly well you should probably stick with it while you are learning new concepts since it won&#039;t take much effort for you to &quot;think&quot; in that language. Trying to learn something new in an unfamiliar language can be a bit overwhelming. Besides, most of these things are universal and you can easily translate algorithms and pattens between languages.

I guess what I&#039;m trying to say is not to commit to a single language. A lot of people make this mistake and box themselves in as Java developers or C developers and they never branch out. The truth is that a programming language is a tool - and you need the right tool for the right job. Some things are done best with Java, some should be done with C and some should be approached with a highly dynamic language such as Python or Ruby. It depends. A good programmer can switch languages like gloves.

If you are fairly proficient with Python then it might only take you 2-3 weeks to become &quot;fluent&quot; in Java. Same goes for C++ - if you commit yourself to a project and you work on it for few weeks you will notice that you can suddenly think in that language fairly well. 

So I&#039;d say, learn both C++ and Java and see which one you like better. Ok, here is the list of languages you should definitely dabble in at least a bit before you die:

- C++ (low level stuff)
- D (to see C done right)
- Java (high level, static typing, OO madness)
- Lisp (the be all and end all in functional languages)
- C# (just to see how the .NET ecosystem works)
- Perl/PHP (for the shits and giggles)

So.... Um.. Yeah, I&#039;m not much for advice here, eh? I&#039;d say stick with Python if you are about to start a new huge project. If you think that C++ or Java will give you better performance, then try them. Java might be easier to pick up because you have garbage collection and no pointers. 

And again, if you already know a programming language, learning another one is just a matter of few weeks. :)</description>
		<content:encoded><![CDATA[<span id="co_10792"><p>Only if you are terribly worried about performance issues since these days Java ships with a better JIT compiler and <a href="http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&#038;lang=java&#038;lang2=python" rel="nofollow" class="liexternal">performs better</a> under most circumstances.</p>
<p>Here is <a href="http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/" rel="nofollow" class="liexternal">another benchmark</a> which shows that to beat unoptimized Java, you actually need to put some thought into your C code. Python lags behind a bit, but if you use Psyco you can pretty much compete on speed with Ruby.</p>
<p>The thing about Java is that it is a forest of syntax compared to Python. It is statically typed, and loooves boilerplate code.</p>
<p>Here is my thing: I think it is good to learn new languages. I&#8217;d suggest picking up Java, and messing around with C++ just to see how they work. Do few small projects with them and see how you like them. Since you know Python fairly well you should probably stick with it while you are learning new concepts since it won&#8217;t take much effort for you to &#8220;think&#8221; in that language. Trying to learn something new in an unfamiliar language can be a bit overwhelming. Besides, most of these things are universal and you can easily translate algorithms and pattens between languages.</p>
<p>I guess what I&#8217;m trying to say is not to commit to a single language. A lot of people make this mistake and box themselves in as Java developers or C developers and they never branch out. The truth is that a programming language is a tool &#8211; and you need the right tool for the right job. Some things are done best with Java, some should be done with C and some should be approached with a highly dynamic language such as Python or Ruby. It depends. A good programmer can switch languages like gloves.</p>
<p>If you are fairly proficient with Python then it might only take you 2-3 weeks to become &#8220;fluent&#8221; in Java. Same goes for C++ &#8211; if you commit yourself to a project and you work on it for few weeks you will notice that you can suddenly think in that language fairly well. </p>
<p>So I&#8217;d say, learn both C++ and Java and see which one you like better. Ok, here is the list of languages you should definitely dabble in at least a bit before you die:</p>
<p>- C++ (low level stuff)<br />
- D (to see C done right)<br />
- Java (high level, static typing, OO madness)<br />
- Lisp (the be all and end all in functional languages)<br />
- C# (just to see how the .NET ecosystem works)<br />
- Perl/PHP (for the shits and giggles)</p>
<p>So&#8230;. Um.. Yeah, I&#8217;m not much for advice here, eh? I&#8217;d say stick with Python if you are about to start a new huge project. If you think that C++ or Java will give you better performance, then try them. Java might be easier to pick up because you have garbage collection and no pointers. </p>
<p>And again, if you already know a programming language, learning another one is just a matter of few weeks. <img src='http://www.terminally-incoherent.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</span><div class="comment-toolbar" style="text-align: right"><a href="#comment" onclick="CF_Reply('10792','Luke Maciak'); return false;">Reply</a>  |  <a href="#comment" onclick="CF_Quote('10792','Luke Maciak'); return false;">Quote</a></div>]]></content:encoded>
	</item>
	<item>
		<title>By: Jason Aren</title>
		<link>http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/comment-page-1/#comment-10785</link>
		<dc:creator>Jason Aren</dc:creator>
		<pubDate>Sun, 23 Nov 2008 21:42:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/#comment-10785</guid>
		<description>So would you go Java over Python for my purposes?</description>
		<content:encoded><![CDATA[<span id="co_10785"><p>So would you go Java over Python for my purposes?</p>
</span><div class="comment-toolbar" style="text-align: right"><a href="#comment" onclick="CF_Reply('10785','Jason Aren'); return false;">Reply</a>  |  <a href="#comment" onclick="CF_Quote('10785','Jason Aren'); return false;">Quote</a></div>]]></content:encoded>
	</item>
	<item>
		<title>By: Luke Maciak</title>
		<link>http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/comment-page-1/#comment-10784</link>
		<dc:creator>Luke Maciak</dc:creator>
		<pubDate>Sun, 23 Nov 2008 20:25:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/#comment-10784</guid>
		<description>@&lt;a href=&quot;#comment-10783&quot; rel=&quot;nofollow&quot;&gt;Jason Aren&lt;/a&gt;: C is not really a language for doing web stuff. You are best to stick with Python and/or Ruby for that. Or pick up Jython (python that runs on JVM). I think it is quite fast now, and will allow you to work inside of a Java based ecosystem.

For data analysis, language processing and all that stuff it is really a tossup. The whole &quot;C is faster because it is compiled&quot; thing is a myth. It used to be true back in the day, but the technology grew by leaps and bounds these days. The truth is that a JIT compiler can optimize stuff at run time - it can actually see what is going on, what kind of data you work with and choose the most optimal way to compile it. A traditional compiler does not have access to this information at compile time. So interpreted languages can be as fast as compiled ones these days - if not faster.

If you use C for language/list/data processing you are going to have to write a lot of code to test for array bounds, make sure your memory is allocated and released properly. To me this is more work than it is worth. If you stick with python it will make your life much easier.

The only area where I would recommend using C would be writing operating systems and/or compilers where you actually do want to be anal with memory location.</description>
		<content:encoded><![CDATA[<span id="co_10784"><p>@<a class="atr_link" href="#comment-10783" rel="nofollow" class="liinternal">Jason Aren</a>: C is not really a language for doing web stuff. You are best to stick with Python and/or Ruby for that. Or pick up Jython (python that runs on JVM). I think it is quite fast now, and will allow you to work inside of a Java based ecosystem.</p>
<p>For data analysis, language processing and all that stuff it is really a tossup. The whole &#8220;C is faster because it is compiled&#8221; thing is a myth. It used to be true back in the day, but the technology grew by leaps and bounds these days. The truth is that a JIT compiler can optimize stuff at run time &#8211; it can actually see what is going on, what kind of data you work with and choose the most optimal way to compile it. A traditional compiler does not have access to this information at compile time. So interpreted languages can be as fast as compiled ones these days &#8211; if not faster.</p>
<p>If you use C for language/list/data processing you are going to have to write a lot of code to test for array bounds, make sure your memory is allocated and released properly. To me this is more work than it is worth. If you stick with python it will make your life much easier.</p>
<p>The only area where I would recommend using C would be writing operating systems and/or compilers where you actually do want to be anal with memory location.</p>
</span><div class="comment-toolbar" style="text-align: right"><a href="#comment" onclick="CF_Reply('10784','Luke Maciak'); return false;">Reply</a>  |  <a href="#comment" onclick="CF_Quote('10784','Luke Maciak'); return false;">Quote</a></div>]]></content:encoded>
	</item>
	<item>
		<title>By: Jason Aren</title>
		<link>http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/comment-page-1/#comment-10783</link>
		<dc:creator>Jason Aren</dc:creator>
		<pubDate>Sun, 23 Nov 2008 05:59:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/#comment-10783</guid>
		<description>Luke Maciak -

Thanks for the advice.  Since my life is serial right now and not parallel, I need to chose one over the other at this point.

My interests:  AI, natural language processing, data analysis (financial, economic) and web/network (for pulling / pushing data and text).

Will going from Python to C put me at any disadvantage than doing the reverse?  My thought is to do Python, and when a situation where I need better performance, start working on C.

Thanks again!</description>
		<content:encoded><![CDATA[<span id="co_10783"><p>Luke Maciak -</p>
<p>Thanks for the advice.  Since my life is serial right now and not parallel, I need to chose one over the other at this point.</p>
<p>My interests:  AI, natural language processing, data analysis (financial, economic) and web/network (for pulling / pushing data and text).</p>
<p>Will going from Python to C put me at any disadvantage than doing the reverse?  My thought is to do Python, and when a situation where I need better performance, start working on C.</p>
<p>Thanks again!</p>
</span><div class="comment-toolbar" style="text-align: right"><a href="#comment" onclick="CF_Reply('10783','Jason Aren'); return false;">Reply</a>  |  <a href="#comment" onclick="CF_Quote('10783','Jason Aren'); return false;">Quote</a></div>]]></content:encoded>
	</item>
	<item>
		<title>By: Luke Maciak</title>
		<link>http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/comment-page-1/#comment-10782</link>
		<dc:creator>Luke Maciak</dc:creator>
		<pubDate>Sun, 23 Nov 2008 03:24:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/#comment-10782</guid>
		<description>@&lt;a href=&quot;#comment-10775&quot; rel=&quot;nofollow&quot;&gt;Jason Aren&lt;/a&gt;: Well, I&#039;d say it depends on where you want to go with this stuff. You should definitely mess around with C for the low level but there is other stuff you want to learn. 

For example, buy yourself few books on patterns and algorithms. Algorithms especially can probably be better understood when working with a language such as Python. They just have a nicer syntax so you can actually see the logic of your code past the boilerplate!

So C will let you become a better programmer teaching you about memory management and different ways to optimize your code at the lower level.

A higher level language will help you learn the high level programming stuff - you know, the knapsacks, traveling salesmen, graphs (graphs are important!), trees and etc..</description>
		<content:encoded><![CDATA[<span id="co_10782"><p>@<a class="atr_link" href="#comment-10775" rel="nofollow" class="liinternal">Jason Aren</a>: Well, I&#8217;d say it depends on where you want to go with this stuff. You should definitely mess around with C for the low level but there is other stuff you want to learn. </p>
<p>For example, buy yourself few books on patterns and algorithms. Algorithms especially can probably be better understood when working with a language such as Python. They just have a nicer syntax so you can actually see the logic of your code past the boilerplate!</p>
<p>So C will let you become a better programmer teaching you about memory management and different ways to optimize your code at the lower level.</p>
<p>A higher level language will help you learn the high level programming stuff &#8211; you know, the knapsacks, traveling salesmen, graphs (graphs are important!), trees and etc..</p>
</span><div class="comment-toolbar" style="text-align: right"><a href="#comment" onclick="CF_Reply('10782','Luke Maciak'); return false;">Reply</a>  |  <a href="#comment" onclick="CF_Quote('10782','Luke Maciak'); return false;">Quote</a></div>]]></content:encoded>
	</item>
	<item>
		<title>By: Jason Aren</title>
		<link>http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/comment-page-1/#comment-10775</link>
		<dc:creator>Jason Aren</dc:creator>
		<pubDate>Sat, 22 Nov 2008 03:57:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/#comment-10775</guid>
		<description>I am not a complete &quot;newbie&quot; to programming- I have done some basic programming in java (I finished one of those &quot;21 day&quot; books doing all of the examples, and yes, I know they don&#039;t make you a programmer!) and I have hacked together several web sites using PHP and wordpress.  I understand the concepts of constants, variables, if/then statements, for loops, etc. and OO programming.

Now I want to master a language.  I am leaning towards C, as I understand it will give me a good foundation as a programmer (learning about memory management and lower level computing) and make other languages easier to learn.  My concern with Python is that I already know the basics of programming so it might be a better use of my time to learn something lower level as a foundation.

Thoughts?</description>
		<content:encoded><![CDATA[<span id="co_10775"><p>I am not a complete &#8220;newbie&#8221; to programming- I have done some basic programming in java (I finished one of those &#8220;21 day&#8221; books doing all of the examples, and yes, I know they don&#8217;t make you a programmer!) and I have hacked together several web sites using PHP and wordpress.  I understand the concepts of constants, variables, if/then statements, for loops, etc. and OO programming.</p>
<p>Now I want to master a language.  I am leaning towards C, as I understand it will give me a good foundation as a programmer (learning about memory management and lower level computing) and make other languages easier to learn.  My concern with Python is that I already know the basics of programming so it might be a better use of my time to learn something lower level as a foundation.</p>
<p>Thoughts?</p>
</span><div class="comment-toolbar" style="text-align: right"><a href="#comment" onclick="CF_Reply('10775','Jason Aren'); return false;">Reply</a>  |  <a href="#comment" onclick="CF_Quote('10775','Jason Aren'); return false;">Quote</a></div>]]></content:encoded>
	</item>
	<item>
		<title>By: Paddy3118</title>
		<link>http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/comment-page-1/#comment-10671</link>
		<dc:creator>Paddy3118</dc:creator>
		<pubDate>Wed, 12 Nov 2008 04:46:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/#comment-10671</guid>
		<description>With Python first and not dropping it, you get an easy intro to programming - proceedural, OO and functional styles.

move on briefly to assembler, then C (not C++), so you can teach about computers from the &#039;lower-levels&#039; i.e. what&#039;s under the hood. You can switch back to Python for those wanting to program things like games, GUI&#039;s, CGI, databases, concurrency, data munging, ...

- Paddy.</description>
		<content:encoded><![CDATA[<span id="co_10671"><p>With Python first and not dropping it, you get an easy intro to programming &#8211; proceedural, OO and functional styles.</p>
<p>move on briefly to assembler, then C (not C++), so you can teach about computers from the &#8216;lower-levels&#8217; i.e. what&#8217;s under the hood. You can switch back to Python for those wanting to program things like games, GUI&#8217;s, CGI, databases, concurrency, data munging, &#8230;</p>
<p>- Paddy.</p>
</span><div class="comment-toolbar" style="text-align: right"><a href="#comment" onclick="CF_Reply('10671','Paddy3118'); return false;">Reply</a>  |  <a href="#comment" onclick="CF_Quote('10671','Paddy3118'); return false;">Quote</a></div>]]></content:encoded>
	</item>
	<item>
		<title>By: IceBrain</title>
		<link>http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/comment-page-1/#comment-10667</link>
		<dc:creator>IceBrain</dc:creator>
		<pubDate>Tue, 11 Nov 2008 20:06:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/2008/11/10/first-programming-language-pythonruby/#comment-10667</guid>
		<description>I started using BASIC aswell and learned Javascript, C, PHP, Python and some other languages for 7 years before going to college and having my first programming classes. 
My first BASIC interpreter was a chinese video game which couldn&#039;t even save the code, so I would write it on paper and rewrite it &lt;i&gt;every&lt;/i&gt; time, and loved it! :P

But yes, Python is much better as a learning language, although I like the strict and controlled memory consuption of C.</description>
		<content:encoded><![CDATA[<span id="co_10667"><p>I started using BASIC aswell and learned Javascript, C, PHP, Python and some other languages for 7 years before going to college and having my first programming classes.<br />
My first BASIC interpreter was a chinese video game which couldn&#8217;t even save the code, so I would write it on paper and rewrite it <i>every</i> time, and loved it! <img src='http://www.terminally-incoherent.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>But yes, Python is much better as a learning language, although I like the strict and controlled memory consuption of C.</p>
</span><div class="comment-toolbar" style="text-align: right"><a href="#comment" onclick="CF_Reply('10667','IceBrain'); return false;">Reply</a>  |  <a href="#comment" onclick="CF_Quote('10667','IceBrain'); return false;">Quote</a></div>]]></content:encoded>
	</item>
</channel>
</rss>
