Kurt's Blog

November 24, 2009

My New Language for 2010

Filed under: Uncategorized — Kurt Häusler @ 9:56 am

Following the advice of The Pragmatic Programmer, I try and learn a new programming language each year.

  • In 2007 it was C# which was easy as I did play around with it a few years earlier, and were using it at work.
  • In 2008 it was Python. I concentrated on book learning in the first half of the year, and were lucky enough to be able to start a Python (on Pylons) project in the second half of the year, which is where it really started to sink in.
  • In 2009 it has been Haskell. This hasn’t gone as well, I feel like I have only just scratched the surface and I still don’t feel “fluent”, but I have grown an appreciation of it.

So I am formulating a shortlist for my language of 2010.

  • Erlang. This deserves a place on the list because I enjoy the functional languages, and heard that Erlang developers get paid the most.
  • F#. The .NET ecosystem is pretty large, I already know the .NET libraries and the .NET community so it is a good choice to combine that with my interest in functional programming. I could even see myself using it in the workplace.
  • Scala. I haven’t had much to do with the Java world since I was tutoring beginner’s Java at uni. I have heard good things about Scala and it could help bring me up to date with what is happening in the Java community.
  • Factor. This is interesting because it is a completely different paradigm to anything else I have worked with in the past. It is a concatenative, stack based language. I remember when I got my HP48 I had ideas about combining the power of the stack in a high level, even object oriented, programming language. I think the paradigm would suit my thinking style well.
  • Objective C. I have actually played with Objective C a very long time ago. During a high school science summer camp we developed a simple application on the NeXTSTEP operating system. It is big in the Apple world. Practically a standard for Mac OS X and the iPhone. I feel it is one of those things I should just know.
  • Ruby. I did some quick Ruby tutorials a while ago, before deciding to look into Python a bit more. Since then the Ruby on Rails hype has put me off a bit, but a lot of developers that I respect and listen to work mostly with Ruby and consider it a favorite language. It seems to support a culture that overlaps considerably with the clean code / agile / software craftsmanship communities. If I choose Ruby, I would probably get over my prejudice against the hype and and start straight on Ruby on Rails.
  • Groovy. For much the same reasons as Scala above. I actually have a book already, that I scored for free from an open space, called Groovy für Java-Entwickler. I feel that I might enjoy Scala a bit more though.
  • D. My main language at work at the moment is C++. I have mixed feelings about C++. One one hand it is a pain to have to deal with for most standard desktop applications, compared to something more modern, yet it is somehow more macho than C# or Java, and brings me more cred. Ok so that latter point is bogus. Maybe my feelings are not mixed at all. Maybe I am starting to dislike C++. Apparently D addresses C++’s weak points, and retains its good points, whatever they may be.
  • JavaScript. Not really a general purpose language, but a must as more and more applications are web based, or have web based components. I would also enjoy working with a prototype based OO language, and some of the libraries like JQuery are very impressive too.
  • Smalltalk. This language seems to have played a major part in the direction that modern languages have gone. The tools and methods that the smalltalk community enjoyed years ago are only recently coming to more mainstream languages. A lot of the major software development authors, at least in the OO community, seem to come from a smalltalk heritage. By learning it I might be able to get a feel for where things have come from, and where they may go in the future.

What have I missed? Is anything out of place there? Anything glaringly missing?

I will probably make a decision before the new year. The plan will be to book-learn it in the first half of the year, and try and dive into a “real world” project in the second half.

Advertisements

3 Comments »

  1. I think you missed Go, the language Google just published:

    http://golang.org/

    Comment by Antti — November 24, 2009 @ 6:40 pm

  2. Objective C would give you a good excuse to get an iphone (or iPad), and you’ve even got a chance at some pocket change with your annual project.

    Ruby would give an excuse for yet another ruby vs. python comparison.

    Haskell — have you considered overthrowing the tyranny of the calendar and seeing where this would go with another year’s investment?

    Comment by mdhills — March 23, 2010 @ 4:42 pm

  3. I won’t get an iPhone or iPad until I can install what I want or write on it, and others can install what I write without going through Apple. (If I were to upgrade my phone now I would get an Android.) I wouldn’t mind an MBP though, and would get right into both Objective C and Ruby on that.

    Regarding Haskell, that is exactly what I am doing.

    Comment by Kurt Häusler — March 24, 2010 @ 9:11 am


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: