As their soundcheck question for 2024, Computerphile asked their
interviewees what their least favourite programming language was <https://www.youtube.com/watch?v=03lRzf7iSiU>.
The most popular answer was JavaScript, with 4 votes. There were 2
votes for PHP, and one each for Lisp and Python.
The Python-hater didn’t like dynamic typing. Given how many dynamically-typed languages there are (including lots older than
Python), how come Python was the first one he thought of?
As for JavaScript, I think it’s misunderstood. The only one who gave a reason for his dislike gave an outdated reason -- scope hoisting. That doesn’t have to apply any more, if you avoid “var” declarations, and also use strict mode to avoid implicit globals.
I imagine PHP would have got more votes, if more people had had to use
it.
One mentioned COBOL (which for him was worse than Fortran), but nobody thought of BASIC. I guess that is now so far in the past, many among
the interviewees wouldn’t even have any memories of using it ...
One mentioned COBOL (which for him was worse than Fortran), but nobody thought of BASIC. I guess that is now so far in the past, many amongAnd/or that anybody using BASIC in a modern context is gonna be using
the interviewees wouldn’t even have any memories of using it ...
On Fri, 31 Oct 2025 06:48:08 -0000 (UTC)
Lawrence D’Oliveiro <[email protected]d> wrote:
One mentioned COBOL (which for him was worse than Fortran), but nobody
thought of BASIC. I guess that is now so far in the past, many among
the interviewees wouldn’t even have any memories of using it ...
And/or that anybody using BASIC in a modern context is gonna be using something like FreeBASIC, which is a vastly improved and perfectly
reasonable little language compared to the early microcomputer BASICs.
Re: Javascript, it's true that a lot of improvements have been made to
it, but from a certain perspective it's all lipstick on a pig; there's
been so many things slapped on to paper over some poor initial design decisions or chase trends in web development over the years that at
this point it's a fossil shale of a language.
Anyway, there's things to dislike about most any language, but there
aren't too many that I'd universally condemn in my own assessment.
Pascal gets a frowny-face for design decisions that should never, ever
have made it past the initial draft of the first paper (making array
size part of the type specification was braindead from the start - an impediment to good design *and* a burden on performance, all in the
name of avoiding a problem that there were much better solutions for,)
and while newer iterations have improved things somewhat, it would've
been better to throw it out and re-do from scratch...*but* the FP folks
do put a lot of effort into making it a full-featured and surprisingly portable platform for development.
Another language that feels needlessly gross and tedious is Java - it's
just *unreasonably* verbose, to the point where one is tempted to
employ a macro preprocessor just to condense sesquipedalian nonsense
like System.out.println() down to furshlugginer print() and so forth.
Re: Javascript, it's true that a lot of improvements have been made
to it, but from a certain perspective it's all lipstick on a pig;
there's been so many things slapped on to paper over some poor
initial design decisions or chase trends in web development over the
years that at this point it's a fossil shale of a language.
On Fri, 31 Oct 2025 06:48:08 -0000 (UTC)
Lawrence D’Oliveiro <[email protected]d> wrote:
One mentioned COBOL (which for him was worse than Fortran), but nobody
thought of BASIC. I guess that is now so far in the past, many among
the interviewees wouldn’t even have any memories of using it ...
And/or that anybody using BASIC in a modern context is gonna be using something like FreeBASIC, which is a vastly improved and perfectly
reasonable little language compared to the early microcomputer BASICs.
Re: Javascript, it's true that a lot of improvements have been made to
it, but from a certain perspective it's all lipstick on a pig; there's
been so many things slapped on to paper over some poor initial design decisions or chase trends in web development over the years that at
this point it's a fossil shale of a language.
Anyway, there's things to dislike about most any language, but there
aren't too many that I'd universally condemn in my own assessment.
Pascal gets a frowny-face for design decisions that should never, ever
have made it past the initial draft of the first paper (making array
size part of the type specification was braindead from the start - an impediment to good design *and* a burden on performance, all in the
name of avoiding a problem that there were much better solutions for,)
and while newer iterations have improved things somewhat, it would've
been better to throw it out and re-do from scratch...*but* the FP folks
do put a lot of effort into making it a full-featured and surprisingly portable platform for development.
Another language that feels needlessly gross and tedious is Java - it's
just *unreasonably* verbose, to the point where one is tempted to
employ a macro preprocessor just to condense sesquipedalian nonsense
like System.out.println() down to furshlugginer print() and so forth.
Any language that *requires* an IDE with weapons-grade autocomplete
deserves censure...but then it's somehow still the best solution we've
got for write-once-run-anywhere development, which is maddening :/
Also, absent additional analysis steps or similar, and thus code
complexity, full lexical scoping is prone to rapidly leak memory.
This is a non-issue with dynamic scoping, even if, potentially,
using dynamic scoping as the default is itself a foot gun (in terms
of semantics).
On Mon, 3 Nov 2025 14:05:12 -0600, BGB wrote:
Also, absent additional analysis steps or similar, and thus code
complexity, full lexical scoping is prone to rapidly leak memory.
You mean, you need to put call frames on the heap, not the stack? And
that will expose any lack of robustness in your memory-management
scheme?
By the way, Python is clever enough to only put referenced outer-level variables within the closure.
This is a non-issue with dynamic scoping, even if, potentially,
using dynamic scoping as the default is itself a foot gun (in terms
of semantics).
This sounds like a “I could implement it much more efficiently if I didn’t have to do it correctly” kind of argument ...
Some of my past languages had both lexical and dynamic scoping (with
lexical as the default). This can make more sense.
And/or that anybody using BASIC in a modern context is gonna be
using something like FreeBASIC, which is a vastly improved and
perfectly reasonable little language compared to the early
microcomputer BASICs.
In one project, I ended up implementing a BASIC dialect partly
inspired by early Unstructured BASIC dialects. Though, in this case,
this was more because it allowed writing an interpreter in roughly
1000 lines of C.
Though, I ended up extending it in some non-standard ways that didn't
really match up with either 80s BASIC, or the direction the language
went in the 90s.
But, the use-case I had didn't really need it to go in the 90s
direction, and keeping the interpreter small also did not favor going
that direction (where the 90s dialects more went in the direction of
trying to turn it into a more general purpose programming language).
On Mon, 3 Nov 2025 14:55:31 -0600, BGB wrote:
Some of my past languages had both lexical and dynamic scoping (with
lexical as the default). This can make more sense.
Dynamic binding simply isn’t that useful. Lexical binding just works more naturally the way people expect.
Say, for example, if you had something analogous to stdin/stdout as dynamically scoped variables, then it makes IO redirection easy.
They can also serve a similar role as TLS variables (though, in a more advanced compiler, they were usually implemented as an additional local save/restore mechanism on top of TLS variables). In this case, the role
of dynamic variables can be overloaded to that of TLS variables.
| Sysop: | DaiTengu |
|---|---|
| Location: | Appleton, WI |
| Users: | 1,076 |
| Nodes: | 10 (1 / 9) |
| Uptime: | 77:07:42 |
| Calls: | 13,805 |
| Files: | 186,990 |
| D/L today: |
5,226 files (1,699M bytes) |
| Messages: | 2,443,143 |