6 ms·
The debate existed then, I quote Dijkstra: "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as pote
by Theodores 8y ago
The debate existed then, I quote Dijkstra:
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
I never got to own a Jupiter Ace or to have a go at FORTH. I don't think the options were 'BASIC or FORTH', neither do I think that computers had to have 4K of ROM and 1K of RAM by the time the 8 bit microprocessors came along in the hobby era. Sure 8K of anything cost more than a paltry 4K but were those machines with 4K ROM of BASIC and 1K of RAM useful for anything whatsoever?
The ZX81 with 1K just mentally mutilated programmers, other than that you learned that you needed more memory.
Your first programming language constrains how you think, I was deeply wedded to the 'GOTO' concept and could not understand how a program could work without line numbers. BASIC took me a long way off the object-oriented paradigm!
Anyway, thanks for grumbling about my sweeping statement - that I still stand by - I have now found some Dijkstra that is totally relevant to today and how web development has gone:
https://www.cs.utexas.edu/users/EWD/ewd04xx/EWD498.PDF https://www.cs.utexas.edu/users/EWD/ewd04xx/EWD498.PDF
- goto11 8y agoObviosly Dijkstra didn't see the benefit of a REPL, since be believe that you should sit down an prove the correctness of software by hand before you were allowed to execute it.
- C1sc0cat 8y agoIn his day that made sense - you might have to submit your program to a batch queue with long > 1 day turnaround.
- goto11 8y agoOr you could develop interactively using a language with a REPL like BASIC. Which Dijkstra was railing against.
- C1sc0cat 8y agoNot always my first BASIC programs where written on coding sheets and we got the results a week later :-)
- IWeldMelons 8y agoYeah, it is like compiling a Rust program today, on a mediocre machine - 1 day turnaround.
- JohnBooty 8y agoYour first programming language constrains how you think, I was deeply wedded to the 'GOTO' concept and could not understand how a program could work without line numbers. BASIC took me a long way off the object-oriented paradigm! Maybe! This wasn't the case for me. I'm no genius programmer, but going from BASIC to Pascal was very, very natural for me and it was a welcome change because even as a high schooler it was obvious that BASIC programs quickly became unmanageable. Recently though I have struggled a bit in my brief encounters with functional languages, though, thanks to so many years of OO. But I got the sense that if I spent some time with it, I'd get it.
- metafunctor 8y agoThe first programming language I learned was Microsoft BASIC on an MSX. I then moved on to learn Z80 assembler, Pascal, X86 assembler, C, Scheme, Java, Python, Haskell, Standard ML, Objective C, Rust, and whatnot. I believe I'm a pretty good programmer. Claiming that learning BASIC as the first language somehow permanently broke they way I think about programming is bullshit.
- TheOtherHobbes 8y agoIn the UK an entire generation of professional developers started with BASIC on toy machines like the Spectrum, before moving on to professional languages, often after a degree. Calling it bullshit is actually being far too polite about it.
- simonh 8y agoHe was really just having a dig at some colleagues, it wasn't meant as a serious proposition. In any case he's not talking about productive practical programming. I learned the ropes on BASIC in the 80s as well and it was a fine introduction to programming as a practical task but e.g. is in no way any kind of preparation to understand theoretical computer science topics like algorithm verification and provably correct programs. They're different worlds and that's really all he was saying. He'd get students come into his classes who thought they already knew all about programming and hit a brick wall when they had to deal with the level of analytical rigour his classes required. I hit this problem myself when I try to learn functional programming. I've had a go at Haskell a few times and got nowhere. I had a similar problem getting my head around object oriented programming. Switching theoretical domains can be a significant issue.
- goto11 8y ago> Your first programming language constrains how you think I call bullshit on that. A whole generation of programmers started with BASIC and went on to different languages. I went from BASIC to Pascal and had no problem at all going from GOTO to structured programming, but I did miss the REPL of BASIC. Btw. if BASIC cripples your mind, then so would Assembler, which is presumably how how Dijkstras generation got their start. Honestly I think it was just snobbishness. BASIC was available on cheep microcomputers which was affordable for regular people and hobbyists, as opposed to the machines and languages only available for businesses and academics.