Tuesday, September 21, 2010

The Perfect Programming Language, will there ever be?

Is there a Perfect Programming Language?

Any programming language could be the best depending on you and what you want to use it for. Reading user reviews of different programming languages or using their killer apps would make you think every language is the best.

Imagine a newbie thinking of a programming language to start with then finding out Facebook and Yahoo are mainly PHP, he will think PHP is the best. Google uses Java and Python, the all-popular Twitter is written in Ruby, MSN and Hotmail are ASP.NET, Mozilla Firefox and OpenOffice are both written in C++, the multipurpose Netbeans & Eclipse IDEs are Java apps to mention a few.

There is still a question of 'can't I just choose the best and learn it?'. But which is the best of the programming languages. My own answer is NONE. None of them is perfect. Each programming language solves problem(s) and leaves/creates other(s).

Looking at a language like C++, it is statically-typed and runs fast. But you'll write several lines of codes, you can sleep and wake and still meet your program compiling (if you've built a large C++ program from source before, you'll notice this), there is need to build your program on the target platform before it can run on it and so on.

Java brought a new dimension. You can write once and run everywhere, it provides a cross-platform UI (User Interface) toolkit, it is statically-typed. But there are still some problems. It runs in the JVM (Java Virtual Machine) which leads to slight reduce in speed, you still write lots of code, your program's maximum capability is the JVM's and so on.

Then the interpreted languages like Ruby, Python, Javascript e.t.c solved some issues. No need to wait for compilation, you write shorter codes, easy to learn. But the fact that it doesn't compile leads to unnecessary runtime errors that could be checked during compilation and slower runtime.

There are also some JVM based languages like Scala, Groovy e.t.c. They also solve some problems but the fact that they are JVM based still leaves the JVM issues above unfixed.

October last year(2009), Google released a programming language named Go. It is statically typed, has fast runtime, shorter codes, lightweight inheritance with the use of interface, cross compilation (can build a program targeted for Windows on a Linux PC, even targeted for a 64bit on a 32bit PC) and so on. Apart from these features, I'm also a Google fan so I tried the language. One thing that is painfully missing is a fully functional UI toolkit, most apps written in Go uses Javascript and HTML as fronted which is viewed through a web browser. It may be available later in the future but right now it is not available.

Mozilla is also working on a language called Rust. Knowing Mozilla as a company that has written popular desktop apps (Firefox and Thunderbird to mention a few), Rust should have a functional UI toolkit but I believe something will still be missing, we can't know that till it is released.

So, will there ever be that perfect programming language? A programming language that is cross platform with a fully functional cross-platform UI toolkit, fast runtime, easy to learn, clear syntax and shorter codes? Hmmn, time will tell.

But till then, you just have to use the language that best fits the job.

I'm still waiting and hoping for that Perfect Programming Language, I just pray and hope my wait will not be eternal.

4 comments:

  1. never knew u were good at writting articles, this is good.

    ReplyDelete
  2. We could consider writing the perfect programming language too...aren't we programmers? Nice article BB!!! Nice one!

    ReplyDelete
  3. @Tosin u are right, we could consider writing it when we have the resources. Nothing is impossible.

    ReplyDelete
  4. I'm starting to think too much time is spent obsessing about language syntax and features, and not enough time spent thinking about real world practical applications and the actual run-time mechanics of the language.

    For instance, we should have a modern language by now that does not rely on static processes, so as to scale well in shared hosting environments - that compiles on demand, so as to facilitate a quick and intuitive development-cycle, and that runs and caches native machine-code, so as to maximize the use of system resources.

    There are so many new languages with great features and great syntax, but where is THAT language?

    ReplyDelete