Ada

Ada is probably one of the best programming languages ever made. It is by far my favourite one, although I admit that depending on the task at hand, other languages might fit better. For some quick and dirty jobs specially scripting, I would prefer Python or TCL/TK, which by the way, are excellent tools for what they are intended for. However! For building really robust software, Ada is the only thing out there I really trust.

Seriously! This world would be a better place if more applications were written with it. Sadly, real life seems to be harder on good things and Ada is no exception. Don't expect to see it in late evening news, Ada is a rare gemstone disregarded among many professionals. Even studying it alone will make you a better programmer.

It will be quite stubborn with every line of code you write, force you to rethink your design and maybe even drive you mad, but only for your own sake. If you programmed before in C you will understand the real difference between easy to write (alas C, C++) or easy to read (Ada). After experiencing an scripting language you might even believe that only idiots or bad programming languages need to specify a variable type. But there are many examples where strong typing can make a real difference if you care about your software failing.

I highly recommend you to go through these slides if you want to understand how or why a properly designed language specification can avoid software bugs. That is where Ada shines. Its whole syntax has been carefully crafted to avoid many common errors and ambiguous situations were many successful languages will say everything is OK just to stab you later in your back during run-time. That is what strong typing is all about.

Ada was the main topic of my last University years. I thought it would be even more amazing if it had garbage collection since that had become a hot topic in language design. Hence I made some research about using garbage collection within Ada and released all the work.

If you are interested in this subject you might consider these links: