In the book, The Pragmatic Programmer the authors suggest that you learn a new language every year. With so many new languages these days, what will be your next programming language and why?

Personally I can't keep up with one new language a year, but I've been around a good handful of different languages and that has been of great help to me in both my career and the way I look at programming in general.

+19  A: 

Ruby due to the dynamic nature and Rails of course. I'm actually hoping to gain more insight into true object oriented programming by learning Ruby.

I would add to that the fact that I think learning a language a year is a dumb notion (probably going to catch some flack for that one) because learning a new language is really not that interesting. I find the frameworks which support the language are more compelling like the Ruby-case. Ruby is a neat language but the real value lies in the Rails framework.

I'm generally more interested in the results I can achieve with something than the something itself :)

Søren Spelling Lund
I agree about the language a year - except at university where you'll learn different types of language each year - Functional (ML/Haskell/etc), Procedural (C), Object Oriented (Java, C#), and maybe some others like Prolog. Languages aren't hard once you know one of each type. Just learning APIs...
Maybe learning one framework a year would be a better idea? I'm liking it the more I think about it.
Ryan Thames
Rails is a neat framework, but the value lies in Ruby language. Sorry had to say ths.
+41  A: 

Haskell. Because learning to think "functionally" seems like a very good thing and because it looks mature enough to be a realistic (or close) choice for projects.

haskell is older than I
+1 for Haskell.
Hooray Im Helping
+1 Haskell thought me how to write short generic code. Till this day I write map and filter (and similar) functions if they're missing.
+15  A: 

C#, because it's the most sensible choice in the current economic situation. Though, if I really had a choice it'd be Lisp. (Currently a C++ programmer)

In the current economic situation, more and more C# jobs are going to be outsourced - you might find yourself doing better looking for a less mainstream language.
+32  A: 

F# - I am a .NET developer, and i'm interested in the fact that it deals with Multi-threading simply

Paul Nearney
+1 because F# is basically a superset of c# + extras without some of the legacy c# have to deal with
+51  A: 

Python, as I am overdue for learning a scripting langauge after sticking with Java for a long time. I'm also interested in using the Django framework, so that should be a good motivation.

Another language on my list is Haskell, as I think I should take a look at a functional language after sticking with imperative languages for a long time.

+1 for Python - very useful to know a decent scripting language
+1 for Python and its greatest benefit - clean syntax and dynamic nature.. two greatest benefits - clean syntax, dynamic nature and ease of use, no - THREE greatest benefits.. (you get the idea)
Cool :) Something to consider: In languages like Java/C# making a lot of architecture is called "beautiful". Even when it takes days to implement. In Python, this is called "ugly" and writing less code that gets the job done (within the limits of clarity) is encouraged and called "beautiful".
Python is incredible, and DJango is the best framework I have ever used. It never ceases to amaze me.
+2  A: 

One PL a year is a guideline, not a hard rule... :-) And "learning" is vague: is it reading a book and get away with it (if so, I am supposed to know Forth, Lisp, APL, PostScript, etc.)? Or writing some little test code and run it? Or mastering it enough to write a small, usable application?

Anyway, on my radar, there is Python for quite some time (a classical, and might be handy for little scripts or more), and Groovy (because I want to explore at least one JVM language, and I am not fond of Scala syntax. And there are some cool stuff possible with it).
And perhaps, someday, JavaFX.

As always, the main issue is time (even more when you have a family life!).

A agree - I guess the point, they're trying to make is "don't get stuck with just one tool in your toolbox" and I can certainly to that.
Brian Rasmussen
+5  A: 

Learning Python at the moment, Lua soon to follow. I'm gearing up for the game industry ;)

Try shader programming as well (Cg is my current favorite shader language), it'll introduce you to a completely different problem domain on a very limited machine. Math, high performance writing, SIMD programming.
Jasper Bekkers
I already "know" cgfx and hlsl. Im also slightly familiar with CUDA.
Spend a lot of time on Lua, it'll serve you well. Awesome language, imo.
+10  A: 

OCaml because it's both functional and quick.

D because it looks like a good alternative to C++.

D is a good alternative for C++. Absolutely love it.
+21  A: 


I want to understand the functional approach and I love Emacs.

