I dunno man. Idiosyncratic orthography aside, I have trouble taking a language without native support of N-dimensional arrays seriously, so points to APL for getting that right.
You always think you’ve purged t̬̩̞͈̹ͮ͡hͯ̓ͣ̍̇ͯ̃a͔͉͚̲̼͕̩ͤ͛ͪ͛͆́t͏͓̞̺̩̩ ancient evil, that nobody would u̘ͨͮ̆s͇̑̇ͩ͑ͬ́e̦ͣ̀̏ it anymore, and then one day, you’re messing around with audio in supercollider, an͔̦̪͆d̪ ̴̟͍̬̳͓͗ͧ̑̌͆́ͅy̶̹̌̓̑o̱͇̥ͥ̈͆̆uͪ̄ ̙̙̜͐realize that it got its ã̤̞̯̞͓̿̒ͯ͛͋̚r̹͕̝̬̥͊̋͌͐ͬr͈̖̺̟͍͈͒̓a̹ͨy͈̻ͫͩͤ͒ ̌ͧͮ̚h͓̝̙̎̇a͔ṋ̣̲̯̪͆ͦd̺͚̓l̹̬͙͈i͙͒ͬͥ͐͂ͨͅn͍̩̤̬͎͎̻̽̾͒̚g f̯̫̻̹̺̖̹̤̋ͨ̈́r͇͓̼͉̪͈͎͌ͯ̽ͣ̄ͅo̥̭͉̍̈́͗̑ͤͬ͊ͫ̚m͇̙̙̬̞̬ͦ ͙̤̻͓̬͖̫̻ͯͤͭ̆ͮ̆ͨJ̤̦̮̖̹͙̖̊̓ͅ,̯͉̜̦ͤ̑̓ͥ̎ͮ̍ ̞̯͍̲͊̓ͭͅw̤̰̭̳͔̣̜ͨ́ͫ̌̔ͩ̄̂̂h͎̝̰̙̬̫͕̖͌̔ͨ͋́ͦ̓̊i͔͇̼̙̼̼͇ͯ͑ͦ̀c̣͙͙̫͎̦̝͌͊ͦ̑͊̚h̰̮̦ͫ̀ ̦̬̭̀̆͌ͧị̗̩̟̓̏ͤ̊̂́s̬̣̩̩̥̳͓̲͓̔̑̉͐̇ ̯͛̃ͬ̈́a̫̦̲̺̳͓͌ͨ̊̑ͯ͌̆̅ ̥͇̈̓̉͗̀ͨd̰̣ͨͥ̃ͅi͍͍̱̩̦͓͊̅r̬̯̺͙̊̇ͮ̈e̜̗̳̿́ͮͯc̤͇̩̤͈̬͓̯ͤ̐ͫͯ̀̍̋͆t̞͚̱̫̤͍̠̗̿ ͖͓̳̫͈̙ͬͥ̍͌̚d͓͍̳̭̪͍ͩ̃͑ͧ͛̈ͅͅe͍̺͕̝̳͑ͭͮs̮͕̟̊͂́ͧc̭̺͍̿̊ͧė̯̼̻̗̙̗̘͔̒͊ͣ̏̉̈͌n̙̊́ͬ̔ͥ͂̌́d͖͕̠̙̭̫̻ͬ͛́̋à͇̯͍̯ͭ̈̂̿͌́ͤn̫͔̪̫ͬ͐̐͐͗͗t̜͇̹͓͎͔̱̗̄̄ͪ͑̎ o̢ͥͫ̿̀͌͂́ͦ͊ͧ̋͐̏͛҉̮̘̱̱̭̻̩̕͟͞ͅͅf̡̡͉̩̜̬̲̗̼̮͉̳͙̰̯̜͙͖̞͒ͪ̾̈̂ͦͤ̈́̐̔ ̡̧̲̭̪̜̖̘̫̣̰̘̗̱̝̯̘̟̼̈́͌͌̾ͧ̂ͨ͒̃̊̔ͥ͋̃̈́ͬͣ̎ͪ͜͜A̶̶̩̱̝͓̭̭̦͐͋̈́͋̔̂ͯ͛ͫ͗̓͛͆͋̉̀̆̍͜͜ͅP͍̩̦̜̬̥̯̠̭̮̪̼̺͈̯ͤ̂̾̋̓͆̔̉ͨ̍̈̐ͫ̍ͣ͊͑͡L̝͇̘̗̻̟̤̥͊͐̽͋́ͥ́̚͝.̴̢̺̹͚̮̞͛̽̑̔̃̈
Actually it’s a very efficient language in its specialties: I recall at least one of Jon Bentley’s Programming Pearls that illustrated sort algorithms done with different languages, and the APL programmer created the fastest one because operating on arrays is a doddle in APL. The biggest, biggest problem with APL is coming back to the code afterwards, even not long afterwards: it’s the original read-only language.
EDIT: Write-only. Dohhh!
Modula 3 was rather tidy, but it never took off. Ditto Oberon, Black Box, etc.
You mean write-only?
Oops, exactly. I was a little distracted while writing that.
If you need to solve the Eight Queens problem in order to feed your children, you can use Icon.
But if you need to run a web commerce site, use PHP or perl or python. If you don’t already know one of those languages, and you don’t want to spend more time than you have to, use PHP on Apache on linux or OpenBSD on commodity hardware. Use MariaDB unless you already know some other OSS DB like postgres.
To make a weak metaphor:
I use an axe, a chainsaw, or sledge’n’wedge as required. The axe is the most beautiful and elegant tool, the sledge is the safest and therefore the most academically correct, and the chainsaw gets the job done in the fastest, filthiest manner possible.
Languages like perl and PHP are chainsaws. Chainsaws are indispensable, but in use they are not pretty.
There was a 3?
I was taught Modula-2 at uni as a introductory imperative programming language before moving onto C and C++. I was the last year to get that, they switched to Delphi afterwards.
And a good smattering of 68K assembler. Although I ended up using PIC more. Did actually use the 68K stuff at work briefly, though. Along with this:
http://hopl.info/showlanguage.prx?exp=4175&language=Lucol
before moving over to Ada.
I don’t program any more, though. It’s all auto-generated from the likes of Simulink and Beacon these days. And I’m not a software engineer any more anyway.
But ironically, there is also no language less portable than C. Is there any other language in which you can write a perfectly correct program that won’t run on a mainframe or a Z80?
I love Delphi, and have for many years, but bad business decisions (IMHO) by Embarcadero seem to be driving it to extinction. Someone at Corporate just signed me up for the new version of VS and MSDN and I’m really tempted to take up C# now that I have some time available. I am being nagged about training my replacement and it may be easier to hire for C# rather than Delphi.
I never used Delphi much, but I did use C++ Builder a fair bit.
I agree. Polyglot programming is a far better measure of the quality of a programmer.
These days unless you are coding next to the hardware there is no need to learn, pointer arithmetic or memory allocation. Sure I agree learning about them will deepen your understanding. And I am talking about people new to programming. Give them time to grok all the other abstractions before having to handle memory or pointers…
I do agree, that was the conventional wisdom, but Javascript on Node.js is taking over that space. Although Javascript is making the same mistakes that perl had, by having too many ways of doing a thing.
Yup, but pretty much stalled out since 2010, and you’ll note that the CM3 package is a commercial compiler that went open source. (You’ll also note that a lot of the links on the right are dead, dead, DEAD.) Modula-3 site.
Modula-3 was a very elegant systems- and general programming language that was intended for the same niche as C++. Its problem wasn’t in being superseded by fast-and-dirty languages like perl or PHP (pace @Medievalist) - those languages can’t even start to handle the same kind of programming. It was that the language was conceived by a company that is now defunct (DEC), and that was remarkably poor at marketing remarkably good products when it was still in business (see OpenVMS as well).
I’ve used and enjoyed all 3 of those, but they are tiring. I look forward to the day when there is a good strict language in widespread use for web programming. Dynamic, loose languages are great for a 2-page script, but once you get to a system with hundreds of thousands of lines of code that has evolved over years, it can be difficult. Most of the code ends up being conditionals to figure out what data you were passed (if any) this time, what type it is, what its structure currently is, whether a given function is currently defined, etc. By the time you’ve handled all the possible errors from dynamicness, you’ve forgotten why you were editing it in the first place.
With a strict language, none of that would be necessary. Sure, you have to define everything and specify types, but then you can just focus on the business problem that you’re trying to solve without all that run-time checking.
The aforementioned LUCOL was written using (ancient) VT220 terminals…
Ancient? Ghods, I must be prehistoric.
Spent a decade or two behind a VT100 before I ever saw a VT220… I could probably still field-strip either one blindfolded.
I was using them in 2001…
You probably never sysgenned a multi-user timesharing system with paper tape, then.
Edit: and if you haven’t, BE GLAD. It’s not something to remember fondly. You have to timetravel forward all the way to the invention of GUI-mediated XML configured devices to experience anything that banally tedious.
"Screw cock?
…
Ohhh right!"
Coiled Rhode Island Red, silly.