As a young man already at work as a programmer, I was introduced to APL by a colleague who claimed to have resigned from IBM by wearing a white suit to work. I loved the cryptic language he showed me and its elegant glyphs. The first six numbers in reverse order?
⌽⍳6
6 5 4 3 2 1
How cool that I could write ⌽
for reverse.
Since then I have been a champion of APL and other languages (A+, J, k, q, etc.) derived from the notation Ken Iverson devised at Harvard. (I’m going to call them vector languages.)
What’s the appeal? I could bore for England on the advantages of vector languages, but here I want to confess that the appeal for me is primarily aesthetic. Something in the languages – a kinship to linear algebra, perhaps – pleases both my inner mathematician and my inner poet. Writing a good problem solution in a vector language nourishes both of them. Writing vector solutions never gets old.
It has taken me until old age to concede this, because it sounds disreputable. If we want to use vector languages, we need arguments that move the guardians of corporate technology stacks. Why should they let APL or q on their stack? My aesthetic thrills don’t come into it.
Who can tell us, Phaedrus, what is good and what is not – and do we need anyone to tell us these things? — Plato
Arguments about the relative merits of languages are generally conducted in terms of properties such as code volume, computational efficiency, development time, maintenance cost, and so on. I avoid such debates these days, even though I might learn from them something interesting and factual about other languages. I avoid them because the arguments never resolve. The debate never concludes that X is the better language. We just present our cases and agree to differ. I suspect this is because I am not the only language champion for whom the attachment is not rational but aesthetic. It is not analysable. The heart wants what it wants.
So I am thinking about why languages flourish and what language champions – evangelists? – have to do with that. I’m remembering particularly how deluded I was about the future of APL.
It seemed clear enough at the time. Years before personal computers appeared, you could get personal computing with an account at a computer timesharing service. (In those days, for some reason: bureau.) You connected a terminal, started something like a shell session, and off you went. You paid for the CPU time you used. (Cloud platforms today give me a frisson of déjà vu.)
APL characters on a typewriter ‘golf ball’
BASIC (an ancestor language of VBA) was a popular choice; APL another. IBM trained hosts of its managers to use APL for budgeting. Working for an APL bureau, it was my pleasure to help customers write or use APL programs to manage their work. I trained as an instructor and taught many people to code. Everyone agreed the language was a brilliant way to calculate their budgets, and so on. Eventually, I supposed, everyone would code this way. We would move on from tedious and annoying loops; most programmers would use APL. One day.
So that didn’t happen.
What did happen? The tide went out, and swept away the users. They had all agreed the language was brilliant – a wonder really – but when the first microprocessor-based PCs appeared, they bought them and rewrote their budgets as spreadsheets. Beauty wasn’t enough to keep the timesharing accounts open.
And we language champions, more firmly rooted, found ourselves standing ankle-deep in mud, scanning the horizon for our lost users. So to speak.
Not all at once, of course, and not suddenly. APL remains in use to this day. In fact, as a development environment, a modern APL interpreter on a machine with oodles of memory surpasses the wildest dreams of the language’s heyday.
Hey ho.
I don’t think they lied to me. All my customers who marvelled at what they could do with APL weren’t just being nice. They just meant something different. I loved being able to use the language; they loved what they could do with it. As the Zen proverb puts it, I mistook the pointing finger for the moon.
Which brings me to my first proposition.
A flourishing linguistic community has many users and several champions.
What’s the difference? Users use the language to get what they need. Champions – for whatever twisted reasons – love using the language and want others to share their pleasure.
You can see the same pattern in natural linguistic communities. Most English speakers speak and write the language instrumentally – to get what we want to thrive and survive. A small minority of speakers have a craft relationship to the language, caring for and protecting the distinctions of its vocabulary, relishing and promoting skilful use of it. Let’s hear it for the editors, journalists, and novelists. And hats off to the poets, who work to extend the expressivity of the language itself as it carves the mental channels in which our thoughts about the world run. As Shelley called them, long before the Sapir-Whorf hypothesis: the unacknowledged legislators of the world.
Knowing classical Latin gets you a few things you cannot get any other way: such as direct access to historical records. So classical Latin retains some users. (Latin never died out. It evolved, and forked, as flourishing languages do. Modern Latins in former Roman provinces include Italian, French and Spanish.) Classical Latin has major virtues as a language. The syntax of the famous opening sentence of Caesar’s Commentaries on the Gallic War reads like a tightly-packed line of code. But while champions can keep a language alive (my school competed each year in a Latin elocution competition) they cannot make it flourish. That requires users. So I don’t speak Latin. Sic transit gloria mundi.1
Welsh, on the other hand, was fading fast in my youth. Devolution changed that. Welsh had its champions, its devotees before devolution. The new Welsh government made the language a requirement for government jobs. Suddenly you needed Welsh to get something. Welsh is flourishing.
APL attracted users and became a substantial linguistic community, not because of its virtues, but because users needed it to get something. (And when they could get what they wanted cheaper another way, they dropped the language.)
Iverson’s reboot of APL, the J language, superior in many ways to its ancestor, has never attracted a substantial user community. The language has its champions but there has never been anything you have to learn J to get.
Arthur Whitney’s blend of Lisp and APL stripped for speed – k and its timeseries DSL q – attracts users who need its speed with Big Data. Presumably if they could get it a cheaper way they would drop the language. As Janet Lustgarten once told me
Our customers are people for whom everything else has failed.
We language champions are enchanted, enslaved by the beauty we found. But no one else cares.
You are the salt of the earth. — Matthew 5:13
Champions matter. New York poet Marilyn Hacker wrote “It is a privilege to learn a language/A journey into the immediate”. Alan Perlis knew it too:
A language that doesn’t affect the way you think about programming is not worth knowing.
But it’s also – what? – 100-200 hours of study and practice for a basic competence. Not an investment made lightly.
Contemplating the investment, I am influenced by champions’ promises of how much I will love the language. Perhaps I have been disappointed in love before. (I’m looking at you, Python.) But this time. Maybe this time.
I also consider community. What is it like to be a newbie here? I shall depend upon the kindness of strangers. Will they give me good help, generously, unstintingly, even when I ask stupid questions? Does the language have tutorials, open-source projects I can work to get experience? Am I going to have a good time learning the language?
I came so far for beauty, I left so much behind:
My practice and my family, my masterpiece unsigned
— Leonard Cohen
This is where the champions, slaves to beauty, make a difference. They show the way and pour time into promoting the language. You can’t buy this kind of love.
In fact you really can’t buy this kind of love. My second proposition:
The community must be a free association of devotees and users. It cannot flourish subject to a commercial agenda.
A shrewd corporation that wants a technology adopted widely can do no better than to support its champions, and provide time, space, beer and pizza. Maybe a few CPU cycles too.
Pity the helpless slaves of beauty. And support them.
Gloria gets carsick on Mondays. (Told you I don’t speak Latin.)↩︎