A Modern Day '101 Basic Computer Games'?
pcraven asks: "Back when I learned how to program, I found a book called 101 Basic Computer Games by David H. Ahl. This book had a lot of simple programs that I could type into the Apple //e. It made programming interesting. I'm not sure I would have started a career in programming without it. Today I haven't found any recent equivalent to this book. I want a bunch of sample computer games that students can program that they will find fun and interesting. Something that a CompSci 101 graduate could type in and run. Does anyone know of a book or web site like this?"
Ah yes... I remember and look back on those times with a mixture af happy and desperate thoughts. I remember buying one of the many (!) monthly magazines with computer game code listing and spending an afternoon and evening typing a game in on my trusted Commodore VIC20. When the game ran it was wonderful (the VIC20 was after all a pretty impressive computer for the time), but I also remember the times when the code didn't work! Then I had to spend a few extra hours looking for typos because I had no idea what the "complicated" BASIC was doing, so there was only the tedious way of debugging. Those were the days...
That aside I doubt if a lot was learned from those computer games listed in books/magazines that weren't picked up from somewhere else. Mindlessly typing in the games certainly doesn't help with understanding, and only if you approach the problem from an how-does-he-do-this perspective are you really going to get something out of other peoples code. I still find that the most usefull way of learning some programming is to have an itch that needs scratching. In teaching (games)-programming I would guess that getting beginners to write tic-tac-toe, a worm-game etc. is still a good idea, and there are lots of simple code to be found on the net.
Witness the plethora of DHTML/Javascript books out there -- that'd cover at least half of the BASIC book programs from the past. Books tend to come with CD's now, so there's no reason you couldn't include the language, a whole environment, hell a whole operating system (can you say knoppix) on that CD.
My theory, however, on the reason you don't see kids programming books anymore is that computers are no longer toys in themselves. When these books were "hot" (actually they never were, so let's say when they were being published) home computers were a relatively new phenomenom and a largely unexplored frontier. Now they're ubiquitous, and the joy of puttering around on the computer isn't really so interesting to most kids as tinkering with something already on the computer.
An updated LOGO type of language with 3d graphics instead of turtles, that might inspire interest again. At least something that can allow kids to create something as eyecatching and appealing as games from 5 years ago. Or just update some of these old saws to modern standards: Imagine rocky's boots on a modern 3d engine. Kids aren't interested because all the educators are still pointing them at computers and saying "this is a COMPUTER billy, can you say COMPUTER?", while the kid's thinking "please, I bet it has less than a gig of RAM and it's not even DDR".
I've finally had it: until slashdot gets article moderation, I am not coming back.
I faithfully typed in C=64 programs for years never minding that I wasn't learning much from such densely packed, often unreadable code. BASIC wasn't necessarily the problem, rather that memory restrictions and magazine space issues prevented most people from organizing code well. Comments were lost, multiple statements crammed onto the same line, etc.
I agree with whoever said that kids wouldn't be interested in such things today. We have to accept that interests have changed and web page building has replaced classic programming in the minds of novices. The biggest obstacle to a "fun" programming book is the appalling lack of built-in or bundled programming languages with new computers. As much as I enjoy using languages like PHP and Java I think they are much too complicated for the newbie. We should either bring back traditional BASIC with tighter syntax requirements, popularize a version of LOGO with hooks to graphics routines and the ability to build a complete clickable app or popularize some other similar easy to use language for first timers. Only then might we see a renewed interest in learning how to program.
BASIC programming books were never really about setting up your compiler or learning about linked lists. They were really designed to let you people learn that computer programming was even possible.
I could see a book devoted to "101 JavaScript Games" that would be just as fascinating to kids.
Javascript is almost just like the old BASIC environments -- very little setup needed, you can see the results immediately, and very simple things go a long way to impress people. (think of the Google page yesterday that had the fade-in text) Furthermore, Javascript/HTML runs everywhere, so kids can show off their work - no need for Scheme or whatever.
The "article" is asking for books that reproduce the simple learning environment from the late 70s/early 80s. Complaining that one of these environments has:
a limited set of fonts, all ugly as sin, and tiny widgets
seems off-topic, as our original BASIC environment:
- had ONE font,
- was text-based, so it could not even strive to be "ugly"
- had NO widgets. You were required to build everything from scratch.
I work with programmers who are not even a decade younger than me, but they did not start with computers until college. They have never built a program that was not on a "platform" that provided the GUI and access to all hardware such as memory. They have never had to PEEK and POKE, so have no clue about how memory really works. They will write (and debug) 60 lines of VB rather than one line of OS commands, because they have never worked at a CLI. I wrote a 3 line batch file that replaced a 400 line program they were having difficulty getting to work.
I am not saying that using IDEs is bad. We can do so much more working within a platform than we imagined in the early 80s, but the knowledge required before becoming productive is much higher.
We had a discussion about this a few months ago, but it is off my Info page so I could not find the posts. (I really wish I could find some of them, but the Info page only shows the latest 24 posts, and search is not very useful for limiting to one user.) Programmers today did not progress from CLI to OOP. They start with the current GUI and have little understanding of what the computer does.
In the late 80s/early 90s, people were learning about programming in college because it was the "good" career path. But they were "studying", not "hacking".
In the mid-90s, many people entered the IT world using HTML as the "programming" language. Then they copy/pasted JavaScript. Some of them took the time to learn how to write their own. A few of those branched into other languages, and they may have more of the hacker attitude because they were forced to figure out how things worked. But they still learned assuming the platform was there.
Today, BASIC is long gone, and HTML is not enough to get started. Colleges are teaching Java to the studying students, but Java really protects programmers from memory allocation. The scripting languages are great for administrators, but do not push you to learn more traditional programming.
I think the computer revolution has stalled because there is no easy entry point. One great programmer can outproduce a hundred regular programmers. Becoming a great programmer requires understanding how software relates to the hardware. Are there any great programmers who started with computers after 1990? Is it even possible to learn enough on today's platforms?
I spend my life entertaining my brain.
C and BASIC aren't even close, though. If you try to throw too much at a beginning programmer, say, C, they'll get overwhelmed and give up. There are likely hundreds of not thousands on this site who say "I learned to program in C, not only that, but we didn't have CRTs and keyboards, no sir, we chiseled our programs into rocks!" Lots of people need the simpler stuff, even if just as a stepping stone to something bigger. How does one translater QBasic's LOCATE into C? Do you really want to teach a beginning programmer ncurses? That's the advantage QBasic and HTML/CSS/JS/etc have - instant gratification that can mimick something greater. Furthermore, people are not going to just jump to linux because they want to program. That's even worse than starting them off in C! You want to teach someone to getting a working install, learn the quirks of a given shell, and learn to program all at the same time?!? They're not even sure they're capable of programming yet! Many people in this threat have suggested Flash as a replacement for the BASICs of yesteryear. What about VBA? It's arguablly better than QBasic, very powerful and very simple to use. Excel's implementation specifically seems very similar to VB's original implementation to me anyways, and it allows for instant gratification. People can bind a few command buttons to the IE activex control and make their mandatory web browser - does it seem to anyone else like this has replace hello world as the first Windows app? It's got a much lower initial timecost than linux, as well as being much easier than C, while also allowing someone to determine whether they actually like this "programming" or not. Forgive my ramblings. It's late.
Implicit Evaluation with PHP
I've thought for some time that Python would be a great language for introducing someone to programming, and that a book like this, but with Python code instead of BASIC, might get another generation interested in programming. Granted, there are a number of features of Python that might be stumbling blocks to someone who goes on to learn a more traditional language-- significant whitespace, semi-weakly typed, etc. However, it's much closer to C than, say, BASIC, and I somehow learned to program by sorting through the rats' nests of GOTO statements that littered the programs in this book.
Which actually raises a question-- why is (or was) BASIC considered to be such a great language for beginners? I remember when I first learned Pascal (the first function-oriented language I learned) it was like a breath of fresh air. The language pretty much forced you to structure your code that was (more or less) elegant, and I found it made much more sense than the spaghetti code I had grown up with. Had I started out with such a language instead of BASIC I doubt the learning curve would have been as steep. Another question: do kids even learn BASIC these days? What language do they typically start out on?
I am Sartre of the Borg. Existence is futile.