Sunday, April 11, 2010

The tide against platform independence

Oddly enough several mechanisms are working against platform independent development at the same time. One is the recent buying of Sun by Oracle. Now that James Gosling left Oracle, there is some doubt about the future of the Java platform - never mind that he was working on other things while still at Sun - Oracle should have had the brains to keep the figure head around; my personal approach would be to name him whatever fellowship he deserves for creating this software ecosystem. This no doubt will spell a downwards slope as it did for MySQL. Maybe it is time for IBM to offer him a job creating the next step.

The other thing is Steve Jobs' denouncing 'intermediate layers' on the iPhone's dev licence- oddly reminding me of the discussion if we should allow high level languages on the mainframe - no code generation, not even Fortran's, could be ever producing acceptable assembler code. As everybody knows now, this is true in only a very small number of cases. For the original assembly language argument, it turned out that most programmers were using storage-to-storage instructions like MVC (move character, not the higher level abstraction), where one actually should use register based instructions. Compilers are better, if not less lazy, to figure this out.

Both are poverty based arguments, one based on small screens and feeble batteries, and the other on the feeble state of the economy that was Sun's undoing. Java Hotspot has proven that runtime optimization wins from compile time optimization. Mankind benefits from abstractions on higher levels. Steve could not have ported PPC based code to Intel and ARM if it were not for code generation. The point of view that C is the right abstraction level has run out with Java (HotSpot VM, not the language). This is the thinking that left us with Pascal semantics in module calling conventions.

It must be clear that languages like Rexx still are the future; the scripting level being a better abstraction layer ever since its invention in the eighties. This is amply demonstrated by the success of Python and Ruby. The model needs to be optimized for several VM's until the right one wins: this is demonstrated by JRuby, as it earlier (and friendlier and quicker) was demonstrated by NetRexx. What needs to improve is hardware and mindsets. The scripting and VM level is there on the larger home machines, it needs to arrive on the smaller pads and handsets. So it will be about handsets and mindsets.