After some time doing only graphics and other high level stuff I went back to embedded programming. The first environment I got has only one type of variable: signed integer 16 bits. No floating point support. After a some months the "cool" feeling turned into "anger" than into "hate" and then to "suffering". The program did work with all the fixed point tricks but the sensation that a hidden bug will grab my leg at any moment remains.
Computer languages are currently the most powerful way to interact with computers, however, they are extremely complex. There are some variation among them, but even those languages considered to be high level, are still too complex to the uninitiated. They are really developed with very few people in mind: those who learned how to think like computers. Imagine if everybody could instruct the computer to do whatever it wants, not only what was pre-programmed for them ? We would need a radical change of what it means to program.
Recently I found a interesting discussion by Bret Victor about how our current programming model is flawed:
He goes on several points that shows unbelievable problems with programming, that we simply got accustomed with. It is important to note that programming encompass not only the language, but also the development environment. In Bret's words:
A programming system has two parts. The programming "environment" is the part that's installed on the computer. The programming "language" is the part that's installed in the programmer's head.
Perhaps in the future we will be able to create user interfaces for programming that will be so natural that people will not even notice that they are programming at all. Advances on natural languages an artificial intelligence will certainly take its part. The OS will evolve into a programming environment so powerful that will amplify everyone capacity to think and to dream.
For those interested, I highly recommend reading: Learnable Programming
There are some aspects that people generally use to judge the value of a programming language:
3-Availability of tools, compilers, libraries
4-Availabilty of programmers in that language
5-The cool factor
As I read once somewhere "There is nothing faster than C" lol. Besides assembly, there are not many languages that compares with C execution time. This is important for games, real-time systems and embedded systems.
If speed was the only thing the matters, you could write your code entirely on machine code or assembly. However, unless you are writing a simple routine, you will need a more higher level language to finish it on a reasonable time frame. Depending on the problem you may start looking for options better than C and C++. A language expressive power is a measure of how much you have to write vs how much you get accomplished. Of course only size is not enough. You need to minimize the program size while minimizing the number of different constructs the programmer needs to know.
Availability of tools, compilers, libraries
A language does not exist on the vacuum.A good editor and a smart compiler makes all the difference when it comes to productivity.
Availability of programmers
If you need to build a team, you will have a better luck with java than with some obscure language. A more popular language will also have a large community to contribute with help and tools. It will probably get more attention from the language developers/maintainers.
Today I had a nice surprise. One of my old friends and his colleagues published an article at the prestigious journal Nature. So this make a nice first entry for my blog. Here is the editor's summary:
Four trans-Neptunian objects are currently recognized as dwarf planets: Eris, Haumea, Makemake and Pluto. Of these, the 'demoted' planet Pluto has been studied for many years and has a detected atmosphere. The others are difficult to observe because of their extreme distance from the Sun, but a stellar occultation event on 6 November 2010 provided an opportunity for a closer look at Eris. The data obtained reveal Eris as a 'twin' for Pluto in terms of size, and previous work showed the two to have similar surface compositions. Eris, however, has no detectable atmosphere and its surface is bright, possibly a result of atmospheric collapse in an extremely cold environment.
I must admit that I was not aware of the 4 dwarf planets, even though I remember when the IAU (International Astronomical Union) decided to 'demote' Pluto from its planet status.
This is significant for me because my friend W. Corradi was the only professor at the physics department to encourage and support an iniciative of some crazy engineering students that decided to build their own radiotelecope from scratch. I may talk more about this sometime. For now you can take a look at the original article from Nature or a digest form National Geographic Daily News.