Page 1 of 2

Why Johnny can’t code

Posted: Mon Dec 31, 2012 6:55 am
by Diziet Sma
Much truth here.. from the wordprocessor of David Brin, no less.

It may be 6 years old now, but things haven't really changed since the article was written.
BASIC used to be on every computer a child touched -- but today there's no easy way for kids to get hooked on programming.
http://www.salon.com/2006/09/14/basic_2/

Re: Why Johnny can’t code

Posted: Mon Dec 31, 2012 2:29 pm
by Cmdr James
HTML and javascript are everywhere, Id imagine they cover the entry point of the old basic. If not, then java is pretty pervasive, as is C but I cant imagine the average 7 year old going out and getting gcc.

Re: Why Johnny can’t code

Posted: Mon Dec 31, 2012 3:35 pm
by cim
Cmdr James wrote:
HTML and javascript are everywhere, Id imagine they cover the entry point of the old basic. If not, then java is pretty pervasive, as is C but I cant imagine the average 7 year old going out and getting gcc.
Maybe. I don't think it's about the absence of a programming language as such, but more about how you can so easily avoid it. On the old BBC, you more-or-less had to use BASIC. Even if all you started with was LOAD "ELITE", RUN you were still programming. The step from there to writing a simple "Hello World", and then more complicated things, was really small. (And the manual expected you would do, at least a little bit). Then, if you wanted to play more games, there were the listing magazines. Even if you just typed them in without understanding to start with, you'd start to pick little bits up for yourself. And the contents of the magazines were mostly "good but improvable" so "I could do better" was a reachable target.

Nowadays, the step from "double-click to run an application" to "choose language; search internet for programming environment; install environment; enter program" is very very large - and more importantly, you have to decide you want to do it first, and then go through a whole series of steps to get started. And Python, which is probably closest to BBC BASIC in the sense of having a nice interactive interpreter, is not an obvious choice for this unless someone already knowledgeable is deliberately teaching you, and it doesn't come with Windows.

The other nice thing with the BBC is that primitive sprite and line-drawing graphics were very easily accessible. You want to do anything on a modern PC beyond printing a line of plain white text at a time and you'll have to dig into ncurses just to get colourful text - or something like SDL, OpenGL, DirectX, or whatever, if you want actual graphics.

I think "game modification languages" might be the next entry point - rather than reinventions of Basic, or similar, and trying to get back to an environment which doesn't make sense nowadays - they may be limited purpose, but you get instant results, you've got lots of existing code to look at for examples, you can start small and go up to "among the best" quicker than in more general programming, and someone else has already done the work to mess around with libraries, compilers, and the rest.

Re: Why Johnny can’t code

Posted: Mon Dec 31, 2012 4:43 pm
by Diziet Sma
Cmdr James wrote:
HTML and javascript are everywhere, Id imagine they cover the entry point of the old basic. If not, then java is pretty pervasive, as is C but I cant imagine the average 7 year old going out and getting gcc.
As Brin points out, (admittedly kinda indirectly) the point with BASIC was that it was simple. No faffing about with the extraneous junk you have to prepend & append to any higher-level language code to get it to run.. no compiling.. just a few simple lines of code which gave you instant feedback. Any kid could just jump in and DO it.

With a higher level language, even "Hello World" needs a dozen lines of code, most of which are not intuitive.

Re: Why Johnny can’t code

Posted: Mon Dec 31, 2012 5:03 pm
by AkTanatha
From my experience of the education system, the problem is the lack of correct exposure. Way too many consoles and way too many smartphones make the inner workings of computing seem alien to kids. Also, I think there isn't a sufficient standard of programming knowledge in the educators of many schools (including 3rd level I might add!!).

There is a small hope, by perhaps introducing a child to Python (the language - not the spacecraft!), its a pretty easy high level language, with a short learning curve.
I feel it's about relating to what kids like. For example, if they like Maths - show them some maths algorithms in code.
It's very easy get frustrated by others lack of interest, but, they didn't spend their childhood mashing rubbery keys or carefully protecting 5 1/4 or 3 1/2 disks, hell, even a floppy disk would amaze a lot of people now at this stage :)

Oh...and I still get jolly's at the thought of Run"" or Load :mrgreen:

Re: Why Johnny can’t code

Posted: Mon Dec 31, 2012 5:11 pm
by Smivs
AkTanatha wrote:
From my experience of the education system, the problem is the lack of correct exposure.
Certainly here in the UK 'ICT' (Information and communication technology) seems to involve only teaching kids to use proprietary software from a certain company! Thankfully as I understand it things are set to change so that programming is to be given more priority and using M$ stuff is going to be reduced. So there is some hope for future generations.

Re: Why Johnny can’t code

Posted: Mon Dec 31, 2012 5:31 pm
by drew
Gents. Get your kids into scratch. It's awesome.

Here's my son coding 'Space Invaders' from ..er.. scratch, on his own.

http://www.youtube.com/watch?v=eEesXnph ... A&index=12

Cheers,

Drew.

Re: Why Johnny can’t code

Posted: Mon Dec 31, 2012 6:09 pm
by AkTanatha
Smivs. Agree totally - a generation of office admin power users have been created. I don't want to slag off any software in particular, because it has its important uses, and it just gets overused and improperly used a lot of the time.

drew. That looks brilliant, I will be showing this to my nephew :)

Re: Why Johnny can’t code

Posted: Mon Dec 31, 2012 6:17 pm
by CommRLock78
drew wrote:
Gents. Get your kids into scratch. It's awesome.

Here's my son coding 'Space Invaders' from ..er.. scratch, on his own.

http://www.youtube.com/watch?v=eEesXnph ... A&index=12

Cheers,