Careful - Emacs Lisp is a very different creature to Common Lisp or Scheme. Emacs Lisp "combines the elegance of Common Lisp with the industrial strength of Scheme, without hitting either of them, if you catch my drift" - [Steve Yegge](
I was thinking of doing this along with The Structure and Interpretation of Computer Programs-- easy to read, exercises to do, etc.
+8  A: 

I've had Perl in my sights for 2+ years now -- I think it is about time.

Perl's great fun, IMO. A good one to learn, and installed on pretty much every unix/linux system.
And perl6 is coming, really! Sooner than Duke Nukem Forever. Probably.
Muhaha... Perl is really interesting anyway, but don't expect higher salary.
Dercsár -- higher than what? A survey in my country (Poland) shown that Perl programmers are the highest paid ones.
+4  A: 

I'm not going to learn a certain language because of the hype around it or to see what new features it might have.

Once in a while I join interesting open source projects and just learn the language used in that project, so I can participate.

Or to say it another way: I do not choose a tool (like a hammer) from my toolbox and then try to solve any problem with that tool (which may or may not work), but instead I choose my language each time a new problem shall be solved.

+3  A: 

I don't find that advice particularly useful, IMO your knowledge will be too extended and shallow. Better learn and master a new language every 3 years or so.

In my case it's C# (after a Java and cpp/c past), and I'd like to know a functional language too (F# maybe?)

+5  A: 

I'm a PHP developer at the moment.

I'm planning to learn C# to gain more insight into OO concepts. Plus I'd like to write some desktop apps for a change.

Neil Aitken

None, even though Pragmatic Programmer was one of the best readings I've got on the subject, I don't agree with whole learn a new language every year debate.

Although not a new language but, what I'm going to learn next is Framework 3.0, 3.5. LINQ and all other shiny "cool" stuff.

dr. evil
But it's true. I can't do it *every* year but it really makes you a better developer.
Learning APIs is like learning a language to be honest - a very domain specific language. Same as learning SQL, even though that's a query language. The general gist is to not get in a rut with what you know. I'm going to learn JavaFX this year - it's Java and a scripting language...
In addition I can get away with learning that in my job. We're not all academics with plenty of time to spend learning languages!
@JeeBee Learning APIs can be harder than learning a language.
David Berger
I don't think it's a debate. I think you're limiting your career by concentrating solely on one language.

I'm a C# developer and intend to stick with C# for a couple more years (and why not?). My next 'language' shall be domain-specific.

Dmitri Nesteruk

The last language I learned was Ruby. Ruby is not completely different from languages like Java, C#, Python, Perl, but has some nice ideas behind it and the OO structure of the language and its core libraries are well designed. Also the Rails framework was a reason to learn Ruby.

However the next language will be C++, simply because I need it to customize software, which is written in C++.

+57  A: 

Some highly skilled people don't recommend to always learn the newest technology, instead you should practice fundamentals.

A list of suggestions, found on google China:

  1. Practice the fundamentals. Don’t spend all your efforts on popular languages and tools, and the skills listed in the job advertisements. Instead, master your skills in statistics, computing, databases, operating systems, computer architecture, computer networks and discrete mathematics. Try to solve problems in Donald Knuth’s “Art of Programming”. If you can solve most of the problems, your skills in computing are not bad.

  2. Seek more challenges. Experience in programming can reinforce your knowledge. Try to accumulate the experience of writing 100,000 lines of code when you are in your 4th year.

  3. Practice, practice, practice. Do not underestimate any of the actual work, such as seemingly simple coding or testing. You will gain professional experience pursuing and paying attention to the details of the code.

  4. Don’t forget about mathematics. Math is gymnastics to your brain. Math is everywhere. If you are particularly interested in math-intensive tasks, such as video and image processing, you will need these skills as your tools.

  5. Develop a team spirit and to learn how to work well with others.

  6. Encourage innovation, and don’t necessarily stick to the authors code in the books.

  7. Work strategically. Try to find meaningful and interesting summer job or part-time job if it does not affect you schoolwork. Go find a place that pays attention to programming. Working with a good boss, your code will be used by clients. Don’t rush to become a boss. Your goal must be to learn from other people. When you are working or finding a job, don’t only look at benefits and the job title. Pick an environment that encourages learning, a company that is willing to train employees, and a company that regards you as an important person. Last, but not least, pick a good boss.

I almost agree with your points, but usually when you seek to gain general knowledge it's best to combine that with learning a new language if you're up to the effort. Learning statistics very well, learn a functional language to go along (one that is best suited).
Pop Catalin
After all we don't want to become generalists but versed programmers.
Pop Catalin
I don't believe you should sacrifice getting to know you main tool(s) for the sake of learning as many languages as possible. I find the one language / year to be excessive, but I do believe that knowing several languages is a strength.
Brian Rasmussen
+0, not an answer to the question
I down voted, because your advice really depend on the field you are.Google need math to have efficient algorithms, thus it requires strong skill in math and statistics.If you plan to do web developments it's foolish to learn discrete math, operating systems, and advanced computer networks (unless you need to scale, but you can learn when it's required). We only need to learn what we think fun, development is so wide that every skill set have its utility somewhere.
Nicolas Dorier
@Daniel: The answer would be: Instead of always trying to catch up with new technology (languages) you should probably rather work on the foundations..But personally I liked Ruby (and Rails) very much, so if u want to learn a new language you may want to try it.. It's also not that much to learn.. you should be able to learn Ruby with Rails in about 3 weeks :)
@Slashene agree, but many people I know, who do "webdev" have a business or art background.. if you really want to go into programming or engineering the statements above make sense IMHO
The suggestions are mainly from Kai-Fu Lee:
"Some people"? Smells like a weasel to me:
Drew Noakes

I'm a Java developer, developing applications on the cutting edge of Java ME, also I'm, of course, familiar with C++ and I know the basics of PHP 'cos I had to build my own site ant simple XHTML was not very convinient.

If I were to choose next programming language, than except for studying PHP properly I would probably pay some attention to interpreted languages such as Python and Ruby. And certainly Groovy is also worth studying.

+3  A: 

I quit my otherwise fine job last month, and took up a new position, mainly to make the switch from PHP to Ruby. So right now I'm learning Ruby. I'm still not sure such a radical move was the wisest choice, but it works; I already feel rather confident after having used the language professionally for less than two weeks.

Big ups for taking a chance.
David Berger
+1  A: 

I currently work as a Java developer, but over the years I have learned:

  • BASIC (age 11, home)
  • Logo (School - not in depth)
  • Z80 Assembler (home)
  • 68000 Assembler (home)
  • Pascal (age 17/18 school)
  • ML (18, university)
  • Modula 3 (19, university)
  • Java (19, university - in depth)
  • C (20, university)
  • Prolog (20, university - not in depth)
  • Perl (post university - in depth for work)
  • PL/SQL and PL/pgSQL
  • Java 5 (and JSPs, Servlets, Struts, ... enough new features and APIs to warrant listing again)

I've mostly forgotten the assembly languages and the not-in-depth languages now, it was a long time ago. I'm sure with a book and a week I could get back up to speed in them however.

From this I assume that most people will learn a language a year at university, and post university when time is much more precious they may learn one every few years, but they will also learn new APIs within each language (JavaFX, LINQ, etc) as their in-depth knowledge expands. JavaFX for me next year, I've got a good work-related excuse for that one.

What am I missing here? Python and Ruby certainly. PHP I know enough to hack it if need be, but I fail to see why I would use that over Java which is just a nicer language despite its many flaws. I'm missing the Microsoft ecosystem languages. I should revisit functional languages - Haskell seems a good choice.


Currently Delphi programmer, I already programmed in Basic, Assembly (a bit), C++, Java.

The next I think will be C#. I Like so much this language. I prefer C# instead Java, it is more pratical for me.

Carlos Eduardo Olivieri
+3  A: 

I'm currently considering Smalltalk, F# and Erlang from the perspective of being very different from what I've done before. I rather suspect the next one will actually be Javascript, given my to-do list for the next year...

Already learned (in approximate chronological order)

  • PL/1
  • C
  • SQL (various dialects, declarative and procedural)
  • VB/VBA
  • Delphi
  • C#
  • Ruby
  • Python

(plus bits and pieces of a few others)

Mike Woodhouse
+2  A: 

I'm doing primarily Java and a little C#. I've already started looking into F# and Scala. Hopefully next year I can really dig into one (or both?) of them.

Brian Knoblauch
Update: Tried both of them, wasn't terribly impressed, and then finally ended up with Clojure which I really like... :-)
Brian Knoblauch
+1 for Scala...
+4  A: 
  • ANSI C
  • Objective-C (for iPhone development primarily.)
  • C++
+1  A: 

Well, I suppose the truest answer would be Python 3.0 . Of course, sense I'm coming from Python 2.5 , it probably doesn't count too much.

My next non-Python language, though, is going to be ANSI C. Python integration + speed + computer science education + history should make for a happy journey. :)

