Perl was actually designed to be closer to the nature of natural languages (despite its reputation as "executable line noise"), and Python was in many ways a reaction against this, by a having less ambiguities and implicit context. "Explicit is better than implicit".
I think Perl and AppleScript were valuable experiments in having programming languages closer to natural language. And what we learnt from the experiment was that we absolutely does not want that.
I was the same way with math. Stank at it 'til the context was right.
</shudder> ;)
Also, “Every historical event begins with a struggle centered on naming.” - Milun Kundera
In science and medicine people seem to just make up new words using latin or greek roots. Things are often named after the people who discovered them. It's very inconsistent. Any attempts to fix it by introducing better names inevitably results in the new generation having to know all of the names. Some professors will even quiz students on obscure names nobody cares about anymore.
I wonder how mathematicians, physicists and engineers come up with names...
It would be cool to have a tiny vocab (a la Toki Pona) of say 256 single-syllable morphemes of 1-2 consonants and 1-2 vowels.
SimpleBeanFactoryAwareAspectInstance -> Haplefaesthamon
Of course this is probably appealing to conlangers and language nerds, and horrifying to everyone else.
The problem is not the number of letters used, but the number of ideas attached to one identifier.
In Greek, Latin, French it's much easier to make compound words already.
Dutch does it a bit too, and German is quite famous for it. People actually make up words on the spot, and other people can easily infer the meaning.
I learned this the hard way while training a natural language "AI". People just do it in their day-to-day use of those languages.
In any case, I don't think you need to make up new morphemes for English, it has too many already from all the languages it's been borrowing from. Drawing from the extant pool would be quite adequate for me!
I'm sure the Urbit people will be by to explain that this is being worked on for Hoon, and email me now and I'll get you set up with a planet.
He meant well.
It might be outsiders view, but I feel like in their formalisms mathematicians fall back to single character "names" for lots of things, or maybe single character + subscript. That conveniently side-steps the issue of naming things, and I think it was what Dijkstra was referring to in his essay.
Mathematicians simply name everything after Cauchy. https://en.wikipedia.org/wiki/List_of_things_named_after_Aug...
I often get raised eyebrows when I state that, by my definition, Python and Javascript are among the mostly brutally difficult programming languages out there.
Python is a wonderful candidate for one-off tooling and experimentation, particularly because the cost of wild explosions in these cases, and the odds of requiring long term maintenance, are rather low. However, if your plan is to hire fresh college grads, hand them a Python 2.7 interpreter, and ask them to a build a mission critical, 200k+ line, product - that just seems professionally negligent.
Comparing APL's popularity to Python's and assuming the difference is due to solely to an embrace of symbolics for expression does not take into account the many differences of the languages.
APL had barriers to entry that Python didn't; for example, APL cost money (you had to license it from IBM) and you needed a special keyboard. Python didn't. (Later versions of APL didn't require a license or keyboard).
APL was good at numbers, poor at I/O (I'm generalizing). I wouldn't want to write a webserver in APL; I'd use Python, but if I was doing matrix multiplication, I'd use APL. Or maybe a tool like Octave or Matlab.
I guess people just don't really want to learn a new language, which is what APL and its derivatives really are.
Oh, you mean light on symbols in the syntax. Python has a ridiculous mess of syntax, but it's mostly in the form of words.
my %h1 = ("xyz" => 2);
my %h2 = ("abc" => 9, "def" => 3);
# hashmap from Hash::MostUtils
my %hash = hashmap { "$b-$a" => $a * $b }
%h1, %h2, "eieio" => 0, "abc" => 1;
# "0-eieio" => "",
# "1-abc" -> "abc"
# "2-xyz" => "xyzxyz"
# "3-def" => "defdefdef"
> some still seem to equate "the ease of programming" with the ease of making undetected mistakes
Conversely you could say that ease of programming is equal (or at least correlated) with ease of getting confidence of your programs correctness.
On the wider subject of the essay, I do note that languages like APL that really embraced symbolics for expression do not seem to have gained much ground, and on the other hand languages that are light on syntax and use more verbiage like for example Python have been massively popular.
Overall I think the essay also relates to the common idea that naming things is difficult. The names we give our elements of code imbue the "all sorts of nonsense that, when we use our native tongues, are almost impossible to avoid". And how many bugs stem from people making assumptions about things based on their names because the sort of linguistic ambiguity etc that Dijkstra is talking about here?