Your next language
or how open source changed programming
by Dj Walker-Morgan
One of the commonly asked questions I hear is "I want to get into programming, which language should I learn?" It's closely followed by "I write in X but I want to do something else... what language should I be looking at?" There used to be some nicely canned answers to these questions over which the merits and demerits could be discussed over coffee or beer but the culture and practice of open source has changed that. Now, I can only give one answer... "all of them".
When I say that, I don't mean find every language in existence and pore through the many pages till fluent in each. To understand what you need to do, we need to take a satellite view of the history of computer languages...
Back in the days when computers were emerging, software was expensive to write. Hand crafted machine code provided the seeds for compilers which could produce other software. That hand crafting cost time and energy, so languages were initially crafted for general roles; COBOL was for business, FORTRAN for science, etc. And companies made money making these proprietary compilers. In the academic and research world, the hunt for languages designed for computer science began and while some looked at creating higher level abstractions of machine code, others looked for abstracting the machine. And so BCPL, C and others emerged as higher level abstractions and virtual machines ran Lisp and P-Code looking to create abstract machines. Although ideas and concepts were often shared, compiler or VM code was not.
One particular pain point for software developers was on Unix where C compilers could be very expensive; many Unix systems, such as early generations of SunOS, came with a C compiler but one that was rarely maintained. Given that a C compiler would be essential to the creation of a free software operating system as envisaged by the GNU projects, the GNU C Compiler first appeared in 1987. As GCC evolved into stability and because of its modular structure, it would also provide anyone wanting to develop their own compilers for other languages with the backend to generate code.
In the same year as GCC appeared, another language would also appear, Perl. Initially regarded more as a tool with a language than a language in its own right, Perl set out to provide an effective language for extracting and reducing logs and other information into reports. Perl rapidly widened its scope beyond that and the nature of Perl invited developers to experiment and create their own language syntax and tools.
GCC and Perl were both effective in putting the tools of language creation in the hands of all developers. Gnu C Compiler would, over time become the Gnu Compiler Collection, able to handle C, C++, Java, Objective-C, Fortran and Ada as standard, plus many other languages. In the wake of Perl, Python and Ruby appeared in the mainstream, both offering different ways to approach scripting languages. Python offered a white space sensitive human readable syntax and that focus on readability and understandability made it ideal for collaboratively developed scripts. Ruby merged some Perl syntax with Smalltalk ideas to create an intriguing language which became very visible when Rails, an opinionated framework for web development, was built in the language. All these languages were open source and free software.