by Stefano Lanzavecchia (email@example.com)
Linux, the choice of a GNU generation
GNU is Not Unix
The first thought brought to my mind by the two syllables li and nu is one of the characters out of the excellent cartoon by Charles Schultz, namely Peanuts. Linus Van Pelt, despite his remarkable sister, was one of my favourites: sharp, open-minded, passionate and considerate, talented, he inspires confidence. Much as I would like to spend time comparing Linus merits and skills against Snoopys, somehow I dont think this is the proper forum.
There is of course a second thought, which follows this first one, and this time its for Linux, the equally excellent product originally from Linus Torvalds. A Finnish boy, probably bored by the cold and long winter and distressed by the short summer swarming with mosquitoes of his country, one day decided to play with the multitask capabilities built into the 80386 CPU from Intel. A stream of As and Bs printed in an interleaved fashion on the screen by two concurrent tasks was his first step to fame. A Minix better than Minix was the goal he had set for himself, Minix being a single-user simplified version of the more complex Unix, which could be hosted even by a PC AT. The rest is history, mostly known to us all. Today Linux is a fully POSIX compliant Unix operating system with a solid base of contributed software ranging from academic languages to arcade videogames. Despite the existence of other free Unix systems, among which FreeBSD is very popular, Linux seems to stand in a class of its own. The number of direct and indirect users (how many web sites powered by a Linux box enter the World Wide Web every day?) grows continuously, along with the applications ported to it, the set of devices supported, and the new development, done to enhance its capabilities. The availability of the source code even for the core of the operating system, makes it the ideal environment for hackers to work in, but one does not need to be a hacker any more to feel comfortable with it: the install procedures and the administrators tools have become so user-friendly that a minimal Unix training is enough to get a new user started. This means, for instance, that even if its still considered a fundamental step to become a real Linux lover, the re-compilation of the kernel is no longer a required step to set up ones box.
Its cheap price (what could be cheaper than something that is free?) has turned Linux into one of the preferred environments for students in scientific universities: new languages are being developed, new tools, and languages originally created in other Unixes are very quickly ported and made available to the community of researchers. The fanatics of functional programming can choose among many versions of Haskell, ML, Miranda and cousins; there are imperative languages covering all the thinkable categories (C, C++, Java, Pascal, Perl, Python, Tcl, LISP, Scheme, Smalltalk, even Fortran for the masochists or the old-fashioned doctors in physics); lets complete this quick and incomplete list mentioning Prolog and the more domain specific languages (Mathlab, Mathematica, Spice, CSound) to finally notice a name missing particularly dear to us all.
Nobody is surprised to find no real APL. Up to now the only APL interpreter available commercially or otherwise is the simple OpenAPL, completely free, source code included in the small distribution package. Unfortunately OpenAPL hardly matches the ISO-APL specs and its many years behind when compared with the interpreters available on other platforms, especially Windows: the total absence of nested or boxed arrays and the total lack of a development environment would discourage even the most courageous researchers. Once again, no surprise then if APL is disappearing from the universities. Big news comes from Scranton, though: Sharp APL has announced a port almost complete of their interpreter to Linux, to be freely distributed to all non-commercial users. This is indeed good news, but... Here comes the ever-present but: Sharp APL is a very interesting version of the language, yet its different enough from IBMs APL2. The most popular implementations available on the PC platform are all derived from the latter and the downsizing of legacy code from the old mainframes tends to favour this flavour (sorry for the pun).
The attentive readers will have noticed that I am carelessly mixing two completely separate domains: the academic/research domain and the commercial domain. So, what if the APL that can be used to learn how to think in terms of arrays as opposed to scalars is not exactly the same as the one found more easily used in commercial applications? After all, the array-thinking paradigm is useful by itself and that can be taught and learned using Sharps model. True. But then why not use J instead? The little bit I know of J is far more than I know of Sharp APL but still its clear to me that the former is an evolution of the latter. And like all the cases of evolutions, its kept all the good things about its ancestor but its now gone very far ahead introducing many more useful abstract concepts and completing the implementation of many features simply sketched in Sharp APL. J is available on many platforms, including Linux. Universities can obtain it cheaply for non-commercial applications. And its modern.
One of the problems caused by being late with the editorial is that only a limited space is left, so I am forced to stop here. If any of you readers have strong opinions about what I said, I am sure you will let me know and we will continue the discussion. If you were not interested, then there would be no point wasting more space. Either way, its safe to stop here.