<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dysfunctional Programming &#187; languages</title>
	<atom:link href="http://ra3s.com/wordpress/dysfunctional-programming/category/languages/feed/" rel="self" type="application/rss+xml" />
	<link>http://ra3s.com/wordpress/dysfunctional-programming</link>
	<description>(λ (a b) a) vs (λ (a b) b)</description>
	<lastBuildDate>Fri, 02 Mar 2012 08:56:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Repls, repls, everywhere</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/repls-repls-everywhere/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/repls-repls-everywhere/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 16:46:41 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=345</guid>
		<description><![CDATA[Have a new-years resolution to try out a new programming language, but in too much of a hurry to pick only one, or install anything? Online REPs and REPLs Today there&#8217;s 61 different languages on that list. That many, there&#8217;s &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/repls-repls-everywhere/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Have a new-years resolution to <a href="http://matt.might.net/articles/programmers-resolutions/">try out a new programming language</a>, but in too much of a hurry to pick only one, or install anything?</p>
<p><a href="http://joel.franusic.com/w/page/26128430/Online-REPs-and-REPLs">Online REPs and REPLs</a></p>
<p>Today there&#8217;s 61 different languages on that list. That many, there&#8217;s gotta be at least <em>one</em> that strikes your fancy.</p>
<p>Best batch execution site: <a href="http://ideone.com">ideone.com</a> with 50 unique languages.</p>
<p>Best interactive REPL site: <a href="http://repl.it/">repl.it</a> with 16 unique languages.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/repls-repls-everywhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quickrefs for Python and Vim</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/quickrefs-for-python-and-vim/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/quickrefs-for-python-and-vim/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 16:13:06 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[languages]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[quickref]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=288</guid>
		<description><![CDATA[More quick reference booklets: Vim PocketMod draft 1 (new) Python PocketMod draft 1 (new) Scheme PocketMod draft 3 (updated) I don&#8217;t really need the qr for Python, but I thought it might be good to have ready should a friend &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/quickrefs-for-python-and-vim/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>More quick reference booklets:</p>
<ul>
<li><a href="http://ra3s.com/wordpress/dysfunctional-programming/wp-content/uploads/2011/01/Vim-PocketMod-draft-1.pdf">Vim PocketMod draft 1</a> (new)</li>
<li><a href="http://ra3s.com/wordpress/dysfunctional-programming/wp-content/uploads/2011/01/Python-PocketMod-draft-1.pdf">Python PocketMod draft 1</a> (new)</li>
<li><a href="http://ra3s.com/wordpress/dysfunctional-programming/wp-content/uploads/2011/01/Scheme-PocketMod-draft-3.pdf">Scheme PocketMod draft 3</a> (updated)</li>
</ul>
<p>I don&#8217;t really need the qr for Python, but I thought it might be good to have ready should a friend a coworker wish to start learning Python.</p>
<p>As for Vim, the reference is certainly terrible – I&#8217;ve barely used it at all. The qr is just a list of commands that looked useful. I&#8217;ll edit the qr as I go, perhaps using the last pages for notes.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/quickrefs-for-python-and-vim/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Go: Defer, Panic, and Recover</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/go-defer-panic-and-recover/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/go-defer-panic-and-recover/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 05:50:41 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=247</guid>
		<description><![CDATA[It seems after much resistance to the idea, Go has added exception handling to the language in the form of defer, panic, and recover. The Go Programming Language Blog: Defer, Panic, and Recover. Don&#8217;t get me wrong, I think the&#8217;ve &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/go-defer-panic-and-recover/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It seems after much resistance to the idea, Go has added exception handling to the language in the form of defer, panic, and recover.</p>
<p><a href="http://blog.golang.org/2010/08/defer-panic-and-recover.html">The Go Programming Language Blog: Defer, Panic, and Recover</a>.</p>
<p>Don&#8217;t get me wrong, I think the&#8217;ve got something here.  Defer gives you the equivalent of C#&#8217;s finally/using; or a nice subset of C++&#8217;s destructors; or Lisp&#8217;s unwind-protect.  Panic = throw / raise.  Recover = catch.</p>
<p>The blog post gives the impression that you can&#8217;t programmatically access the value passed to panic &#8212; &#8220;recover returns nil&#8221; &#8212; but before judging that behavior I should try to confirm it in the Go documentation.</p>
<p>All in all, I&#8217;m giving this design a thumbs up. No element of it is new, but they seem to have brought exception handling in without compromising their mantra of practical and simple.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/go-defer-panic-and-recover/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best and Free Programming Ebooks</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/best-and-free-programming-ebooks/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/best-and-free-programming-ebooks/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 20:53:40 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=204</guid>
		<description><![CDATA[(updated / switched link to source article on stack overflow) So, I wrote my list of some unique programming texts. But on the more practical side, there&#8217;s this: Best and Free Programming Ebooks. Free full texts, covering: Bash, C, C++, &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/best-and-free-programming-ebooks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>(updated / switched link to source article on stack overflow)</p>
<p>So, I wrote my list of some <a href="http://ra3s.com/wordpress/dysfunctional-programming/2010/05/27/best-way-to-learn-a-programming-language/">unique programming texts</a>. But on the more practical side, there&#8217;s this:</p>
<p><a href="http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books">Best and Free Programming Ebooks</a>.</p>
<p>Free full texts, covering: Bash, C, C++, C#, Common Lisp, Haskell Java, JavaScript, Lua, Objective-C, Perl, PHP, PowerShell, Prolog, Python, Ruby, SQL, x86 assembly, algorithms, version control, and a couple other topics.  I&#8217;ll still be putting together my own preferred lists, but half of what I&#8217;ve got is already on this list.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/best-and-free-programming-ebooks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacker News &#124; &#8220;it was designed to restrict the kind of trouble programmers can get themselves &#8230;</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/hacker-news-it-was-designed-to-restrict-the-kind-of-trouble-programmers-can-get-themselves/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/hacker-news-it-was-designed-to-restrict-the-kind-of-trouble-programmers-can-get-themselves/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 06:25:10 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[humor]]></category>
		<category><![CDATA[languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=198</guid>
		<description><![CDATA[Great one liner on PL design: Every programming language is designed to restrict trouble programmers can get into. The key is that they all have different ideas of trouble. via Hacker News]]></description>
			<content:encoded><![CDATA[<p>Great one liner on PL design:</p>
<blockquote><p>Every programming language is designed to restrict trouble programmers can get into. The key is that they all have different ideas of trouble.</p></blockquote>
<p>via <a href="http://news.ycombinator.com/item?id=1437340">Hacker News</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/hacker-news-it-was-designed-to-restrict-the-kind-of-trouble-programmers-can-get-themselves/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is it better to remain blissfully unaware…</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/is-it-better-to-remain-blissfully-unaware/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/is-it-better-to-remain-blissfully-unaware/#comments</comments>
		<pubDate>Mon, 31 May 2010 18:51:48 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=171</guid>
		<description><![CDATA[I was once asked &#8220;why bother learning these other languages, if you can&#8217;t use them&#8221;. It hadn&#8217;t occurred to this person that I code off hours. I&#8217;ve also been asked &#8220;what if you find these other languages actually are better &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/is-it-better-to-remain-blissfully-unaware/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was once asked &#8220;why bother learning these other languages, if you can&#8217;t use them&#8221;. It hadn&#8217;t occurred to this person that I code off hours. I&#8217;ve also been asked &#8220;what if you find these other languages actually are better than C++? Won&#8217;t you <a href="http://lukeplant.me.uk/blog/posts/why-learning-haskell-python-makes-you-a-worse-programmer/">find it depressing</a> having to code in a normal language then?&#8221;</p>
<p>It&#8217;s a good question. I don&#8217;t know if there&#8217;s one answer, but I&#8217;ve found mine.</p>
<p>Learning Lisp, Haskell, Python, and others has given me a greater appreciation for computer science, for the theory and universe of knowledge that lies underneath the surface of programming. Now when I code, I don&#8217;t just solve the problem at hand. I see different ways to solve it. I see other remote problems its related to. I appreciate the aesthetic of it all.</p>
<p>It&#8217;s not for everyone, but I find the mathematics underlying it <a href="http://www.arcfn.com/2008/07/maxwells-equations-of-software-examined.html">all very beautiful</a>.</p>
<p>And as for my day job in <a href="http://stackoverflow.com/questions/536439/is-modern-c-becoming-more-prevalent">old-school-C++</a>? Well, I hack together a prototype in Python in <a href="http://norvig.com/java-lisp.html">a couple hours</a>, then spend a week translating it to C++ (adding verbosity, manual error handling, unfolding metaprogramming, etc). My boss doesn&#8217;t necessarily understand the whole languages thing, but he&#8217;s happy when I get a 2 wk job done in one. I&#8217;m happy too; having gotten through the icky bits of the problem in Python, I spend less time working on the boring bits in C++, and can move on to the next project sooner.</p>
<p>There is one last question, that I&#8217;m not sure I really have a good answer to. &#8220;Won&#8217;t you be tempted to use features <a href="http://lukeplant.me.uk/blog/posts/why-learning-haskell-python-makes-you-a-worse-programmer/">that don&#8217;t exist </a>in a normal language?&#8221; I&#8217;m hoping this will evaporate. Templates have existed in C++ <a href="http://www.research.att.com/~bs/hopl2.pdf">since &#8217;88</a> (pdf), various people have <a href="http://www.boost.org/doc/libs/1_43_0/doc/html/lambda/s03.html">hacked lambdas in</a>, and VC10 has <a href="http://blogs.msdn.com/b/vcblog/archive/2008/10/28/lambdas-auto-and-static-assert-c-0x-features-in-vc10-part-1.aspx">added them for real</a>. Short those facilities, it&#8217;s not like I have forgotten how to <a href="http://www.pbm.com/~lindahl/real.programmers.html">write imperative code</a>. It&#8217;s still an option – I just now realize the development expenses of that option.</p>
<p>~</p>
<p>I&#8217;m curious, other answers do you choose for these question?</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/is-it-better-to-remain-blissfully-unaware/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Best way to learn a Programming Language</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/best-way-to-learn-a-programming-language/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/best-way-to-learn-a-programming-language/#comments</comments>
		<pubDate>Thu, 27 May 2010 16:50:30 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=145</guid>
		<description><![CDATA[(Update, added Casting SPELs) For better or worse, it&#8217;s accepted in our industry to be fluent in only a single programming language or technology. It&#8217;s lame, but there are plenty of excuses for this. &#8220;Turing equivalence&#8221; right? Finding quality tools &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/best-way-to-learn-a-programming-language/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>(Update, added Casting SPELs)</p>
<p>For better or worse, it&#8217;s accepted in our industry to be fluent in only a single programming language or technology. It&#8217;s lame, but there are plenty of excuses for this. &#8220;Turing equivalence&#8221; right? Finding quality tools is hard. And worse yet, to learn a new language you have to spend days and weeks reading some lame introductory text, right? Wrong!</p>
<p>There are tons of good intro guides out there that can get you up and running quickly, if only you know where to look. I&#8217;ve accumulated a bunch of these, and would like to spread the good wealth:</p>
<p style="text-align: center;"><img class="aligncenter" title="learnYouAHaskell_exampleImage" src="http://learnyouahaskell.com/startingout.png" alt="Learn You a Haskell, example image" width="128" height="112" /></p>
<p style="text-align: left;"><span id="more-145"></span></p>
<p><a href=" http://learnyouahaskell.com/">Learn You a Haskell for Great Good</a> — Terribly fun illustrations, and fast moving. See the little chick to the right for example. Sticks mostly to the REPL and teaches by example. Best of all, elides all those lectures on &#8220;how Monads changed my life&#8221; stuff. Just the facts.</p>
<p style="text-align: center;"><img class="aligncenter" title="teachYourselfScheme_exampleImage" src="http://www.ccs.neu.edu/home/dorai/t-y-scheme/leaf.gif" alt="Teach Yourself Scheme, example image" width="120" height="106" /></p>
<p><a href="http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html">Teach Yourself Scheme in Fixnum Days</a> — A little more down to earth, faster paced. Again, REPL focused; every section includes short illustrative snippets, although many of them refering to fictitious functions.</p>
<p>There&#8217;s also a <a href="http://www.cs.caltech.edu/courses/cs1/resources/scheme-for-c-programmers.html">Scheme for C programmers</a> that runs even quicker. It includes special considerations for C programmers, but knowledge of C is <em>not</em> a prerequisite.</p>
<p>Oh, and lastly, the makers of Chez Scheme also offer the full text of <a href="http://www.scheme.com/tspl4/">The Scheme Programming Language</a> (vendor neutral) on their site.</p>
<p style="text-align: center;"><img class="aligncenter" title="whysGuideToRuby_exampleImage" src="http://mislav.uniqpath.com/poignant-guide/images/the.foxes-4a.png" alt="Why's (poignant) Guide to Ruby" width="229" height="194" /></p>
<p><a href="http://mislav.uniqpath.com/poignant-guide/book/">Why&#8217;s (Poignant) Guide to Ruby</a> — This one is just&#8230; unique. Why&#8217;s guide is a bit rich on illustrative dialog for my tastes, but I can say I&#8217;ve never seen anything else like it. If you just want to learn the language, skip ahead to chapter 3, but come back to chapter 1&amp;2 later when you have time for a <em>unique</em> experience.</p>
<p style="text-align: center;"><img class="aligncenter" title="practicalCommonLisp_coverArt" src="http://www.gigamonkeys.com/book/small-cover.gif" alt="Practical Common Lisp, book" width="125" height="168" /></p>
<p><a href="http://www.gigamonkeys.com/book/">Practical Common Lisp </a>— Full text online. Excellent format, interspersing chapters on the language with case study chapters that examine working programs, giving context for the reader. If this is your 3rd or 4th language, you may find the pace a little slow (a common challenge in programming language instruction). However, this is not to a fault, and 2nd language readers will definitely appreciate the effort made to elaborate the potentially confusing corners of the language.</p>
<p style="text-align: center;"><img class="aligncenter" title="CastingSPELsInLisp_exampleImage" src="http://www.lisperati.com/splash.jpg" alt="Casting SPELs Example" width="210" height="167" /></p>
<p><a href="http://www.lisperati.com/casting.html">Casting SPELs in LISP </a>— Like Why&#8217;s (poignant) guide, this one is also <em>out there</em>. Learns you Lisp through programming a simple text adventure game.</p>
<p>Finally, you&#8217;ll want a reference manual for Common Lisp. This isn&#8217;t just any reference manual though, this one is unique. <a href="http://www.lispworks.com/documentation/HyperSpec/Front/index.htm">The Common Lisp Hyperspec</a> is just about the most gosh-darned-hyperlinked manual I&#8217;ve ever seen. Particularly helpful is the permuted symbol index. An excerpt:</p>
<blockquote>
<pre>                   <a rel="DEFINITION" href="../Body/f_vals_l.htm#values-list">values-list</a>
                          <a rel="DEFINITION" href="../Body/f_list_.htm#listST">list*</a>
                          <a rel="DEFINITION" href="../Body/f_list_a.htm#list-all-packages">list-all-packages</a>
           <a rel="DEFINITION" href="../Body/m_ppr_ex.htm#pprint-exit-if-list-exhausted">pprint-exit-if-list-exhausted</a></pre>
</blockquote>
<p>Yeah, that&#8217;s cool.</p>
<p>So there are some resources to get you started. But what, you say, you don&#8217;t still don&#8217;t have time to install anything? Then don&#8217;t – there are a bunch of REPLs you can play with before committing any time to setting up tools:</p>
<ul>
<li><a href="http://sisc-scheme.org/sisc-online.php">SISC</a> Scheme &#8212; requires Java. A very complete r5rs Scheme implementation.</li>
<li><a href="http://www.wescheme.org/openEditor">WeScheme</a> &#8212; JavaScript. Scheme ide, with repl.</li>
<li><a href="http://tryruby.org/">Try Ruby</a> &#8212; JavaScript + server-side execution.</li>
<li><a href="http://www.trypython.org/">Try Python</a> &#8212; Silverlight. Supports all the core python 2.x language constructs.</li>
<li>You can&#8217;t swing a cat without hitting a <a href="http://tech.einaregilsson.com/repl.html">JavaScript repl</a> or <a href="http://www.mochikit.com/examples/interpreter/index.html">two</a>, or an <a href="http://ejohn.org/apps/learn/">interactive lesson</a>.</li>
<li><a href="http://tryhaskell.org/">Try Haskell</a> &#8212; (upd, 07/18) Looks like it&#8217;s going through updates. Since I first saw this a few months ago, it looks like they&#8217;ve added lessons and tweaked it to run smoother. It seems every (worthwhile) language is gonna have one of these sooner or later.</li>
</ul>
<p>These are my favorite fun and easy starting points, but there&#8217;s more out there. Try a couple out, find one that seems interesting to you. When you&#8217;ve found a new language that looks promising, stick with it for a while. It will give you more perspective, and additional tool to use in your programming arsenal.</p>
<p>Update (7/18/2010):</p>
<p>First, Mozilla has a <a href="https://developer.mozilla.org/en/a_re-introduction_to_javascript">re-introduction to JavaScript</a>, especially for its opening sentences:</p>
<blockquote><p>Why a re-introduction? Because <a rel="internal" href="https://developer.mozilla.org/en/JavaScript">JavaScript</a> has a reasonable claim to being <a title="http://javascript.crockford.com/javascript.html" rel="external nofollow" href="http://javascript.crockford.com/javascript.html" target="_blank">the world&#8217;s most misunderstood programming language</a>. While often derided as a toy, beneath its deceptive simplicity lie some powerful language features.</p></blockquote>
<p>Also, added Haskell to the list of online REPLs available.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/best-way-to-learn-a-programming-language/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My programming languages story</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/my-programming-languages-story/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/my-programming-languages-story/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 18:14:47 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=109</guid>
		<description><![CDATA[It&#8217;s bad style, but I must start with an aside:  on reddit/scheme, there was a link to a blog series on developing a Scheme interpreter over January 2010.  It might not implement any particular Scheme standard or particularly many libraries, &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/my-programming-languages-story/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s bad style, but I must start with an aside:  on <a href="http://www.reddit.com/r/scheme/">reddit/scheme</a>, there was a link to a blog series on <a href="http://peter.michaux.ca/index#Scheme%20from%20Scratch">developing a Scheme interpreter</a> over January 2010.  It might not implement any particular Scheme standard or particularly many libraries, but it&#8217;s got all the functional elements.  <a href="http://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29">Bootstrapping</a> a programming language is fun and easy.</p>
<p>Anyway, he also posted a <a href="http://peter.michaux.ca/articles/my-road-to-lisp">his personal history</a> of programming language study, and it got me thinking about my own personal programming languages history.</p>
<p>It all started with Logo&#8230;</p>
<p><span id="more-109"></span></p>
<p>1992: <a href="http://en.wikipedia.org/wiki/Logo_%28programming_language%29">Logo</a>/LogoWriter.  After a basic intro class (4th grade) of moving a turtle around, I would occasionally try out various programming exercise cards, where I learned about variables, loops, and functions.  Unfortunately, the advanced exercises required a version of the software the school didn&#8217;t have.</p>
<p>1995: <a href="http://www.amazon.com/dp/1568840764">VB for dummies</a>, and a cloned copy of a <a href="http://en.wikipedia.org/wiki/Visual_basic">Visual Basic</a> 3 floppy diskette.  Remember floppy disks?  Yeah, me neither.  First real introduction to arrays, graphics and UI controls.  Wanted to make a clock app, so I learned trig early from my dad with sketches of triangles on a post-it note.  Some time later got to enjoy VB 6, GDI, and BitBlt for bitmapped graphics.  I remember hating BitBlt, it seemed to have a really annoying set of params; I wished it was written in a real programming language, like VB for instance.</p>
<p>1999: <a href="http://en.wikipedia.org/wiki/C_programming">C</a>, <a href="http://en.wikipedia.org/wiki/Java_programming">Java</a>.  I don&#8217;t remember the exact order, but I made the jump from VB to C (with thanks to <a href="http://www.amazon.com/dp/0131103628/">K&amp;R</a>), and mode 13h graphics.  That was the simple mode right?  First introduction to algorithms, wrote a 2d &#8216;Doom&#8217;-style raytracer after reading about it in one of those so-so <a href="http://www.amazon.com/dp/0672305623">game programming in 21 days </a>books.  I say &#8216;so-so&#8217; because to even have a hope of learning anything about a programming topic in <a href="http://norvig.com/21-days.html">only 21-days</a>, it either has to have very narrow focus or, in this case, absolutely no depth. Also spent a little time in C++, but found it very complicated and confusing; I only got as far as I did because the AP test for Computer Science was in C++ the year I was taking it. Finally finished up this period hacking around in Java, made a bunch of browser Applets, as was the style at the time.</p>
<p>2000: <a href="http://en.wikipedia.org/wiki/VHDL">VHDL</a>, <a href="http://en.wikipedia.org/wiki/Perl">Perl</a>, <a href="http://en.wikipedia.org/wiki/Java_(programming_language)">Java</a> &#8211; Skipped intro CS courses.  Learning VHDL for digital logic course, and Java for algorithms courses.  Picked up a book on Perl for the fun of it, used it to parse and process Counter-Strike logs and generate webpages of stats.</p>
<p>2001: back to <a href="http://en.wikipedia.org/wiki/BASIC">Basic</a>s &#8211; Spent the summer working at a computer camp for kids, instructing in robotics kits programmed in Parallax Basic.  Later that year, switched back to Visual Basic; the <a href="http://en.wikipedia.org/wiki/Visual_basic_.net">.Net</a> version, which now rivaled Java in functionality.  This ended up being my language of choice for some time, marrying true OO semantics like Java with the wonderful Basic syntax.</p>
<p>2003: honed my programming and design skills finishing my CS degree.  Touched <a href="http://en.wikipedia.org/wiki/Prolog">Prolog</a> and <a href="http://en.wikipedia.org/wiki/Lisp_%28programming_language%29">Lisp</a> briefly in one of those programming languages survey courses, but didn&#8217;t have a particularly good instructor.  Senior year I interned at Microsoft where I got to dig back into C for a while.</p>
<p>2004: <a href="http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29">C#</a> &#8211; Started fulltime at Microsoft, where I was to be working in C#, so I learned C#.  &#8220;Oh, this is basically VB.Net with a Java-like syntax.&#8221;  Heh, yeah, sounds funny now maybe, but only because (statistically) you don&#8217;t know anyone who uses VB.Net.  I still say, for CLR 1.0 languages, it had the better syntax.  Learned C# 2.0 <a href="http://en.wikipedia.org/wiki/Generic_programming">generics</a> while it was fresh off the line, and learned a bunch of stuff about the difference between the CLR&#8217;s programming model and that of C.</p>
<p>2006: <a href="http://en.wikipedia.org/wiki/C%2B%2B">C++</a> &#8211; Was told I was to be working in C++, so I learned C++.  <a href="http://www.amazon.com/dp/0596004966">C++ Pocket Reference</a> for syntax on the go, Stroustrup&#8217;s <a href="http://www.amazon.com/dp/B000MRSQUM">TC++PL</a> 2nd ed for semantics (make sure you get special edition though), Meyers&#8217; <a href="http://www.amazon.com/dp/0321334876">Effective C++ 3rd ed</a> for learning a huge selection of gotchas and design issues, and Alexandrescu&#8217;s <a href="http://www.amazon.com/dp/0201704315">Modern C++ Design</a> for teaching me an exciting selection of generic and <a href="http://en.wikipedia.org/wiki/Generic_programming">generative</a> programming techniques using templates.</p>
<p>2008: <a href="http://en.wikipedia.org/wiki/Python_%28programming_language%29">Python</a>, <a href="http://en.wikipedia.org/wiki/Javascript">JavaScript</a> &#8211; Sparked by a conversation with a co-worker, started learning Python.  Was really surprised about how much easier many programming problems became.  I realized I didn&#8217;t really have a good idea what was out there.  Tinkered with JavaScript.  Started looking into programming language <a href="http://en.wikipedia.org/wiki/History_of_programming_languages">origins</a>.</p>
<p>2009: <a href="http://en.wikipedia.org/wiki/Lisp_%28programming_language%29">Lisp</a>, <a href="http://en.wikipedia.org/wiki/Scheme_%28programming_language%29">Scheme</a>, <a href="http://en.wikipedia.org/wiki/Haskell_%28programming_language%29">Haskell</a>, <a href="http://en.wikipedia.org/wiki/Ml_programming_language">ML</a> &#8211; Inevitably a pass through Lisp.  It seems a lot of programmers go through this phase at one point, and it makes sense; <a href="http://www-formal.stanford.edu/jmc/history/lisp/node2.html">McCarthy created Lisp</a> precisely to describe computing, and that clarity is refreshing.  Scheme, and the book <a href="http://www.amazon.com/dp/0262011530">SICP</a>, introduced me to different computing models including first class continuations, <a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5">streams</a> (aka lazy lists), and the <a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-28.html#%_sec_4.3">amb operator</a>.  Haskell led to more exploration of lazy evaluation, better understanding and insights in generics, and its supremely practical <a href="http://www.haskell.org/tutorial/classes.html">typeclasses</a>.</p>
<p>Currently tinkering with Standard ML, as a simplified alternative to Haskell; hacking together small tasks in Python; and whatever my new day job brings in.</p>
<p>~~~</p>
<p>Oh, and somewhere in school I briefly tried &#8220;eMbedded Visual Basic&#8221;.  That&#8217;s where I first learned it&#8217;s possible to start with a good programming language and cut it down to something similar but that *<strong>really</strong>* sucks.  For those who never heard of it, they removed a variety of language features including user defined types, the compiler error messages were inscrutable, and it was slow.</p>
<p>If you were a developer on that project, I&#8217;m <em>really</em> sorry, but better languages have been implemented <a href="http://groups.csail.mit.edu/mac/projects/s48/">over a weekend</a>.  I don&#8217;t blame you.  Maybe you didn&#8217;t have a whole weekend.  Or were held hostage.  That would explain it I think.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/my-programming-languages-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparing &#8220;Go&#8221; to &#8220;Brand X&#8221;</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/comparing-go-to-brand-x/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/comparing-go-to-brand-x/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 06:37:59 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=101</guid>
		<description><![CDATA[The old-timers might figure out what Brand X really is before the end. For the rest of us, the reveal at the end is just as shocking as the author intended.  All and all, it confirms what I suspected: Go &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/comparing-go-to-brand-x/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The old-timers might figure out what Brand X really is before the end.  For the rest of us, the reveal at the end is just as shocking as the author intended.  All and all, it confirms what I suspected: Go nice enough, but it is hardly original.  Sure it looks like a great language to write in compared to C, but then again, what doesn&#8217;t?</p>
<p><a href="http://www.cowlark.com/2009-11-15-go/">Comparison</a> of Google&#8217;s new language &#8220;Go&#8221; to mysterious &#8220;Brand X&#8221;, and the shocking reveal of Brand X&#8217;s true identity.</p>
<p>As found through <a href="http://www.foldl.org/">http://www.foldl.org/</a>, a digest blog on various programming language topics.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/comparing-go-to-brand-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming Language Popularity</title>
		<link>http://ra3s.com/wordpress/dysfunctional-programming/programming-language-popularity/</link>
		<comments>http://ra3s.com/wordpress/dysfunctional-programming/programming-language-popularity/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 21:29:25 +0000</pubDate>
		<dc:creator>aaron</dc:creator>
				<category><![CDATA[languages]]></category>
		<category><![CDATA[debate]]></category>
		<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://ra3s.com/wordpress/dysfunctional-programming/?p=69</guid>
		<description><![CDATA[Some interesting metrics of programming language popularity. LangPop.com &#8211; statistics on greping search queries on various web properties &#8212; usage in open source projects, books published on Amazon.com, etc. TIOBE index &#8211; similar listing, of search engine results exclusively.  Longer &#8230; <a href="http://ra3s.com/wordpress/dysfunctional-programming/programming-language-popularity/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Some interesting metrics of programming language popularity.</p>
<ul>
<li><a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">LangPop.com</a> &#8211; statistics on greping search queries on various web properties &#8212; usage in open source projects, books published on Amazon.com, etc.</li>
<li><a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">TIOBE index</a> &#8211; similar listing, of search engine results exclusively.  Longer tail listing, and shows trending.</li>
<li><a href="http://blog.doloreslabs.com/2009/05/the-programming-language-with-the-happiest-users/">Happiest users</a> &#8211; this one is just a static blog post, but takes the additional dimension of not just frequency of posts, but the <strong>satisfaction</strong> level being expressed.  The data set is absymally small &#8212; I hope eventually another group will follow up with a more comprehensive analysis of more languages, and more satisfaction dimensions.</li>
</ul>
<p>Usage data might be more interesting or &#8216;scientific&#8217; (number of statements executing, new applications/modules shipped, etc).  However, &#8216;mindshare&#8217; is itself an interesting dimension, as the technical merits of programming languages are typical less considered than social pressures and perception.</p>
]]></content:encoded>
			<wfw:commentRss>http://ra3s.com/wordpress/dysfunctional-programming/programming-language-popularity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

