The Little Coder's Predicament
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, 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. More precisely, it has 2 of them, VBScript and JScript. They've been included with Windows since Win 2000 and can be downloaded for 95 & 98.
Squeak is an nice environment to learn programming. It is highly portable, includes graphics, sound, and a great programming environment. See www.squeak.org for more info.
If I was going to start my kids into programming I think I'd start with some easy shell scripts. Seems like you can do almost everything that BASIC did with bash, ksh, etc...
If they can get past doing some basic stuff like that you can move them up to a more complex and capable platform.
My Ass hurts.
There is a pascal based language called 'Turing', a language that is taught as part of many entry level computer course in high schools of Canada. There is an OO version called Object Oriented Turing, which does run under Windows. Do note that while those languages are extremely limited (to a point that is painful), I was able to do some amazing games that people stare in amazment at and that actually was the starting point of my coding life.
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.
Please direct all bug reports to
er, hello? Windows does still come with QBASIC. Go to run, type QBASIC... or CMD->DEBUG ;)
Learning to code is so much easier with a good structured language. Download the JDK from sun (free as in beer). That and a text editor gets you started. If you want a pretty IDE, Eclipse, Forte4J, and Borland jBuilder personal edition are all free downloads, and are fairly full featured. I am teaching my nephew to program using these tools. So far, he is picking it up fairly quickly. For teaching, I think that a strongly typed language makes it easier.
Where's my lobbyist? Right here.
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.
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 started learning to program in the 80â(TM)s and Iâ(TM)d rather have the options the kids today have. Windows might not have a basic interpreter, but there is a scripting host. You can also download the .Net SDK and the free .Net Web Matrix which gives you a stripped down visual studio type interface in a 1.2 MB package.
Most Windows machines have Office installed, which includes Visual Basic. For example, if you're at the library and someone has locked out everything except the browser and Office, try this:
/., but probably 90% of kids have access to a machine where this is possible and in three minutes they get access to a complete, powerful programming language and a trick they can use to impress their friends.
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
Figuring out where to start in programming is alot more difficult now than it was in the '80 due to the explosion in programming choices available (Java, C, C++, vc.net, vb.net, ...). Tools may be better (vis. Visual Studio, Eclipse, etc.) but the learning curve for a new programmer to get a "hello world" program running on most platforms is steep to say the least.
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.
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.
Galileo: "The Earth revolves around the Sun!"
Score: -1 100% Flamebait
What's wrong with Delphi?
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
It's available for free for most platfoms.
Microsoft does provide a host of programming languages/compilers for FREE (C#, VB.Net, C++...).
.Net Framework SDKo ads/h owtoget.aspx
Microsoft
http://msdn.microsoft.com/netframework/downl
Linux/Cygwin users can try
http://go-mono.org (my personal choice)
OR
http://www.dotgnu.org
D/l'd a copy of UCB Logo(1) and started working through _The Great Logo Adventure_(2) w/ her---she got a big kick out of making the computer do what she wanted, esp. once I showed her the abbreviations (FD == forward &c.). Minor glitch was TGLA was writte n w/ MSW Logo in mind, so TRI was undefined....
) http://www.squeak.orgc e1/widget/merge.shtml
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
Ë
Sphinx of black quartz, judge my vow.
Squeak is a cross-platform implementation of smalltalk that has developed quite the little community of educators and students around it. It allows budding programmers to start on a very basic level - something reminiscent of hypercard - but underneath it all is a real language that allows all the power and syntax you might want. As soon as you're ready, the power is there.
The scheme environment bundled with How To Design Programs 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)
Perl would be good, but python would be better--especially for newbies.
I'd download Java for them. It's free (as in beer), you can get it for most platforms (standard on a Mac), it might be a bit complicated, but it's got big standard libraries. Even more, with Java2D you can draw! My first programs were all simple demo's, so I see that as a big plus.
And Windows 95 had QBasic on the CD.
The problem is - where to find the documentation to get started. Windows built in help is useless...
It seems there's a bit of documentation on Microsoft's web site under http://www.microsoft.com/scripting/...
o/~ Join us now and share the software
Whatever happened to pascal?
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 to play around with it.
Toronto-area transit rider? Rate your ride.
Haha, brilliant! Debug is the source of half of my DOS programming experience.
give them a game to play which sneakly teaches them to program.
There is no god
Now that Mac OS is a *nix clone, it has all of the great programming/scripting languages that any other *nix has. ie: c/c++, perl, python, php. Not only that, but AppleScript is still around. Plus Apple has a free downloadable/bundled-on-cd IDE (developer.apple.com) that can do things like simple c/c++ tools to build full fledged apps based on Apple's Cocoa and Carbon APIs.
OO doesn't mean a scary IDE. OO doesn't mean VB.NET or any other language on the .NET object model.
:) Kids end up learning OO by manipulating actual objects, in the form of graphical "Morphs," giving them functionality, changing their properties... until the day it clicks, and they decide they want a totally new "kind" of Morph.
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, 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).
Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
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.
All those moments will be lost in time, like tears in rain.
Perhaps I can weigh in as a part of the younger Slashdot crowd (I'm 19, BTW).
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.
From what I know of squeak, it sounds like a good environment, but AFAIK it wasn't designed specifically for kids.
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.
All about me
There have been many, many "robot programming" games written for just about every platform. Some use their own mini languages, some use real world languages. Some, like Core Wars, are even portable and semi-standardized. As a category, these are definitely a great introduction to programming.
But my grandest creation, as history will tell,
Was Firefrorefiddle, the Fiend of the Fell.
JBuilder Personal Edition for Windows: Windows
for Solaris: Solaris
for Linux: Linux
A thanks to those who sent personal stories about how they learned to code. Kind of fun to read about. Didn't expect the amount of responses, of course.
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.
For those of you who weren't paying attention in the early to mid 80s, Bert Kersey was the mad genius behind Beagle Bros Software, the coolest software company out there. Their catalogs were a hoot and their products exhibited a complete disregard for taking themselves seriously (this site will give you some of the flavor of the Beagle Bros style), but their best claim to fame was their software. Not only did they write programs that let you do cool things with your Apple II, they showed you how to do the cool things yourself. They were open source years before its restoration to hipness.
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.
Someone you trust is one of us.
The real problem these days is examples. And I'm not talking about downloading the kernel source to see how to write programs in C, either.
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.
Someone you trust is one of us.