back to article Your kids' chances of becoming programmers? ZERO

Almost overnight in the early 1980s, hordes of British kids embraced programming, as did many adults, delivering the most IT-literate workforce in the world. It was a big reason why the nosediving economy of the '70s and '80s didn’t crash and burn. Well, that or Thatcherism, you choose. Why BASIC? In the early 1970s and early …

Page:

  1. G_R

    Spot - on (6502/6809's rool btw...)

    1. Anonymous Coward
      Coat

      Re: 6502/6809's rool btw...

      Isn't that the processor where you don't have XORs, you have EeyORes?

      1. Simon Harris
        Unhappy

        Re: 6502/6809's rool btw...

        But the 6809 did have BRAs and SEX ...

        ... which was about as close to the real thing as some of us got back then!

      2. djack

        Re: 6502/6809's rool btw...

        Whilst I was more of a Z80 kid, I do remember being amused by EIEIO on the 6502 (I think!)

        1. Jamie Jones Silver badge

          Re: 6502/6809's rool btw...

          Noooooooooooooo!

          Z80 all the way! Loads of registers, secret instructions (8 bit manipulation of the IX and IY registers), and the powerful LDIR family of blockmove instructions!

          1. Steve Todd

            Re: 6502/6809's rool btw...

            As opposed to the 6502 where you could basically treat the first 256 bytes of memory as registers, it had hidden instructions (see http://www.ataripreservation.org/websites/freddy.offenga/illopc31.txt) and could perform memory to memory moves at least as fast as the Z80.

            I programmed both at assembler level and generally prefered the 6502. The 6809 was better and the 68000 made them both look like complete crap.

            1. This post has been deleted by its author

              1. Jamie Jones Silver badge
                Happy

                Re: 6502/6809's rool btw...

                Woah there! It was just a light-hearted nostalgic post.

                No need to take if personally! It's not a competition! Those days were over 25 years ago (and my beloved Z80 ZX spectrum won! woooohooo! Mwwwwahahaha)

                Incidently, I also did 6502 assembler (I used it to hack the school econet system), but seeing as it didn't power the speccy.... :-)

            2. G_R

              Re: 6502/6809's rool btw...

              ah yes, and the much lamented (and somewhat pointless) 68008 a la Sinclair QL.....

            3. Naughtyhorse

              Re: 6502/6809's rool btw...

              68000 made them both look like complete crap.

              plus when you got bored you could say 'Motarola 68000' to the tune of Pennsylvania 6-5000 which always raised a giggle.

              :-)

              1. Herby

                Re: 6502/6809's rool btw...

                Just remember that the Penta (nee Pennsylvania Hotel) hotel STILL has the phone number Pennsylvania 6 5000!!

            4. Peter Gathercole Silver badge

              Re: 6502/6809's rool btw... @Steve

              What made Page 0 really special on the 6502 was the ability to treat any pair of bytes as a vector, and jump using a 2 byte instruction (one for the op code, the other for the address in page 0) to anywhere in the systems address space very quickly. Because this was used extensively in the BBC Micro OS for almost all OS calls (see the Advanced BBC Micro User Guide), it mean that you could intercept the OS call and do something else instead (it was called re-vectoring).

              I used this many times. For example, in Econet 1.2, all file I/O (but not loading programs) across the network was done a byte at a time (very slow, and crippled the network, which only ran at around 200Kb/s anyway). I wrote a piece of intercept code which would re-vector OSREAD and OSWRITE so that they would buffer the file a page (256 bytes) at a time (IIRC I hijacked the cassette file system and serial buffers to hold the code and the buffered page), which sped things up hugely. Could only do one file at a time, but would handle random access files correctly.

              When used with the Acorn ISO Pascal ROMs, it sped up compiling a program from disk from a couple of minutes to seconds, and meant that it was possible for a whole class to be working in our 16 seat BBC Micro lab at the same time.

              Talking about ISO Pascal, which came on 2 ROMs, I also re-vectored the Switch ROM vector (can't remember it's name) so that I could load the editor and runtime ROM into sideways RAM, edit the Pascal program, issue a compile command (which would switch to the compiler ROM), and have it overwrite the editor/runtme ROM image with the compiler ROM image, compile the code, and then switch back after the compile was finished. Great fun! Infringing on Copyright, of course, but meant that I could work in Pascal on my BEEB that did not have the ROMs installed!

          2. Peter Gathercole Silver badge

            Re: 6502/6809's rool btw... @ Jamie

            The problem with may of the complex instructions on the Z80 was that they took so many T-states to execute. This meant that on paper, a 4MHz Z80 looked like it should outperform a 2MHz 6502, but as the average Z80 instruction took 3.5 T-states, a 6502 clocked at half the speed, with an average of 1.5 T-states per instruction could run more instructions in the same time.

            This meant that with careful programming, it was often possible to get functionally identical code running faster on the 6502 than on a Z80. It was horses for courses, of course, but many of the sorts of things that these processors would be running would be integer, simple data handling or block memory problems that did not need the more powerful instruction set of the Z80 anyway. I've commented on this with a worked example before here

            But this comes back to the crux of the article. In order to get the best out of the machines back then, it was necessary to know the instruction set very well. And this is what is missing in today's programmers.

            1. Ian 55

              Re: 6502/6809's rool btw... @ Jamie

              A 6502 couldn't average 1.5 T-states per instruction - it was guaranteed to only access memory every other tick of the clock, so there were always at least two ticks between instructions.

              In theory, this meant you could have two 6502s accessing memory alternately for an early dual CPU system. I think at least one system did, but this was a trick the main micros missed.

            2. fajensen

              Re: 6502/6809's rool btw... @ Jamie

              In order to get the best out of the machines back then, it was necessary to know the instruction set very well.

              And It was indeed possible by a single person to know that instruction set very well. The entire documentation for the Z80 instruction set was a slim book, from memory, about 80 pages. The complete hardware documentation was, again from memory, 250 pages. Fat, but one did not have to read the whole thing only the first part on IRQ's and the 1-2 peripheral's one would use.

              Now, on a modern CPU, just the section on how to configure the memory controller is the size of those to books together and you have to read all that crap + the errata's to get that sucker to boot!

            3. Anonymous Coward
              Anonymous Coward

              Re: on paper, a 4MHz Z80 looked like it should outperform a 2MHz 6502

              Yes, a 4MHz Z80 and a 2MHz 6502 were roughly on an equal footing. But at the time, in the home machines, the 6502 and family were clocking in at less than 1MHz, so they turned out with about half the grunt of the Z80-based machines at 3.5-4MHz.

              Although Sinclair blew its advantage by sticking one of the slowest BASIC interpreters ever on its ROMs...

          3. Anonymous Coward
            Gimp

            Re: 6502/6809's rool btw...

            LDIR? Nah mate, you wanna chuck the stack pointer around and use POP and PUSH to shift 16 bytes at a time. Waaaay faster on a Z80, and leaves a 6502 standing still. Just make sure SP is back where it should be before an interrupt occurs...

            Huh? What did I just type? Damn, channelling Joffa again. Lucky I've got that exorcist on speed dial...

        2. Tufty Squirrel

          Re: 6502/6809's rool btw...

          EIEIO on the 6502? You jest. It's the PowerPC "Enforce Instruction Execution In Order" opcode. It *might* go back as far as IBM's 801 processor, or more likely the original POWER ISA, but no further. The first time you're liable to have come across this unless you were doing low level AIX development on IBM hardware is when the first PowerPC Macs came out in 1994. About ten years after the 6502 was commonplace.

          1. djack

            Re: 6502/6809's rool btw...

            "EIEIO on the 6502? You jest. It's the PowerPC "Enforce Instruction Execution In Order" opcode."

            Hmm, my memory is failing.

            The mnemonic expands to the same wording, but I've definitely not done any assembly code on PowerPC (not done any at all for at least 15 years tbh,) so it must have existed on an earlier platform. It could have been 68000 I suppose.

    2. Jim 59

      6809

      6809 -> Dragon 32 is your friend

      1. Andrew Norton

        Re: 6809

        Indeed. I used mine from when I got it (second hand) in 86, until I moved to the states 10 years ago. used DRS to run all my businesses, had the floppy, boxes of tapes, and even went to the last dragon store (above a shop in Valetta, Malta) in the early 90s to pick up more stuff.

        Heady days...

        1. Jim 59

          Re: 6809

          Dragin 32, Valetta, drs. The are all things that are cool, especially when found together. The dragon manual was very good too, gave a good course in programming.

    3. Alan W. Rateliff, II
      Paris Hilton

      I love/d working in 6502 and its Commodore 64 and 128 descendents, the 6510 and 8502, but I have to admit that every so often I have a slum tryst with TMS-9900.

      I feel so dirty.

  2. Anonymous Coward
    Coat

    Old Manuals

    >> There were almost no books on programming, I worked out most of the syntax of DEC BASIC from the error messages.

    I think that I still have a 1975 DECsystem-10 Basic manual in my garage ... can I send you a copy?

    But more seriously, my early programming experience at school from 1973 was learning Algol-60 from an ICL Manual and using the formal Algol-60 Revised Report (in BNF) as bedtime reading. Weekly job turn round from the local technical college using mark-sense punch cards, eventually graduating to using the sixth-form 'Wednesday Sports afternoon' to visit the college to use their proper punch card machine and get a couple of jobs run each week.

    Sad isn't it?

    1. Anonymous Coward
      Anonymous Coward

      Re: Old Manuals

      But more seriously, my early programming experience at school from 1973 was learning Algol-60 from an ICL Manual and using the formal Algol-60 Revised Report (in BNF) as bedtime reading.

      May be an apochryphal story but I recollect hearing that the original Algol-60 compiler developers used a parser generator which generated the progam parsing code from the BNF description .... and initially it had a single error message which simply stated "Not a valid Algol-60 program"

      1. Christopher Slater-Walker

        Re: Old Manuals

        My school had an Elliott 803 (with expanded memory, floating-point unit etc. etc.) and Algol60.

        I remember a couple of the Algol error messages, and the OP got one of them (not a valid Algo60 program). Another amusing one was "Program too large or complex to be compiled at all'

        I tried to write an Algol program specifically to generate that error message but I never quite succeeded.

      2. Anonymous Coward
        Anonymous Coward

        Re: Old Manuals

        original Algol-60 compiler developers used a parser generator

        Sure, why not? That's the way Yacc worked (and Bison still does). For a while there parser generators were all the rage (perhaps inspiring the quip "I'd rather write programs to write programs than write programs" by Dick Stiles). It seemed to me at the time that compiler design/implementation was the way of the future, so I wrote a 6502 assembler in first year in college and a full compiler for a Pascal-like language a couple of years later (in Yacc, and using Zortech C's linker and maths library for the runtime part). The compiler was less than 1,500 lines of code/comments thanks to Yacc and being able to piggy-back on the Zortech linker and runtime libraries.

        Never got a job where my compiler skills were even remotely relevant, but it taught me a lot and I still find it quite interesting. So much so that I've recently been re-reading parts of the Dragon book and my old assembler/compiler code. For fun.

      3. pix30

        Re: Old Manuals

        No - I think that you're right. I was taught at Manchester by a Dr Lindsey in the mid 80s who was a complete Algol bigot. He forced us to use Algol-68 (the pain, the pain). He used to proudly tell us that the whole Algol 68 language could be validated using the BNF parser and so it was impossible to write incorrect programs. What is didn't say was that it was pretty well impossible to write any programs at all the syntax was so convoluted.

    2. rictay

      Re: Old Manuals

      Still have the Algol 60 "Days and Dates" program which calculates what day a particular date fell on. Wrote it in 1965. Mind you, I did work at a place that had a computer we ops could use when there was nothing to run on night shift.

      But seriously, CompSci students can't write programs? Could be that language compilers are not so readily available, or are not so cheap these days. I stopped buying Visual Basic when MS wrapped it up in a big package, Visual Studio, that was nothing to do with what I wanted.

      Even in my 50s I wasn't at all impressed with the CompSci graduates I worked with as they seemed to know little about software engineering, nor the reasons why we had to develop it in the first place. Prof Dijkstra, Michael Jackson, James Martin, and other legendary figures are completely unknown to them. Also such historic events as "the software crisis" that led to the foundation of software engineering as a serious profession in the first place.

      No, sadly it's only about cushy well paid careers and big fat pay checks for minimum effort.

      1. asdf

        Re: Old Manuals

        >No, sadly it's only about cushy well paid careers and big fat pay checks for minimum effort.

        Be careful painting with that broad brush. I have seen Baby Boomer coders that even after many decades weren't worth a shit and have also left nothing but a lifetime of spaghetti code behind every job they hopped after a few years.

        1. This post has been deleted by its author

      2. A J Stiles
        FAIL

        Re: Old Manuals

        Could be that language compilers are not so readily available, or are not so cheap these days.
        I do not think so. The reference implementation of the C compiler costs £0 including full Source Code.

        1. Kubla Cant

          Re: Old Manuals

          The reference implementation of the C compiler costs £0 including full Source Code.

          Exactly! I doubt that there are any current languages for which you can't get a free compiler. Many of them offer a free IDE. In the Java world, it's a battle between four or five IDEs that are either entirely free or offer a free version. I think Microsoft offer some sort of .NET freebie. If you're truly perverse and you search hard enough I bet you can even get COBOL free.

          1. This post has been deleted by its author

          2. Richard Plinston

            Re: Old Manuals

            > I bet you can even get COBOL free.

            http://www.opencobol.org/

      3. Nigel 11

        Re: Old Manuals

        But seriously, CompSci students can't write programs? Could be that language compilers are not so readily available, or are not so cheap these days.

        No. Python is available for free on Windows and Linux systems alike. http://www.python.org/download . Python is a perfect first language: well-structured, lots of libraries, and interpreted.

        Most people are no longer interested. Sad but true. I don't feel it's just programming. rather, that the whole state school system is broken, and now exists to crush all inquisitiveness and initiative out of kids so that they can become drooling compliant consumers. Exams no longer require thought or understanding, just regurgitation of memorized texts.

    3. Steve Davies 3 Silver badge

      Re: Old Manuals

      Ahhh The memories of sitting at an ASR-33 Teletype programming the Hatfield Poly or the OU DecSystem 10 in Basic. Circa 1973-74. I was at Central London Poly at the time.

      110baud should be enough speed for everyone!

      Now where's the Paper Tape repair kit?

  3. Sandtreader

    So fix it!

    Obviously I don't know what you are going to put in the second article yet but I refute the title - it has been true for the last two decades but look at the new National Curriculum which has Real Computer Science and Programming at every level from KS1 up.

    Actually it's not even completely true now - there are kids out there who have found their own way into C++ games development, ObjC/Java mobile apps or Raspberry Pi Python hacking. I've met them in schools and have had some as work experience - every bit as keen to learn the deep stuff as we were in 1980.

    This kind of "ain't like the good old days" 80's nostalgia is all well and good but it's getting old hat. What's needed now is a concerted positive effort from education and us in industry to fix it. Schools are crying out for help - Google "STEM Ambassador" or just go and talk to your local school's head of ICT who is probably panicking right now. Learn some Greenfoot (Java) and Scratch (drag-and-drop) and get out there!

    1. RyokuMas
      Childcatcher

      Re: So fix it!

      "This kind of "ain't like the good old days" 80's nostalgia is all well and good but it's getting old hat" - the problem these days is twofold:

      Firstly, the entry barrier is a lot higher for someone with almost zero knowledge. Back in the 80s, you switched on your machine, the BASIC prompt would come up and off you went, usually with something like:

      10 PRINT "Hello World!"

      20 GOTO 10

      RUN

      ... which would work, leaving you thinking "yeah!", encouraging further experimentation. Whereas now (assuming you have a bog-standard Windows PC from a high street outlet), you need to hook up to the web, and download and install your programming tools - so there's scope for things to go wrong before you've even written a line of code (remember, I'm assuming near zero experience)! Very discouraging, and bound to put a lot of people off...

      Secondly - as I've mentioned elsewhere - is what the fledgling programmer can achieve versus their expectations. Back in the 80s, games were all blocky graphics and bleepy sound - once you had mastered cursor positioning and printing special characters in different colours, it didn't feel like a huge leap to make. Whereas now, kids are brought up on a diet of Call of Duty and Grand Theft Auto, so they expect to be able to make similar - and then stop when they realise just how much work is involved.

      I'm not saying that all are put off - but it's certainly a lot more difficult these days.

      1. Roo

        Re: So fix it!

        "Firstly, the entry barrier is a lot higher for someone with almost zero knowledge. Back in the 80s, you switched on your machine, the BASIC prompt would come up and off you went, usually with something like:

        10 PRINT "Hello World!"

        20 GOTO 10

        RUN"

        That's a very good point. Although in UNIX land you have shell scripting available by default - but the barrier for entry there is UNIX rarely come with a quickstart guide telling you how to write your first shell script so your point still stands (unfortunately).

        1. Al Jones

          Re: So fix it!

          VBScript is available by default in Windows too (though there's no GOTO in VBScript, so your 2 liner becomes a 3 liner, with a Do or While loop around the wscript.echo "Hello World!" statement)

          What you can't easily do with VBScript at the command line that you could do with BASIC 25 years ago is move the cursor around the screen (though you can run your script in a web page if you want to write your own version of Snake).

      2. Solmyr ibn Wali Barad

        Re: So fix it!

        It's not that bad - programming tasks may still be appealing to kids. It really depends.

        Some good examples: Forth computer in Minecraft, Colobot, Mindstorms. Sufficiently easy, starting to yield sense of achievement right away, and yet allow to get a hang of algorithmic thinking. After that, it's quite likely that next Christmas wish is going to be an Arduino or Raspberry.

        But yes, abundance of ready-made things has taken its toll. If there's an app for everything, why bother?

      3. Destroy All Monsters Silver badge
        Headmaster

        Re: So fix it!

        > Firstly, the entry barrier is a lot higher for someone with almost zero knowledge.

        LOL NO!

        One word: Documentation. And: Actually getting your hand on a machine. With a screen. And some software. And maybe an assembler

        In 80s: FARK OFF, KIDDO.

        Now: PLENTY, WHERE YOU YOU WANNA START?

        Really, considering the "barrier of entry" today to be higher is like pining for the good old pre-capitalistic times were man and beast lived happily together and you died from a toothache at 30.

        1. Destroy All Monsters Silver badge
          Flame

          Re: So fix it!

          Don't you DARE downvote me, fracking kids. I have burnt through more keyboards than you have had anniversaries.

          Now get off my fracking lawn!

          1. Jamie Jones Silver badge
            Thumb Up

            Re: So fix it!

            "Don't you DARE downvote me, fracking kids. I have burnt through more keyboards than you have had anniversaries.

            I upvoted you, but of course you know that a comment like that is like a red rag to a bull with those downvoters!

            Yes, documentation is much better these days - In the early 90's, I basically taught myself Unix using the man pages. These seemed brilliant to me - all the information I'd require readily at hand.

            However, I'm actually quite glad I didn't have access to more information - back then, if I got stuck, I'd have to work it out - now you just Google it!

            "Now get off my fracking lawn!"

            Sigh, those energy companies will do anything these days to find new sources of natural gas! :-)

        2. JEDIDIAH
          Linux

          Re: So fix it!

          I still use scripting tools reminiscent of BASIC in order to write simple programs to do things that aren't already pre-packaged for me in some higher level language with a nice shiny happy GUI. I also automate non-GUI tools in order to deal with tasks more effectively than I would be able to in a GUI.

          In some ways, the allegedly new and better suffers from the same old problems. Except now there's shiny graphics to distract you from the problem. We try to convince ourselves that things a "different and better" when quite often they are mostly just prettier.

          Also, GUIs are often not recognized as such just because they aren't pretty enough.

        3. davtom

          Re: So fix it!

          In the old days...

          "I want to learn programming! Ah, I see. BASIC is the language. There's also this thing called machine language that I might look at. Let's get stuck in."

          In the new days...

          "I want to learn programming! Ah... OK, what do I use? There's Basic, C, C++, C#, Java, Perl, Python, Go, Dalvik, Objective C, Lisp... How do I choose?"

          1. Sandtreader

            Re: So fix it!

            [@davtom, choice of language]

            That's easy - Java in Greenfoot (www.greenfoot.org). Not a perfect first contact language maybe (Python probably shares that with BASIC in terms of PRINT 2+2, and LOGO was hard to beat) but teaching good concepts and more importantly, a brilliant mini-IDE with a sprite-based world to make games in and a wealth of teaching materials and support forums. And it's free and runs on anything. Next question?

            (it would be interesting to know how many people whinging about access being too hard and capability too limited have ever even heard of Greenfoot, or have seen kids playing with it)

        4. RyokuMas
          Facepalm

          Re: So fix it!

          Okay, getting hold of a machine was a bit more of a chore, I'll give you that. But documentation? Really?

          Like I said, when I started programming, I started off with my "How to write programs" Usborne book and just switched on my computer and typed in the first listing which - due to its simplicity - worked, as did many of the others, regardless of the fact that the book in question was for BBC BASIC and I was using an Amstrad CPC.

          Yes, when I got a bit more advanced, things got trickier. But by that time, I was well and truely into it, and had no fear of trawling through my manuals and trying a few random things to see what worked.

          But now - wade through documentation, try and make sense of all the buzzwords, eventually download and install programming software, make sure you have the latest version, fire it up and figure out how to get started... how much longer does it take than just "switch on and go"? The longer it takes to get a result, the less likely something is to appeal.

      4. Anonymous Coward
        Anonymous Coward

        Re: So fix it!

        It was rather easy to write to the hardware too.

        Poking memory addresses to output to user ports etc. These days with HAL and drivers you have to hope that the language you are using has some nice API that talks to stuff easily.

Page:

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Other stories you might like