Too funny. The 2600 basic programming cartridge to Atari 800 basic constituted my entry into the world of programming as well. At first, I had no tape drive and no disk drive, so youād type in a program (usually from a magazine), play with it for a while and then press the reset button and start all over again. The best would be when a program listing had a whole bunch of assembly code that you would āpokeā into some address. Youād be typing in a huge string of gibberish and if there was one typo, nothing would happen when you ran program. Or if you were really lucky, youād get some garbage displayed on the screen.
I wouldnāt trade that early experience for anything.
Dijkstraās quote does have a ring of truth to it.
My first programming language was VB5, followed by VB6, then only briefly Java until I went into college to study CS.
Looking over my old VB6 projects, and old emails with my first professor (I never delete emails), made me realize just how bad of a programmer I was. I still made cool stuff (it was amazing when I discovered the Microsoft Speech SDK - I totally had that thrill you described, jeff), but I didnāt understand OO at all. For a long time, when programming I would actually think only in VB.
But alas, I was saved. I graduated with a degree in computer science, having learned tons of languages and programming paradigms. But, if it wasnāt for a university CS education, I know Iād still be stuck in the dark ages with that old VB mindset, even if I continued my hobbiest programming.
(Insert obligatory good-natured complaint about how āFortranā is being used synonymously with ābad codeā, when these days itās evolved into a perfectly good structured language thatās got some significant advantages over C and C++ ā which, by comparison, have remained largely stagnant since they were invented.)
I grew up with Basic, too - back in the good old days of 80286 cpus I started with GW-Basic as a 8-year old and learned to code my first game. Later I moved on to QBasic, Turbo Pascal, Delphi, ā¦ Without Basic perhaps I would never have started programming. Dijkstra is a nice guy - but not always right
I couldnāt agree more, especially considering Iām one of those āprogrammers of a certain ageā.
I remember vividly one of the first programs I have analyzed - a phone book that was included in the (5 1/4", of course) floppy that came with my first computer, an Apple II.
Since I was learning my way into BASIC, I couldnāt understand how the software could keep the entries between boots, since there was no data file!
Then I looked the code, and it had some lines like these, in the beginning:
10 REM ......................................
20 REM ......................................
After insterting an entry, next time it would look like this (Iām oversimplifying here):
10 REM Altimari, Rubens 257-9637 ....
20 REM ......................................
In other words, Iāve learned, right in my first weeks as a developer, still in high school, the concepts of memory as a single repository for data and code, as well as several dirty tricks related to direct memory access, saving things on disk programmaticaly, and so on.
I wonder how Dijkstra would feel about thatā¦ :-]
Yes, a lot of us began learning to program with BASIC, but that doesnāt make it a good language. I learned to ride a bike with training wheels, but you wonāt see any of those on my bike now.
Iām in high school and looking to start programming. I have the Programming for dummies book (it was a gift) and it includes tutorials in Liberty Basic and a disc for it. Is basic in general a good language to start with, with so many other languages available now? I donāt want to get stuck with the problems understanding Object Oriented programming that other people have describedā¦
Great post. And just curious, did anyone get started with programming through Texas Instrument Graphing Calculators (TI-82, TI-85, etc.) like I did? I can honestly give credit to TI-BASIC for sparking my interest in programming.
I first learned BASIC on a machine (confusingly) called the BBC Basic, which was the only computer in my primary school. Consisting mostly of āguess the numberā type games, and the occasional screen full of brightly coloured text I also felt the buzz of this ābrave new worldā and was hooked. Next came the ZX Spectrum, and the weird and wonderful experience of cassette tapes, but then came the Amiga 600ā¦ I soon left BASIC behind and became an ARexx lover, before going on to learn Pascal, which taught me the fundamentals of OOP - useful concepts that I still carry with me today.
I can see where Dijkstra is coming from, but without BASIC there wouldnāt be nearly as many hobbyist coders as there are. These days I work in a school, and see kids in the IT room getting their first taste of coding with VB scripting in Excel - not something Iād want to be doing myself, but everyone has to start somewhere. Those of them that are determined enough to take it further will, just like our generation did - and these are the developers of tomorrow. As much as I dislike BASIC, I believe itās a crucial first stage for a huge number of coders, and for that reason alone shouldnāt be entirely dismissed.
I grew up with GW-BASIC in the mid-80s. I loved programming, and I actually made some reasonably complex software. Iām convinced the accounting software I created was what landed me a scholarship to a prestigious private school here in Sydney. Other software: a graphics program, many, many games (culminating in a loderunner type game with a level designer), a text editor and many others. I even built an interpreted language IN BASIC (these days the cool kids would call it a DSL, and yes, I was crazy and young).
Ah BASIC, like you said it was the first language I programed in (good ole TI-83) Thats why I am here now studying Computer Science Network Security. I fell in love with programing because of BASIC.
I think the thing that Dijkstra was getting at had more to do more with the notion of knowing how to program in BASIC does not really demonstrate oneās mental ability and maturity of thought processes to program more sophisticated solutions demanded of harder problems only realistically implemented in more sophisticated languages.
ie: Just because you are in command of the BASIC language and perhaps can even use it so solve some potentially useful problems, does not necessary demonstrate you have the inherent skills needed to solve more complex problems. Of course, somewhat contrary to Dijkstraās exact word choice, just because you only know BASIC doesnāt necessarily mean that you donāt have that ability once truely enlightened by a superior language.
Joel, I think, addressed this bent on the topic well relative to his comments about Java in the following article:
I never got around to code in BASIC, i see it as a reserve for the oldies (programmers who started in the 90ās).I guess you didnāt need to know OOP then, concluding from your title.
"If anything, BASIC opened the minds of millions of young programmers. "
Yes, thatās all good and well. But young kids grow up, move past a language for Beginners and move on to something else.
The whole IDE āmethodā of software development introduced by Microsoft (with Visual Basic) got too deeply in some peopleās heads, allowed too many bakers and butchers to āprogramā, and were never able to dig their way out. Plonking controls on a form is fine - but hooking up datasets and controls on a form, text boxes, dropdown lists, etc. to datasets on the form is a horrendous way of doing things. Not to mention polluting all the code in the forms with database connections, SQL statements, etc. - you end up with a massive ball of spaghetti. This way of doing things, at least for anything but the five minute Microsoft demo showing off Visual Basic, some article or anything even remotely more substantial, itās just not kosher. Sure, great to get you started, and you can improve as a developer with BASIC, but a lot of people donāt move on and stay with corrosive habits learned early on. And I donāt necessarily mean move on away from BASIC, I mean to move on with learning new and better skills. Basically, BASIC has a lot to answer for - especially Visual Basic 6.
I owned the Atari 2600 BASIC cartridge when I was about eight and taught myself how to āprogramā on it. The only thing I ever really used it for was writing programs that would play little songs Iād write in BASIC. I still hum one of my mutant compositions to this day.
The good that came out of it is that my parents saw how enthusiastic I was about it and bought me an Atari 800, which I used to teach myself Atari BASIC and write a bunch of silly applications and games on that.