October 10, 2014

Recently I have found myself having an incredible amount of things to do. This might have also been somehow noticeable in my blog here. But despite having my head torn around in different directions, there is one consistent thing that I've been wondering that keeps me going when I move from place to place, from meeting to meeting, from convention to convention: How is it that the software development industry is so very deeply committed to the concept of virtual machines, interpretation and/or JIT, and automated memory management through garbage collection?


For close to 20 years now, the industry has raced towards the development of platforms that use some form or combination of interpretation, JIT and/or garbage collection: Look at languages like Java (the sort of original culprit), C#, JavaScript, Ruby, etc., etc. From the get-go this seemed to be a very bad idea (those of your who remember running the first versions of Java in 1995 on a 4MB 486 would know exactly what I mean: Compiling a Hello World app for several minutes is no joke), and after 20 years and countless man hours of trying to make it work, it STILL seems to be a very bad idea. I wonder when it will be that we accept the fact that it IS a very bad idea?

This morning I finally read through an article that was shared to me that really puts it all into perspective in a very good, well researched manner. It is the kind of article I could have wished to write, but luckily I didn't need to, since someone else did it already.

I note that there seems to be SOME level of understanding of this that is starting to emerge in the industry: Like with the Ahead-of-Time compilation approach of the new Android platform, I can see that Google is also starting to understand and accept some of this. Although the garbage collection is still there even in Android L, continuing to hamper the performance of Android applications, they were able to take a step away from the JIT approach. Don't be surprised to see new memory management strategy initiatives emerging from Google as well in the coming future.

The same stuff is being seen in the wider development tools and platforms industry, where we have countless tools that are built around different virtual machines (Xamarin, Unity, Appcelerator, etc., etc.), where the industry already more or less knows that the architectural approach in these platforms produces applications of substandard quality. Over time, this will all go away. Virtual machines, interpreters and garbage collectors have lost the race. Source code translation will prevail.


Share this article: