"In 2016, there should not be many undergraduates that are familiar with the version of Basic that Dijkstra was referring to when he made this quote in 1975"
see https://www.cs.utexas.edu/~EWD/transcriptions/EWD04xx/EWD498... for the original quote
thank you!
Dijkstra was talking about Dartmouth Basic in 1975:
- Variables: Single letter, optional digit.
- Control flow: FOR loops, GOTO for others.
- Subroutines: GOSUB line, RETURN.
- Parameters: Passed via global variables.
- Functions: 26 (FNA–FNZ), one line each.
- IF statements: One line only.In terms of control flow, that's basically assembly, just with a friendlier syntax.
It's much worse than assembly. On all but the shittiest machines, you can store code pointers in RAM and registers, and in a subroutine call, the return address is stored somewhere you can read and change it (whether on a stack, in a register, or before the first instruction of the called subroutine). This allows you to implement object-oriented programming, switch/case, backtracking, and multithreading in assembly. You can't do that in BASIC.
Also, since the early 01960s, all but the most primitive assemblers have macros and named labels. One result is that they have an unlimited number of named functions with line number independence, as marcosdumay said. Many of them have a sufficiently powerful macro system to implement nested control structures like while loops and multiline if. Since the 01970s they've also had local labels. BASIC doesn't have any of that.
Modern assembly you give you named functions, line number independence, unlimited functions, places for carrying a value over RET... Basic had none of those.
please clarify.
few know basic in 2016?
few know Dijkstra said it in 2016?
in 2016 few knew that Dijkstra made the claim at some earlier point in time?
I don't understand what you want to say.