Young & Upcoming Generation Of Powerful Languages

Several new languages have come into existence and are becoming more popular with time. Well some of them(Ruby, Haskell, Python, Erlang, others ..) have been around for long time but there implementations on top of CLR (.NET) and JVM has made them more powerful & exciting. One of the major factors for emergence of these languages is “Concurrency”, well said by Herb Sutter in his popular article The Free Lunch Is Over : A Fundamental Turn Toward Concurrency in Software way back in 2005.

Well One of the advices in “The Pragmatic Programmer” says: "Learn at least one new language every year", in order to be a good hacker. The theory is that by learning a new language you “expand your mind” and become “a better programmer”. But one should be careful of choosing what language to learn rather than just learning up new syntax for same things.

Peter Norvig, Director of Research at Google, wrote an article called Teach Yourself Programming in Ten Years where he gave explicit advice on how to choose languages to learn:

Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction , one that supports syntactic abstraction (like Lisp), one that supports declarative specifications , and one that supports parallelism .

For some developers learning new language have been hard since they didn’t want to leave their worlds of .NET and JVM, but now it has become easy to learn new language for them while still benefiting the features of the above two platforms. Microsoft has gone even one step ahead & have built DLR ( Dynamic Language Runtime ) layer on top of CLR. It will be officially included in .NET 4.0 and is very exciting as a technology which is used to run IronPython and IronRuby and support further dynamic langs. My intent here is to summarize about some of the new popular languages & learn them to involve in my coding tasks.

Capture  IronRuby: is ruby on top of CLR [.NET] ( similar offering on JVM is JRuby ). Ruby supports multiple programming paradigms, including functional, object oriented, imperative and reflection. It also has a dynamic type system and is therefore similar in varying respects to Python, Perl, Lisp.

erlang  Erlang: is a general-purpose concurrent programming language and runtime system. Erlang is a functional language, with dynamic typing and for concurrency it follows the Actor model. It has been around for more than 20 years but has recently become very very popular for Concurrency reasons because of its Message Passing Model.

 Capture2 Groovy: An agile dynamic language for the Java Platform. It can leverage Java’s enterprise capabilities but also has cool productivity features like closures, builders and dynamic typing.

F#: A succinct, type-inferred, expressive, efficient functional and object-oriented language for the .NET platform. It is combination of type safety, succinctness, performance, expressivity and scripting. It is now being developed at Microsoft Developer Division and will be distributed as a fully supported language in the .NET Framework and Visual Studio ecosystem.

clojure-icon Clojure: Its also supposed to tackle concurrency issues strongly. It is a dynamic, functional programming language that targets the JVM and is a dialect of LISP. Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.

Capture3  (Scalable Language) is a multi-paradigm programming language designed to integrate features of object-oriented programming and functional programming. Scala runs on the JVM and class abstractions are extended by sub classing and a flexible mixin-based composition mechanism as a clean replacement for multiple inheritance.

Capture4  Haskell is an advanced purely functional programming language with non-strict semantics . With strong support for integration with other languages, built-in concurrency and parallelism, debuggers, profilers, rich libraries. Unique concepts include monads, and type classes.


which one will you be learning next ..-> comments welcomed

About these ads
This entry was posted in Uncategorized. Bookmark the permalink.

13 Responses to Young & Upcoming Generation Of Powerful Languages

  1. Javier says:

    Actually Groovy is my last goal of year, but your post is very interesting, it’s a good idea to take a look other option.

  2. Krunesh says:

    Brief and well explained description of languages gaining popularity.This information will help me and others for pursuing languages of their choice. Moving ahead with time should be everyone’s motto. Learning new language without switching to your favorite platform either .Net or Java is a best option for each of us. So lets start exploring our ways to these languages which plays a major role in the future scenario of programming world.

  3. Unknown says:

    I’m a bit biased, as a I run (and think Groovy is, well, groovy!) but I’ve also tried Ruby and Erlang (from this list, anyway). Ruby’s moderately easy to pick up – still conceptually very close to many other things (at least, things I’ve done). I found Erlang to be pretty difficult to grok, and could never figure out how to apply the concepts to problems I regularly deal with. Perhaps that’ll change in the 2009?

  4. Anurag says:

    Hehe, nice post. Your blog is looking all good, your posts very professionally done. :)

Leave a Reply

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

You are commenting using your 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