Current issue

Vol.26 No.4

Vol.26 No.4


© 1984-2017
British APL Association
All rights reserved.

Archive articles posted online on request: ask the archivist.


Volume 16, No.2


by Stefano Lanzavecchia (

“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 Snoopy’s, somehow I don’t think this is the proper forum.

There is of course a second thought, which follows this first one, and this time it’s 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 it’s 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); let’s 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 it’s 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 it’s different enough from IBM’s 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 Sharp’s 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 it’s clear to me that the former is an evolution of the latter. And like all the cases of evolutions, it’s kept all the good things about its ancestor but it’s 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 it’s 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, it’s safe to stop here.

script began 11:39:45
caching off
debug mode off
cache time 3600 sec
indmtime not found in cache
cached index is fresh
recompiling index.xml
index compiled in 0.2539 secs
read index
read issues/index.xml
identified 26 volumes, 101 issues
array (
  'id' => '10013960',
regenerated static HTML
article source is 'HTML'
source file encoding is 'ASCII'
read as 'Windows-1252'
completed in 0.2803 secs