personal experiences and code :)

Tuesday, September 04, 2007

erlang this. scala that. learn lisp.

i caught a link to a post by tim bray:

"The E-Word · Erlang disruption. Erlang influence. Erlang (and Erlang and Erlang) database substrate. Erlang for C#. Erlang thoughts. Erlang for Web 2.0. A first Erlang program. Erlang influence. Erlang distributed DBMS. Erlang message passing. Erlang (and Erlang and Erlang) for Jabber and Atom and IPC.

Erlang. Erlang.

Each of the 'E-word's points to a link that shows the general use the language is being pushed to. It is not the new Java, though, as you might have read elsewhere.

it is interesting how much press a language that has been around this long is only beginning to get; but then it is "payback time", as Joe Amstrong mentions here. I found Erlang (and Scala) through search on functional languages when I started to learn Scheme (Lisp) late last year.

One thing though; I disagree with Tim on: "I think that the human mind naturally thinks of solving problems along the lines “First you do this, then you do that”.

Programmers are trained, and over time learn to recognize (and solve problems) in the patterns they are introduced to. Just as people are taught (or learn) to code imperatively, they can adopt functional ideas and patterns, once they learn how to recognize and form them.

When you cannot 'really' do assignment in a language, you are forced to wonder if you actually need assignment. And each time you have to make a copy of value, just so you can change some state in it, you know you are communicating that, indeed, that change was needed. So, you can approach it from the "it's different" perspective or you can choose to call it "hard".

Languages like Scala and Erlang are definitely going to continue to be part of mainstream developer conversation as we move into an ever more concurrent world. More than languages though, it is important that people are able to make clear and proper abstractions of the problems they are trying to solve, before mapping them onto the limitations (or lack thereof) of their favorite language. And it is important that programmers understand the underlying issues that each language and programming paradigm (or fad) tries to solve, so they can map these to their favorite language too. Meanwhile, as you might have read elsewhere, learn Lisp; it would make you a better problem solver and coder in every way.