J.T. Hurley
+2  A: 

C# because despite having avoided .NET and its associated languages forever (I'm more of a UNIX/Mac/Java guy by day) I got an Xbox 360 for my birthday and XNA is exceedingly bright and shiny.


Just one? I'm currently learning Objective-C in order to be able to write OS-X & iPhone apps and Ruby because Rails seems like such a great way to write web apps (I've done ISAPI with C++, PHP & ASP.NET with C#).

+1  A: 

Oh in the next year? Ruby, C++, Python, and I guess OpenGL.

Then eventually F# or Haskell.

Demands of the university these days.

I'd argue that OpenGL is not a language but an API.
Andrew Weir
+3  A: 

Ada. I just ordered a book on it from (along with books on computational physics, astrodynamics, strategic missile guidance, and spacecraft attitude dynamics... I wonder if I'm on any lists now...)

I just taught myself Python; before that, it was F#, and C#.

Actually, come to think of it, I need to fully teach myself C++. I can read it just fine, and write a lot of it perfectly fine. But I still haven't got the hang of templates yet.

+1  A: 


In my university I took a course on principle of programming language in II semester. It actually talks of different types of programming language. And in my later semesters I took elective subject on each of these language. Not very exhaustive though.

  1. procedural languages ( C )
  2. Object oriented language ( Java )
  3. functional languages ( Haskell )
  4. Rule based languages ( Prolog )
  5. Scripting language ( Python ) ( A learned a little ) ( I choose python out of perl/ruby/python. I will add this scripting language all though it was not in the course work. )

Writing the same basic programs I did in the other language with the new languages was interesting, and I really liked them.

Later I learned c#, but they were like learning syntax rather than learning something new.

I really liked this approach of learning programming language for each pradigm.

I wanted to learn Lisp, but these days I really slack off.


+1  A: 

Hopefully I will improve my JavaScript skills. I think Python 3 could be a smart move and F#. To learn a new language I really need some real projects to work on, so it all depends on what needs arise. For thoose who like to learn C I suggest looking into microcontrollers. Lots of fun and a fine excuse for learning C.


Cobol ! Because most of the Cobol programmers are retired, and you can make a lot of money in the banking industry with Cobol, as someone has to care for the software which actually does all the work of keeping our accounts...

(No, this was only a joke - but one with some truth in it.)

I'm in Banking Industry, I'm not cobolist but I meet them everyday, they are laughing at all OOP programmers because when they compare their salary to theirs heck ... :D
Rebol Tutorial

Well, my favorite language right now is D, and in the alpha branch the pace of innovation is fast enough that just keeping up with it is almost like learning a new language every 6 months to a year.

+2  A: 

The reality is that you want to stay ahead and learn the languages that are in most demand. Microsoft announced that F# will be incorporated as a choice in VS 2010. They already have books on F#. Gotta keep up. :) I also just read an article about SAP, and I quote "You know SAP and you pretty much have zero unemployment".

Just my two cents. :)


