Oct 252013
 

Apparently this idiot thinks that all coders are exceptionally dull weirdos. I’ll quite happily admit to being a weirdo, but as to exceptionally dull … I only seem that way to the exceptionally thick, or prejudiced.

Concentrating for the moment about this journalist’s (in the loosest possible sense of the word) insult to a good number of people, we can probably deduce the following :-

  1. He doesn’t know many developers socially. If he accidentally encounters one in a social setting one of the following occurs :-
    1. The developer denies all knowledge of computers because of the prejudice of idiots like him. This is a bit of self defence we geeks learned in the past and used in the past. So we can also assume he’s a bit of a dinosaur (like me).
    2. Once he learns someone is a developer, he will climb the walls to get out of the way.
    3. He converses in his own specialised area, and anyone who runs away is classified as an exceptionally dull weirdo.
  2. If he thinks that coding is mechanistic, he is totally clueless about programming, and thinks that anyone can simply start writing code immediately. As a little hint, the majority of the time spent programming is thinking; simply grinding out code is a relatively small part of the job.
  3. Lumping coding in with car mechanics, or plumbing in a derogatory manner indicates this guy is one of those fools who think that anything technical is a low-status activity. Hope his plumber tells him to fix it himself when his next water leak occurs, or charges him double!

Now onto the main point of his ill educated rant on the subject of teaching “coding” to school children. Hopefully the government plans to teach “programming” rather than “coding”, but does he have a point? Perhaps, although it’s a bit difficult to take an idiot like this seriously.

It really depends on exactly what and how it is being taught.

If the plan is to turn out vast swarms of fully fledged developers, everyone is going to be disappointed; apart from anything else, if we were going to turn out fully fledged developers it would have a catastrophic effect on every other subject being taught. After all, it would take so much teaching time away from other subjects, there wouldn’t be enough time for Maths, English, History, etc.

But if the intention is to teach programming in a fun way (say with Logo and robots), with the intention of giving students a better idea of how computers work and how they are instructed, it could well be a good thing.

Not everyone needs to code he claims. Actually most people may find themselves coding in ways that may not be thought of as programming – setting up formula in a spreadsheet, setting up a database, automating a task in a word processor. Although none of these are “true” programming, they do share some elements with it – not least to think about the task in hand, dividing it up into sub-tasks, and setting about telling the computer how to do those tasks in a way that the computer will understand.

Does everyone need this? Perhaps not, but they will find using computers much more effective if they have a better idea of what is going on.

Jul 082010
 

I have just spent the weekend doing all sorts of stuff that you won’t be interested in because it’s really boring (moving the main desktop machine, etc.) with News 24 on in the background. About every 4 hours I’ve been treated to Chip or Chop or whatever it is, proclaiming that home computing in the good old days was far better than it is today.

What a load of rancid rhinoceros dung! There is of course an element of truth to it, but in reality home computing back in the 1980s was a continual struggle with limited resources – we often had less than 32Kbytes of memory to play with. Yes that is 32Kbytes not 32Mbytes! The first computer that I was employed to work with had 4,000 times as much memory as the first computer I used; and 2,000 times as much as the one I spent a lot of time writing software for. Of course the machine I am writing this with has no less than 4,000,000 times as much memory as my first machine!

When we look back in time to early home computing, we tend to use nostalgia tinted glasses. In addition to the limits on memory, early home computers had a number of other drawbacks :-

  • Graphics were ridiculously bad. If you were lucky you had two colours at 640×256 resolution. If you were unlucky, graphics were made up of special “blobby” text characters that could produce “graphics” of a resolution of something like 80×50!
  • The screen was typically a discarded old colour TV … big and fuzzy. Even if you were lucky enough to have a colour monitor, it would usually refresh at a rate guaranteed to produce eyeball frenzy.
  • Sound quality was a little below par. You could get computer music – see the Commodore’s SID files – but the likelihood of  anything approaching the quality of 128Kbps MP3s just wasn’t going to happen.
  • Storage was extremely small in capacity and very slow. If you were lucky you had access to floppy disk drives with around 80Kbytes to 320Kbytes (there were floppy drives with 1Mbytes of storage available but they were not common), and these were slow.

Not that there is anything wrong with nostalgia of course – I run a few software machine emulators to play around with the computers of my childhood. And in one particular sense those old 1980s home computers did have one advantage over modern computers that modern machines do not have.

They were very easy to get trivial results out of.

Fire up a Commodore PET, and less than a second after switching on, it would type “READY?” at you. And it does mean that … it is ready for you to type the commands needed to load a program from tape or disk, or for you to start writing a program. No loading of an operating system; no complex IDE to learn. Just you, the computer and the keyboard.

Despite the primitiveness of the interface, the immediacy of the results is very attractive to new hackers of child age. For instance, a simple program can produce interesting results for a child :-

10 for i = 1 to 1000
20 for j = 1 to 20
30 print tab(j); "Name"
40 next j
50 for j = 20 to 1 step -1
60 print tab(j); "Name"
70 next j
80 next i

Such a simple program produces a snake of your name down the screen; with a few modifications a child can produce more interesting graphics. And many home computers of the time came with far more extensive manuals that would teach BASIC programming.

Whilst BASIC is perhaps an unfortunate language for language purists and probably does teach a few bad habits, it does have one big advantage over more “proper” languages. It is easy to produce simple programs to produce simple results. Of course there is nothing preventing us from creating a better BASIC than the original with enhanced features, but the key is not programming purity, but ease of use and the ability to produce interesting results easily even if that means losing flexibility.