The Little Coder's Predicament 1073
An anonymous reader writes "There's an interesting article
on Advogato about the world of computing that kids today find themselves in compared to the world that kids in the 80's found themselves in. Learning to program in the 80's was simpler because the machines were more limited, and generally came with BASIC. Now we have Windows, which typically comes with no built-in programming language. What can be done to improve the situation?"
Second hard disk + Linux (Score:2, Interesting)
Yet another reason for BSD/Linux (Score:4, Interesting)
So if you want your child to have the experience of becoming a techie, it behooves you to have at least one workstation around that can at LEAST dual-boot into a *ix environment, IMHO.
Create a simple learning language... (Score:5, Interesting)
/.ed? (Score:2, Interesting)
In response to the summary, I'd say the first step is to ship computers with some sort of programming language built-in, but the fact is that programming is a complex thing these days and there's no way to just make it simpler so that kids can learn it easily. If you want to learn to write real programs, you'll just have to commit some time and effort to it. That's why I decided to change my major to physics.
Flexible Learning, Independent of Language (Score:2, Interesting)
I think the problem with teaching programming to youth these days is the perception of learning a "language". Instead of subjecting students to the CONCEPTS of programming, such as inheritence, oop, etc., schools are more inclined to teach children languages instead. It produces grades, I presume.
The trouble with that presumption is that kids get so accustomed to one language that when they get to college and learn the concepts, they have to throw all they learned out the window and start fresh. Why can't we start these kids off the right foot and wean them off of the language dependency?The way I see it is children should be taught the fundamentals of programing at a relatively young age (12-16), like looping and recursion, and let them experiment with the fundamentals with their own choice of language.
Where to start? (Score:5, Interesting)
Or let them get python for Windows, if you must.
IBM's Robocode (Score:5, Interesting)
There is a neat game that uses java to make robots. Starting very simple, as you learn to program you make more powerful robots to compete against others.
IBM Robocode Home [ibm.com]
Covered on slashdot here:
Robocode Rumble: Tips From the Champs [slashdot.org]
And here:
Learning Java Through Violence [slashdot.org]
Whatever happened to Logo? (Score:2, Interesting)
15 years ago it was all the rage , now it seems to have disappeared off the map. ANyone know why?
Text Adventure Games (Score:5, Interesting)
A little into the future but... (Score:2, Interesting)
good ol times (Score:2, Interesting)
HTML as the starting point (Score:5, Interesting)
Most hardcore types probably cringe at the thought, but web development is really the catalyst into getting many kids interested in programming.
Programming languages hidden on accompanying CDs! (Score:2, Interesting)
The benefit of this sort of "buried" programming treasure is that the kids interested in their computer will always find it, and really feel like they discovered something great - I know I did. It doesn't even require a tutorial, just some sample games, maybe.. but for sure, all of those true-born geeks will get hooked and start learning as much as they can (I know I did).
The motivation for the OS packagers? What better way to get people hooked on your system than to give them their first bit of cocaine?
Programming in the future... (Score:2, Interesting)
Young students today should not be studying programming--they should be studying Human-Computer Interface Design and other related subjects. Programming should come later, once the student has figured out *what* to program.
Python (Score:5, Interesting)
As easy to learn, but not that strong on the "bad habbits forming" part is Visual Basic. It follows a completely different programming model to "normal" newbie languages but it is much more "goal-oriented" than most beginner languages. It is also easier to produce impressive results with it, and, frankly, the VB (and Visual Studio) IDE is as good as they get.
I face this problem. (Score:5, Interesting)
I'm twenty one now and the itch to get back in to programming has been bugging me quite a bit. Now that I'm using Linux for pretty much everything -- and because Linux encourages tinkering -- I've found that scripting (Perl, Python, Ruby) languages (not THAT unlike BASIC) are the perfect place to start to refamiliarize myself with data structures and general programming concepts. The clentcher is of course that the CLI is once again useful and the programs I write can actually do something.
Namely, I've found Ruby to a great place to get started since I'm just beginning. Because Ruby is completely object orriented, it hasn't required a whole lot of reforming of the way I think about data -- everything is either a noun or a verb; an object or method. Just like the real world. After just two weeks of studying the freely available Ruby books online, I've been able to begin accomplishing basic system administration tasks. My passion for manipulating logic system is returning and I have some great ideas about what I can accomplish with it.
Sure, some day I'll probably have to pick up Java or (shudder) C++, but for now, scripting languages are the perfect entry method.
The problem isn't just the computer system.. (Score:5, Interesting)
The problem isn't that Windows doesn't come with a programming language, but that there is no "learning system" in place..
I grew up in the 80's, and I learned to program first with my Vic-20, then with the C64..
I learned by typing in programs found in Compute! magazine and Compute!'s Gazette..
Such an environment simply doesn't exist today - even with Linux or FreeBSD (or how about Java if you don't want to learn a new OS?) the internet makes it harder to get into.. Instead of spending time typing the code in, you just download it.. sure, you can read it if you want, but reading about something is not the same as doing it - you don't get the same experience out of it.
Physically, programming is typing stuff, but with the internet, there's no incentive to actually do it - and like most other animals, people are (by nature) lazy.. so even if they have the drive to learn, they might not have the drive to actually do the work.
I tried using Robocode [ibm.com] to teach my nephew how to code, but it's just not the same thing - he wanted to learn to program (still does, actually) but he gave up after just playing with it for awhile.. typing into a computer to get it to do something was just too foreign to him.
It wasn't that hard to get my little lad started (Score:5, Interesting)
My thought is that if the kid has the normal curiosity then just give them the tools and they will figure it out. There are plenty of old books and software available on Ebay and used book stores.
Re:A couple places to start (Score:3, Interesting)
Curl would've been good... (Score:2, Interesting)
Unfortunately the company (curl.com) is doing an extremely poor job marketing it and is lumbering it with a hideous licencing model.
It'll be dead within a year or two...
I did some consulting for a school near me and.... (Score:5, Interesting)
As far as I know this 7th grader was the only student who checked out the box. I got a few questions relayed to me by the library teacher and answered them. I lost track of him until my son told me that he turned up at a County Fair at the "internet cafe" my son was running and he was heavily into Llinux!
Last month my contact at the school district told me that the kid, now a junior in HS, is planning a senior project: a Beowolf cluster! He is now trying to round up a few dozen machines to use in his cluster.
This is a small school system in a farming community and turns out only one really good natural engineer/computer scientist every 4 or 5 years but I like to think that my idea of creating a "library book" computer using Linux helped turn out this one.
Maybe Kiddie Knoppix (Score:2, Interesting)
It would appeal to kids because
1. It's not your father's OS (Oldsmobile)
2. It's passed around freely among the "geeks to be"
3. Programs could be passed around since they would run on anybody's machine with the Knoppix CD
4. Cliques would develop because they would know something others don't.
I think it would be a wonderful idea. Even though he is using the common PC, the kid has his own environment with his own tools and complete power!!!!!! It could be a big boost to the development of real programmers.
Game Maker (Score:4, Interesting)
Game Maker URL: http://www.cs.uu.nl/people/markov/gmaker/ [cs.uu.nl]
Teach them functional programming! (Really) (Score:5, Interesting)
I think we ought to harness those resources. We ought to use them to teach children those languages that are immensely powerful yet, judged by our standards, too inefficient to be practical. In particular, I'm referring to functional programming languages like Scheme and Haskell [haskell.org].
Now, hear me out.
Why functional programming languages? Because they lend themselves to extremely powerful, mathematical ways of thinking about and solving problems. Learning these ways of thinking when young will benefit our children for the rest of their lives. For example, take a look at the The TeachScheme! Project [teach-scheme.org]. I wish something like that was available when I was in High School.
Let us not teach our children the technologies of today but of tomorrow. More and more, I am convinced that functional programming, once considered too computationally inefficient for industry work, will be tomorrow's dominant programming paradigm. No other way of programming so readily lends itself to the formalism that is necessary to manage the ever-increasing complexity of modern software projects.
So, let us give our children the tools they will need to solve the problems of their day. Teach them functional programming.
Re:A couple places to start (Score:3, Interesting)
VB would be good for this except for the required overhead (Visual Studio).
VBScript or PHP scripts fit the bill nicely.
Expecting a 10 year-old to pick up C++ and start working on the next Doom is ridicuous. Kids want something that is simple, easy to understand, and allows them to create fun applications. They don't want to get mired in the arcitecture and process and years of time neccessary to write a modern commerical application.
Re:Download QBasic from Microsoft for Win2K/XP (Score:3, Interesting)
Re:A couple places to start (Score:5, Interesting)
WSH, like the OSA, is neat in that you can plug-in a number of different languages into it. In some ways, sort of a proto-.NET, as you can share functions between languages. That is, if I write up a function in Perl, I can share it throug the WSH to JScript, VBScript, or any other WSH language. Or vice-versa. PerlScript- the bridge between perl and the WSH- comes with the ActivePerl distro for Windows.
WSH is a neat toy, and I've used it for some automation on my work windows machine. But having done a lot of AppleScripting on my own and work Macs, I can say that WSH isn't as useful- most apps have no idea was WSH, and the apps which do support it, don't support the wealth of actions like Mac OS's OSA does. Mind you, AppleScript is just one language in the Mac OS OSA, and it happens to be the default one. However, you can get language extensions to script apps- just like you would in AppleScript- for Perl, JavaScript, Ruby and Tcl and more. (that was just off the top of my head)
Nobody is programming Doom III in anything except C, assembly, and maybe some C++. Does that make every other language irrelevant and worthless? No! I personally couldn't give a flying fuck about Doom III, and thankfully, never have to use C++. I must work on phantom appliacations! OOOOH SPOOKY!
I can't say I enjoy VB or use it anymore, but even being a staunch Smalltalk programmer, will not hesitate to use RealBasic (with which I can support Mac OS 9, X, and Windows) for an application for which it makes sense. There are a lot of applications out there which are written in VB, a lot more than you seem to think. Not just for very small, internal apps. Heck, a fair amount of people write a bunch of their code in C++, COMize it, then use it all from VB.
Re:Except... (Score:4, Interesting)
This would provide something simple for kids (or newbies of all ages) to start playing around with. I think this would increase the number of kids getting into coding overall... which would help Microsoft as kids would be learning Windows programming early, and with more kids overall discovering coding you'd have more total kids "graduating" to more advanced stuff like real programming languages and alternative OS's like Linux, etc.
It would be a win/win situation for the advancement of programming, IMHO. Perhaps not a win for ME, though, as I'll have more kids competing for my coding job in the future. That problem is tough enough already.
Re:Neverwinter Nights (Score:3, Interesting)
I remember hearing from a friend of mine a long time ago that Quake II uses "some modified form of Quake-C for scripting", so I thought I'd check it out. Turns out that it was just C++
Re:Yet another reason for BSD/Linux (Score:2, Interesting)
I have actually done this and used Java (Score:5, Interesting)
Anyhow, back to the present...
Some kid found my 3D asteriods game on the internet and asked me if I could teach him how to program. Note that he lives in another state, and I've never met him in person.
He was 12 at the time and struck me as being bright. I had him download the free Java stuff from Sun and we developed a video game applet together. We discussed what kind of game to make, how it would work, and the logic behind it. We decided on a simple game and then added features as we went along, rather than trying to implement his initial vision all at once. This let him see that progress was being made.
We didn't get into any OO stuff. In fact the structure of the game is more similar to C than to traditional Java code, but it was stuff he could understand. He wrote some of it and modified much of what I wrote.
You can check out the result here [angelfire.com]
Here is what I learned from the project:
Poor Billy can't read BASIC (Score:2, Interesting)
Anyhow, it is no great loss that some kids won't be able to dabble in writing BASIC programs. The world trend is moving programming into a commodity class, just like the other trade skills, such as machining, welding, etc, which lessens the tangible value of the skill. This doesn't mean that knowing how to program isn't useful, but as is the case with other skilled labor, programming as a career is turning into a similar animal. It is heading to be seen as more of a trade job instead of a professional job, where career potential is limited.
Lego Mindstorms! (Score:2, Interesting)
overengineering the solution (Score:5, Interesting)
The truth is that the Perl environment for Windows is not always intuitive and can occasionally prompt windows errors which are relatively easily understood by someone with a lot of computing experience but can be intimidating to a fledgling coder.
What people have overlooked is that windows does come with a built in interpreter for at least one widely used language: Internet Explorer knows all about Java.
The best part is that the Web is an environment most twelve year old kids are already quite familiar with. You can teach them basic HTML (if they haven't picked it up already) and then get them started on using Javascript. Javascript on a web page has the same sort of instant gratification that I remember from making the screen on my vic20 flash red and proclaim that I was cooler than my sister. Once they are comfortable with Javascript you can move them on to writing full-feldged Java applets (of course all of this coding can be done in notepad (or your favorite syntax-highlighting text editor)). In this way they will learn about object oriented programming. If the kid gets a good handle on writing Java applets and is still interested, they are probabl ready to move onto real programming: teach them C, or whatever else strikes your fancy. Maybe even give them a Linux box.
It's a simple way to learn programming on a modern windows box without having to install any developers kits or worry about system calls etc., and it all works in an environment (the Web) with which kids are already familiar and interested in.
ZX-81 - Manuals really meant something (Score:5, Interesting)
Today, I don't think it's necessarily the lack of built-in languages (as others have pointed out - most OSes come with a language of some sort) but a lack of where-to-get-started.
The great thing about the ZX-81 is that it came with a manual. Not like a PC manual of today which tells you how to plug in the keyboard and monitor (the ZX-81 manual had this) - the ZX-81 manual also had instructions on programming things - from the basics of programming onwards. It taught you what variables were, what loops were, what if statements did. You got a starting point with the computer as soon as you unpacked it and plugged it in for the first time.
The BBC Microcomputer was the best - it had a built in 6502 assembler. (I also learned Z80 for the Spectrum I had after the ZX-81). Knowing asm made it a lot easier to learn C, especially pointers (which I've noticed time and time again newbies always struggle with).
Re:Python (Score:3, Interesting)
I learned to program with Python in a Windows environment. Three years later I'm a CS student and I use GNU/Linux and BSD exclusively. Advocate Python to your newbies!
Why "improve" it? (Score:2, Interesting)
There is a big glut of programmers right now, and more and more programming jobs are probably going overseas.
So, why should it be improved? I suggest your kids learn marketing, not programming. Marketing is hard to export because it requires personal contact and knowledge of local culture. The world is different now.
Perhaps you think of it as educational despite future career plans. That is understandable. In that case don't worry about the practicality of the language. Perhaps the Logo language? It provides nice graphical feedback.
Re:Python (Score:5, Interesting)
Pygame [pygame.org] is even better. When I was a kid, I started programming because I wanted to make games. Pygame gives them everything they need to make games. I also recommend this book [amazon.com] as an excellent introduction to Python.
Two big hurdles for little coders (Score:2, Interesting)
The first hurdle is the education systems vocation focused âoecomputer literacyâ. In the 80's schools really did focus on programming now its focused on learning to use stuff like office programs provided by Microsoft. This trains the student to be a âoeuserâ (as in drug user) rather than master of the computer.
The second hurdle which is hinted at but really spelled out in the article is the operating system and all the other computer components that because of their complexity must be treated as black boxes. Even in the most enlightened Linux using school it is very difficult for the little coders to actually have their programs interact with the hardware directly. While having an operating system is a good thing generally-- it does get in the way when one wants to understand computers at all the levels. Without interacting directly with hardware, students aren't going to have the perspective that brings.
Schools should look beyond programming on desktop computers and use simper devices like Lego Mindstorms or parallax basic stamps which for me solves âoethe Little Coder's Predicamentâ
Re:HTML as the starting point (Score:4, Interesting)
Why no Assembly ? (Score:1, Interesting)
WHen I moved to the Mac, I used Think Pascal for a while.
Re:Java (Score:2, Interesting)
Re:ZX-81 - Manuals really meant something (Score:3, Interesting)
Re:Second hard disk + Linux (Score:3, Interesting)
If you have a kid that wants to learn that sort of thing - then why not grab an engine for him to play with?
Start with a diesal engine, and get it working, with a pump or something.
Re:Except... (Score:3, Interesting)
Later on it wasn't like I was pulling free compilers out of thin air for my Amiga. I actually had to do a little searching around on the BBS's for that on my own. But by that point I was already interested in programming.
The thing is, computers (Windows) aren't designed for hobbiests anymore. Most people just want to plug it in and surf the net, play a game, type a document. Its become simplified, more like a TV. Most people dont buy a computer because they want to code. Windows is intetionally designed to require little thought, for good reason. It sells to the masses. It can do hundreds of things without the user ever having to type a single line of code. Most kids aren't going to find any reason to expose themselves to coding when everythings already done for them. And thats too bad.
Re:Teach them functional programming! (Really) (Score:3, Interesting)
When I was 10 years old, I didn't give a fuck solving problems and math. I liked pretty graphics, music, and joysticks. I was a KID. And most kids I knew were the same. We learned BASIC and whatever so we could make pretty pictures, music, and games, not because we wanted to solve problems and learn math (which we learned in the process, but NOT as the end in itself), but because we liked pretty pictures and music and games. People like you keep thinking of "what's in a kid's best interest" and forget that when you were a kid, when people told you what was in "your best interest" it immediately turned you off of whatever it was you were into.
The key is not to present it in a "Here's a way to solve important mathematical problems that you'll need in the future" but in a "hey, isn't this cool? I wonder how they did that!?" framework.
And who said everyone wants to be a programmer?
POV-Ray (Score:3, Interesting)
You can do pretty nice things with the SDL. The help files explain how to write a raytracer within POV-Ray [povray.org]. You can also read and write text files, etc.
Re:A couple places to start (Score:3, Interesting)
Re:Java? No, maybe python... (Score:3, Interesting)
I tried this once. I wanted to show my 11 year old son how to code in Java. So I tried to show him how to write a simple program to solve a homework problem - solving a simple equation.
The first step was to read two decimal numbers from the console. When I got lost among the various stream classes, I gave up. I could figure this out, but how would I explain it to an 11 year old? And not bore him to death?
Random thoughts on kids & programming (Score:3, Interesting)
At least with DOS 2.11, the manual said I could run "BASICA" and, by the way, try out these few lines of code.
I had classes in the 4th and 6th grades with C64 LOGO and Atari Basic. It was neat back then. In 2003, neat is 3D graphics and surround sound. Are you going to get a kid hooked on programming with a few batch files? I don't think so.
The old TI rags used to publish code listings for games like "Dogfight" and "Conquest of Camelot." They were in BASIC and you had to type them in from the magazine and save them onto an audio cassette. I spent hours as an 8-year-old typing in lines of code that I didn't understand. It was cool to see what would happen when you typed "RUN" though.
In the 80s, programming was one of the things that you bought your computer for, other than games. So if a computer didn't have a tool to program it with, it was either junk or a game console. Not everybody had a computer back then, but those who did kinda liked it.
Now that there's money in computers as a commodity, it's another story. People still buy computers for games, but not for programming. Besides, if you program, you might become competition, and that's not good, especially if you give your code away for free. That and the increasing complexity of computers and operating systems make languages diverse and specialized.
So instead of computers that say, "hey, see what you can do with me," we have computers that say, "hey, you can run Word and Half Life and surf the Net if you have a license." And we're moving closer to "you can't run anything else, even if you have a license to run it, unless it's one of ours." Pretty soon (if Microsoft has its way), instead of only needing a license to run a program, you'll need a licence to make one too.
Anyway, back to the point. If a kid thinks computers are neat, he'll need a system that still lets him try the neat stuff. That is no longer Microsoft unless you've got the cash for VB, which is now an "add on." Can you get VB without buying the whole Dev Studio? I doubt it.
Today's equivalent to my old TI are the Linuxes, BSDs and other "Open Source" platforms that still actively encourage tinkering and learning.
Is Linux programming too hard for an 8-year-old to figure out? I guess it depends on where you start. At least you don't have to buy the extras.
I'm afraid the really cool stuff has been the domain of the big guys for at least ten years now, though. Sorry kids. Well, a few kids might be interested enough to figure it out.
Nobody's stopping us from making a Linux distro geared towards 8-year-old programmers. If we had a language that made it easy to do some neat sound and graphics, it'd be like the old days.
Re:Second hard disk + Linux (Score:3, Interesting)
Is this any different than giving your kids legos or teaching them to build a tree house or any other hands on skills? At 2 I was already learning about chemistry and machines. I tried to build a time machine. As a kid I built robots and rebuilt my Atari.. all before the age of 10. I'd feel bad if I held my own children back.
Brings Back Memories (Score:3, Interesting)
Oh how I longed only to try my programs for real! But none of my friends who HAD computers knew anything about where to go in the system to look for a place that would accept input in BASIC. They probably had GWBASIC on there somewhere, but they certainly didn't know it. I actually remember the first time I got to run a program... it was in a toy store that was selling one of those "Kid's computer" type toys and it was on display. It said it could be programmed, so I went up and typed:
PRINT "What's your name?"
INPUT $NAME
PRINT "Hello, "; $NAME; "!"
I can't begin to express how pleased I was to see "Hello, Shon!" appear on the screen just as I expected it to.
We finally got our first personal computer in 1994, but it wasn't for a long time that I realized that, buried deep in a directory, was a program called QBASIC, which I eventually had quite a run with.
This brings me to the question: As I've seen new computers ship over the years without even QBASIC on them, I feel bad for all those kids who'd like to try to program, but don't know how. Sure we have the internet now, but downloading something like GCC is probably a bit much to ask for a 3rd grader who's never used anything but Windows. I really think that Microsoft should create a Windows GUI version of QBASIC and include it in the start menu just to encourage kids to play around with it. Barring that, OS's like MacOS and Linux that include C/C++ compilers win lots of points in my book. One other thing that I think that has especially helped get kids interested in programming is making Web pages... they see a cool thing on some other page and they wanna learn how to do it. Java's pretty complex for most kids, but there's a huge incentive in that it takes relatively little effort to do something that will really impress your friends, while it can seem like languages like C/C++ let you do nothing but output text.
So yes, I think that all OS's should include some sort of compiler with a GUI as a basic part of the operating system. If a basic paint program and writing program are worth including, then a basic compiler is definitely worth including as well. Lots of kids are interested in programming a computer at some level, but have no idea where to start.
Re:Well, if they've got a Mac... (Score:3, Interesting)
My Programming Tale (Score:2, Interesting)
When I first became interested in computers, we already had Windows 95, a system that didn't lend itself well to absolute beginning programmers that were 10 years old. I did want to learn to program, as learning to network is decidedly more expensive. I started with Qbasic. It comes on the 95 install disk, if I recall correctly.
I was able to do the rather trivial things in "Qbasic for Dummies". The problem was, I knew they were trivial. And when I showed a program I had written to someone, they weren't all that impressed with a little blip moving around the screen becuase they regularly used apps like Office and played 3D games. I wanted to write things like Office. So I pretty much gave up becuase I didn't really enjoy creating those insignificant programs.
Fast forward to now, and I can easily amaze Joe User with my networking skills, becuase the things the network does isn't what they typically see while using a computer. Nor are they what I had typically seen. Networking allowed me to do things that I hadn't seen with my own eyes a million times before.
I have learned some programming skills, mainly scripting (shell scripts, PHP, and a small amount of Perl). I learned to write small scripts primarily to enhance the network or for web development. But put me in front of some C or Java, and I'll look at it and kinda understand what's going on, but not to a point where I could do anything usefull.
My main problem was my own motivation. I didn't see the end results as being interesting, so never bothered to learn to a degree of usefulness.
Had I began programming on an Apple II, where I could make graphics similar to what mainstream games looked like, or write an actual useful program, I could have imagined myself being a much better coder.
kids figgure it out on their own (Score:2, Interesting)
Smalltalk is for small people. (Score:3, Interesting)
Squeak smalltalk for kids [squeakland.org]
Squeak smalltalk for grownups [squeak.org]
Smalltalk for business [cincom.com]
Smalltalk for engineers [exept.de] - Very fast.
There are many others, have a look through The Smalltalk Portal. [smalltalk.org]
Just remember that with 30 years of developemnt it just works!