My job requires me to program in Java mostly, and I've used C/C++ and C#. So I guess my next language would be something like Ruby or Python. Something not too similar to the languages I'm already familiar with, so I can learn something new.

I think someone mentioned it in a previous answer, but I like the idea of learning one framework a year almost as much as learning one language a year.

Ryan Thames
+5  A: 

Right now I'm very interested in programming languages designed for concurrent/multi-threaded systems. F# and Erlang are on my shortlist.

On Intel's latest desktop CPUs, a single-threaded application shows 12.5% CPU usage. I don't want to explain my customers why they have to wait on an app that uses only 12.5% of their PC's power. Managing a few threads is doable in imperative languages such as Delphi, but for real concurrent programming, better tools are needed.

Jan Goyvaerts
+1  A: 

See what code looks like in various languages, side by side at rosettacode.
Decide for yourself, which one you could see yourself programming in.

Also a good way to learn to read code.

By the way, I would learn autohotkey if you're on windows.
It allows you to actually automate the computer from the ground up (keyboard, mouse, user interface). A great help file, you will be making useful programs in minutes.


Probably Protium as one should always eat one's own dogfood.

+1  A: 

Haskell. It's static type system with inferred types is really cool. It gives all of the compile-time type safety and refactorability of a language like Java with most of the simplicity of a dynamically typed language like Python.

