You could say Z-80 assembly language is what really turned me into a software developer. My first programming language was BASIC, which was built into my first computer (a TRS-80 Model III). I wrote a lot of BASIC code, including arcade-style games (compiled BASIC — you can still play them on this TRS-80 Model III Emulator). I always wanted to keep learning. There was no World Wide Web for research and nobody I knew could guide me, so we went to Radio Shack and asked them how else I could program the computer.
How do you comprehensibly explain to non-programmers the challenges of programming? Why can’t you “just tell the computer what you want it to do”? A classic teaching tool for this is the “make me a peanut butter and jelly sandwich” demo. Put out on the table a jar of peanut butter, a jar of jelly, a loaf of bread, and a knife. Tell them you are a robot (computer) that is physically capable of making a peanut butter and jelly sandwich, but you need instruction (programming).
There is a classic set of programming exercises called “Ninety-Nine Prolog Problems”. Though somewhat tailored to logic programming, they form an interesting set of exercises for other languages. I’ve seen adaptations of varying completeness for Haskell, Lisp, Perl 6, and Python. I was reminded of this all by a recent blog post by some bloke called Dave who was using the problems as a way to become more familiar with Python.
In the 1990s Nicholas Negroponte wrote a back-of-the-book column in Wired. When I started reading it, in 1993, I found it exciting and mind-opening. But as the years wore on, the ideas seemed less interesting. Maybe he just ran out of new things to say, or maybe I became jaded. In any case, I hadn’t paid much attention to him since. But this bit from a recent AP story on the One Laptop Per Child project absolutely kicks ass: