Thursday, September 14. 2006Why Johnny can code
David Brin has written an article on Salon, 'Why Johnny can't code' (click on the advert link to read the full article) in which he bemoans the lack of an accessible, built in basic interpreter, with low level hardware access, on modern computers. His specific issue is that his son has a number of (maths) text books which include BASIC examples to help the student, and these examples, which would have worked just fine on any home computer as recently as ten (maybe fifteen) years ago (not an unreasonable timespan in school text book land) are now basically useless to the average school kid in modern times. This will of course lead to a generation of children who don't really understand how computers work, leading to the eventual decline and fall of (American) civilisation.
There are a number of flaws (I think) in his argument, but first I want to address the flaws in the responses (some of which have already been dealt with by Mr Brin, but hey...). Predictably there are a number of responses along the lines of: "BASIC!? He shouldn't be trying to learn that, learn a reasonable language like Xxxx." Where 'Xxxx' is equal to any number of currently cool scripting languages. As if it's the text book's fault for using BASIC in the first place and then not having a sensible upgrade solution in order to keep up with the pace of home computer technology, and schools would devote their meagre funds to buying a whole new set of books each year just so they could be compatible with Python 2.x. A lot of folk, including a large subset of those in the previous section, seem to think this is an issue about teaching kids to program - no, it isn't - it's about teaching kids maths using the program as a dynamic way to explore the concepts while simultaneously teaching them about the procedural logic which is at the heart of computers. Not that BASIC is required to do that, mind you. Others have said: "Just Google for it - here's a long list of BASIC interpreters you can download and install." Of course, these are probably the people who, much like David's son, were/are conscientious children and were willing to go that little bit further just to make sure they fully understood their maths homework - they would be quite happy to download a few, translate the examples into the particular dialect of BASIC and try and make them work. Meanwhile, I've already done my homework and am sitting watching the telly... Now onto the article itself: BASIC was close enough to the algorithm that you could actually follow the reasoning of the machine as it made choices and followed logical pathways. This, I think, is a misunderstanding of what an algorithm is - an algorithm is more abstract than an implementation in BASIC rather than 'more actual' as he seems to be implying (ie. algorithms are usually much more cleanly expressed in higher level languages rather than the other way around). Though this is apparently a syntactic issue rather than a problem with his argument - which seems to be that BASIC is close to how the computation is translated into machine code or assembler, and this is almost certainly not true (my very poor understanding of compiler/interpretor technology notwithstanding). Those textbook exercises were easy, effective, universal, pedagogically interesting -- and nothing even remotely like them can be done with any language other than BASIC. Typing in a simple algorithm yourself, seeing exactly how the computer calculates and iterates in a manner you could duplicate with pencil and paper -- say, running an experiment in coin flipping, or making a dot change its position on a screen, propelled by math and logic, and only by math and logic: All of this is priceless. This is where his argument is weakest, and where he gives an opportunity for the language zealots to leap in - of course there are other languages which can do (something like) this. Forgetting, for the moment, my previous point that the BASIC version isn't showing you 'exactly how the computer calculates and iterates', there are several other languages that offer a similar experience - FORTRAN, Pascal and Logo just off the top of my head. His point shouldn't be (and, for the most part, isn't) what a great teaching language BASIC is (because, as we all know, the hardest people to teach computer science to are the ones who think they know it already because they wrote a BASIC program on their VIC-20), but that modern computers should provide a backwards-compatible learning environment which allows children to experience computation, and they should provide it installed by default, and it should be capable of doing useful things. Of course, his ultimate solution was to buy a second-hand Commodore 64 off eBay - and if that was a satisfactory solution then why didn't he just install an C64 emulator (or this C64 emulator, or this C64 emulator and this C64 emulator which actually let you type in BASIC programs from a web browser - not much is simpler to set up than that, or any of these C64 emulators) in the first place? Finally the most useful comment I think was the guy who said that if schools (and text book writers) wanted a simple (but low level) programming for schoolchildren then they should set about producing one themselves. Almost certainly attempts are underway already, but this post has already been a long one so I'll save that for another day. Trackbacks
Trackback specific URI for this entry
No Trackbacks
Comments
Display comments as
(Linear | Threaded)
An alternative perspective on the same article.
http://lists.canonical.org/pipermail/kragen-tol/2006-October/000833.html The author does not allow comments to this entry
|
QuicksearchSupport this siteAbout Rob CrowtherCategoriesIrrepressibleBlogs I LikeSyndicate This BlogBlog AdministrationLicense InfoIncoming Links
Links to Page |