Thursday, May 22, 2008

On breaking Java

After Ola Bini's post on a list of features he would like to see in a compatibility-breaking version of Java, everyone seems to have his own, so here's mine:
  • No primitives.
  • Closures and arrow (function) types. This would also open the door to using methods as values and method names as first-class identifiers.
  • Non-nullable types by default. Use of something like Scala's Option.
  • Better support (syntactic sugar, friendlier APIs) for immutable types (and maybe explicit pure functions?).
  • Reified generics, with some improvements as well.
And the most important thing for me would be to clean up the APIs, removing obsolete ones and retrofitting the others to the new features.

Sunday, May 18, 2008

Feeding the Rumor Mill

A good way to generate expectations :)

I, for one, would really like to see zfs on linux.

Friday, May 16, 2008

On Types and Programming Languages

Programming languages and type systems are two fascinating subjects inside computer science, and there are plenty of sites devoted to them. They are great fields of research for academics (and the industry) and source of endless debate in the open source world and the blogosphere.

This week, static vs dynamic typing has been brought again to the front page by this (lengthy as usual) post by Steve Yegge. If you go through the transcript of this pretty interesting presentation you'll see that in the end,  he really focuses on dynamic just-in-time compilation techniques, which are also available for statically typed languages (provided they are run through some kind of vm, such as the hotspot java virtual machine). Anyway, after (or in reaction to) this post a great amount of content in the subject has flourished.

As a debate in itself, it is really interesting because it's a good way to  get introduced to new advances in both camps (and to discover the past, there many things that sound new but were invented decades ago). And in my opinion, it's endless in nature, as the only absolute truth may be that there is no language (nor type system) that fits best in all situations.

So in the end, in many cases is just a matter of personal preference. And even though I really get the value (and in many cases even the need) of dynamically-typed languages I have some personal bias towards static typing (I'm nearer to C├ędric's position).

Ironically, I've found myself limited many times by the type system of the programming language at hand (mostly Java) but that has only increased my interest in learning the possibilities provided by languages with more expressive type systems (ML family, Haskell, Scala...).

Thursday, May 8, 2008

SpringSource App Platform and evolution...

Some days-old news, but interesting anyway. Worth a deeper look.

I think is a concept that many people were thinking about after seeing some big real-word osgi deployments, but it had to be done. Credit when credit is due.

It's hard to balance the need to maintain compatibility (and investment) and the need to keep going forward, and sometimes we all have to deal with some breakage.

Depending on what gets finally goes into Java 7 and the end of the "modularity wars" we may see more interesting steps.

Anyway, there's been some controversy regarding the license. Although I'm sure there's not absolute truth in any camp, if you are a very strong advocate of one position and suddenly (and in a particular issue) change, at least you lose a bit of credibility.

Back to the evolution issues, even though many people argue that the way to innovation in Java (the platform) is other languages on the JVM (scala, groovy, jruby) I think it's high time to start breaking some ties with the past, but, is it worth the effort?....  

Tuesday, May 6, 2008

First Post

Test. Hello world...

This seems to be quite usual content for a first blog entry. In my case it's just going to be some administrivia :)

As of now, I'm willing to post all my entries in (my sort of) English, but just in case, posts in English will be tagged "en" and posts in Spanish "es".

Also, entries as this one, related to the blog itself will be tagged "meta", so I could have just chosen Metapost as the title of this post, but it was already taken :)