Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
Education Programming

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."
This discussion has been archived. No new comments can be posted.

The Value of BASIC As a First Programming Language

Comments Filter:
  • by syousef ( 465911 ) on Wednesday March 10, 2010 @03:26AM (#31423650) Journal

    A good programmer has experienced many languages and done things in many ways. A good programmer has compared all these various experiences and understands the advantages and disadvantages of each language and programming technique. A good programmer doesn't get bogged down in line numbers and GOTO statements and never move beyond that. If someone does get bogged down they never had the attitude to be a good programmer.

    • I agree completely my first language was QBASIC and I didn't bring any of that with me, but I could still go back and do it just fine.
      That said if I were to teach someone how to program now I would probably use javascript.

    • by Interoperable ( 1651953 ) on Wednesday March 10, 2010 @03:42AM (#31423746)

      I learned in Fortran (I should qualify this by pointing out that I'm not a particularly good programmer) but it seems to me that writing logical code that uses GOTO statements would be a good introduction to computer logic. A complex program may become unreadable, but as a learning tool I could see that it might have merit. Good coding is about understanding logical procedure (and comments).

      • by pedestrian crossing ( 802349 ) on Wednesday March 10, 2010 @04:58AM (#31424092) Homepage Journal
        I also started in Fortran and by the time I got through my second semester, I had an epiphany - highly structured code is very important if you are going to maintainably do anything of significant complexity. I don't think the language matters so much, once you get to a certain point you realize that you have to modularize your code if you are going to create anything beyond a simple classroom assignment. Languages like BASIC and PERL are great introductions for beginners because they are interpreted and present a low barrier to entry. The focus can be on basic programming concepts and they provide instant gratification. That said, if one is to go further and "become a programmer", you have to understand the need for structure, typing, scope etc. and take things to the next level. If you have the aptitude to be a good programmer, this will become clear to you as you take on more complex tasks. If you don't have the aptitude, well, you are going to be a shitty programmer no matter what language you started with. GOTO in a high-level language is bad in that it is a crutch that is tempting for the beginner to reach for, and overuse makes code difficult to maintain. Making a rule of avoiding it forces you to think through your flow/structure/logic.
      • Re: (Score:3, Interesting)

        by mcgrew ( 92797 ) *

        it seems to me that writing logical code that uses GOTO statements would be a good introduction to computer logic.

        I'll agree with Dijkstra to a point -- BASIC makes it harder to learn modern high level languages like C or Java. BASIC is more like assembly than it is like C; there's little difference between JMP FF37 and GOTO 100.

        Now, if they're talking about Visual Basic, I'll agree with Dijkstra, that language is an abomination and should never be foisted on anyone.

        I do databases at work, and used to use d

    • by jpmorgan ( 517966 ) on Wednesday March 10, 2010 @03:45AM (#31423768) Homepage

      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)

      • by Dahamma ( 304068 ) on Wednesday March 10, 2010 @03:52AM (#31423790)

        Absolutely. It was drummed into me (and apparently most coworkers), and I can't believe how liberating it is once you realize, yes, in appropriate contexts "goto" can result in code (especially in error handling cases) that is both more readable and more efficient. Dogma is rarely the answer.

        • by AVee ( 557523 ) <slashdot@avee. o r g> on Wednesday March 10, 2010 @05:04AM (#31424122) Homepage
          If, and only if, you're programming in a language which doesn't provide any constructs to do error handling. Dijkstra was right, goto's are a bad idea and should not exist in a language. Knuth was right, in the absence of something replacing goto you're better of using it then not using (if done properly).

          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.
      • by syousef ( 465911 ) on Wednesday March 10, 2010 @03:57AM (#31423816) Journal

        The irony is that under the covers, it's all done with jump instructions anyway.

      • Re: (Score:3, Insightful)

        by smash ( 1351 )
        I'd argue that goto IS harmful - however like all harmful things, there are use-cases where it is either necessary or useful to accomplish a particular objective.

        Much like a chain saw not being an all purpose cutting tool....

        So... avoid using it when not strictly necessary, but if it is the only sane/high performance way of getting things done in a special use case, by all means...

      • Re: (Score:3, Insightful)

        by rsidd ( 6328 )

        Thanks for the link. However, I'm not sure you read beyond the title. On page 2, Knuth foresees two types of reactions based on reading the title alone, and yours sounds the first type. In fact Knuth does not disagree with Dijkstra, and he quotes Dijkstra to show that Dijkstra was not dogmatic about GOTO either. Knuth's purpose is to explore where GOTO has a place and where it is better to eliminate it.

  • Fuck him. (Score:4, Informative)

    by OrangeCatholic ( 1495411 ) on Wednesday March 10, 2010 @03:28AM (#31423656)

    I was on Basic from 1986 to 1993, and it was the most meaningful years of my life.

    • Seconded! (Score:4, Interesting)

      by thijsh ( 910751 ) on Wednesday March 10, 2010 @04:14AM (#31423916) Journal
      Commodore Basic taught me to love programming, have fun making little games and all important binary operations and encoding for sprites and font
      QBasic allowed me to take my learned lessons to the 8086 and add much much more visually appealing graphical interfaces (still mostly games, but also editors etc.)
      QuickBasic introduced me to libraries and compilation, i've built some great hardware monitoring interfaces with sensors and relay switches
      Visual Basic allowed me to explore the win32 API and libraries, i''ve built some of my greatest applications with it ranging from editors and filtering proxies to a graphical music collection interface I could control with a remote

      I loved basic, it taught me so much but most of all it taught me to love programming... The days of fun little programs in basic are over and I have no intention of ever going back... but there is definitely meaning there, and I would recommend anyone to try programming with basic... as a self-taught programmer I can say you will learn a lot from basic.
      • Re:Seconded! (Score:4, Interesting)

        by Just Some Guy ( 3352 ) <kirk+slashdot@strauser.com> on Wednesday March 10, 2010 @10:31AM (#31425820) Homepage Journal

        Commodore Basic taught me to love programming, have fun making little games and all important binary operations and encoding for sprites and font

        Preach it. My first exposure to binary was working through the examples in the Commodore 64 Programmers Reference Guide [commodore.ca] (still the best manual I've ever read). Sprites were 8x8 images stored as a 8 bytes, each byte representing a row, and each bit representing a pixel. I probably went through that section 15 times before I truly understood and believed that binary math works, but the lesson paid off in spades. Back then, it was figuring out how to peek and poke a memory location to make a single pixel blink. Now it's loading and storing a memory location to toggle a serial control line on an embedded controller. That little machine gave me a good start.

  • Time heals (Score:3, Insightful)

    by Quiet_Desperation ( 858215 ) on Wednesday March 10, 2010 @03:31AM (#31423662)

    Depends on the BASIC. I use RealBasic at work as an alternative to LabView. It's object oriented, multithreaded and completely "Visual".

    as potential programmers they are mentally mutilated beyond hope of regeneration

    Am I the only person on the Earth who just writes off hysterical, panty-wetting stuff like this? When did he say this? in the 1960s or something? It's 2010 now, right?

    • Remember, this is Wirth we're talking about. He's the guy who made a fetish out of top-down programming while designing a language that's intended to be written and compiled bottom up! The guy's never been anything but a quiche-eating hypocrite in my book.
    • Re: (Score:3, Informative)

      by julesh ( 229690 )

      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: (Score:3, Insightful)

      by jandersen ( 462034 )

      Depends on the BASIC. I use RealBasic at work as an alternative to LabView. It's object oriented, multithreaded and completely "Visual".

      Not really; BASIC, as Dijkstra talks about, is not the modern development tool that is barely BASIC any longer. As a programming language regarded, modern 'BASIC' is not really much different from C++ or what can loosely be called "Object Pascal" - it only resembles BASIC because it has kept many of the same keywords.

      No, BASIC was and still is, as far as I am concerned, the line-by-line interpreted language that was meant to be a simplified FORTRAN, and as most of the languages from that time, it has a numb

  • Simplicity (Score:5, Informative)

    by azgard ( 461476 ) on Wednesday March 10, 2010 @03:31AM (#31423664)

    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.

    • I started out on a little basic-in-rom interpreter and it was okay for a while. If I needed performance I had to write 6502 machine code. Eventually my dad built up a CP/M system and I got my hands on pascal.

      But I knew people of my fathers generation who grew up on fortran and still wrote fortran in newer languages (pascal, c, etc). IMHO fortran was more harmful because it went further than basic and the coding style it imprinted on people went deeper.

  • Meh (Score:2, Interesting)

    by s1lverl0rd ( 1382241 )

    I started out with QBasic. It was absolutely horrific - the language itself and the code I wrote as well. QB convinced me to never, ever try VB.

    So yes, starting out with BASIC helped me tremendously :)

    • Re: (Score:3, Interesting)

      I don't remember tha language being bad.

      It was free from line numbers and allowed proper structured programming.

  • by julesh ( 229690 ) on Wednesday March 10, 2010 @03:33AM (#31423672)

    ...and I'm wondering: what's with the random sushi pictures?

  • Funny argument (Score:5, Insightful)

    by phantomfive ( 622387 ) on Wednesday March 10, 2010 @03:36AM (#31423694) Journal
    His argument is kind of funny. He says people who've learned in BASIC have learned what NOT to do when programming. I have to admit he has a point....I learned exactly why spaghetti code was a bad idea after doing it for a couple years. Some people think they know what spaghetti code is, but unless they've written code with line numbers, they probably don't.
    • Re: (Score:3, Insightful)

      by 0123456 ( 636235 )

      Some people think they know what spaghetti code is, but unless they've written code with line numbers, they probably don't.

      And the good old days of 'LET A = NOT PI' to save three bytes of RAM :).

      (ex-Sinclair BASIC programmers will understand why such arcane constructs were beneficial when you were low on RAM)

    • I agree. I started on QBASIC, so I didn't have to cope with line numbers... but the code was still spaghetti. I remember the joy I felt upon discovering subroutines.

      It's like a child burning themselves for the first time. Sometimes it's the best way to learn.

      • Re:Funny argument (Score:4, Interesting)

        by phantomfive ( 622387 ) on Wednesday March 10, 2010 @03:53AM (#31423796) Journal
        That is totally true, I remember the first time I saw structured programming, it was something simple, just an easy way to print a list of items on the screen, and it was literally a feeling of the joy of discovery. I got addicted and started thinking up my own ways to structure code.

        Compare that to the guy I met when I was tutoring CS, who said, "functions, why do I have to use functions to write this program? I know how to use functions, it's such a waste of time." The idiot could have finished the program in the time he spent complaining about it, but he certainly did not feel the joy of discovery.
    • by azgard ( 461476 )

      It should be also said, though, that for people who programmed on 8-bit computers (I had ZX Spectrum), there was hardly any other way than to have spaghetti code at the time. OOP was non-existent and Lisp too complex. At the time, global variables, fixed-length arrays and GOTOs were the way how to actually program effectively (both in BASIC and assembler).

      • Yeah, there were no 'else' constructs. If you wanted an else, you had to do it yourself with a couple GOTOs. Also, the worst part about line numbers was when you decided to add something later, and there weren't enough lines. A program that had been refactored this way a few times could literally move randomly through the source code.
        • by mccalli ( 323026 ) on Wednesday March 10, 2010 @04:05AM (#31423864) Homepage
          Yeah, there were no 'else' constructs. If you wanted an else, you had to do it yourself with a couple GOTOs. Also, the worst part about line numbers was when you decided to add something later, and there weren't enough lines. A program that had been refactored this way a few times could literally move randomly through the source code.

          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.

  • by VirtualUK ( 121855 ) on Wednesday March 10, 2010 @03:37AM (#31423714) Homepage

    I disagree with the premise that BASIC teaches bad habits. I stick with the old adage a bad workman blames his tools. BASIC teaches kids (like I was over 30 years ago) from the ages of 5-6 how to put together simple logic, and gives them the very basics of languages constructs like variables, loops, sub routines, etc. without them having to grasp structures, classes, polymorphism, OO, etc. that a lot of grown ups that have been involved with writing code for quite some time can have issues with.

    • by phantomfive ( 622387 ) on Wednesday March 10, 2010 @04:00AM (#31423836) Journal
      If you had read the article, you would know that you had just written a fairly decent summary of the author's main point.
    • Re: (Score:3, Insightful)

      by Anonymous Coward

      I maintain that Python can do this much more easily due to the fact that there are simply fewer ridiculous syntax requirements in a simpler to read format. The things you learn in BASIC can be taught at a much more significant level in Python (inline AND block comments, order of instructions, basic control structures, variables and their use) without jumping through the hoops that you will in BASIC. Python's use of whitespace and extensibility allow beginners with an aptitude to expand on their knowledge ea

    • by smash ( 1351 )
      A bad workman may blame his tools, but BASIC (traditional line numbered basic) is a tool that encourages formation of bad habits.

      If you can't get your head around basic data structures, then perhaps programming isn't an ideal career path. To do anything useful at all, you ARE going to have to deal with data structures.

      Pascal or even C is a much better first language, imho.

      I started off with TRS-80 Color Basic on a Coco 2.

  • I learned BASIC on a Commodore Vic-20 when I was about 6. The big problem with that flavor of BASIC was its shallowness: it didn't reward elegant solutions to programming problems and it was very easy to hit the performance limit. I never really managed to build anything more complex than text adventures and very simple arcade games. Still, the BASIC prompt was the very first thing you saw when switching on the micro so you were naturally attracted to experimenting with it, assisted by handbook that was inc
  • by Greyfox ( 87712 )
    You haven't really programmed until you've implemented a linked list using arrays in Basic!

    Worthless? Hardly!

  • by Katatsumuri ( 1137173 ) on Wednesday March 10, 2010 @03:45AM (#31423764)

    As a programmer who started with old-school BASIC (numbered lines, etc), I was overjoyed with better elements of structured programming in Turbo Basic, and totally excited with C when I learned it. It felt like having my hands untied. So I would state the contrary: you cannot fully appreciate the structured programming unless you went through the GOTO hell.

    I hear a lot of similar FUD from some people, like "you can't grok OOP if you started with C", or "anyone who touched .NET or Java is lost for C++..." It boils down to "people are idiots, they can't possibly learn anything new, they are either indoctrinated at birth in My True Way, or lost and hopeless." Who in their right mind would take that seriously?

  • Whoever hasn't coded with GfA-Basic or Omikron Basic never experienced how a fun and versatile language it was.

  • Variety (Score:5, Interesting)

    by RenHoek ( 101570 ) on Wednesday March 10, 2010 @03:51AM (#31423788) Homepage

    I've gone from MSX Basic to Turbo Basic to Turbo C. Now I can code in all kinds of languages, assembly, PHP, Ruby, Javascript, etc..

    I do think that BASIC has value as a first language because it gives back results immediately. Sure, nowadays there are other script languages, so you don't have to go through compiling and all the other complexity. BASIC is valuable because it's just that: basic. You don't have to worry as a first-timer about libraries, include files, functions and everything else. You get down to the very basics like variables and program flow.

    And after a lot of years of BASIC programming I knew the limitations of the language (which largely depends on the interpreter). That's when I switched over to Turbo C. And to be honest it didn't took me long at all to learn C because I was a pretty reasonable BASIC programmer.

    What I _do_ object against is stuff like Visual Basic. That's taking a limited language which is simple and jamming it into a place where it shouldn't belong. To let Visual Basic work, they stuffed all kinds of non-original basic stuff in there which make it more complex then something like Visual C. Their idea was "lets make making real application easy with Basic, because Basic is easy right?". It doesn't work like that.

    I also think that Java is not a language that people should start programming in to be honest. Object oriented programming is NOT something people should learn before they had a taste of procedural programming. Fun fact. I went back to my old school to see about taking some night classes to get my CS degree. (I dropped out at the time and I've learned a LOT more on the job then what they were teaching.) At their open house classes I asked about procedural programming and if they still taught it. They scoffed and said nobody uses that anymore. This when I've been a Linux kernel developer for 10+ years now which is 100% procedural ANSI C. It's all Java they teach nowadays.

    In closing. I think a good programmer is somebody who explores. If I have a Windows application that does something cool, I take it through a disassembler to see what makes it tick. I look up DOT NET C# code snippets to see what it's all about. I look through COBOL and ALGOL source code to see what constructs people used in the past. I patch ARM assembly code to fix bugs. I do all those things and not rigidly stick to a single programming environment. A good programmer is a state of mind, not the language he works in.

    • by RenHoek ( 101570 )


      GOTO's have their place, even in modern programming languages. Fuck C for not having a 'break [n]'. :)

  • I started with BASIC (Score:4, Interesting)

    by OpenSourced ( 323149 ) on Wednesday March 10, 2010 @03:53AM (#31423794) Journal

    Years before I took any formal course, I was looking at the manual of a BASIC computer and making circles on the screen by programming a dot that kept to the same distance to another and rotated. I still remember the emotion of seeing a real circle emerge on screen. I don't know if BASIC helped me much to program, but the immediacy of the thing certainly did much to keep my interest alive.

    • Re: (Score:3, Interesting)

      by KillzoneNET ( 958068 )

      I too started with BASIC. In my case this was freshmen year in High School back in 1999 on QBASIC. I had dabbled a little with HTML but that was nothing like an actual language that had logic. It was there that I learned the basic blocks that made me the programmer I am today. I went from simple logic to loops to graphics and sound.

      By the end of the year I had a full animation of a house with Christmas lights and music. I even had a very primitive text based RPG working with the ending taken straight out of

  • by willoughby ( 1367773 ) on Wednesday March 10, 2010 @03:56AM (#31423812)
    Most folks who have learned C++ learned it in a classroom with a real teacher. Most folks who learned BASIC learned by banging away on a computer keyboard at home.

    Most people aren't very good at teaching themselves. I've seen this a lot with people trying to learn Morse code and giving up in frustration.

    You can pick up a lot of bad habits without someone to guide you.
  • Bah (Score:5, Insightful)

    by tsotha ( 720379 ) on Wednesday March 10, 2010 @03:59AM (#31423834)

    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'

    Like all eminently quotable people, Dijkstra tended to hyperbole and oversimplification.

  • A language may lend itself more naturally to a certain way of thinking, but isn't bending the language for the job the role of the programmer? I personally agree with the author - I think it's always a good mental workout to work in languages that do not give you the wealth of constructs and libraries of the many language popular today, but more than that, starting out in Basic exposed me to the many dialects of Basic very early in my career such that I'm now used to programming in unfamiliar languages.
  • by Kjella ( 173770 ) on Wednesday March 10, 2010 @04:03AM (#31423852) Homepage

    ...but it was BASIC. And the expectations were so low. "10 PRINT "Hello, World!", "20 GOTO 10" and it started doing something. The programming manual was well worn by the time I was 10, would that have happened with any other language? I doubt it. Things like lack of scoping makes the easy things easier and the hard things harder. The point isn't to learn everything from your first language, the point is to get started and interested at all. Moving to DOS was sorta ok, but moving to Windows killed my interest. C/C++ was just horribly complicated, I remember trying to get up a window in the Win32 API and it was like wtf, how hard can this be? MFC was even worse, Java (really early java, on hardware of the time) was slow and unresponsive as fuck, Javascript was a toy language for websites and never really like Pascal or VB much either. I didn't regain my interest in programming until I went with C++/Qt, or maybe more Qt than C++ really. QMainWindow *mw = new QMainWindow(), mw->show(). The hard stuff is still hard, but I very very rarely find I write "overhead" code that I shouldn't have to.

    • by smash ( 1351 )
      My history is similar, however i discovered Turbo Pascal and inline assembly. Couple that with the ease of getting into and programming mode 0x13 (display = array of bytes :)) and actually getting interesting things to happen was fairly straightforward and fun.

      I lost interest in Window systems as well due to the amount of bullshit to get anything on the screen just killed interest. I've gotten into Cocoa with xcode and interface builder recently, and its fun again :)

      I definitely agree, its the "overhe

  • by wrmrxxx ( 696969 ) on Wednesday March 10, 2010 @04:10AM (#31423888)

    easy language first your get-over is

    FORTH started I at-all me affected not and

  • My son is currently at the age where he wants to start learning to program. The thing is, other than Basic or similar entry-level languages, he just can't wrap his 11 year old mind around C++ or other more complex languages to start. And I can't exactly drop him straight into SQL or Linux either. He has to start somewhere, and simple languages fill this gap very well for the young. It's also the same reason why I hope that they never stop making those ###-in-one electronic kits. The basics may be old

  • Dijkstra ? Legend ? (Score:4, Informative)

    by vikingpower ( 768921 ) on Wednesday March 10, 2010 @04:12AM (#31423902) Homepage Journal

    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: (Score:3, Interesting)

      Ha, right. The guy who invented semaphores and solved some of the most difficult theoretical problems in Computer Science was a "self-declared legend." Are you serious? Sure, Dijkstra was opinionated and arrogant, but he was also a genius. He came through with rigorous solutions to the problems that really plagued the field of CS. That doesn't mean that he had perfect perspective, by any measure of the imagination. For example, he argued that first year Computer Science students should not even be allowed a
    • Re: (Score:3, Interesting)

      by RAMMS+EIN ( 578166 )

      I think you sort of have to cultivate your own myth if you want to become famous. There are a lot of brilliant people out there who most people have never heard of. Dijkstra made great contributions to computer science and programming, but to say that that is what made him famous belittles the work of all those others who did so, too. He was famous because he made great contributions _and_ worked on his visibility.

      Being famous is not one of my goals, so I don't engage in a lot of activities that would raise

      • Re: (Score:3, Interesting)

        by Dun Malg ( 230075 )

        I think you sort of have to cultivate your own myth if you want to become famous.

        ehhhhh..... I think you have to cultivate your own myth if you don't have a great number of concrete accomplishments to cement your reputation. Richard Feynman was a pretty unassuming guy, and he ended up famous anyway. Dijkstra probably didn't need to sell himself, so he really doesn't fit the category. He was just a kind of a loudmouth by nature.

  • Back in the day I used basic a LOT, arguably like a sophisticated calculator programming language to do engineering calculations.

    Show me a page of PHP even and everything goes blurry and out of focus.

    That's dyslexia for you.

  • Are people still teaching or learning BASIC?

    I know JavaScript, PHP, and AppleScript, and I learned them so I could script the Web browser, the Web server, and the Mac desktop, respectively. With just a few simple lines of each you can make really practical and productive things happen that seem to me like they would reward the beginner. My background is publishing, though. Maybe I'm biased towards programming that makes documents.

    What does BASIC actually do?

  • I think the author is mostly on. He's aware Dijkstra was exaggerating for effect, but also completely correct... if you started programming in the early home computing era, you probably started with a BASIC. I was lucky enough to get some varied exposure earlier to some other languages (LOGO and some shallow assembly), but until I was 15, it was pretty much Basic.

    And none of my programming habits now resemble anything close to the BASIC I wrote in when I was that age. Except, occasionally, for the rare cases where global state seems to make sense, and even then, I try to namespace things in one way or another. But by and large, I picked up structured programming, I picked up object-oriented programming, I picked up logic programming, and I'm learning to enjoy functional programming.

    I will say... there was a time when I was probably close to being "ruined." It was when I was learning C++, and I only really had Pascal, basic C, and Basic under my belt. And I had a pretty solidly structured-imperative mindset, and really hadn't seen any other way of doing things. C++ married data structures and methods in an interesting way, but it didn't seem like more than a stylistic practice to me. I was pretty sure most languages were alike, you just had syntax and typing differences.

    But there was one thing: I'd had to learn Prolog for a very specific job. We were teaching it to high school students in a CS summercamp I worked at for a few years. The first year, I just thought "Man, this is weird," more or less got through all the exercises, and left it behind, and did what most people do: dismiss it as an odd research toy. The second year, I thought "this is weird, but interesting." The third year, I thought "Wow. There are all kinds of intriguing ideas here."

    And there are, and I still think it could stand to see more usage in mainstream software, but more importantly, I think I'm pretty lucky I got repeated exposure to a language that forced me to think differently before I got very far into actually working in the software industry.

    Because I now think there's either a critical period [wikipedia.org] (or possibly, at a minimum, a critical attitude of some kind) after which a lot of programmers tend to lose either the humility or the curiosity that drives people to think about different programming constructs and habits. I think if a programmer has been minimally exposed before they reach it, they'll keep just enough of one or both of those attributes that they'll be interested in what they don't already know, rather than arriving at the point where "they've already learned the last programming language they'll ever need." [blogspot.com]

    And if they don't get so exposed, they become Blub programmers [paulgraham.com], where generally $Blub is some industry-leading language that does enough you don't easily bump up against tasks that are near impossible in it.

    To tie this back in with a point I think the author missed, I suspect that some of the difficulties with Basic are actually part of the reason why it didn't end up ruining more programmers. Almost everybody who really came to grips with it as a tool probably realized that it couldn't possibly be the last programming language you'd ever need (if it weren't enough that any effort to look into working as a programmer revealed that Basic was clearly not the strongest payroll ticket).

  • Better than nothing (Score:3, Interesting)

    by kainosnous ( 1753770 ) <slashdot@anewmind.me> on Wednesday March 10, 2010 @04:21AM (#31423956)

    When I was first learning to "program" I had nothing more than an old computer with DOS. The internet was something I had heard about, but had never experienced myself, and I didn't know what Linux or even Unix was. The only way I had to learn was from some books I found at the library. At first, it was just .bat files. When I discovered BASIC (I thing it was GW BASIC), I was excited to have it. Later, I discovered QB.

    There are some advantages. First, I didn't have to set anything up or worry about what includes I needed. A simple PRINT "Hello word" was enough. What was better with QB was that with the press of F1 I could browse the list of commands. Also, it came with a Gorillas.bas and Nibbles.bas. I spent hours injecting lines of code into those games.

    Sure, if you have a full Linux environment with gcc, man pages, and web access then BASIC is just some lame toy, but if it's all you have It's a start.

  • BBC BASIC (Score:5, Interesting)

    by tomalpha ( 746163 ) on Wednesday March 10, 2010 @04:28AM (#31423970)

    I cut my teeth on BBC BASIC back in the 80's. It was simple, powerful, let you do pretty much anything and best of all came with a built in assembler. Now that was really neat.And it just worked. It was easy to optimise individual subroutines in assembler. This was age 10. At my simple state school with a couple of BBC Model Bs in the corner, I wasn't the only one doing that either.

    I make a living writing C++ now and seem to do fairly well at it. The kids coming out of university that I interview these days haven't touched BASIC, or C++ for that matter. We want them to write good C++ when they come and work for us. The intelligent ones adapt easily to working with pointers etc. The less able ones that have somehow made it through the interview process struggle.

  • 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."

    Bullshit. You know what may be a reason? The extreme restrictions. In the 80s I used a fairly good Basic, BBC Basic, but I mostly used 6502 assembler. This on a machine with very limited memory. What that does is cause you to do things as efficiently as possible, it makes you think how to best represent the data in memory etc.

  • Ever see BBC Basic? (Score:3, Interesting)

    by serviscope_minor ( 664417 ) on Wednesday March 10, 2010 @04:50AM (#31424058) Journal

    The BBC Model B was released in 1981. It had a nice dialect of basic with named procedures, named functions, dynamic memory allocation, typed variables, proper pointer indirection and a cleverly integrated assembler.

    It had pretty much the full suite of structured programming tools.

    Maybe the comment had some value before 1981, though I don't think it did. For the last 29 years, however it has been somewhat out of date.

Order and simplification are the first steps toward mastery of a subject -- the actual enemy is the unknown. -- Thomas Mann