'Retro Programming' Teaches Using 1980s Machines
Death Metal Maniac writes "A few lucky British students are taking a computing class at the National Museum of Computing (TNMOC) at Bletchley Park using 30-year-old or older machines. From the article: '"The computing A-level is about how computers work and if you ask anyone how it works they will not be able to tell you," said Doug Abrams, an ICT teacher from Ousedale School in Newport Pagnell, who was one of the first to use the machines in lessons. For Mr Abrams the old machines have two cardinal virtues; their sluggishness and the direct connection they have with the user. "Modern computers go too fast," said Mr Abrams. "You can see the instructions happening for real with these machines. They need to have that understanding for the A-level."'"
Uhm, we were saying that in the 1980s. At Bletchley Park they should be teaching with machines that actually are old.
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
You would get exactly the same "feel" as you get with an old C=64 or Atari or Amiga machine. If your goal is to get down to the bare metal, then go ahead and do so. There's no need to dust-off old machines that are on the verge of death (from age).
"I disapprove of what you say, but I will defend to the death your right to say it." - historian Evelyn Beatrice Hall
... if you want to know how computers work, learn microcontrollers with the Atmel 8 bit family of controllers (ATMEGA8, for example). These things are wonderfully documented, there is a free C/ASM development environment with emulator (single-step, breakpoints, etc.). The real deal is just a few dollars for a development board (or get an Arduino, same thing). You don't get the absolutely down to the transistor insight, but that's really just a few experiments with TTL gate chips and LEDs away.
They each took on the role of a different part of the machine - CPU, accumulator, RAM and program counter - and simulated the passage of instructions through the hardware.
The five shuffled data around, wrote it to memory, carried out computations and inserted them into the right places in the store.
It was a noisy, confusing and funny simulation and, once everyone knew what they were doing, managed to reach a maximum clock speed of about one instruction per minute.
I wish I had a teacher like this while in [US public] school.
More Twoson than Cupertino
We ran some older machines in my first programming course. When you can see the direct results in speed (or lack of) it can help teach better approaches. Writing a game and seeing the screen flicker when you ask the CPU to do too much is good modivation to find a more effectient approach. One our our instructors also did something like this with visual sorting procedures. If you can see the difference in speed between one sorting approach and another, it sinks in.
It's not about "understanding low-level programming" - it's about having a direct connection between what you do and what happens. No virtual machine, no garbage collector, no super-fast compile/link/run/modify cycle (s you're going to take a few minutes to THINK about why something didn't work instead of just doing the "quick fix let's test it and see if we got it right this time" route).
The article never said they were using Windows.
If you want to get an intimate feel for writing programs without being able to waste resources, try embedded systems programming. The microchip 10F series has only a few dozen bytes of ram, and a couple hundred words of flash. And no hardware multiply. Making it do useful things is an art. Oh, and unlike some relic from the 70's, you can actually get a job programming for tiny microcontrollers.
That said, it does seem like a cool class. One I'd like to take, but for personal interest, not professional development.
from the link: "using 30-year-old or older machines."
from the fine article: "First released in 1981; discontinued in 1994 using 30-year-old or older machines."
I recently (three weekends ago) fired up my Commodore PET 2001 (a *genuine* pre-1980 computer) and have been writing a Forth for it. It's really a lot of fun, and I'm finding that 30 years experience in various high-level languages has improved my "6502 assembler golf" game a lot. It's very incomplete, but the inner interpreter mostly works. Feel free to throw down on it here
Charlie
never ask a question you don't want to know the answer to
10 years ago when I went through University, the core of the mandatory Assembly programming course was taught on the PDP-11 architecture, then 30 and now 40 years old.
Granted it's not quite the same. We used emulators and not the real things. Also it was for different motivations. The prof felt it was simpler to teach the cleaner PDP-11 instruction set than the 80x86 or 680x0, although the course did eventually also extend to both. Also he happened to be an expert in systems like the PDP-11.
However the idea of using old systems as teaching aids is hardly new - or news IMO.
I was in AP computer science over a decade ago. We used C++ using the "apstring" and "apvector" classes that were similar to the STL.
We of course had to implement bubble short, quicksort, insertion sort, and so.
It was fairly slow on our computers (386s/486s/maybe one pentium!) and you could REALLY see a visible difference between the difference sorts. It was very obvious.
I rewrote the sorts using standard C arrays instead of apvector. Even on those ancient computers, the differences were suddenly almost gone. Bubblesort using straight arrays was faster than apvector quicksort--at least for fairly small arrays. I don't remember the specifics anymore, but you had to be sorting IIRC several thousand things before there was much of a recognizable difference.
So yeah, that made a big impression on me. Then again that class, and intro classes in college were the last time I've had to write my own sorting algorithm...
I think it's a good thing that people who have maybe only used 2ghz+ computers are given a chance to experience something else. I guess a better question would be, why is expanding your horizons ever a bad thing?
Oh, and unlike some relic from the 70's, you can actually get a job programming for tiny microcontrollers.
Just last year, I was working for a company (A fairly large one) and they were still running programs written in DEC FORTRAN 77 on Vaxen. A part of my job was to port these programs to an.......Alpha.
LK
"Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
I was going to post and suggest that they should use 29-year-old computers instead, because the BBC Micro was (designed as) an absolutely superb platform for teaching programming. Then I read TFA, and it turns out that, in fact, that is exactly what they are doing.
It was a huge step backwards when the BBC Model Bs in my school were replaced with 386 PCs. The PCs were networked and so had to have some security. The BBCs let you poke absolutely anything and booted straight into a programming language (a dialect of BASIC, but one that supported structured programming and included a built-in assembler), and included a collection of I/O ports that were trivial to connect your own projects to and drive from BASIC. The OS was stored in ROM, and if you did anything especially wrong, you just turned it off and on again and were back to the pristine condition.
I am TheRaven on Soylent News