Drew.
That's the truth for anything you want them to excel at - I've been letting my two year old son play around at the piano, and I've got an old desktop computer with his name on it :D.

Re: Why Johnny can’t code

Posted: Mon Dec 31, 2012 6:27 pm
by CommRLock78
I think the real problem has been stated: that modern computers come with no simple, default programming language, and moreover, don't require the user to do any programming in order to use the computer. My first computer was the TI-99/4a, which had a built-in BASIC and a separate "Extended" BASIC. Perhaps a simplified Python would be a good default language.

Re: Why Johnny can’t code

Posted: Tue Jan 01, 2013 5:35 am
by Diziet Sma
AkTanatha wrote:
drew. That looks brilliant, I will be showing this to my nephew :)
It does indeed.. here's the link to the Scratch project. It runs on Mac, Windows and Debian-based Linux.

http://scratch.mit.edu/

Re: Why Johnny can’t code

Posted: Tue Jan 01, 2013 12:58 pm
by Disembodied
Partly the problem is environmental, too. Back in the Cambrian era of personal computers (and computer games, in particular) - the 1980s - it was relatively easy to write something, even in BASIC, which wasn't totally out of touch with the best commercial stuff available. There were pretty major limits to what anyone could do with the available hardware, and the bottom end wasn't so drastically far removed from the top of the line.

Because there were these limits to expectation, as much as anything else, people could, so to speak, get inside the heads of their computers and learn how they "think"; they could get to understand the logical processes at work. Now, though, people carry vast reservoirs of computing power in their pockets. There's no need to understand the fundamentals because modern computers are designed to carry the user along. The environment of the personal computer has changed, too: back at the dawn of time they were only used, pretty much, by enthusiasts and programmers. Now everyone has to use them, all the time. An analogy might be drawn with the car: early drivers were enthusiasts, and thought nothing of spending days up to their elbows in engine, tinkering away, learning which grommet attached to which wongle and why. Now, engines are crammed with components that can't be accessed physically, let alone repaired by a human being with a set of hand tools.

In many ways, it's user-friendly computers that are to blame. Even a DOS prompt let the user have some sort of glimpse at the inner logic: but point-and-click GUIs are designed to separate the user from the bowels of the machine they're using. For very good, sound commercial reasons, of course.

Educationally, the current idea in the UK - teach children how to use Excel, taught by someone who doesn't know how to use Excel - is symptomatic of the sort of know-nothing bozos who wash up in office in this country. It's the equivalent of teaching children physics by showing them which button starts the cyclotron. Really, they should be starting with the real basics: begin by teaching them binary, and logic, and what "computation" means. Keep them away from PCs and laptops - at least as far as computing goes - and get them playing with something like the Raspberry PI. A bit of grammar and punctuation wouldn't do them any harm, either, as a demonstration of expressing information clearly and concisely; after all, misplace a comma or a semi-colon in your code, and it's garbage ...

Re: Why Johnny can’t code

Posted: Tue Jan 01, 2013 1:46 pm
by DaddyHoggy
I teach at many levels at Uni - but we often get army Majors going into Simulation/Computing heavy jobs that during my "Hardware Fundamentals" lecture - get all glassy eyed over binary and 8-, 16-, 32- and 64-bit CPUs and Operating Systems because they've never seen it before.

Now, at the beginning of the lecture, I take an old PC apart and hand around the various bits, CPU, memory, gfx card, motherboard while I talk to them.

Re: Why Johnny can’t code

Posted: Tue Jan 01, 2013 1:56 pm
by Cody
DaddyHoggy wrote:
... I take an old PC apart and hand around the various bits, CPU, memory, gfx card, motherboard while I talk to them.
I had a college tutor who did that - a good idea.

Re: Why Johnny can’t code

Posted: Tue Jan 01, 2013 2:08 pm
by DaddyHoggy
We also teaching two Simulation Interoperability Standards - IEEE 1278 DIS and IEEE 1516 HLA - problem with HLA, is that to do almost anything in it, you have to be able to understand some kind of computer programming language and almost all of my students at Masters level no longer how this ability.

I started with a C64 and wrote BASIC games - RPGs mainly (using the built in ASCII extended characters - and then later writing my own sprites and scrolling backgrounds and sounds)

Then I got the Simons' Basic cartridge for my C64 and for my GCSE Computer Exam wrote an Art Package (it was slow - but it worked surprisingly well).

I dabbled in Assembly when I wanted things to run faster or have more control at the raster level of the 64s VIC chip.

Then I got my Amiga A500 and started on Amiga Basic and got to grips with "real" multi-tasking which stood me in good stead for many years.

At Uni (BSc - '90-'94) I did C, Smalltalk (so I already understood multi-tasking and multi-threading thanks to Amiga Basic), Ada (shudder) as well as Visual Basic (not the stuff inside Excel - although I learned to use that too)

The first program I wrote for the MOD I used Q-Basic because they gave me a 16MHz 386 that couldn't run anything else...

The first program I got to debug was 100,000 lines of uncommented Fortran 77 code and although I had never seen F77 before - I had to pick it up and I did.

When I was doing my MSc we got into DirectX and OpenGL and therefore C++ (I understood C and the concept of inheritance/classes from BSc Smalltalk days).

My MSc project I actually wrote (deliberately) in Visual Basic inside Excel because that way I could give the code over to the Neural Networks people to use for teaching BSc level on how MLPs worked, because they could step through the code and watch Excel populate the tables as the Neural Network was trained.

I'm not actually a very good programmer - I'm slow and not very inspired, but I can work out the syntax of most code eventually.

I've bought a Raspberry Pi and I have introduced my 11yo to Scratch but ideally I'd like to get her started on Python (because I'd like to learn it too!) or Java (same reason).