Clint Miller
+2  A: 

F# and PROLOG.

+1  A: 

I'm staying with C# at the moment but I really should take a deeper look at PHP somewhere in the future!

+2  A: 

The whole idea of a new language a year is probably one of the least useful suggestions I've ever heard. It reinforces the idea that your job is to write code. It's not.

We all get into this field because we like to write code. And that continues to be most people's emphasis. But as you grow in your job you'll find that there are much more useful skills that you can learn. First would be how to write a good e-mail. The quality of writing in something as short as an e-mail is abysmal in this industry. And don't get me started on longer documents.

How about how to participate in a meeting? We all complain about how useles meetings are but is that a problem with meetings or a problem with us? How many times have you highjacked a meeting to argue a minor point with somebody just to prove how smart you are? (I know I have, but I'm getting better).

In short, there is a shortage of "soft" skills in our industry most of which are more important thn "hard" skills. If you truly want to be an effective programmer learn those things that will allow you to work better with others: teamwork skills and communications skills. Noit only will you be better at your job, you will enjoy your work more.

Jeff Hornby
Different languages promote different thinking. Learning Ruby made me a better Pascal programmer, for example, something that I'd never expected.
Tim Sullivan
I like your point a lot and think it ought to be said as often as possible, but I think there's still a lot to be said for breadth of knowledge where the rubber meets the road in programming. My social skills could be ten times better than my boss's, but he will still save me weeks of work if he has better intuition than I as to what is a good technology and approach to a problem.
David Berger
+1 Excellent reply.
+5  A: 

Erlang. It seems like a really slick language for doing things on a server, and I'm doing more and more of that.

Tim Sullivan
+2  A: 

Objective-J! I've never been this excited for a web-based scripting language before.

Dave DeLong
No kidding, it looks awesome! See for details
Quinn Taylor
+2  A: 


A homoiconic, non-strict, metadata rich, language that uses maps as its base data structure.

+1  A: 

Ruby, I'm bad at web development and I'd like to become better. I'm a .NET developer, I'd be better to learn ASP.NET MVC, but learning a new language can be fun.

Nicolas Dorier

Languages that I have learned and used over the years in chronological order:

  • Fortran
  • Algol
  • Cobol
  • Assembler on 68000 processor
  • Basic
  • xBase (Clipper compiler)
  • Pascal
  • C
  • Bash scripting
  • SQL
  • Advanced Revelation (more of a framework than a language)
  • Java
  • C++
  • Ruby
  • Python
  • Scala

Next is C#.

Which Algol did you use? Jovial, Algol58, Algol60, AlgolW or Algol68? My first was AlgolW at highschool. It seemed space age at them time.
+2  A: 

Rebol because it is the most amazing language, very practical that others are now copying.

Scala because it mostly ressembles Rebol for me.

F# because I love .NET.

Rebol Tutorial
+1  A: 

Scheme because it's not such bloated as Common Lisp.

+8  A: 
  FF         /     /
  FFFFF  -------------
  FF       /     /
  FF   --------------
  FF     /     /

Started already. :-)
Watch this to know why?

For the moment i mistook the ASCII art painting above for actual code in some esoteric programming language.

I currently know:


I recon its essential that every developer knows at least 3 languages that is different in the following manners:

Syntax Sequential vs OO Runtime (VM non VM) Keywords

I have started exploring with Cocoa recently because:

A key part of the Cocoa architecture is its comprehensive views model which I want to learn more about.

Programmer is freed from implementing basic infrastructure to concentrate only on the unique aspects of an application's content.

Very powerful base objects.

Apples success.

I believe looking at "older" programming languages we can learn more about current ones.

+2  A: 

Forth. It is time, all these years after Jupiter Ace. I want to experience the power of being able to build my own language (DSL like).

Peter Mortensen

Fortran 2008, the time is right.



High Performance Mark

