Can everybody really program?

The author has previously posited that anyone can program a computer with the right language but is that really the case? Those with learning difficulties such as dyslexia or dyscalculia are always going to struggle anyway (although your correspondent knows a couple of dyslexics who have taught themselves assembly language, one of whom is also a writer) but the problem isn’t one with the author’s regular punching bag C64 BASIC at all since the same is true at some level of every single BASIC dialect out there.

The function of commands like INPUT or PRINT are sort of obvious from their names but, until a book or another person explains these commands to a beginner, they’re certainly not intuitive and nobody would simply guess their existence; PRINTing could exclusively be for getting the computer and a printer to communicate for example and the more esoteric keywords such as FOR and NEXT can prove confusing.

The same is true of the bespoke commands so beloved of the author such as PLOT or DRAW; yes their purposes may be relatively self explanatory from the keyword chosen but the process of actually understanding how they work isn’t and there are variations in implementation to make things even more confusing for anybody trying to move between formats. For example, the Spectrum, Amstrad CPC and Atari 8-bit all have PLOT and DRAW (the Atari uses DRAWTO but we’ll gloss over that) but these short programs…

Sinclair Spectrum
10 INK 3
20 PLOT 0,175 30
30 DRAW 50,-50

Amstrad CPC
10 MODE 1
20 INK 1,4
30 PLOT 0,399,1
40 DRAW 100,299

Atari 8-bit
20 SETCOLOR 1,4,12
30 SETCOLOR 2,4,2
50 PLOT 0,0
60 DRAWTO 50,50

…all do an almost identical job of setting the drawing colour to purple[1], plotting a pixel to the top left corner of the screen and drawing a 50 pixel long diagonal line down and left. None of these examples are self explanatory so nobody would understand them instinctively and, although they’ll soon become second nature with use, the same is just as true of POKEing the on a Commodore BASIC and anybody who has worked with the C64 for any real amount of time will probably still have POKE 53280,0 hot stamped into their long term memory.

Fast forward to modern computing and the same is still pretty much true; the various dialects of BASIC such as Visual BASIC, DarkBASIC, Blitz Max or FreeBASIC all have their own variations on how commands should be interacted with so none are particularly easy to pick up from scratch and, although in some respects things have got easier, dealing with many current high level languages is even more involved than it ever was during the 8-bit era. Your correspondent only picks up programming languages if he finds them interesting or needs to know them for a specific task and for various reasons has never got around to learning Java, but this, apparently, is an equivalent of PRINT “HELLO WORLD”:

public class HelloWorld {
public static void main(String [] args) {
System.out.println(“Hello World!”);

Most high level languages have their own equivalent to PRINT and that punctuation is all vitally important as well, leaving something out will just cause the program to return an error. Yes, there are languages out there designed to keep all the complicated stuff away from the user and others which turn it into a drag and drop experience but these are most commonly aimed at children even though the capacity to learn something far more complex is at least as prevalent in a teenager as it is in an adult if not more so – certainly the Raspberry Pi foundation seem to believe this, otherwise why would they develop a Linux-based computer for school age children with pins to connect up hardware projects?

There has always been a learning curve involved in programming a computer and therefore always been people who simply cannot program one, either because they can’t get their head around the logic involved for one reason or another or the jump from knowing nothing to understanding a programming language is just too great for them. Programming might get easier but that first sleeping policeman in the road to enlightenment will always be there.

[1] For the Atari 8-bit, the equivalent graphics mode to the one being used by the Spectrum and Amstrad CPC only has two luminances of one hue so the background and foreground both have to be changed to purple. And yes, your correspondent has decided to start using footnotes occasionally!

This entry was posted in Meta Discussion and tagged , . Bookmark the permalink.