Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

APL died for the same reason Perl is fading: it is a write-only language.

Those symbols look cool. But they're not very far away from Brainfuck.



APL is extremely high level but terse. Brainfuck is extremely low level with a very limited alphabet of input tokens. The two bear really no similarities.

People who decry Perl as a "write-only language" have very rarely given Perl more than a cursory look. It has a lot of syntax, yes. It uses some shorthand symbols, yes, but not to the extent that APL does. The complaints about Perl from C or Python fans are just the same complaints Lisp folks have about C or Python syntax. Most of them are quick to proclaim how superior Python is. Oh, but Perl doesn't have invisible syntax nor a global interpreter lock.


Perl had the same problem as C++ and before that Ada have. There’s just too many ways to do things, so everyone use their own subset of the language and their own idioms. Which means that it’s hard for someone else to understand what you have done.


This particular criticism is fair enough. Before Ada there was PL/1, too.


I wrote Perl for a couple of years early on in my software career. It's mostly write-only. Oh it can be used to write readable and maintainable code, but often isn't.


Cars can be driven safely, but often aren't.

Alcohol can be consumed in moderation, but often isn't.

Parents can raise kids without being emotionally and physically abusive, but often don't.

Marriages can be healthy and stable lifelong commitments, but often aren't.

Education can help raise people out of poverty, but often doesn't.

Governments can provide stability and security for their constituents, but often don't.


Poor analogies: none of what you describe is often the case out of deliberate action. Perl is often written deliberately in a way that is unreadable or maintainable. On purpose. Often because that’s what the language encourages.


Makes me think we need a new language BNW (brave new world) where all the bad things people are doing in existing languages are simply impossible.


The typical Perl program is half as long as it should be to be readable and maintainable.


Is this an indictment of the language or the developer doing clever, terse quackery?


Mostly the latter.

In the rare occasions when I wrote Perl, the language offered all I needed to make my script as boring as Java, along with many temptations to be clever and concise; many people use Perl because it supports write-only "quackery", but it's their choice.


In Perl's case, it's both. Perl encourages it, and "perl practitioners" as a rule tend to revel in it (in my experience).


Let's be fair. APL is write-only whereas e.g. Python is not, only in the same sense math notation in scientific papers is write-only whereas elementary school summation is not - the former is much more ergonomic once you have the prerequisite knowledge and experience, but most people only need the latter to conduct their business.


If a programming language can be written it can be read, but readability refers to enjoyment. Everyone has a hobby, but I don't think the masses would ever find reading Brainfuck enjoyable even if they were experts who coded in it every day. Whereas there are languages that are geared towards readability, with talented developers working in those languages, when combined are able to produce something that is something you would be glad to sit down and read; up there with the best novels of our time.


Therefore my comparison with mathematical notation. It can be used to write beautiful things, but the reader needs to have some knowledge to understand it and appreciate its beauty. Most importantly though, the density/opaqueness of the notation is what allows it to lift powerful ideas - to express in few lines what would otherwise take many pages.

It's not brevity for brevity's sake - it's understanding the limits of human working memory. The more verbose a description gets, the harder it is to work with it, until at some point, you just can't process it at all (at this point people start making indexes or developing notation to... make things more concise).

Comparing APL with Brainfuck is just ridiculous. The former is designed to be dense to enable efficient work; the latter is a joke that's designed to be sparse.


> Comparing APL with Brainfuck is just ridiculous.

What ever do you mean? The comparison in the first comment (which I did not write) is apt. They both use a notation of symbols that are derived from Western notation. There was no further comparison with Brainfuck made.

In that comment, APL was further compared with Perl, which perhaps is what you meant to write? Perl's 'write-only' nature largely stems from its ingrained use of regular expressions. There are, indeed, some parallels between regular expressions and APL, both utilizing some kind of notation to concisely describe function.

On that note, regular expressions were the first programming language I ever learned and I feel I have a good handle on them. I still find no joy in reading them. It's simply not a good language to read, even if it can benefit on the write side. I'm not convinced that knowledge and experience makes something more enjoyable. There are a lot of things in life that I have plenty of knowledge and experience in that doesn't translate to enjoyment.


But regular expressions, one of the culprits of Perl unreadability, have not faded, and are very much alive in all languages, and usually in ways that make them even less readable than in Perl (e.g. requiring backslashes to be escaped, or without support for verbose formatting).

Sometimes we all just put up with the unreadable mess when it solves the problem at hand quickly.


And, of course, for Perl-fans, Dyalog APL supports the full-fat PCRE, too :)


At least Brainfuck didn't require a custom keyboard. https://en.m.wikipedia.org/wiki/APL_(programming_language)#H...

Or today, custom keyboard mapping.


I actually want to get a custom APL keyboard, mostly for the cool factor, but it turns out they’re kind of pricey.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: