For some reason, I wanted to learn a new programming language. Having spent years on PHP and Python, I found myself one afternoon doing some programming test with C++. For some reason, it felt quite refreshing to write code that gets compiled to native machine code. Perhaps you are thinking "hey, python file get compiled to pyc files at runtime", and while I agree, the pyc files still need the Python runtime to execute the pyc code. Again, one might ask "what about py2exe?", to which I will reply "Windows Only".
What I pined for, was an object oriented language that I could compile to run natively on Linux and if need be, could also be compiled to run on Windows and Mac. So what are my options? To the best of my knowledge I have a choice of:Java ObjCC#Vala
Fourth Place - ObjC : If I were a Mac only programmer or a Mac programmer that recently moved to Linux, or a diehard NEXTStep fan, I might use ObjC. The main drawback is that ObjC needs a framework to be installed on the machine that the code is going to be compiled and run on. In this case, the Cocoa framework on the Macintosh or the GNUStep
framework for Linux, BSD, and Windows. If Apple took a more active role in helping to develop the GNUStep framework I might be interested. To be honest, I don't think very many people are going to be installing the GNUStep framework on Windows.
Third place is almost a tie....almost...
Third Place - C# : In order to run a C# app, again, one needs a framework to be installed on the machine that the code is going to be compiled and run on. In the case of C#, this will be Microsofts .NET on Windows and to a lesser extent Mono
on Linux, Mac, and yes, even Windows. Mono is an Open Source implementation of the .NET framework can compile and run C# apps written for .NET. The big problem here is that Microsoft has patents on various parts of .NET that, when the time is right, may be used to leverage lawsuits against users of Mono.
Second Place - Java : Blah Blah Blah, much like ObjC and .Net...to run java applications, one needs the Java runtime environment installed on the computer. Now while Java applications can't run without the java runtime to be installed, I would like to point out the the Java runtime for all platforms is maintained by one entity, Sun Microsystems, and this coupled with Sun's Open Sourcing of the Java Runtime code, will hopefully ensure that Java apps will run well on all platforms. Perhaps I will explore Java a bit more in the future.
First Place - Vala : The youngest of the programming languages in the list, Vala has not yet reach the version 1.0 milestone. Hmmmm, maybe I should look at Java again. Vala is more or less a wrapper around the C programming language and the Vala compiler converts Vala code to C code which is then compiled to a native application. If I want to compile my application on Windows or Macintosh, I would direct the Vala compiler to convert my Vala code to C code and then I would compile the C code on the target system or use a toolchain to cross compile for the target system, thus creating a native application that doesn't need a framework to be installed. The disadvantage of course, is that I would need to compile for each target system.
Until Next Time...
I'll GCC you you later.
That was really bad.