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...
Re:A couple places to start (Score:5, Insightful)
A few years back, I remember the rumors of a standard Windows Scripting Language that would be to Windows 9x systems what bat was to DOS. (I haven't power used Windows in years except to run games on, so forgive my ignorance.)
But the biggest issue with this would be what language? Do you make it uber simple like bat, which could do some interesting scripting things but no real programs? Do you let people actually make up some "interpreted language" programs (like BASIC) so they can do some things, then deal with the headaches from users messing up their systems (or, worse, the viruses that would span if the language actually let you do "stuff" with it - Windows has enough problems with Office macros running amuck in the world without adding more headache).
And what kind of language? Visual Basic is still around, but I don't know of any serious programmers who really use it hard core - it's more for very small, internal apps (yes, there are visual basic apps out there, but last I checked, nobody's programming Doom III in Visual Basic, move on). So would you build it in C, C++, C#, Java, Perl, Python, Pascal - as soon as you do, there's another group of people (even inside the company making this "Basic scripting language") who have thier own near religious ferver regarding how it should work.
Odds are, it's just easier to go out, get yourself the Java SDK and notepad/Cygwin and Perl/Python, and go from there.
Oh, and you can get a keyboard for the Gamecube. I'm not sure if they're selling in the US yet, but they're mainly used for Phantasy Star Online addicts. (Though I would not mind a "Typing of the Dead II" - that game kicked ass.)
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
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 arc
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: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:A couple places to start (Score:5, Insightful)
What is required is a very simple interface with simple commands. Programming is about Problem Solving (I resisted the urge to put that in caps). It is not about coding style or compilers or interfaces, any more than a sports car is about the CD changer in the trunk.
Logic is logic. What we need *is* a return to a simple environment for kids. The smart ones will run into restrictions of the environment and branch out into other environments on their own.
Re:A couple places to start (Score:3, Insightful)
I'd suggest a kid get an inexpensive web account or learn how to install a web server on their computer (such as PWS for Windows). Messing around with server-side scripting is very approachable, and the UI is a webpage, which every kid understands.
Re:A couple places to start (Score:3, Insightful)
Re:A couple places to start (Score:5, Insightful)
Re:A couple places to start (Score:3, Insightful)
From there you might move on to Flash, where you've gotta learn their ActionScipt to do anything useful. And Flash is pretty much what the Advogato author was describing, play sounds, move graphics. Only it costs money unless the kid snags it from p2p.
Better yet, the kid decides that he wants something on the s
Except... (Score:5, Insightful)
That all said - I agree, some of the beginning tools are not there in the sense that you no longer have DOS with BASIC. But in another way, you have so much more. Now these kids have the internet to get all their tools. This is where I think the author or the article is missing something - free SDKs are being DLed, and the real wiz kids are learning how to program in much more robust languages than BASIC. Because of such, I really don't see a need for Toy Languages.
RonB
Re:Except... (Score:5, Insightful)
But how do kids get their interest sparked in the first place? Nothing beats booting up a computer and having a BASIC prompt staring you in the face, daring you to type in your first "10 PRINT 'I AM COOL' / 20 GOTO 10"-type program.
I always loved computers but who knows if my interest in coding ever would have been sparked if it hadn't been that easy to get started by farting around and making funny little programs like that.
Why the heck should a kid who's never coded before download a bunch of incredibly obscure (to THEM, not US) crap like Cygwin, etc just to pursue some totally unknown hobby? Some kids will still make this leap of course, but it's going to be LESS people than it would have been had there been a fun, built-in-to-the-OS, totally obvious, free way for kids to get started like you had in the 80's.
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:Except... (Score:5, Insightful)
It's interesting to think of the history of it:
Booting into BASIC was a godsend for budding programmers. I really wonder what the lack of that will lead to. (And blah blah blah "BASIC considered harmful"...I think the non-line-numbered versions are fine.)
I never got to use 'em but I suspect it's too bad HyperCard fell by the wayside. I think that's the closest WIMP-based computers have come to a useful languge that beginners were exposed to and could do useful stuff in.
These days, most kids will be exposed to the web, and the smart ones will realize "hey--this is pretty easy" and do interesting stuff. That tends to be more design than programming...and server side programming (from a kids point of view) is hampered by the lack of a screen to draw on. I think kids like to make THINGS on a screen, sprites, or 3D if it was easier.
I think DarkBasic or GameMaker or something like that might be a good bet for grownups who wanted to get a kid started who seems to have potential for this kind of thing.
Re:Except... (Score:5, Insightful)
Re:Except... (Score:3, Insightful)
You and I would do that, sure. Would the other 99.9% of parents in the world, the ones outside our "hardcore computer user" demographic do the same? Nope!
Re:A couple places to start (Score:3, Interesting)
Java? No, maybe python... (Score:3, Insightful)
Cons:
I say go with python. I think kids are by nature impatient when it comes to learning something new and they want fast results. Python comes with an interpreter, so you can
Re:Java? No, maybe python... (Score:5, Insightful)
I was one of those kids that learned programming in BASIC on TRS-80's back in the early 80's... and back then the order of the day was procedural programming, so that's the methodology that I learned. Because of my background in procedural, I have never gotten fully comfortable with OOP, and it's been the Achilles' tendon of my career.
OOP is significantly easier to learn if you don't have to 'unlearn' procedural programming first... so start there with the next generation of programmers. Java's got it's flaws, but for learning Object Oriented Programming, it's the way to go.
-72
Re:Java? No, maybe python... (Score:4, Insightful)
To begin with, procedural programming isn't diametrically opposed to OO, like many like to imply. OO is, in part, a way to organize those procedures into coherent wholes. I don't think you can write a OO program without knowing how to write a procedure. When I was going through my basic undergraduate programming classes, many fellow students were having problems using iteration to do something to an entire array. Hopefully the foreach concept won't have too high a barrier of entry.
Now the above understanding is easy enough to rectify without abandoning Java. Simply begin teaching them the basics using the classic "static void main(String[] args)" line. This is the real problem with Java as a learning language: there's a lot that the student must be told to remember but not understand. The meaning of many keywords nessecary to program in Java can be overbearing to teach and mostly serves as a hurdle to student's interests. Exceptions are a nice way of handling errors, but they require a lot of confusing ideas to beginner programmers, like the notion of execution control flow, the activation record, and the keywords throws, try, and catch. There used to be a very classic line in introductory Java texts, for doing standard commandline input. Something like BufferedStream keyboard = new BufferedStream(System.in()). Again most students are just taught 'Just memorize it for now, we'll discuss (or replace) it later.'
That said, there are worse choices than Java for a language. If you can skirt around the issues I've mentioned above, Java does have many nice benefits. The exceptions have a very handy benefit compared to other compiled languages; rather than get a Segment Fault, you get something like NullPointerException(MyClass.java:40). And of course, the lack of explicit pointers itself is just one less concept you need to teach, especially when you're simply trying to cover the basics that are present in nearly every language in use. The Javadocs are also handy.
So really it isn't a clear cut yes or no. If the student is dead set on learning to program then perhaps Java is the way to go. But for students on the fringe, every boring hurdle to get something done is another step towards middle management.
Scheme IS practical, you insensitive clod! (Score:5, Funny)
I program professionally in Scheme, you insensitive clod!
(Seriously, I do.)
Um.... Linux? (Score:4, Insightful)
Seems like a no-brainer to me.
Wrong (Score:5, Funny)
Windows comes with VBScript built-in!
er..can I really call it a programming language?
Comment removed (Score:5, Informative)
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)
Re:Create a simple learning language... (Score:5, Funny)
The scene: In a park with a lot of little kids around
(stranger dressed up like Bill Gates in a trenchcoat): Hey kid, I got something for you
Kid: What
Stranger: It's the good stuff...(holds out a box labeled 'GW-Basic#'
Kid: I don't know. My daddy told me that stuff is bad for you...it causes you to get fat and pimply and never get a date
Stranger: That's a lie! Come on. First taste is free (holds out box further)
Kid: Well, ok....
Re:Create a simple learning language... (Score:3, Redundant)
Anyway, I do not think that BASIC is a good learning language. BASIC encourages bad programming practices. Not C either, simply because it's got too many loaded guns you have to ensure aren't pointed at your foot. Something like Java, or Python, or whatever where you can learn programming concepts without having to also learn h
Re:Create a simple learning language... (Score:3, Insightful)
While I'm sure Dijkstra would agree with you, I have to say I think this is a myth. I don't think that "bad programming practices" are habits that are difficult to change. I find that usually, as soon as someone is shown a "better" way to do something, they will immediately start using that programming practice and forget all about the way they used to do it.
I don't think you can throw a 10 or 12 y
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: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).
Windows comes with programming tools! (Score:5, Funny)
Windows does have a built-in language... (Score:4, Informative)
Re:Windows does have a built-in language... (Score:3, Informative)
The
Re:Download QBasic from Microsoft for Win2K/XP (Score:3, Interesting)
Tough choice (Score:5, Funny)
No programming language ... or BASIC.
I won't put in the obligatory Dijkstra quote, because by the time I finish this sentence, about 200 people will have posted it already.
Oh, what the hell:
Re:Tough choice (Score:3, Funny)
So I wrote my first programs on paper in BASIC. I tr
Re:Tough choice (Score:3, Insightful)
Each of these languages and models has a domain in which it solves a problem well - programmers have to work from systems ranging from multi-CPU servers wi
Squeak (Score:5, Informative)
You Meticulous Rapscallions (Score:5, Funny)
All you people do is whine and whine about languages!
Back in my day, I had a bunch of OR and NOT gates and some solder. When I was very good, my parents would buy me an AND gate for my birthday. Those were the days.
Re:You Meticulous Rapscallions (Score:3, Funny)
Durn kids and their durned electricity...
Where to start? (Score:5, Interesting)
Or let them get python for Windows, if you must.
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.
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]
Comment removed (Score:3, Informative)
Do you want to teach programming or development? (Score:4, Insightful)
Sure, when I used to own a C64, I could code stuff as I wanted it to, and I knew that my code will run on everybody's else C64, too. But today, you have to develop your applications in a team, which has to run on different platforms (even Win2K and Win98 are a difference!), and has generally became very complex. But that's another story.
JavaScript (Score:3, Insightful)
Windows comes with Notepad and IE. Little Coders have access to JavaScript; something that can run circles around the BASIC of old.
Java (Score:5, Informative)
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.
Text Adventure Games (Score:5, Interesting)
Lego Mindstorms! (Score:4, Insightful)
Only a few years back a colleague brought up this very issue, and we agreed that it looked really bad. Apparently, freshmen in college back in the Spectrum days performed better in introductory programming courses.
However, I think that since then things, or at least opportunities, have improved: I am thinking of Lego Mindstorms [lego.com], perhaps combined with NQC [baumfamily.org], a simple C-like language for Lego's computer brick. This kit is simply marvelous in playability, and had I had that kit as a boy, I am sure that I would have learned programming at least as well as with my Spectrum.
I don't believe this has improved freshmen's programming abilitites though, but perhaps with time?
As others have pointed out already, Linux and all its programming environments will probably provide very good starting points these days. I have for instance seen Java introductions that are more accessible than what we had in the early eighties!
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.
Re:HTML as the starting point (Score:4, Interesting)
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
Neverwinter Nights (Score:5, Insightful)
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++
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.
Re:Try Python (Score:3, Insightful)
The important thing as you imply, is that both these languages you can just pick up and go with. You don't have to worry about 'int main(char argc char[][] argv)' and all that...the kid can just start up straight away.
Oh...you missed out 'powerful' when listing python's good points. I remember BASIC - I could make the screen draw a pretty picture. Python is powerful enough to produce something like bittorrent.
Hey, today's kids have it made!
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.
Re:Java (Score:5, Funny)
Hmm. You're one of those people to whom the dashboard of a 747 is "simple," aren't you. :)
"Daddy? How do I compile?"
*sigh* For the last time, Bob, M-L, M-X, C-M-K, "make", esc-esc-return...
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
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.
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!
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.
duh linux (Score:3, Insightful)
perfect development environment for anyone. Want to learn c/c++/java/perl/python/visual python? Want to run servers? Learn sockets? Maintain a website? And irc server? opengl to emulate your fave 3D gamer heros? Its all free for linux! Incidentally, I wouldnt be surprised if at some point microsoft just gives away its development environment because as everyone knows "what the kids program on" is what will be huge in 5 years. That said at the elementary school level
you probably want to code using something like "turtle on", "turtle off" logo [sourceforge.net] which is also free (GPL) for linux. Ahh those Apple II logo days
-bloo
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)
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.
Do you really want to ask this Q on Slashdot? (Score:3, Funny)
Make sure to impress on the children that SCO is bad at an early age too!
My heart bleeds (Score:3, Insightful)
Today: The freaking Internet, computers all over the place at home and school. Free UNIX clones. Perl, Java, C, C++ all for free.
When I was a kid: Just enough computers at school to cause fist-fights over them. Applesoft BASIC (somebody shoot me). DOS on a "good" day. I never had access to BBSes. (Dad had the only modem, and he sure wasn't letting me use it.)
Oh, and as a bonus, there was no dotcom-Matrix Geek Sheik. I'm sure school is still tough on geeky kids, but in the post-dotcom age of ubiquitous computing (and damn near ubiquitous Internet access) I find it hard to pity today's geeklings.
-Peter
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.
Cocoa? (Score:3)
I hate to say it, but VB is the way to go. (Score:4, Insightful)
The only other alternative I can think of is a web based technology like ASP/JSP/PHP, but due to the fact that is difficult to get a decent host for a website on a budget of zero dollars that your friends can go to and say "cool!", I think that those technologies lose their novelty really fast. Plus the bar to entry is a little higher, since you have to understand the relationship between the pages and the webserver, as well as configure things correctly, which VB does not require. Apache/IIS can be a little intimidating at fist and after seeking help and getting a load of RTFM responses, said wannabe programmer will quickly give up and just go back to playing PS2.
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.
Game Maker (Score:4, Interesting)
Game Maker URL: http://www.cs.uu.nl/people/markov/gmaker/ [cs.uu.nl]
Python (Score:3, Insightful)
When I was growing up (and using BASIC on the C64) I loved that I could enter a line of code and see the results immediately. It encourages a lot more experimentation as you can effortlessly try anything, be it interactively before you even start writing to test out a concept, or in the middle of executing your program.
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.
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:
Match the code to the application (Score:3, Insightful)
One of the things I hated most about the (required for my A.A.S. degree) programming course I took at the local community college was its focus on games. I have ZERO use for game coding in an electronics environment.
Said course would have been far more valuable to me if they had chosen a specific application pertinent to the Electronics Technology major I was carrying (perhaps an introduction to programming the PIC microcontrollers, or 68xxx assembler), and coded for that.
To delve a little further into that line of thought: You don't need Visual Basic or Visual C++ to code a PIC to be, say, an electronic lock or programmable frequency divider. What you do need is a stable development platform, a good feel for simple BASIC, and some idea of how the software you're writing is going to interact with the hardware involved.
On the other wing, you don't usually (that I know of) need to delve into the details of assembly language if you're going to be writing (here we go) a game, or a spreadsheet app, or some similar program that is intended mainly to interact with the user as opposed to running a dedicated function in an embedded device.
No one can be an expert in all programming forms and languages. There's just too much Out There. Help new students to make intelligent choices about what, exactly, they're trying to code for, teach them good ground rules about coding in general, and the rest should follow on its own.
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:ZX-81 - Manuals really meant something (Score:3, Interesting)
C? C++? Java? Get real! (Score:5, Insightful)
You've got to think about what's going to make sense for a kid. When I was a kid, if I wanted to print "Hello, world!" to the screen I typed in 'print "Hello, world!"'. That makes sense. Do you honestly think a kid just starting out is going to know what all the extra crap he has to declare just to print something in Java means? What the hell do you think "public static void main" means to a kid? How is he supposed to understand that if he wants to "print" he has to use System.out.println? Furthermore, is a kid just starting out supposed to know what static typing is? Give them a language where they can just declare variables. At least that way they can draw a simple parallel to pre-algebra (children understand "x = 5" in math class... they don't have to say "int x = 5" in a math problem, so why would it make sense right off the bat to do so in a computer program)? Do you think children are going to understand even the basic concepts of OO programming? There are undergrads in colleges across the world who are having a tough enough time with that.
I'm going to recommend Python. It's the modern-day QBasic (not meant in a bad way... Python is very powerful, I mean that it can boil programming down the essentials for novices in much the same way that QBasic did). No static typing, simple syntax, and you can program interactively. It's definitely the best thing going for introducting children to programming today.
PHP (Score:3, Insightful)
Perl (Score:3, Funny)
[That being said, I use Perl wherever possible
From little Acorns... (Score:5, Insightful)
---
Back in '83 my father bought the family a BBC B [1], and not long after playing the bundled games thoroughly I found the User Guide, tried out the teletext examples to do double height text, the moving man vdu23 example, and didn't stop until I got to the end. It was a wonderful learning experience..
Switch the Beeb on...
*blur*beep*
BBC Computer 32k
Basic
> 10 PRINT "Ooh look a programming language"
> 20 PRINT "that is right there at power up"
> 30 PRINT "and easy enough for a preteen"
> 40 GOTO 10
> RUN
From that prompt BBC BASIC was right there available to you from power up. Want to draw a triangle - plot 85.. play a middle C note - SOUND 1,-15,53,5. Now is that or talking to DirectX via C/C++/VB/Delphi/etc easier for a child?
Along with the Beeb, plenty other 8 bit machines also provided a simple to use programming environment right there by default at power up. No extras to have to buy, no alternative OS's to install, and what plenty of people who've posted here seem to be completely forgetting - a learning curve suitable for a pre-teen.
Nowadays
---
I think the article is spot on. A child who sits down at an out of the box Windows PC can do nothing more than play Solitaire. Sure there is plenty that can be done if you know about it. This requires purchase of $50+ books, programming languages, or knowledge to wipe the system and install some Unix variant with an oss compiler, etc. These are out of reach for a child. Even if a knowing parent had sorted out one of these solutions, it is still have a steeper learning curve.
It's all about accessibility, and nowadays programming really is less accessible to young children. Anyone who can't see that either wasn't there in the 80s or lives in an alternative reality.
[1] Huge UK success. Never cracked US market. See here [nvg.ntnu.no] for some background history on it.
[2] For the BBC, Electron, etc there was Micro User, A&B Computing, Acorn User, Electron World, and others besides. The C64/128 had Crash, Zzap, etc, and for the Speccy there was Your Sinclair, and lots of others I've forgotten.
Re:Bundle VB with windows (Score:3, Insightful)
They almost got split into two companies the last time they tried bundling something with Windows...
Re:Second hard disk + Linux (Score:4, Insightful)
Re:Second hard disk + Linux (Score:3, Insightful)
you realy think an 8 year old can jump right into perl?
Basic was popular to learn on in the 80's becasue it was such a simple language...python is even better than basic and it enforces good programming techiques.
Re:Second hard disk + Linux (Score:3, Insightful)
HTML and JavaScript (and any other web pluggable scripting)
they are even simpler than say, Python (although Python is definite a great first language) and they come bundled with your average browser...its also a good first lesson in platform dependencies, standards, and the do's and don'ts of implemeting those standards (no names will be mentioned here *cough* IE *cough*)
albeit they are narrow in scope and limited in features, but we're ta
Re:Second hard disk + Linux (Score:5, Insightful)
I have to say you are way off base here.
The fact is that unless you let your 12 year old break/fix pc stuff, providing they show an interest in it, you are telling them not to be interested in science.
When I was 12, I was building clones from components, at 16 I was selling beige box's for a tidy profit. If my father had told me no when I wanted to see how the family machine worked, I would never have played with electronics very much.
Today itâ(TM)s so much easier. Just buy them a cheep ebay throw away, an you have nothing to worry about. They will learn more from an old DOS machine then the bloated XP box you probably run anyway.
Re:Second hard disk + Linux (Score:4, Funny)
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: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:Second hard disk + Linux (Score:5, Insightful)
No no no. The kid wants to do something productive and actually program, not get trapped into setting up a whole new system and get involved in patches and unrelated packages. All he has to do is get a hold of a free language package on the web like Tcl/Tk or Perl or even LISP and he's good to go with one download and a double-click. So why go through the trouble of all that for something so simple? Talk about overengineering the solution.
This is the problem with Slashdot readers: they automatically assume Linux=freeware. You know, freeware *does* exist for other systems. However, the author of the article didn't necessarily state that Windows was the system that was loaded on the theoretical 12 year old's target system.
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.
Re:Second hard disk + Linux (Score:5, Informative)
"robot programming" games (Score:5, Informative)
Re:Second hard disk + Linux (Score:3, Insightful)
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