<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>BlackBox : Next Language to Learn?</title>
    <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Where technology and art disappear</description>
    <item>
      <title>Next Language to Learn?</title>
      <description>&lt;p&gt;Definitely looking for feedback on this one. On my previous list I used to have the following as the next languages to learn and play around in. Of course the only true way to learn a language is to find a project to do in it (but I&amp;#8217;ll figure that one out a bit later).&lt;/p&gt;

&lt;p&gt;In no particular order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Ruby&lt;/li&gt;
&lt;li&gt;Groovy&lt;/li&gt;
&lt;li&gt;Objective-C&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I went ahead and nailed Groovy (well still working on it but I have learned a lot in the short time I&amp;#8217;ve dived into it). I still have my Programming Ruby book (and my Rails book) but haven&amp;#8217;t had a chance to dive into those yet. Really would love to compare Groovy&amp;#8217;s meta programming with Ruby&amp;#8217;s in the near future. Python is still kinda on the radar, but mostly to learn how to manipulate tuples. Objective-C sits above Python for the moment.&lt;/p&gt;

&lt;p&gt;Recently though some new (and not so new) languages have entered my list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://erlang.org"&gt;Erlang&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://haskell.org"&gt;Haskell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://scala-lang.org"&gt;Scala&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://smalltalk.org"&gt;Smalltalk&lt;/a&gt;/&lt;a href="http://squeak.org"&gt;Squeak&lt;/a&gt; (specifically with relation to &lt;a href="http://seaside.st/"&gt;Seaside&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are some others that I might look into given the right impetus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lisp&lt;/li&gt;
&lt;li&gt;&lt;a href="http://caml.inria.fr/ocaml/index.en.html"&gt;OCaml&lt;/a&gt; - not so sure about this one&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Functional languages are all the rage right now, so it would be good to know why ;-). And Erlang and Scala both have Web frameworks that look interesting (&lt;a href="http://erlyweb.org/"&gt;Erlyweb&lt;/a&gt; and &lt;a href="http://liftweb.net/"&gt;Lift&lt;/a&gt; respectively). Being a Web programmer I would like to investigate these as well.&lt;/p&gt;

&lt;p&gt;What other languages are out there that would be good to learn? Why?&lt;/p&gt;</description>
      <pubDate>Sun, 17 Jun 2007 17:36:50 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:7daaf81c-bc0b-45ed-bc79-bb22fc46ae8f</guid>
      <author>Warner Onstine</author>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn</link>
      <category>programming</category>
      <category>functional</category>
      <category>language</category>
      <trackback:ping>http://www.warneronstine.com/blog/articles/trackback/301</trackback:ping>
    </item>
    <item>
      <title>"Next Language to Learn?" by Kevin</title>
      <description>&lt;p&gt;I'll put in my vote for Erlang for the following reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Functional language - Nice to try if you've never done functional programming before&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cheap/easy concurrency &amp;amp; distribution - The language supports high levels of concurrency and distributing code over multiple nodes/machines&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mnesia&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ErlyWeb - if web apps are your thing&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Wed, 27 Jun 2007 07:44:16 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:4d4105b3-2b90-426d-bfc5-149cbe5c79f7</guid>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn#comment-36</link>
    </item>
    <item>
      <title>"Next Language to Learn?" by Warner Onstine</title>
      <description>&lt;p&gt;Ok, as strange as it sounds that last part actually has some cool ideas in it (and gives me some ideas for my first Scheme project).&lt;/p&gt;

&lt;p&gt;Thanks Leo!&lt;/p&gt;</description>
      <pubDate>Thu, 21 Jun 2007 16:22:30 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:0fe0c0f1-c4a7-4c09-aa1a-423d49bc5845</guid>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn#comment-35</link>
    </item>
    <item>
      <title>"Next Language to Learn?" by Leo</title>
      <description>&lt;p&gt;Looks like Objc is going the way of Pascal...which is exactly why I use it! You love Hemmingway, right? Then you have to be all about the dramatic reversal! Stick with the underdog.&lt;/p&gt;

&lt;p&gt;Anyway, I would also say the only real way to find out which one you want to use is to use them all!!! Do what I did with the wishlist man! Use every language you can coherently bind and do it! &lt;/p&gt;

&lt;p&gt;If you think that's too crazy, then I suggest this! Code generators. Write a code generators in each that translate from one to the other like chain-linking code. You're into DSLs and code generation. This is your cup'o'tea. Grab Haskell and make it generate OCaml or Smalltalk code, then build a web frontend using Erlang. Use scheme to generate syntax highlighted HTML of the generated code. Add a pragma or annotation language for Literate programming into your generated code that is interpreted by a Scala program and generates LaTeX and docbook code from the code.&lt;/p&gt;</description>
      <pubDate>Wed, 20 Jun 2007 19:53:30 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:293bb6d2-7bbd-4c67-9d1f-cfdb65a80acb</guid>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn#comment-34</link>
    </item>
    <item>
      <title>"Next Language to Learn?" by Leo</title>
      <description>&lt;p&gt;Fortress looks good because:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;From the creators of Java!&lt;/li&gt;
  &lt;li&gt;LaTeX source generation! Whoa! I'm in for sure&lt;/li&gt;
  &lt;li&gt;Difficult to find and even harder to grok documentation! I love a challenge&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Wed, 20 Jun 2007 19:45:13 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:8f04c01c-45cd-4530-90d5-218059799355</guid>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn#comment-33</link>
    </item>
    <item>
      <title>"Next Language to Learn?" by trank</title>
      <description>&lt;p&gt;there are several reasons to look at fortress.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it is designed for concurrency in mind. even the for loops are concurrent by default. the future of development will definitely require ease of development for multi processor systems.&lt;/li&gt;
&lt;li&gt;functional and object oriented. Traits.&lt;/li&gt;
&lt;li&gt;very interesting code rendering. your code actually look like pseudo code.&lt;/li&gt;
&lt;li&gt;it is not verbose (especially in rendered mode) like a scripting language and has the strength of it in the syntax but has strongly typed language features.&lt;/li&gt;
&lt;li&gt;tests are part of language.&lt;/li&gt;
&lt;li&gt;To me an important aspect,  the developers of the language are pretty strong in their areas (eg, Guy Steele) and it is backed by Sun.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the bad side, you will need to wait some more years for a native compiler, or a complete production  implementation for JVM. it's syntax may require the assist of an IDE, and it may be have a too scientific taste for some type projects.&lt;/p&gt;

&lt;p&gt;just check the beta language documentation.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://research.sun.com/projects/plrg/fortress.pdf" rel="nofollow"&gt;http://research.sun.com/projects/plrg/fortress.pdf&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 18 Jun 2007 10:31:45 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:23e4de5c-dc41-414b-96b6-b71a51a84c0b</guid>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn#comment-25</link>
    </item>
    <item>
      <title>"Next Language to Learn?" by r</title>
      <description>&lt;p&gt;erlang I think...seen the rest.&lt;/p&gt;</description>
      <pubDate>Mon, 18 Jun 2007 06:48:08 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:b15b44d7-e899-4326-a9ef-eb1ef0b3fae6</guid>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn#comment-24</link>
    </item>
    <item>
      <title>"Next Language to Learn?" by Fred</title>
      <description>&lt;p&gt;lol Objective-C ! What for ? programming a Mac I think. That's all it can do.
I used to code in that language 10 years ago. I was programming with the WebObjects thing, hopefully I switched to J2EE before it was too late.
Too bad Apple never advertised on WebObjects, it was a great product. And don't get me wrong, Objective-C is a very good language, but except on the Mac side, it's useless. Even WebObjects was programmable in Java in the end. Ok Java with NSArray, real fun, thanks Apple !&lt;/p&gt;</description>
      <pubDate>Mon, 18 Jun 2007 04:07:18 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:d7cb234b-e936-4684-a2eb-25d94c5bd1cc</guid>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn#comment-23</link>
    </item>
    <item>
      <title>"Next Language to Learn?" by Warner Onstine</title>
      <description>&lt;p&gt;That's true, but as a programmer I follow the &lt;a href="http://pragmaticprogrammer.com/ppbook/index.shtml" rel="nofollow"&gt;Pragmatic Programmer&lt;/a&gt;'s &lt;a href="http://www.pragmaticprogrammer.com/loty/" rel="nofollow"&gt;advice&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Learn at least one new [programming] language every year. Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut.&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <pubDate>Sun, 17 Jun 2007 23:00:38 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:1dd9e015-4ef9-4b99-976e-c996a660f230</guid>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn#comment-22</link>
    </item>
    <item>
      <title>"Next Language to Learn?" by Bashar</title>
      <description>&lt;p&gt;You don't mention why you want to learn a new language. A jack of all trades is a master of none. &lt;/p&gt;</description>
      <pubDate>Sun, 17 Jun 2007 20:22:58 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:5b09d4cf-9c75-4e14-b434-4fa83f0b5c3e</guid>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn#comment-21</link>
    </item>
    <item>
      <title>"Next Language to Learn?" by Warner Onstine</title>
      <description>&lt;p&gt;So, why should I learn &lt;a href="http://fortress.sunsource.net/" rel="nofollow"&gt;Fortress&lt;/a&gt; instead of some of these others? Tell me, I want to know :-)!&lt;/p&gt;</description>
      <pubDate>Sun, 17 Jun 2007 19:43:31 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:94955cdc-ddf7-4158-9651-0651480c5d0e</guid>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn#comment-20</link>
    </item>
    <item>
      <title>"Next Language to Learn?" by trank</title>
      <description>&lt;p&gt;Do not forget to add Fortress to your list. it is probably the most original one.. &lt;/p&gt;</description>
      <pubDate>Sun, 17 Jun 2007 18:25:03 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:27bd253d-62cb-4c0a-9fbc-fd16911d155c</guid>
      <link>http://www.warneronstine.com/blog/articles/2007/06/17/next-language-to-learn#comment-19</link>
    </item>
  </channel>
</rss>
