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?"
A couple places to start (Score:5, Informative)
Second, once they've got the basics down, get them something a bit more practical. Cygwin is free, and comes with gcc/gc++ and friends. Or even break down and spend a few bucks on Visual Basic (or, if they're really bright, a second hard drive with Linux/*BSD/whatever, so they can pick up GTK+ or QT or whichever widget set is trendy these days).
Most of the advogato article's suggestions are at best silly. I think he's promoting the return of LOGO, or whatever that language was where you did everything with a "turtle". Except that e apparently expects Microsoft, Sony, Nintendo, and everyone else to agree on a single standard, which is at best laughable. None of those game consoles even come with a keyboard any more, and I don't think you can even get keyboards for the GameCube...
Windows does have a built-in language... (Score:4, Informative)
Squeak (Score:5, Informative)
Shell Scripts (Score:2, Informative)
If they can get past doing some basic stuff like that you can move them up to a more complex and capable platform.
Language choices (Score:4, Informative)
Do remember, those that have an interest and initiative will find themselves looking for ways to start coding, such as searching for compilers on Google and go from there.
Re:A couple places to start (Score:2, Informative)
http://shop.store.yahoo.com/pandorascube/gamkeyso
And no, it's not the result of a fark photoshop contest.
erm... (Score:3, Informative)
Java (Score:5, Informative)
Give them GNU/Linux, not windoze (Score:2, Informative)
Give them a full GNU/Linux install. It will include gcc, glibc, autoconf, etc..
Or you could make them build their own LFS system like I make my kids. Sink or swim I always say.
Three little letters ... (Score:5, Informative)
OS X
Learn AppleScript, then Perl, then C (with GCC). All comes on the developer disk, or a free download.
If you can't get a Mac (and given how cheap the Macs are getting, that's a smaller proportion of the audience), why not start with command line batch programming, then download ActiveState Perl or Python, then learn some Java, then you can decide whether you want to sell your soul to MS and do VBA and VC++, or slap some Linux on that box.
I like the options better in the present (Score:1, Informative)
Re:Windows does have a built-in language... (Score:3, Informative)
The
Built-in Windows Language (Score:3, Informative)
1. Open an Office app, type alt-F11.
2. You should be looking at a VB editor. From the menu, select Insert/Module.
3. Enter this code:
Sub CmdWin()
Shell ("cmd.exe")
End Sub
4. Click the arrow button. Now you should be looking at a shell window.
Simple stuff for the readers of
Try Python (Score:5, Informative)
I've just picked up Python and after coding in C, C++, and Java it's like a breath of fresh air. No haggling with the compiler over types, simple intuitive syntax and a very helpful interpreter that let's you test code on the fly.
Python is also free, runs on many platforms, has a huge range of modules to choose from and for a beginning programmer it's coding style is very clear (unlike perl).
New programmers can start by defining functions and then explore OO concepts as they gain confidence.
I would recommend "Learning Python" by Mark Lutz as a great starting reference.
Java (Score:5, Informative)
By sticking to Java the child will tend to learn clean programming design and algorithms, rather than wild pointer debugging tricks (also the case with BASIC I might add). As an added bonus the child will be learning one of the most commercially viable languages, and one with a lnog lifetime ahead of it IMO. I'd also begin exposure to SQL (MySQL or Postgres) when you felt the child was up to the added complexity and workload. Up to this point the cost has been $0.
Once the child (now 14 or 15 I'm sure;) was proficient coding in Java, I'd suggest exploring C, assembler, drivers and low-level machine architecture. Within a couple of years any CS program in the country should be easy pickings.
Delphi Anyone? (Score:3, Informative)
It has the modularity, strong type checking and simple sintax to help you start learning.
I beleive you could download version 1 (16 bit?) for free - but Im not sure.
Just my $0.02
You can find LOGO here (Score:2, Informative)
.Net Framework (Score:1, Informative)
Microsoft
http://msdn.microsoft.com/netframework/downl
Linux/Cygwin users can try
http://go-mono.org (my personal choice)
OR
http://www.dotgnu.org
Facing this with my 8 year old daughter now (Score:2, Informative)
Other things I've been meaning to try with her include:
Boxer(3), which oddly is only readily available for the Mac. It's positioned as an alternative to Logo and feels a lot like Squeak(4).
Apple had a s ystem called ``Cocoa'' (this was before the NeXT purchase) which was lauded for kids' programming, but not finding much about it now.
One commercial program which I'm saddened has vanished is Widget Workshop by Maxis(5) and wasn't carried farther.
That last really points out that a more visual tool might be better for kids. Although there's been some interesting research on this(6), none of the available tools(7) are really suitable for kids excepting Drape(8).
William
(1) http://www.cs.berkeley.edu/~bh/logo.html
(2) http://www.softronix.com/download/tgla.zip
(3) http://www.soe.berkeley.edu/~boxer/index.html
(4
(5) http://www.superkids.com/aweb/pages/reviews/scien
(6) http://www.cs.berkeley.edu/~maratb/cs2 63/paper/paper.html
(7) http://www.nwoods.com/sanscript/index.htm
(8) http://www.cs.uu.nl/~markov/kids/drape.html
Ë
Squeak (Score:5, Informative)
The scheme environment bundled with How To Design Programs [htdp.org] has a similar goal of allowing the student to gradually ramp up the complexity of the language, but I find their rigid levels confining. Also, the programs a beginning programmer is able to put together are nowhere near as satisfying visually as what a new squeak user can build. (These kids today - in my day, we had either text or 40 by 40 graphics and we liked it.) That said, the htdp scheme environment may be more appropriate for a structured classroom environment with a series of lessons.
My only complaint about squeak is the license (despite claims on squeak.org, it's not really an open source license because of the fonts it includes); however, it is free-as-in-beer and has been already been used in elementary and middle school classrooms for both teacher- and student-created projects. (See squeakland)
Re:Perl (Score:1, Informative)
Java? (Score:2, Informative)
Comment removed (Score:5, Informative)
Re:A couple places to start (Score:3, Informative)
Wel.. There is this feature rich, stable and FREE CD Burning Software written in Visual Basic 6.
You can find CDBurner XP here [telia.com]
VB does have it's uses. No. Nobody's going to write Doom 3 with VB but it's not as limited as people tend to think it is.
Pascal (Score:5, Informative)
Lo these many years ago, when I was in first year, pascal was used as the teaching language in many universities, including mine. It's nice enough as a sandbox language to help you learn good programming habits, yet powerful enough to do non-trivial things.
In fact you can download a free pascal compiler [freepascal.org] to play around with it.
Re:Windows comes with programming tools! (Score:2, Informative)
Re:Second hard disk + Linux (Score:5, Informative)
Re:Java (Score:3, Informative)
If a kid can't do that, then programming isn't for them.
Be careful, though. A kid might look into Java, see the hundreds of APIs in the Java "platform", become depressed, and decide that those liberal arts classes aren't so bad after all.
Java/J2EE and
It really is too bad that a kid's first computer now-a-days will have the opaque behemoth that is Windows XP. My C-64 was a great first computer, and even my first DOS 5.0 PC was a lot of fun. Now, however, when I boot Win2K or XP, all I really am motivated to do is click around until I find something and the "magic" is gone. I would even argue that even UNIX/Linux is a bit too much, at first, but, perhaps, these are the best thing going, anymore.
Mac OS X (Score:2, Informative)
Re:Not OO! (Score:5, Informative)
Smalltalk has been used for teaching kids for 30 years, and with a good amount of success.
Part of the reason kids can learn Smalltalk well is that there is no need to learn and use OO off the bat. You can do a fair amount of stuff in Smalltalk just by using Object-Based Programming, rather than OOP. Object-based means *using* objects, creating them, but without a full dose of creating classes, etc.
Now a days, we have Squeak [squeak.org], which takes it to the next level. Kids can get a big return on their investment of time, creating moving, colorful things, while writing a very small amount of code. Unlike some environments for beginners, it scales up, being useful for creating big and scary applications with a lot of code.
Check out the demos- it's open source, and runs on just about every platform worth runnning, including Mac OS Classic/X, Windows > 3.1 (incl WinCE), and all modern Unices under X11 (or DirectFB, Linux FB, SDL).
Re:A couple places to start (Score:4, Informative)
http://turtletracks.sourceforge.net/
Or any other Logo implementation might do fine for young ones. Nice and easy way to teach logic.
Re:Second hard disk + Linux (Score:4, Informative)
It was compulsory in our family when young to help dad repair cars. So yes, he did get me replacing alternators (relatively easy) or striping parts, cleaning and then re-assembling.
Re:Except... (Score:2, Informative)
I started "programming" with a very close derivative of the 10 PRINT 'XXX'/20 GOTO 10 logic. I was about 2 when I started being able to type my name of the computer, and about 3 when I started actually doing some simple BASIC programs.
I was given Borland C++ around age 10, and inhaled all the manuals, books, readmes, etc. I could find. I also elicited help from others over the Net (then available to me using UUCP and Waffle... remember those days?)
Long story short, the language didn't give me the desire to code. My parents showing me what a computer could do (along with some other exceptional parenting, school involvement, grandparents, ad nauseum) made me interested in learning the computer. Once I started learning, I wanted to do my own thing - the only way to do that was by writing some programs. So, I learned what I needed to know to build those programs..
In short, the language doesn't make that much difference. Programming languages are *not that hard*. If a child has the desire to learn, he'll find a language.
Alice: designed for kids to learn to program (Score:2, Informative)
From what I know of squeak, it sounds like a good environment, but AFAIK it wasn't designed specifically for kids.
Re:Java (Score:2, Informative)
I'm teaching my kids Python (Score:3, Informative)
For the purposes of home schooling, I use Python. The interactive nature of Python resembles the old MBasic and GBasic interpretters; immediate feedback is terrific for learning.
Python's capabilities scale nicely between simple "hello world" and complex applications; my daughters can gradually learn concepts and techniques.
Re:A couple places to start (Score:3, Informative)
"robot programming" games (Score:5, Informative)
Re:A couple places to start (Score:2, Informative)
Nobody is programming Doom III in anything except C, assembly, and maybe some C++.
Doom III engine is written in C++ [gamespy.com].
Re:A couple places to start (Score:3, Informative)
It is with every machine you can think of. It has procedural aspects, some decent obect oriented features, yep, I reckon it just might work. Nice idea!
Shortcuts for downloading JBuilder (Score:1, Informative)
JBuilder Personal Edition for Windows: Windows [borland.com]
for Solaris: Solaris [borland.com]
for Linux: Linux [borland.com]
Thanks for the comments, notes (Score:2, Informative)
With all the comments that have been posted, it seems a lot of you believe there is no problem. That there are a wealth of intriguing technologies for kids who want to find them. Which is true. Kids can build websites. Kids can hack Hotmail. Kids can mod games.
I still feel like we haven't cracked the door open on mainstream coding. I believe a majority of humans could learn to code. How many students are required to take math, chemistry, physics? Could programming become a commonly taught skill?
Many of you have suggested that the job market would die. Are you kidding me? The job market for programmers would undoubtedly swell. More using the Web, more understanding the need for software, more purchasing software to help their casual coding. Better yet, the more who understand how to code, the fewer people have to say they are "computer illiterate!" Instead, clients could possibly have a better understanding and appreciation of the things we do.
Let's push coding to the mainstream. There are those among us who can influence the world to make such a thing happen. I believe it could be well worth it.
Bert Kersey, where are you? (Score:3, Informative)
Maybe what we need is someone who enjoys building marvelous toys and then distributing the plans so we can see how they're built, along with a programming environment a kid can use "straight out of the box". If I were doing this I'd do it in Python and distribute it on a CD with Python interpreters for the major platforms to give a kid the best possible chance of being able to start playing right away.
Examples (Score:3, Informative)
Back in the Early Days Of Microcomputing (1980, give or take about five years) there were a number of sources for Basic programs that you could type in to your computer. Once they were typed in you could see how the code correlated to what was on the screen. You could also steal, er, ah, learn from the code in building programs you had created yourself.
Creative Computing, Compute!, 80-Micro, Softside, Beagle Bros (mentioned in another post farther up the page) . . . if we really want kids to get hooked on computers, we need something like what these magazines and companies provided.
Re:A couple places to start (Score:3, Informative)
sure it's not visual studio, but it's damned good value.