HACKER Q&A
📣 kristianp

Do you use an old or 'unfashionable' programming language?


This question was asked almost 10 years ago on HN, I thought it would be interesting to ask it for a 2nd time to see what's changed since then. Perhaps Original Ask HN: https://news.ycombinator.com/item?id=11001693

I couldn't think of a better word than 'unfashionable' but what I mean by this is a programming language that is not new, upcoming, or has much traction. The language may have unique or novel features, it may be a language with a passionate and dedicated band of programmers. But one thing the language does not have is much 'mindshare' amongst programmers: its time in the spotlight has passed. It may still be in active development, or it may be moribund.

Examples of 'unfashionable' languages include: Cobol, Snobol, Icon, Unicon, Forth, Pascal, Eiffel, D, Smalltalk, Basic etc.(Note, I realize this is subjective to a degree.)

If you use an 'unfashionable' language, what keeps you using it? It is a unique feature? Is it familiarity or comfort? Is it speed or performance or some other quality? What do you think we could learn from that language when developing programming languages today?


  👤 DemocracyFTW2 Accepted Answer ✓
I'm writing all my stuff in CoffeeScript (which trans/com/piles to JavaScript). I feel like almost the last man standing at this point. I have some plans to revive a fork of https://github.com/jashkenas/coffeescript but those are ... plans.

I like CS for its syntax which is indentation-based similar to Python; in addition, you get e.g. paren-less function calls as in `mul 4, 5`; also, all functions are 'lambdas' and declared like other values, so e.g. `mul = ( a, b ) -> a * b`. Implicit returns are great for one-liners but a problem everywhere else, so that would be one thing to improve in the future.

As for another change that goes beyond mere syntax is the scoping rules which CoffeeScript adopted in the style of Python. As a result, both Python and CoffeeScript now suffer from similar deficits regarding accidental shadowing; in addition, CoffeeScript explicitly refused to allow (equivalents to or the very keywords) `let` and `const` into the language which means they're now stuck with `var`. Bad.

Also I envision 'tagged values', a feature similar to tagged templates where you can prepend a function name directly to a literal and have the function turn the literal into the desired value, so `s[ 4, 6, 7, 9, ]` could be defined (in userland) to result in `new Set [ 4, 6, 7, 9, ]`.

I'm aware of better-maintained alternatives like https://livescript.net but I'd have to convince myself the transition would be worth it. As for other languages—I look into them with interest, but nothing that doesn't compile to WASM and runs on NodeJS is of practical interest to me; I'm not going to change my VM.


👤 anthk
JimTCL. On Pascal, is not that old. Lazarus/Free Pascal it's doing it fine in some niches.

👤 pirates
I like to constrain myself to OPA/Rego if what I’m doing can be modeled in JSON easily. I like the idea that the entire pipeline is “JSON in, parse it, JSON out”. Probably most people would have heard of it or worked with it adjacent to Kubernetes, but I’ve used it for determining scores for a soccer fantasy league I run, and I have a work in progress Pokémon gen 1 battle engine about half done with it. The constraint of “all the rules eval at once” is particularly challenging sometimes.