F (2006)
nsl.com
nsl.com
Take an axe to the troubleshoot-ability of your language with this one weird trick that makes it impossible to google.
I bet all these languages come from people with a thick CS theory background, and thus a tradition and a need to write formulae on a blackboard.
Unlike a keyboard, a blackboard is a graphical device, it's slow to produce long character strings, but basically any one glyph takes about the same time to write, be it an x, ≡, ∉, ⊕, ℵ, etc.
Then you want to plainly represent the same concepts in the computer language, et voilà.
This is a bit of a change-up from the usual "write-only language" complaint! But it does have the benefit of accuracy: yes, if you know the language, the time savings in writing APL are smaller than the savings in reading it. Both are faster, once you've spent a week or two with the keyboard, since even the slow method of typing a prefix character followed by a letter is faster than typing out a keyword in another language.
Array languages are rarely "product"s. While I do offer it to others for free, I make the language I want to use, and having nice-to-read symbols for a one-time tooling cost is a nice convenience for me. Don't call me thoughtless for having different tradeoffs than you!
F (2006) - https://news.ycombinator.com/item?id=24238846 - Aug 2020 (56 comments)
F – a pure functional concatenative language (2006) - https://news.ycombinator.com/item?id=10776314 - Dec 2015 (7 comments)
I dabble with compiler-writing, and one of the techniques there is to program an abstract machine. It fills a nice niche - it's a bit more concrete than hacking together an interpreter over your AST, and a lot less concrete than writing out LLVM instructions.
Some examples are Krivine machines and SECD machines (which stands for Stack, Environment, Control, Dump).
They let you play around with ideas before you commit to a particular semantics of your language, for instance, whether you'll pass by value or reference, via the stack, or via the heap.
But exposing (e;s;q) directly to the programmer is a fascinating idea! If I'm thinking about it right, it means a programmer could write code to take a parameter which was passed in via the stack, and decide "No I think this should be on the heap instead" and then update all pointers in the program accordingly.
Concateniative APL-like (with Unicode symbols but with pragmatic input method)
What is the simplest most interesting language?