The Value of BASIC As a First Programming Language 548
Mirk writes "Computer-science legend Edsger W. Dijkstra famously wrote: '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.' The Reinvigorated Programmer argues that the world is full of excellent programmers who cut their teeth on BASIC, and suggests it could even be because they started out with BASIC."
Fuck him. (Score:4, Informative)
I was on Basic from 1986 to 1993, and it was the most meaningful years of my life.
Simplicity (Score:5, Informative)
There's something to it. I recently downloaded a ZX Spectrum+ manual from worldofspectrum.org (the colorful one), and was amazed by how simple the language is. The complete reference takes like 10 pages? And it can draw lines and circles..
Now compare it with any modern language, such as Java or Python. The language description itself takes 10x more than that, and the libraries available are vast. I am not arguing it's a bad thing; I am just arguing that simplicity may be a key here.
Re:Good programmers aren't easily ruined (Score:5, Informative)
Indeed. Dijkstra was frequently wrong, especially when he made grand sweeping statements.
GOTO is a good example, 'GOTO considered harmful' is practically biblical law amongst many programmers, but it's worth remembering that he made that statement in the context of an argument with Donald Knuth. Knuth won: (http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf)
Re:Time heals (Score:3, Informative)
Depends on the BASIC. I use RealBasic at work as an alternative to LabView.
RTFA. The author is quite clearly talking about non-block structured BASICs of the MS-BASIC kind.
Am I the only person on the Earth who just writes off hysterical, panty-wetting stuff like this?
Again, read for context. Dijkstra was being intentionally hyperbolic in a joke article when he wrote this. He did intend the point behind it, though.
Re:BASIC is great for kids (Score:4, Informative)
In praise of...BBC BASIC (Score:4, Informative)
I never owned a Beeb, though I had several friends that did. I used them at school a lot too, and their BASIC was extraordinarily advanced. The ELSE statement was there, as was the standar(ish) GOSUB, but you could also define true procedures which returned values etc. (DIM PROC), and there was a clean way of dropping down to the 'OS' proper (OSCLI statements).
In addition, it also solved the line number problem you mentioned. It had a renumber command so that everything would become properly spaced out again. I remember the style of coding you're describing from my C64 efforts - the C64 was actually MS BASIC and it was dreadful, anyone wanting to do decent high-levle coding used to get the Simon's BASIC [wikipedia.org] cartridge.
As a whole though, the BBC simply had the best BASIC of any 8-bit I encountered. That's not too surprising given its background and use as a teaching tool, but they did it very well indeed.
Cheers,
Ian
Dijkstra ? Legend ? (Score:4, Informative)
Dijkstra, who taught at Eindhoven Technical University - which is how I superficially came to know him - was mostly a self-declared legend. He cultivated his own myth, even going as far as publishing a little book with his own quotes.
Re:Good programmers aren't easily ruined (Score:5, Informative)
All of that discussion is passed us now, most of us have been writing software without using goto for the last two decades, goto has been replaced with try/catch constructs, labeled breaks, switch statements etc. None of the examples Knuth provides in that paper are still relevant in any modern language. By that measure, Dijkstra won.
It's not surprising either, Dijkstra was always in utopia, talking about how things would be if he build the world himself (which doesn't mean he's wrong). Knuth has always been about how to deal with the current reality (including the state of programming languages), and not so much about changing that reality.
Re:BASIC is irrelevant (Score:3, Informative)
What intro-level courses use C or C++?
Florida State University -- COP3330, "Intro to Computer Programming". 100% C++
Re:Good programmers aren't easily ruined (Score:1, Informative)
break 2; // electric boogaloo (Score:3, Informative)
Sometimes I wished `break` could take argument of how many levels it should break out of
It can in PHP [php.net]. Java [sun.com] and Perl [perl.org] have a different solution: label the start of a loop and then use that label as the argument of break. In C, it's just a matter of discipline to use goto only to replace a throw or labeled break.