I do not know yet. Why?

  1. Currently I am more interested in deepening my expertise in the languages I use frequently than learning a new one.
  2. History has taught me that I don't know what my (current or next) employer will want me to do next - if a new language is involved, that would force the issue, perhaps not in a direction I expect (or, possibly, want).
  3. (Somewhat referencing #1) My interests and needs may change as programming languages evolve and new ones are developed, so it's premature for me to say "I'm going to learn the hot language of the week".

Probably polishing my skills in common-lisp and javascript. I've been putting off learning ajax for too long and it's bitten me in the butt.

After that, maybe C# for XNA

When I have the time I'd like to look into Google's new Go language.

XNA is good fun.
Brian Rasmussen
+1  A: 

It all comes down to what you want to do with the language. There are beatiful languages that are almost useless in many situations because of the lack of libraries or frameworks. For example, Lua is a great little language, and very efficient, but it's grown to be a scripting language for games. Its ecosystem grew around this industry and there are no many tools to work on other domains.


I'll learn Go or Boo ... Or maybe Prolog ...

Already learned:

  • Delphi, Free Pascal
  • C#
  • PHP
  • JavaScript
  • QuickBASIC
  • some Java
  • some Visual Basic .Net
  • some unmanaged C++
  • some 16 bit 8086 assembler
Marvin Cohrs
+1  A: 

Assembly (x86 and ARM). Since it's practical for my work and it's the best way for me to really understand how things are working down there.


I'm primarily a .NET developer (C# and sometimes VB) and I'm currently learning Java (for Android development), Python (for scripting prototypes and Django) and F# (to learn functional programming concepts and because it integrates so well with the rest of the .NET framework)

+1  A: 

D 2.0, because I need a replacement for C++. The language just isn't ready for 2010, despite C++0x/C++1x. D on the other hand seems to be getting ready.


Most probably CAML. Collaborative Application Markup Language, not Categorical Abstract Machine Language. Also Script#.

The reason is purely practical: I may need one of both languages for the project I'll be engaged with in very near future. The last language I learned for fun was F#.

Nemanja Trifunovic

My next programming language will be one that I create myself :)

Why? Implementing a (new or existing) language is great fun and even if you just reimplement an existing language you know, it requires thinking about issues you probably haven't quite considered in full before, e.g. because it's been built into the language/compiler/run-time system.

(Add to that all the tricky design decisions that go into making an entirely new language...)

Depending on where you start, you may have to learn about lexing/parsing, garbage collection, type systems, assembly language, linkers/loaders, a bunch of new data structures, etc. All good things to learn!

The only downside is that you'd generally not get much opportunity to explore new paradigms this way. Since implementing a language is harder than using it, you usually have to limit yourself to the paradigm(s) you already know well...

+1  A: 


  • functional (I want to get better at it)
  • event-driven (always found it was the better concept for programming)
  • functional and even-drive makes it especially suited for asynchronous programming (gotta deal with multiple cores)
  • largest deployment base language (especially mobile with Android and iOS)
  • works clientside and serverside (write once code)
  • uses prototype based OO instead of class based OO (old Zope user, I like the acquisition concept)

-- MV


Selenese, is barely a langauge, but is most certainly the one I will learn next. Yeah, I could probably do it in python, but I'm in a hurry!


Learning Ruby, or rather Ruby on Rails, as of now. I have yet to learn some of the more advanced concepts in C++, I intend to revisit Thinking in C++ for the last two or three chapters and then take on Volume 2 as far as I have the motivation to go. After that I'm pursuing my interest in Haskell. :-)

+2  A: 

The D programming language, because its design goals are a close match with mine.

Walter Bright


I like the deployment consistency and performance of Java, but Java as a language is showing its age.

Compare Java which hasn't officially changed much since its inception, to C# which Microsoft is constantly iterating and improving, adding new and useful features like Linq.

Projects like Groovy target the JVM but allow more agile, functional semantics, allowing you to do more with less code, and avoid the reams of boilerplate syntax you may be used to seeing.



  • Basic
  • Pascal
  • C
  • C++
  • Scheme
  • ReXX
  • Java / JEE (profession for almost 10y)
  • Python
  • Smalltalk (current profession)
  • Erlang/OTP

I'm currently learning Google Go and write a book about it (will be finished this month). It combines the well known style of C-languages with Python convenience and Erlang concurrency, a nice and very productive combination. Additionally compiling is extreme fast (e.g. 5 MB with 186.000 lines of code in 707 Go files of the standard library on my MacBook in about 19 seconds compiled, linked, and deployed).

Last reasons are the company behind it, Google, large enough to keep and push it, and the inventors, among others Ken Thompson and Rob Pike. Both are well known for their work on Unix, Plan 9, and UTF-8.



Most of my programming is in Java. I've been using Scala for more than a year now and I'd like to know more about functional programming. Haskell is great for that, because it's a pure, strongly and statically typed functional programming language.

I like static typing, that's why Haskell is more interesting to me than Lisp-like languages which are dynamically typed.

+1  A: 

Processing, because I'm going to be rocking the Arduino.

+1. I wish I had the time to play with an Arduino.

My pick is . I choose this language, because I very much appreciate the effort of creating a beautiful language. From a technical standpoint Go is very ordinary. But the main point is to be able to express yourself clearly, to boost readability, to make coding fun (again), and not to introduce features for the sake of features.

I'm proficient in c, c++ and a couple of other languages, but I really darn hate it, that to use any of these languages effectively you need a catalog of rules what not to do (RTTI, template magic, macros, ...) . All these languages have features that add complexity for a bit more of w/e people think they need. Simplicity is far more valuable, than the c++ template mechanism, or the newborn from hell called "move semantics" in c++1x. seriously. For me (and 95% of c++ devs) it's just a new bullet point on the list of the things to avoid, because they screw with ordinary people's (such as me, my colleges, and most of you) mind.

Therefor I am on the search for a language, which I can read, where you can not fuck things up easily, and has some few orthogonal concepts which combine into a powerful, expressive tool.

ps: it's statically typed, compiled, garbage collected, there is no notion of heap and stack (because there is no need for it), it has built-in concurrency through two easy to use mechanisms. I probably forgot something so make sure to check it out yourself!


Javascript is set to be big. With JIT compilation (V8 etc) and server side hosts (Rhino, nodejs) theres no excuse really.

James Westgate
+3  A: 

Clojure is a very interesting Lisp-like language build on top of the JVM with some great concepts for concurrent programming. I definitly want to learn it next.

I also think that you should gain for a mix of "old" and "new" programming languages. Smalltalk for example is definitly worth looking at, since it introduced important features like a virtual machine. Lisp, of course, is a classic.

I also would recomment to learn what I call "glue languages" like make's syntax for Makefiles. This is not a "real" programming language, of course, but it's good to be able to read Makefiles. Often it is considered a "black art" and overlooked since the presence of tools that are build on top of make like CMake or autoconf. awk is another example. Useful and often overlooked when considering a new programming language.

Wolfgang Plaschg

Currently I'm learning Haskell.

And soon I'm going to have a look at F#/OCaml. But just a look.

I need to look precisely to Nomadic Pict or Fun Loft, they both implement the Pi-Calculus, and I think I really should get on this so as to have a better/closer vision and understanding of multithreading, and distributed computing..

Maybe then only, I will have a look at Javascript.

I've been practicing C++ for 12 years. Have done some work in C. Have already learnt but also forgotten much of Java, Python, and OzML, because not used everyday for a long time.

Stephane Rolland
  1. C++. I know it but there are just new stuff on the horizon and I need to get around learning the boost library. I want to do Linux From Scratch one day, zombie theme distro!
  2. Scala. Seem like a good Ruby and Ruby on Rail alternative. It's thread safe and built to use JVM. jRuby is just always a few step behind Ruby. Lift is Scala framework.
  3. Haskell. I want to think in a functional way just to see a problem differently plus for the great good.
  4. Javascript. Because I'm trying to become a web developer and learning some front end doesn't hurt.
  5. Perl 6. Why not? Cute mascot and it seems like just a fun language to try out. While the other languages on my list have specific reason why, this language is just fun to explore since it have some unique features which seems fun.
  6. Groovy. Built on JVM and it's suppose to be easy to make DSL (domain specific language). That sounds fun and useful.
  7. OCaml. Cause I want to make a programming language one day. I tried it in C++ and it wasn't bad if you use the Unix tools but this time around I want to try OCaml.
+1  A: 

As much as I would like to learn new languages, I'm having a hard time as it is keeping up with all the .NET stuff that Microsoft keeps spewing out each year. The framework is growing faster than at least I can wrap my head around. I realize that everybody probably doesn't need to know everything about the .NET framework, but even learning enough about a part to know that you DON'T need it (yet) takes time.

I worked with PHP for a short time a while back, and even though the code I produced was crap, it felt really refreshing to break free from C# for a while. I felt really creative and productive, instead of spending time locating the .NET library that does the thing that I want to do.