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?"
That ought to do the trick. Pick some easy to install distro, does loadlin still work on WIndows, well, make a boot floppy if need be.
Infuriate left and right
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...
Activeperl and a copy of the camel (O'Reilly Programming Perl)... it's all you need!
Free... Multiple free programming languages, includng BASIC... GUI Editors and debuggers... Copious documentation... Responsive community...
Seems like a no-brainer to me.
all the time, requireing people today to learn more in the same space of time as people years ago had to. It's not just limited to the computing industry.
Get used to it.
The problem with slashdot is that most of its users were bullied and stuffed into lockers as kids!
Now we have Windows, which typically comes with no built-in programming language
;)
Windows comes with VBScript built-in!
er..can I really call it a programming language?
No Windows Scripting language?
No problem.
Give them Guile, the official scripting language of the GNU project.
http://www.gnu.org/software/guile/guile.html
- Serge Wroclawski
Let's face it, if you want to develop software, Unix or Linux is a great way to go. The price is right, the technology is current, the compilers are included, and multiple programming languages from lowest to highest level are included/available.
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.
It was a joke! When you give me that look it was a joke.
Most computers come bundled with MS Office - so get them yungins to crank out VBA apps for fun and profit!
For Windows, it would be nice if they would include something like a non-compiled version of Visual Basic or something, something that would be easy for people who don't have any programming experience to learn.
When I started programming, I was 8 years old, and worked with what I had available. I made simple GW-BASIC programs and have moved on from there. Maybe OS's should think about the next generation of devlopers and include some sort of learning language to get the kids hooked when they are young. At least they could learn the concepts, and grow up moving on to bigger and better languages as I did...
Something clever...
What, did you forget about "debug"? Man, kids these days. Go to Start->Run...->"debug". There, learn! :-)
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.
Start shaving, buddy.
No comments yet and it's already /.ed. Nice.
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.
I found the meaning of life the other day, but I had write-only access.
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.
------
Amadaeus
The last bastion of Mathie-ism
What is this Windows of which you speak? I'm still on a TRS-80...
PepperHacks - Hacking the Pepper Pad
What can be done to improve the situation?"
Push Microsoft's Windows out of the market, replacing it with Linux based distros which come with GCC preinstalled.
As if you had to ask...
I often wish I could go back to the days of a TRS-80 and BASIC.
Downloading Java or Python or Perl or (.....) is just Sooooooooooo gosh darn hard.
And then following one of the many tutorials for each of the respective languages is (again) Soooooooo gosh darn hard.
And then asking questions on the Internet (www bbs style, or USENET) is Sooooooooo gosh darn hard.
How can the human race survive given all this hardship? I think someone should build a BBS system and we can all pull our 300 baud modems out of the closet and we can collaborate on building a Time Machine so that we can go back in time and make sure that things stay Simple forever!
A possibility is using older computers that are still in existence out there. I got an old TI/994A when I was 9. My father got it for me as a gift, along with various books on BASIC. While I didn't get do things that were state of the art, it did give me a good idea of some of the basics I needed to learn. I don't know how easy it would be to find an old computer for this type of thing today, but it still seems like an idea of a birthday gift for a son or daughter.
In SOVIET RUSSIA, the computer programs YOU.
Python
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:
Do not teach kids how to program. They will grow up and take your job away from you.
VB is a great beginners language, and as no self-respecting hacker would ever be seen using it, microsoft might as well give it away free.
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.
How about setting up cygwin under Windows? A quick trip to www.cygwin.com and you can be programming away within minutes. Also, you wouldn't be limited to just BASIC. Just about any language you could think of is at your disposal with a cygwin setup.
Sum Ergo Cogito
Bah!
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.
Hand them a Knoppix CD and a book on Python.
Or let them get python for Windows, if you must.
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.
Kids today have more ways to create software but a bleaker programming future. How can they create any new software without risking a visit from a sleazebag with a patent?
Smalltalk, a good tool for kids to learn about computers.
;-)
And not just for them
...Just go get a Commodore Vic-20, 64, 128, Plus/4, 16, etc... (0o0o or an SX-64, I have one of them) and start pluggin' away at it. Simple. Gather up some 5.25" DD floppies, cassettes, or DD 3.5" floppies (If you find a 1581 drive) and have at it. There are pleany of programming support sites, and you can even hit the IRC for help.
-- Liberalism is a mental disorder.
The TI-86 was my first programming experience and it was definitely a plus to be able to see results with 1 or 2 minutes of coding. I wouldn't mind trying to use a console to program my own game. This guy has a really good point here. I wouldn't mind programming on a gamecube, sure you couldn't just all of the sudden use the 3d engine in a week but people would eventually approach it with confidence.
Could you somehow develop a sharing network for console-created programs? So people can debug their or others' programs, and look at useful code that has been (for lack of a better description) GPLed? I don't neccessarily mean a network IN the console, just a dev network.
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
Yes, MS is devoid of programming, but Open Source solutions, such as Linux and BSD, have solutions right out of the box. True, gcc is there, but the place where the kiddies can start is simple shell scripting. Perl and Python can be used later.
I don't think that the real problem is with the lack of tools, but with a lack of motivation. When I had my VIC-20 in 1981, I had to write BASIC programs because there was little else to do with it.
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
Covered on slashdot here:
Robocode Rumble: Tips From the Champs
And here:
Learning Java Through Violence
Wax on, wax off baby!
Developers! Developers! Developers! Developers!
Just because MS doesn't come with a language doesn't mean there are no languages available. I'd say start the young tykes off with Tcl/Tk or Python to learn the basics and go from there.
I remember growing up with my PC & GW-Basic book in hand learning how to code. I also remember being stigmatized by it as well (Poor documentation, poor interpreter). If anything, I believe there is a lot greater opportunity for kids to learn to code on their own, by using many of the OSS languages out there. The languages are free, the IDE's are free, all it really takes is getting the word out about them.
If so, we don't need to worry at all!
Well, assuming they can find qbasic.exe somewhere.
I'm on a road shaped like a figure eight; I'm going nowhere but I'm guaranteed to be late.
It's a complete development environment, allows the kid to learn object oriented programming without the kruft of something like C++. And it is actually used in the real world.
The difference between Canada and the USA is that in Canada healthcare is a right and gun ownership is a privilege.
Download the Java SDK and work through the tutorials. For more depth go to a local half priced bookstore. The manuals may not be the latest and greatest but is concepts that need to be learned and they will cover that.
When I was young I learned vi - it was crappy - and I knew it. It's still crappy, in fact - but, by gum, that's the way software ought to be written. Damned spoiled kids and their XBoxes.
Every computer should ship with Python installed.
Can't imagine a better language to start learning with. And the interactive mode is GREAT for novices.
I knew a guy who planned to teach his kid to count in hex before teaching him base 10. That, and he was going to give the kid instructions in x86 assembly.
Kid:Can I have some candy?
Dad: xor ax,ax
Kid:But Dad...
Dad: mov corner,you
Excel (indeed the whole Office suite), and OO.o has macro capability. While some may deride 'macro programming' as not 'real' programming, it presents some of the same concepts and thought processes as building something in (choose your favorite language).
Learning to design, code, test, deploy these can indeed teach kids the base concepts for programming.
er, hello? Windows does still come with QBASIC. Go to run, type QBASIC... or CMD->DEBUG ;)
There's a huge difference between these two. Knowing a programming language doesn't inherit that you are able to design applications. I've seen so much spaghetti code in my life, I'm really glad that development (or the ability to feed custom lines of code into your computer) became so "hard".
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.
Every problem has a solution, but every solution creates new problems.
Windows comes with Notepad and IE. Little Coders have access to JavaScript; something that can run circles around the BASIC of old.
Slashdot monitor for your Mozilla sidebar or Active Desktop.
People who have the drive to learn a programming language most likely aren't hurting for places to do so. It's relatively easy to get a shell account on a box anywhere with gcc/g++ access, and that is plenty -- i learned my first languages through MUD coding in the mid 90's post-dos/BASIC era, and had no problems -- i got a copy of codewarrior and had a linux box...that was all i needed to learn C, C++, Java, PERL.
I don't think that BASIC is any easier to grasp for most people than C is -- I find many things about BASIC to this day to be entirely more confusing than in C, and i doubt that the lack of a built in compiler in windows is causing people to not be able to learn programming languages.
Windows has VBScript and JScript. You can easily download the .NET SDK and dev in any of the .NET languages (sans gui ide).
That being said though, there are literally hundreds of languages out there that have open source implementations. If someone, even a newbie, can't figure out how to download and extract one of them, even before knowing anything about coding, is this really the sort of person we'd want to have in our stable as a future developer?
Quite honestly, these days, I see the problem being too many choices. Back in the day, you had basic, and perhaps logo, if you horked a copy from your school. I went balls out and learned 6502 assembler at age 12, but that's just me. Nowadays, those crazy kids have many, MANY choices about what to program in, and likely little to no guidance as to what to get STARTED in.
The truth about Scientology, Xenu, and you: Operation Clambake
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.
I personally started with writing simple (and then increasingly not-so-simple) batch files. Also, windows now comes with Windows Script Host (WSH) and anyone can start writing small JavaScript programs.
There's plenty of readily available scripting languages to get your feet wet.
by my brain says Python.
And the real fact of the matter is kids in the 80s got more involved with computers cracking games than they ever did "programming"
Yo ho, yo ho -- a Pirate's life for me...
This
...like Python, PHP.
In the 20 years since the 80's, lots of new computer languages have emerged that are good for beginners. Get kids started on a simple scripting language that requires no compilation/linking and hides some of the complexity of variable declaration, etc. from them at first. When they get the hang of it, move them on to more robust languages like C/C++.
There are tons of great learning languages and computers are much more available than 20 years ago. I say that it's a great time to learn to program!
Sure, I can fire up an Apple II emulator and give those games to my kids today, but can blocky graphics and minimal sounds really sustain their interest in this day and age? And yet there's nothing equivalent to those games today... at least not that I know of.
Back then, we just had the beginning of the the "Bounty of RMS", GNU tools...most Unix flavours didn't come with a compiler, or basic office tools, each of which was an expensive add-in. To get a fully configured system would cost you upwards to $5,000 or more just for the software to give you the functionality of the average Open Source Distro of your choice today.
Windows is now like the Unix World was then...but, we have wonderful tools like Cygwin (www.cygwin.org) which can give you a Unix like environment on top of a Windows kernel. And many GNU tools are directly ported to Windows...so there is no excuse not to snarf them and learn...and tip your hat to Richard Stallman.
ttyl
Farrell
CAN-CON 2019 - Ottawa's only book oriented Science Fiction Convention! October 18-20, Sheraton Hotel, Ottawa, Canada h
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.
Javascript is included with all major browsers, and it comes preinstalled with Windows. That's all you need to begin programming.
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.
After all , that was a simple yet powerful language for children losely based on LISP.
15 years ago it was all the rage , now it seems to have disappeared off the map. ANyone know why?
My son has taught himself to program, with only a little guidance from me for learning how to analyze and break a problem into parts, by writing his own text adventure games using a programming language called Inform . This has worked very well - it allows him to express his creativity in the development of a scenario that requires following explicit rules to succeed, and to develop his programming skills in learning to express an algorithm that follows those rules he's created. The Inform community tends to freely share the text adventures they've written - you know a developing programmer is motivated when he spends time pouring over someone else's not-always-well documented source code.
I think they have it wrong, when I started with Basic I didn't have Google, heck I didn't even had a modem, all I had was a help file. I learned to programm anyhow.
Kids these days that want to code can just fire up www.google.com and type, programming tutorial.
And what about the Robotic Invetion kit of Lego, I got mine waiting for the day I have kids, because is has a simple to understead programming language.
I think kids these day have it easier, they can ask questions to people that are in the know, instead of asking mom or dad. ( Ofcourse, I think most of the slashdot crowd would jump for joy if they had a kid that would come to them and asked to learn C )
Mod parent up! Not only does Squeak have a nice set of active multimedia components, and not only is it cross-platform, but Smalltalk (of which Squeak is an implementation) is a very underappreciated language, far ahead of its time. More young people learning it could only lead to great things.
Cantankerous old coot since 1957.
By the time linux is commonly found on little coders computers, Gambas should be a nice solution as a visual, free basic.
Struggling to find a day everyone can make? WhenShallWe.com
I remember first learning how to program with BASIC on a commodore 64. Back then, it seems that the environment one was presented with (may it be Apple II, commodore 64/128, amiga, etc) was more conducive to kids learning how to code simple things on their own. You got frustrated with the limited immediate options and began to make things on your own. Nowadays, most kids first start using some shiny colorful OS (think winxp) and when bored can simply start surfing the web for stuff to do. Makes kids much less likely to seek out a rendition of Basic and code away.
is my calculator (ti89). I mostly write assembly but you can use gcc. (done with a cross compiler and cross assembler on the pc) And there is a native basic language. Basic on the Pc was also fun.
Okay, then, children of the modern age (where we live in a world so tied together with wires that Pangaea ain't goin' nowhere!), you tell me if this is a predicament or not.
In the 1980s, you could look up from your Commodore 64, hours after purchasing it, with a glossy feeling of empowerment, achieved by the pattern of notes spewing from the speaker grille in an endless loop. You were part of the movement to help machines sing! You were a programmer! The Atari 800 people had BASIC. They know what I'm talking about. And the TI-994A guys don't need to say a word, because the TI could say it for them!
The old machines don't compare to the desktops of today, or to the consoles of today. But, sadly, current versions of Windows have no immediately accessible programming languages. And what's a kid going to do with Visual Basic? Build a modal dialog? Forget coding for XBox. Requires registration in the XBox Developer Program. Otherwise, you gotta crack the sucker open. GameCube? GameBoy? Playstation 2?
Coding Just Isn't Accessible
Yes, there are burgeoning free SDKs for many of these platforms. But they are obscure and most children have no means of actually deploying or executing the code on their own hardware! This is obvious to us all and likely doesn't seem such a big deal. But ask yourself what might have happened had you not had access to a programming language on an Atari 800 or a Commodore. You tell me if this is a predicament.
It turns out, most of the kids in my neighborhood are exposed to coding through the TI calculator. A handful of languages are available on the TI and its processor is interesting enough to evoke some curiousity. But this hasn't spread to its PDA big brothers, where young people could have more exposure to programming. And undoubtedly the utility of a language on the Palm, Pocket PC and others would be useful to many.
So what's the problem here? We have no shortage of new languages, but they become increasingly distanced from the populace. Are the companies behind these platforms weary of placing the power of a programming language in the hands of users? Is there not a demand any longer? It's got to be some kind of greed, power, money thing, right?
Perhaps this is just another reason to push Linux and BSD on consumer systems. Still, are scripting languages easily accessible to beginners on those systems? OSX has made several scripting languages available (including Ruby and Python), but most users are unaware of their presence.
I should mention that Windows is equipped with its own scripting host for developing in JScript and VBScript. But the use of the scripting host is (I believe) under-documented and limited for beginners. Try doing something useful in a script without using Server.CreateObject. Let's not let kids touch the COM objects, please!
The Christmas List
I'm thinking a toy language for consoles and desktops alike could be monumental. I'm not saying it needs to be cross-platform. A language for GameCube that took advantage of platform-specific features could be more appealing to GameCube users than a language that used a reduced featureset, but could execute on a handheld. Really, we live in a world where both choices should be available.
As for essential features:
1. Transportable code.
I disagree with the slant of this article - to make a smurf-programming language just for kids. If anything, programming today is far more accessible than it was on my old Kaypro. Give kids the opportunity to experiment and teach them how to learn - the rest will take care of itself.
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.
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, perhaps combined with NQC, 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!
Reality or nothing.
Ummm Java?
Language = Download JSDK. Free as in beer!
IDE = Download Eclipse. Free and in beer and speech.
Problem solved.
Although it's not a programming language, I've found that most of the kids getting into programming these days started by making web pages in HTML. As they wanted to do more on the web, they opened up to scripting languages, like JavaScript, VBScript, ASP, PHP, etc. That eventually led them to CGI scripting or writing Java Applets and it has progressed from there.
Most hardcore types probably cringe at the thought, but web development is really the catalyst into getting many kids interested in programming.
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
All the people that I know that got started with programming on their own did so with QBasic, which came on windows 95 (the new operating system when I was 12). They couldn't get enough of their computer, and searched through it until they found the QBasic IDE and accompanying sample game programs.
;) If an educational version of VB had been on my first computer, I never would have gotten off of it.
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?
So what do kids have today? Well count current desktops out of the question. I'm sorry, but there's no way in hell a child will stumble onto his dad's development box and start messing around in C or Java or whatever (and if he's rich, .NET stuff). Just won't happen. Sure, there might be a prodigy here or there that can somehow pick it up, but in general I wouldn't count on it.
The one area I see kids tinkering around a lot these days is calculators. Some of my friends are teachers, and it's amazing what some of these kids are doing with TI-series calculators. Shit, I couldn't BELIEVE how cool it was the first time I played Tetris on my TI-81 (or 85, can't remember)! All you need to learn is some BASIC stuff and you're set. Granted we probably won't see the next Apache-replacement written on one of these, but you never know ;)
"Hell hath no fury like a woman scorned for SEGA. ..."
I likewise grew up on AppleII Basic and C64 Basic (which led to Turbo Pascal, Turbo C, and x86 Assembler in high school, and more stuff in college and work).
From what I can tell, little coders today grow up on HTML (+Javascript). And some people I know learn coding via MUDs or Visual Basic (it's not *that* expensive that you can't ask your parents for it.)
If I were a kid, I'd probably try downloading a Java JDK and messing around, but maybe that's just me.
--LP (not a Java programmer)
I found I learnt a lot by doing Javascript with HTML. HTML forms make a GUI that's fast and easy to write, less confusing than MS's MFC anyway. You learn a bit about OO as well, considering elements within an HTML page can be accessed as objects. Drawbacks, I think most variables in JS have global scope, and there's not a lot of multimedia (images/sounds) hacks that can be done, if at all.
What time is it/will be over there? Check with my iPhone app!
Installing Perl's as simple as downloading the msi from Activestate and double clicking it, and then clicking the standard 'yep, install me' stuff. I assume that Python and stuff is that easy on windows too (I've never had to install it on Win32)
Perl comes with lots of documentation, and it's as simple as writting a program and typing 'perl program_name' to run it. This is important as a kid - quick feedback. Something that's hard with languages like C and Java...and most importantly you don't need things main procedures and other fluff.
Of course, many people are going to suggest that even Perl's too complicated and contains too many punctuation marks for a beginner. I'd suggest then that they install the template toolkit with ppm (one command from the command line.) Then they can use that little programming langauges to make web pages really easily. Kids want to create things worthwhile (not just learn programming to print "hello world",) and learning how to create web pages with the Template Toolkit's a great way to get started.
Right, let the "I hate Perl, it ate my hampster" trolling begin.
-- Sorry, I can't think of anything funny to say here.
'nuff said
I always thought Javascript/DHTML would be a great tutorial language for multiple reasons...
1) You don't get all the same structures (queues, linked lists) to work with, but you do get the basics
2) Java is bloody simple...every class name is like written english, so they're very easy to remember
3) Good mix of functional/OOP
4) Easy to see GUI results with DHTML...loading graphics is as easy as
img = new Image();
img.src = "filename.jpg";
5) It's already threadsafe since it's running under the IE/Netscape JVM
Just my $.02, but when I get bored at work I tend to write stupid little games (tetris, boxxle) in JS.
--trb
It comes with Windows NT.
a mm ing/Languages/BASIC/?tc=1
C:\> qbasic
http://www.qbasic.com/
So, are any ports available for Linux? Sure.
http://directory.google.com/Top/Computers/Progr
Search for Linux on the page.
Just today I was a full version of Delphi 7 personal addition on the cover of a magazine.
I have copies of CBuilder, Delphi, Visual Prologue, Lisp, a variety of java development tools all from magazines purchased in the last three years.
Failing that download the JDK, DJGPP, MigWin, Linux etc.....
thank God the internet isn't a human right.
I think that the tools are available for all platforms that the technically minded kids will be able to get a taste of. In many ways it is more straight forward now. As the internet becomes a greater part of out lives, access to information and support becomes easier. Ok there is a bigger jungle out there (rather than the tangle of backyard over growth that was available in the 1980s), many more programming languages, many more potentials to find yourself out of your depth, but there is also much more documentation of other peoples experience.
I would give them Java.
1) Its free.
2) It is Object Oriented but you can ignore that if you just write things in a functional manner in one object.
3) With the available libraries you can do lots of things that a beginning programmer would like. Graphics, Sound, Text.
Sure, they aren't going to start off writing GUIs, but if they get interested they can figure stuff out pretty fast.
42 - So long and thanks for all the fish.
that's built-in. Of course, it's scripted and not a compiled language, but that ought to be enough to get the young coders started with building new VBS viruses/worms to infect the world with
Neverwinter Nights comes with a toolset that includes a compiler for a C-like scripting language. A beginning programmer can write simple programs to create monsters, make them do things, cast magic spells, etc. It's got to be the most fun way to learn programming I've ever seen.
...and a couple of books (there are nice ones you can download for free, like "How to think like a CS in Python").
And it is cross platform, so you don't have to worry what OS the kid uses.
The second step is probably to show him linux, and soon he'll discover dozens of FREE languages and tools by himself.
If he is interested, that is. If he is not, why bother? ^_____-
Ciao, Renato
Of course, it's a language that's installable into the user... Samples of this language:
;-)
Oh shit!
no, No, NO, NOOOOOOOOOOOOOO!!!!!!
FUCKING Blue Screens!
etc. etc. etc.
It was a joke! When you give me that look it was a joke.
Most scripting languages are freely available on any platform. I think it may be a good starting point to learn programming: programming process quite simple, no (or few) prequisites and now you can do anything by scripting (Cf. perl).
PS: I don't mean that's easy to write scripts, I think good script writers are rare, but I think it's apropriate as a astarting point.
Just as every computer in the good ol days came with a built in programming language (O, the sweet sweet syntax of basic) nowadays every pc can download this program called "Kazaa". There are also these things called "CD burners". If a kid wants to learn to program he can quite easilly download visual c++ and buy a beginners book.
;)
While in the old days programming was simpler, there also wasn't this thing we call the internet. Before if you were in a slump and you didn't know anybody, you were screwed. Although the plus point of that is that you leart a lot more a lot quicker. These days if you have a problem you can just look up an answer on the net. While the starting level for someone learning to program is higher, he gets a lot more help then we "elder" people used to.
After learning the basic linux/bsd can be downloaded for free and installed. That's when the real fun can begin
Programming a robot adds a physical element to the experience. Your program really makes something happen. It's like LOGO with a real turtle.
In the simplest case, you build programs by snapping together pictures of bricks on the screen. It teaches the concepts of programming (loops, conditionals, etc) without requiring typing or syntax.
Eventually, the same thing that has happened, largely, to HTML will happen to all other programming languages--which is to say that eventually all code will be machine written. We are rapdily reaching, and many of us would agree, I'm sure, that we have long since passed, the point where teams of human coders are efficient enough to maintain the vast expanses of code that comprise most modern applications and operating systems.
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.
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
Here it is.
;)))
It's not the best but it is something
Looking for people to chat about multicopters, coding, music. skype: gtsiros
Well, the simplicity of those days won't be coming around again, but hey - you don't have to program on a Desktop PC. :)
Get them Lego Brainstorm (I think that's it called) and they gonna have tons of fun and afaik a programming language of acceptable difficulty
When they are older they'll probably use the programming language of their choice and learn that programming means more than a few hundred lines of code - it also means structure (no spagetti-code), style (goto = evil) etc.
+++ MELON MELON MELON +++ Out of Cheese Error +++ redo from start +++
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
Install Linux.
What is this, a slow news day? Come on, folks.
"Population 1,656"
Duh, I was one of those BASIC (and LOGO and 8 bit assembly, etc) kids of the 80's. I didn't go into CS ('real' Architecture got me!) so I never built any heavy-duty coding 'muscles'. Today, when I need to scratch a programming itch, I use Applescript. It isn't all powerful, but it does most of what I need to do. Besides, when you buy a kid a Mac, you buy a kid ROOT!
Download, install, and run. Read the tutorials on Sun's site.
If a kid can't do that, then programming isn't for them.
Computers used to be pretty "elementary" compared with now. You just sat down in front of it and typed stuff in, the "end" of full understanding was in sight. Now with the sheer vastness of the system, nobody knows where to even begin.
Another major influence has been that programmers have changed. Almost all programmers are autistic today, and bend the programming experience to their mindset, including learn-to-program books which are incomprehensible to neurotypicals. The lower-barrier-to-entry and lower rates of autism back in the 80s meant a good many programmers were not on the autistic spectrum.
(psst, the reason why so many programmers have glasses is because autistic-spectrum disordered people have difficult metabolising dietary minerals and heavy metals correctly, this damages your eyesight)
...that Windows only comes with VBScript and JScript. The languages are secondary to the ability to program well.
Something my professors have always stressed to me is "The right tool for the right job." It's a good thing that we now have a choice in which languages we can use. But what hasn't changed much is good programming practices.
Teach a kid how to be a good coder and he/she will be able to figure out for themself what language(s) they like and dislike. Much better than forcing specific languages on them (i.e. MS shipping VS.Net with Windows).
They will be able to google a plethera of resources specific to the given task at hand and recommendations on the best approach.
In C++, friends can touch each others private parts.
Then I got to the university, and entered the CS department along with every other stinkin' 80's child who did the same thing. Now a CS degree = cheap labor.
I guess the moral of the story is, just leave more tutus and stethoscopes lying around.
I know on the DOS platform, which still works on WinXP you can get ASIC Basic and BW-BASIC.
If you have MS-Word installed you can use VBA.
You can also use wxBasic to create programs on Windows and Linux machines.
You say things that offend me and I can deal with it. Can you?
"Learning to program in the 80's was simpler because the machines were more limited, and generally came with BASIC"
Wrong.
Now you have Visual Basic, which is infinately superior to the Basics on the BBC, Spectrum etc. You have MSDN (with its library of complete and partial books) and/or Usenet, and a multitude of sites with archived help, or interactive forums.
Or you could go straight to C/C++, or Lisp or whatever. If you have it in you to code, you will.
It's available for free for most platfoms.
Macs come with Java and GCC. They also come with Project Builder which is an excellent IDE for building Macintosh applications, Java applications, and Unix CLI tools.
These tools are also available as a free download as part of the Developer Tools.
mbbac
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
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.
Mother is the best bet and don't let Satan draw you too fast.
It's beyond most young hackers today to download the JDK.
7 November 2006: The day Americans realized corruption and incompetence weren't addressing 11 September 2001
This is exactly why linux is huge. Its the :)
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 which is also free (GPL) for linux. Ahh those Apple II logo days
-bloo
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.
My 7 year old's mail client is pine on my FreeBSD box!
if only it would support sprites (or at least usefull image manipulation possibilities).
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)
This type of platform is small enough to wrap your hands around it ;-) and learn the whole API, quarks and all. It is even more personal because you can take it with you anywhere, try that with a S100 system. It also has a real cool factor because you can show-off and share your work so easily.
Trick them into it. Get them hooked on the pretty aqua interface and Mac ease of use goodness. And then, when they come home one day and ask about loops, conditionals, and arrays, launch the terminal.
At age nine is started messing around with QBASIC. Windows 3.1 had just come out and wasn't yet ubiquitous. I became quite proficient with BASIC, eventually, but by the time I had, the GUI extravaganza had begun. I was downloading and playing games for which I hadn't the slightest clue how a programmer might begin to implement such things. At some point, faced with the prospect of not being able to accomplish anything 'useful' with QBASIC, I stopped programming altogether.
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.
Build and program robots. Cool
The people saying "just use Linux/FreeBSD/OtherOSS" are missing the point..
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 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.
The answer is Linux!
Make sure to impress on the children that SCO is bad at an early age too!
Conformity is the jailer of freedom and enemy of growth. -JFK
Actually the problem is probably too many installed languages.
"God fights on the side with the best artillery." - Napoleon, Marshal of France - speaking truth to power
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?"
No programming language at all is already an improvement over BASIC.
Admit nothing, deny everything and make counter-accusations.
Yes, you won't have to fool around with that all-important second/third mouse button, and you'll get free development tools to boot!
My other sig is extremely clever...
Windows does so come with built-in programming utilities. Windows Scripting Host. And the idiot who said "Server.CreateObject"....try using "CreateObject" instead. There is a lot that you can do with WSH. For those of you that mock the GUIs you get when using WSH, make the GUI HTML. Give the kids some credit. You people could learn a thing or two from them.
To the people who are talking about QBasic, get a life.
Fortunately I have (long) since discovered Pascal and Delphi. I don't know what Edsgar would have thought, but my modal average function length is 5 lines (header/begin/code/end/whitespace - begin/end = '{'/'}' to you C and Java types.) I don't wish to start a language war - in fact I will even go so far as to admit that both C++ and Java are more 'powerful' than Object Pascal - but the sheer readability and simplicity of Delphi code is very pleasant. Sorry for the sidetrack!
Macs come not only with a developer CD full of Apple's really nice dev software, but also with the full array of standard UNIX tools and compilers. On a Mac, a kid can learn any damn language he wants (anything for which there is a UNIX compiler/interpreter), and compile it (for no more $$ than the cost of the OS/computer) in any of a handful of compilers. Or you can use the (also comes-with-OS) AppleScript if compilers are too scary for you.
If you hate Macs, you can learn JavaScript with any web browser on any platform. I first learned "programming" with HyperTalk in HyperCard, which is somewhat comparable to JavaScript.
If that doesn't make you happy enough, you can buy a TI calculator and do some crazy stuff which is very much on the level of 80s-era hacking.
In fact, now that I've listed all these options (an incomplete list to be sure), I start to wonder what the question asker was missing in the first place? There are TONS of free options for little programmers, not to mention the fact that you can always just buy a compiler.
OMG.
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
I think that some people are now starting out coding/scripting game modules. You can start out doing Neverwinter Nights modules with little programming knowledge and improve your modules with their builtin programming language (looks like C to me). I bet other games have similar languages...
:+)
I for one started writing text adventures on my TI-82.
If you have to use Windows:
Cygwin + wxWindows. Cygwin gives you the C/C++ compiler, wxWindows gives you the cross platform GUI with Windows decorations.
If you have a choice of computers, go with Apple. The developer tools are included, and Objective-C can be a joy to work with.
The middle mind speaks!
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
Correct me if I'm wrong, but isn't the whole point of OSS, FSF, etc., to provide FREE software?
http://www.gnu.org/directory/devel/
Plus, you could always get Perl or Java.
I don't think there's a problem. Everyone I know who wants to learn to program starts with the freebie stuff available on the 'Net.
"You cannot find out which view is the right one by science in the ordinary sense." - C.S. Lewis on Intelligent Design
Eventhough BASIC has its problems when it comes to relating it to modern OO languages, it's still a great introduction for younger people into thinking like a computer. Making a computer solving a simple math problem line by line in detail is very good training for a young programmer. No matter how Object-Oriented you make a C++ program, there is always going to be that underlying simple, procedural code. BASIC teaches you how to be procedural in your design of simple algorithms. After mastering BASIC, you can then move on to more advance laguages and topics such as functions and whatnot. But, all in all, BASIC is still great for young programmers.
Totally Life!
ALL replies
IMHO, I think that kids who want to program will learn to program. I mean, the kids who learned everything about their computer 10 years ago didn't do it because the tools were there. The computer was something that interested them and they soaked up all they could when they could. The same is still true.
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
It is human nature to take shortcuts in thinking.
I think the folks at REAL Software will provide an educational discount to anyone who provides proof of academic status... academic prices start at $69.95 US. They even offer a complete "Intro to Programming" curriculum with lesson plans and examples available for a free download from their web site.
Enjoy.
When he turned 13, I gave him an old 486, a manual on BASIC, and told him how to find it on the windows directory. Didn't do anything else other than type up a few lines of simple code. Natural curiosity took over. Soon he was writing complicated and lengthy RPGs, similar to what came out in the '80s. Next summer I gave him an old C++ book some visual basic stuff, and some disks. The next summer Java. And now he is going to be applying to a college that offers computer science in the fall. He codes in his sleep now. Oh, this summer's project is to take some boxes, some Linux disks, and make a web server, firewall, and Linux server.
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.
Kids today can't build anything either. Pretty much all most of the population can do right now on a computer is instant-message and mutilate the English language beyond recognition. Best thing to do for a kid who wants to program is give him a C compiler, a lot of good links, and a lot of good books.
Also, Apple used to have a kid-friendly programming language, "Cocoa" (No relation to Objective C). There are still a few people using it. Too bad they discontinued HyperCard, most of its little scripting behind-the-scenes was pretty involved if you wanted to get into it.
I started programming back in 7th grade... 1985 if I recall right.
I stared with GW Basic and the big honkin' book that came with DOS 3.3. Man, that was a great book. But I digress.
I knew GW Basic was pretty terrible, and eventually went on and two years later we had a screamin' fast 2400 baud modem. I downloaded a compiled basic called ASIC, but what really did it for me was PCC - the Personal C Compiler (God Bless you, Mark Desmet). Not exactly ANSI C but there wasn't exactly a clear ANSI standard at that time either.
Anyways, just because you can't fire up GW Basic on today's PCs doesn't mean you're out of luck. With easy access to the internet, any kid who wants to learn, can learn. Heck, you can still find copies of PCC out on the web (search for pcc12d.zip).
The problem was not the access to the tools, it was the access to *information*. I downloaded C tutorials off the local BBS, etc etc, but it can't compare to the vast amounts of info thats out on the web today. I look out there on the web and say "Damn, I wish I had this when I was just starting to program" now and again.
It's kind of a double-edged sword. I was enthralled with the idea of writing a virus. At that age I really lacked the talent to do so. By the time I got to college, I'd matured enough to, well, not write one. If I was 15 years old today, I'd have had a field day.
Where do you think all the variations of the I Love You virus etc come from?
Kids.
Well, kids and adults who can't get laid.
Alice uses Python for its programming language.
Wasn't it designed to teach?
With some Tk in the mix there as well..
And Java is a free download. Heck, if you're programming you're such a nerd you have broadband as well..
And then there's of course javascript. And actionscript (so, kids pirate flash, so big deal.. )
It's all just a download away.. Really, I don't see the big deal. Just because BASIC isn't in ROM anymore doesn't mean you can't get started programming on Windows.
SCO employee? Check out the bounty
As a mac user, I feel compelled to bring up Cocoa-- which comes free (or close to free) with any MacOSX package. It's got very little learning curve, there's a strong visual programming element to it (although, if need be, you can replace most of that with setAction:/setTarget: messages.)
Anychance you can point us at the source or a PAR archive?
-- Sorry, I can't think of anything funny to say here.
python.org
My first encounter with python recreated the same joy I had when I first learned Pascal. That was the first time I wrote code that looked beautiful (previous languages were Basic and Z80).
Since Pascal it's been C, perl, and more and more time spent on debugging than writing.
With python, code just flies out of fingers!
If you want to teach them the basics of C/C++ on a windows machine Borland has released a free compiler a couple months ago. It's a little buggy but gets the job done. Once they have a good grasp on C/C++ you can let them get GUI because the same compiler works for Win32 programs.
I've used it myself to learn Windows programming. (Yes you CAN get the Win32 API calls for free online.)
I know VB is not the way to go for serious programming, but neither is basic. And you know what will turn off kids or even hardware enthusiasts that wannabe programmers most? Typing in a hello world program in C or C++ or whatever, and having it output in a fugly console window. There is no sense of accomplishment in that. Back in 1980, that was pretty cool. in 1990, that was acceptable. But if you want to ignite a spark in someone, that is not going to cut it today. There are free "Student" versions of VB that MS gives away, that doesnt allow you to make a .exe out of your program, you can just compile/run it on the fly from within the program. And if someone really wants to make an .exe out of it, they can acquire VS (acquire being a nice generic term). Playing with the gui window designer, and then putting code behind those buttons and text boxes will make the aspiring programmer feel like he is doing something cool, and then hopefully send him onto bigger and better things, and eventually different languages platfroms. typing gcc helloworld.cpp -o helloworld, and then having it print out "hello world" in a console box is NOT going to cut it. The goal is not to start out making them serious developers, the goal is to get them interested in programming so they want to become serious developers, and MS/VB perform that function well. You can write many cool applications in VB without alot of effort.
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.
Kids don't want to program any more because there already are programs to do most of the things kids want to do.
That's the difference not a lack of tools. Let's face it there's loads of tools out there (GCC, Delphi, FreePascal, VB.NET, C#.NET etc. etc.) that you can get for free. And when we were all programming C64/Speccie/Beeb we had to be pretty damn resourceful. It was much harder to start with those machines than to start with a modern PC.
As a geek who finds the windows API clunky, anti-intuitive, and boring, I can understand why a kid growing up with a windows box would be daunted by computer programming. BASIC was important. I can trace my obsession with computers back to the moment I hit CTRL-BREAK to halt Oregon Trail on a TRS-80. What? I can control this thing? Hey, I can read this language, it makes sense to me, even though I'm only ten. Maybe at an age where I'm still ravenously curious and have no sense of my limitations, I can use this tool to express myself! (...cut to: ten-year-old today, reading the hex code of a windows blue screen.)
All computers should ship with LOGO. Write your congressman.
There are a couple of good programming games out there based on Java. The ones that come to mind are CodeRally and RoboCode both available from IBM's AlphaWorks. I'm currently teaching a friends eight year old to program using Java, and with a little discipline it seems a pretty good language to learn on.
:-)
Of course, the fact that the learning turns out to be controlling robot tanks or rally cars can't hurt any
The gift of death metal does not smile on the good looking.
QBASIC can be downloaded from Microsoft as part of the old DOS utilities package.
If you don't want to repeat the past, stop living in it.
There is absolutely zero motivation to revert systems back to their 80s state, so stop whining about it.
Curl provides access to a rich 2/3-D graphics engine, excellent "interactivity" with HTML and multimedia support is built-in. It can be as OO as you want. It had the potential to be a great "first" language for coders.
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...
since there was little budget for big iron we did lots with Linux (web pages, mail server, ftp server, dhcp, even a commercial student database called Schoolmaster) and the Library teacher told me about a young kid (then in the 7th grade) whose family couldn't get him a computer of his own. I took a 486/120 and installed Linux with no gui on it and we allowed kids to check it out like a library book. I included just the basics to get on... how to login, how to use Lynx, where to find more information, the "man" pages, etc.
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.
No one ever had to evacuate a city because the solar panels broke!
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.
Back in school (84) we learnt Basic on Commadore Pets. We were taught that if you wanted to calculate finances for your business, you wrote a Basic program to do it. There was no real word processors, spreadsheets, database apps that were used. Kids could either write code, or play games.
Nowerdays theres a lot of creative stuff to do with computers, learning how to use the web, office software, graphics applications etc. Lots of these skills are more useful for a broad career path than coding.
As for asperint neards, it's harder to get into coding, the Beginners guides tend to be 1000+ pages, and the size of the API and class libraries is daunting.
I would recommend HTML -> JavaScript -> ASP / JSP -> Java / VB / C# as a good route. Start with something simple and visual, then increace the complexity. Having a grasp of Java or C# will be a plus for further studies.
(But then again, my dad said spelling and handwriting would be a plus, as when I got a job, the company I worked for may not have a computer...)
Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated up.
There is the Alice project at http://www.alice.org Its goal is to help teach children programming methodology (problem solving using a language, versus just teaching the syntax of a language).
From the site "The focus of the Alice project is now to provide the best possible first exposure to programming for students ranging from middle schoolers to college students"
It's free (binary and source), but runs only under MS-Windows (uses Direct-X).
Accentuate the positive, don't waste your mod points on the negative.
>> Now we have Windows, which typically comes with no built-in programming language. What can be done to improve the situation?"
A Knoppix CD is all that it takes to get a running Linux system with a myriad of programming languages. Learning the languages and using them is a totally different story.
I think that the first that a kid should get is an entry book about general programming. The language should be something simple - Pascal for example - it teaches good structured way of programming. It should definitely not be C, especially not the the K&R C which I do not know HOW some people consider to be a learning language.
Later when the kid becomes eager to try writing a program, it should get access to a computer with a ready IDE of some kind - not a command line compiler with cryptic options.
I still remember the Turbo Pascal ver 1.0 that I was using as a kid, it was just SIMPLE. Write the program, compile and run it, all in the same place. The v3.0 was even better, just heaven to program in. The version 5.5 led me to the wonderful world of object-oriented programming and so on.
Later I had my first contact with C (TurboC) and I was surprised how could one such so unconsistent and cryptic language not even exist but also to be one of the most popular languages (the reason was Unix, as I learned later). At this time I was freely writing in 6502 and 8086 Assembler, Basic and Pascal, all of which I had learned first on paper and then tried on the PC with an IDE of some kind - mostly the Turbo series from Borland.
I can't believe none of you have even thought to mention Karel the Robot.
Learning how to program is completely orthogonal to learning how to use a specific language or platform. What's needed is not teaching a specific skill set, that will be obsolete in a year or two, but teaching the metaphor and process. Karel does that. (The first part of CMU's "intro" programming course used to use Karel).
Set up a stripped down Knoppix distro that writes Windoze files (like the full one does) and has a plethora of languages from which to choose. Set it up so it deals only with its own directory and keeps kids mostly away from the Windoze files for their own protection. If they figure out how to get out of the padded room they will probably be capable of not hurting anything.
....
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.
I'm not so sure that the lack of a BASIC-type language on Windows is such an issue... it's not like BASIC was all that good to start with.
Frankly, it's somewhat easier to learn the basics of programming now because there are far more languages that are easy to code in and they're far more accessible than they used to be. I started out (more or less) on a Northstar system... hell if I know what CPU it had, but it ran CP/M or another even more primative OS (don't know what it was, but I had a separate disk to boot up the BASIC interpreter, which could store to floppy as well... but it wasn't CP/M).
No, you're not going to leap directly into graphical programming. But you can download perl, python, scheme, or other similar languages that are pretty easy to learn and easy to toy with. They're also extensible so you can start doing graphical programming once you've gotten far enough along.
This is a lot better than having to go out and buy Turbo Pascal to have a decent language to code in and learn from, which is what I had to do (back on an XT clone).
Yeah, you have to know about it first, and there's a slightly higher barrier since you have to go out and download it rather than stumbling across it. But let's be honest - what are the odds of stumbling across it nowadays? We're not talking about 160K floppy disk with a few dozen files at most, but a 20-100GB HD with hundreds of directories and thousands of files. And it's not like you're going to magically stumble upon it in a manual... manual? What manual? That's funny just to think about (which is how I stumbled across BASIC on that Northstar system).
If you've every tried Borland C Builder, you know what I'm talking about. Just click-and-drag a edit box or directory tree onto the program window. The code you write has nothing to do with responing to WM_PAINT messages or similar Microsoftisms. You can learn to write elegant C++ and have programs that actually do something (it may take months of Pascal practice to create a bonafide useful program).
Please excuse my English. I am American.
If you had put an object oriented language on that C64 I would never have survived it. Have you looked at VB.NET? Opening that IDE is FRIGHTENING for an 8 year old. Not to mention it requires a good knowldge of the English language. No, we really need a --10 Print "Hello World"-- kinda thing. Nobody saia these kids need an all-singing-and-dancing GUI.
10 ?"Hello World" life was simple then
Game Maker URL: http://www.cs.uu.nl/people/markov/gmaker/
What can be done to improve the situation?
o rg
/. that are in the same boat as me.
Visit one or more of the following:
www.debian.org
www.slackware.org
www.freebsd.
Seriously. Though it's a small fry of a computer, i cut my programming teeth in the 80's on a commodore 16, then later a commodore plus/4. I had friends who had Atari800XLs, C= 64s, 128s and (oh gawd) TI 99 4/a and Trash-80 computers.
In those days, we didn't really have much of anything that was "prepackaged". Sure there were some programs or games that were available commercially. But when you're 10 years old, you didn't have the cash to go buy stuff yourself. We all banded together and rolled our own apps, and "ported" them from one machine to the next. This wasn't considered "geeky" persay, it was just standard computer fanfare. It was both borne of necessity, and simultaneously great fun.
By high school, i got bored of computers and went to other things (namely guitar and chicks) and i was completely oblivious to the whole 8 bit ---> 32 bit computer evolution. Years later I got nostalgic thinking of the old days and wanted to take up programming again, so i turned to computers again in 1997 and things were obviously quite different.
The first time i sat down in front of a 486 with Windows95 on it i was completely frightened!
I asked "How do you make it.. um... go?". The owner of the machine set the mouse in my hand and called me an idiot. I had NO concept of GUIs or mice or anything.
But as i learned Windows 95 i started to ask questions like "So how do i get a command line, so i can write my own programs?". I got answers like "you can't/ you don't need to/ it's all been taken care of by Microsoft".
I decided right then, that this will just not cut it. It was depressing. It was as if The Good Old Days Were Dead And Gone(tm).
To shorten things up though, once i discovered UNIX and GNU/Linux i jumped in and never looked back. Ever.
Aside from all the politics, craptastic performance, and general anti-MS hatred it boils down to this: For the things i use computers for, and want to do with computers, something like the Windows Operating System (and MacOS completely fucking useless. I'll wager that there are a great number of people here on
So even though you can get programming environments and whatnot for Windows or older MacOS's, i guess my point is that you'll still be extremely stifled on a closed up environment like that. You just can't beat an Open Source OS and GNU tools for programming.
I may not always agree with RMS and family's political views, but i absolutely love the man for some of the things he's mad happen.
In the UK the PS2 included (and may still include?) some form of BASIC. It lets you save your programs to a memory card and supports graphics and sounds. To me this brought back memories of programming my BBC back in the days before time began (1980s). Anyway this would probably be a good place to start since PS2s are so popular and all you need is a USB keyboard.
Everyone's saying "if there's an interest".. the idea is to make the interest.
I'm sure part of the reason we HAD the interest was because of the expense of software (no way a 5-10 year old kid was buying $100 pieces of software!), the scarcity of software (many programs just plain hadn't been thought of yet i'm sure), or a program you DID have didn't do what you WANTED it to. (I learned programming by fixing bugs and enhancing features..that's how I learn all new languages. Take a program that is flawed that is in that language, and fix it.)
We started programming because it was RIGHT THERE. It was the only way to interface to most machines! It was an EASY, INTERPRETED language, where the results came back INSTANTLY. We were all ADD children, as they all are now, too, so if we didn't get results after only a few lines of code, we would've gone outside and rode bikes or something instead.
I don't think it's possible to go back to that. The interfaces are too complex, the youngsters expect too much.
But, given my doubts that it's possible to go back, here's what I think would have to be done:
The way to interface with the machine is through the programming language (even if it is just direct commands, ala 'LOAD "boggle",8').
The manual for the machine gives BEGINNER'S INSTRUCTIONS TO the programming language.
The language itself is interpreted, and can get quick results in a few lines of code.
The language does not use excessive pieces of punctuation, and is designed in a fashion that is easy to grasp. Really, "PRINT" or "WRITE" make more sense to a n00b than "ECHO" does. Think about it. You start going to a Python, Rexx, JavaScript, something, you're going to send the person into punctuation mark heart failures.
"Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
the author has obviously never used a mac running OS X. we have all the tools built in, when u install the developer's toolkit you get a full set of stuff. hey, there's always been applescript too.
"You never want a serious crisis to go to waste." - Rahm Emanuel
It's fine to recommend something for kids to download and learn but... The biggest problem is that there is nothing there by default. Kids whose parents aren't geeks will not run across something on the machine and start messing with it like they did in the old days.
Hello, have you not heard of VB Script that ships with Windows and is a perfect replacement for Batch?
Python is easy to learn, Free, free, fast and portable, but most importantly it's interpreted.
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.
The US Army: promoting democracy through unquestioned obedience
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.
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. 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.
Easy, automatic testing for Perl.
Blame it on the GUI if you like, but most people don't buy computers so they can program anymore. All of the old computers mentioned in the article are from the days of the serious hobbyist. You either were a programmer or expected to learn how to program if you had one. While the limitations of old systems seem quaint, they actually created a barrier to most people using computers.
I don't think you can do any real programming without a year or more of Algebra - which puts most American students at 8th or 9th grade before they can write a real program. Prior to Algebra, I think kids can learn alot about creating systems through simulation type games- software like Oregon Trail that made you plan and estimate. 2D and 3D graphics programs that provide kids with open ended creativity would be helpful as well. Unfortunately, a lot of educational software for kids tends to be drill and kill.
I think that interactive shells like this are a fantastic way to teach programming especially for early beginners (i.e. junior/senior high school). C & C++ have a lot of low-level aspects to them (my understanding of C increased after studying architecture and low-level drivers in University), and they don't make for a great initial learning experience. Java is in a similar difficulty range as C++, and learning OO really early doesn't (IMHO) convey too many advantages - functional programming is a better way to start.
Like some previous posters, a scripting language might be a better way to start, especially if an interactive shell is available to help speed up learning.
-- "We are all in the gutter, but some of us are looking at the stars" [Oscar Wilde]
At Microsoft, we support the hopes and dreams of the world's youngsters. That is why we have chosen not to include useful programming languages with our Windows product line. We feel that children from all walks of life would benefit from working hard, saving like misers and purchasing an enterprise licence for the .Net Studio.
With great regard,
Rippen M. Anueone
Microsoft Sales Department
I have Visual Studio.NET, and while it does cost money, the compiler does not. You can just get a free IDE (ie SharpDevelop) and be on your way.
.NET isn't included with Windows now, but it should be with Longhorn.
I know
And I think it's a cute and handy little scripting language. Think of it as BASIC done better.
Although, all things considered, I would have preferred curly brackets. Slightly. It's not something I feel passionate about, but there it is.
http://www.angelfire.com/ca3/marlowe Better a smartass than a dumbass.
Go into managment then you get to fire coders.
Coding is the burger flipping of the 21st century. Only kids and losers (like me) do it.
Capitalism brought computers into the world and Capitalism ruined them.
It's Christmas everyday with BitTorrent.
10 print "hello"
20 goto 10
My advice would be to get dos installed and see where it all started (well almost started). It will teach some valuble lessons. then get something like pascal which is fairly easy to program. after playing around with that you will be ready to progress onto VB in windows
You may be on to something with the Palm.
When I was younger I tried just about everything to get my little brothers into coding. I tried teaching them BASIC, setting them up with Turbo C++ and my old C programming books, and getting them into graphics.
Neither of them seemed to be very interested.
The object that finally got one of my brothers interested in programming was his TI graphing calculator, with its built-in pseudo programming language.
I think he started off just wanting to learn how to write games on it, as an escape from boring high school lectures. But as time passed and he got a little better at it, he also began writing programs to help him with his math & science homework. Some might say that's small potatoes compared to "real" programming - but I think it was an extremely valuable learning experience for him. He understand the school material better because he was programming it into his calculator, and it got him genuinely interested in what he was doing. The transition from doing busywork to being fully engaged in learning should be the ultimate goal of any teacher.
The little handheld that he could take with him to school and play around with at his leisure was the catalyst.
These two come free with plain vanilla Windows although I wouldn't recommend them to beginners as Windows is too schizoid in it's implementation to make these intuitive. I would truly recommend any modern Unix flavour (with the exception of SCO) that has a host of languages on board by default. This enables the kids to pick the language they want, from shell scripts to C++.
- Freely available
- Often used to teach programming in educational facilities nowadays
- Has all of the graphical stuff that kids would like
Cons:- Too hard... OOP is too big a learning curve when you just want to write a program that asks for your name and says "Hello, ".
- API is too rooted in com sci theory, another learning curve...
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 get immediate feedback if you type in something wrong. Plus, its free and its as complicated as you want it to be. Kids won't have to learn OOP until they come across a problem that would really benefit from it and by then they've already learned the basics of the language well.Another thing is graphics, and I don't know if Python has an interface to the Windows graphics APIs. I think most young kids would enjoy creating graphics and games, so this would be a must-have feature for a young person's language. But screw LOGO. That was the first language I learned (in 3rd grade) and I was never so bored watching that 'turtle' move around and wondering how I could make Pac-man by rotating the turtle and making him move x pixels (not that its any easier in another language, but at least Apple II BASIC let me use my imagination more)
A computer is no longer a tool, or a piece of equipment used to aid learning. A computer is for entertainment. It is for chatting with friends or paedophiles, swapping movies and music, and playing games. Students who come into college thinking they are "good with computers" are able to do email and chat, but often not use a search engine properly (AOL keywords aside).
The uniqueness of the computer in the early 80's meant that fewer people had computers, and those that did had them for a reason. Why did your parents buy you a machine with an amazing price tag that could do LOGO and "Oregon Trail"? Were your parents fascinated by the computer? By what it could do for their lives? Their jobs? Many more of today's parents spend their careers in front of a computer, confounded by the stupidity of poorly designed programs that don't interact the way they should. Are they going to encourage their children to learn how to program computers? I doubt it.
My mom spends all day on the computer at work. We fought when I wanted to change my BS major from chemistry to computer science. It doesn't matter that I would still be in school and possibly $100k in debt had I stayed in chem... The computer is a beast that many people see as robbing them of their lives, their sight, and the use of their hands.
We've had numerous discussions over the past several years about coding becoming a commodity position and much of that work moving overseas. Parents don't want to see that for their kids, do they? Certainly, where I grew up, there isn't much interest in most kids getting an education, and thousands of people will still line up for a handfull of railroad or factory jobs. But for the parents who bought their kids a computer, don't you think they want to see them use it as a tool to get into something more stable? That has an obvious benefit to the layman?
Ask your parents WHY you had a computer. What motivated them to be an early adopter. Why they let you play with programming it. I think you'll find that nuturing curiosity and supporting a kid's interests are more key to having a happy kid than trying to steer them down a particular path just because YOU did it when you were a kid. (change "learning to code" to "being quarterback of the high school football team"...)
But I hate kids, so, grain of salt, k?
--mandi
or at least their 56Kbaud modems scream compared to whatever modems they had 10 years ago. So they can download Perl, download an online tutorial, and start to learn how to program. What can be simpler than
Getting a kid started with a language like Javascript and then PHP is very useful. First, they contain all of the major constructs (for, while, do while, switch, etc). Second, they are immediately useful, which is absolutely necessary. You can't have a kid take 3 months to get their first working program. They have to be able to see results quickly.
The last thing is that they need to then move on to something better, like C++, and learn how to code for a GUI. There are immense advantages, however, to learning to code for the internet first.
"We don't know what we are doing, but we are doing it very carefully,..." Wherry, R.J. Personnel Psychology (1995)
Dev-C++ and all sorts of other GCC thingamabobbers are free...and Free. Not to mention that Mac OS X has GCC in the terminal, and all civilized Linux distros come with GCC and Lord knows what else.
... and then tell them there are libs for it in Java and install the (free) SDK and an evaluation version of Textpad.
Problem solved.
=)
"GNU's not Unix....it's Linux" / Kami "kokamomi" Petersen
I started programming "late" compared to some of you - around the age of 14/15.
First was HTML, and then I started customizing mIRC and eventually ended up doing some pretty heavy scripting for it.
Next was JavaScript, and then finally I moved on to web backend languages (I wasn't fortunate enough to have access to PHP or Perl, I had to put up with iHTML.)
So, my suggestion: start with a scripting language. don't start start off trying to write "programs", but try to customize your environment. With perl/php/cron stuff you can do neat things like have a webpage say "good day" or "good evening" when loaded.... or have the server send emails based on events... (note: OS X's unix core + applescript + nice gui would be a GREAT platform to learn this stuff on)
On a similar note, if you want the kid to learn any unix/linux on the way... don't start off with some "works magically" distro like redhat/suse/debian. Run Slack. Recompile the kernel so your soundcard works, then so your network card works, then get usb devices to work, and get hardware 3d support goin for X.
When I learned linux, I spent days trashing my linux box, rebuilding it, and breaking it again. there's no better way.
no comment
Seriously, I thought that was the only purpose for BASIC?
Let program with BASIC then move on to Java for modern concepts.
nohup rm -rf ~/. >& zen &
HTML + PHP (and perhaps MySQL) is really quite easy and provided one helluva bang for your buck as far as programming time to results. Plus these are useful skills that you can do something with, unlike basics or odd, less used languages.
Javascript, ASP or JSP. Can't get much simpler than that. Plus, they don't have to go to the trouble of learning to create a GUI, that's much harder than HTML for a user interface. It's a good place to start....and I think windows comes with whatever that crap webserver microsoft makes...just don't open up your firewall.
The Apple Macs come with a treasure trove of free programming tools that a beginner could use to learn the ropes. You could start off with Apple Script which seems like a pretty basic scripting language (although I have not tried it). You also have your choice of Java, Objective C, C, C++, and Perl. Some of those languages come installed with the OS and others you have to install from the developer CD which also comes free with OS X. There is also a fairly decent IDE that Apple has aptly named Project Developer. If I had this setup when I was a kid, I would be a super genius by now.
As far as the lack of BASIC goes: well, I don't miss basic and I don't miss Pascal either. There's nothing wrong with cutting your teeth on C.
I'm sure f*ckf*ck is an excellent first programming language for a kid.
My kids basically learned to program through games:
1) Flow-like programs such as "The Incredible Toon Machine" let them understand logic and blow things up
2) Starcraft and Warcraft III have scripted triggers and a programming environment for creating bizarre games based on the existing engine. I've seen "Mastermind" programmed in Starcraft, and any of the "Mania" modules created have so little resemblance to Starcraft that they're unique games in their own right
3) Someone else mentioned Inform, and that's a good start too, although there are no graphics.
But I have to object to the "No programming language on PCs" statement. Every copy of Windows XP has VBScript and JScript/JavaScript/ECMAScript which will run from the command line or a clicked icon. An IDE is lacking, but the functionality certainly isn't.
Although I'm not a Windows chauvinist, I don't advocate making the kids slug through Linux just to start programming -- it's too much of a chore to tear them away from their everyday games, AIM, etc. to reboot into Linux (yeah yeah, GAIM, yeah yeah some games available in Linux, but not many).
All the GNU tools will run on Windows, and there are some IDEs so you can avoid using CYGWIN.
Python, as mentioned elsewhere, is a nice interactive environment to help get things started -- much friendlier than the write-and-try languages such as Perl, VBScript, etc.
And don't forget Visual Basic for Applications (VBA) -- if you've got MS Word or Excel, you've got a full-fledged version of Visual Basic that can do everything but create stand-alone executables, and a reasonable IDE to work in.
Design for Use, not Construction!
...so they get PHP, Perl and AppleScript as part of the default install, with free tools like Project Builder and AppleScript Studio. That would be an awesome push in the right direction!
Mike van Lammeren
It will challenge your head, your brain, and your mind.
Upload both ways!
http://www.angelfire.com/ca3/marlowe Better a smartass than a dumbass.
Install Linux.
How old were you when you started toying with computer programming? I don't know about you, but I was about 10. Now, your curt, smug comment seems pretty stupid when you consider that a 10 year old has neither the hardware nor the experience to install Linux. Think about it. The family probably has 1 computer. Mom and Dad use this computer to check their email, or maybe one of them works from home on it sometimes. Do you really think that they're going to let little 10-year old Johnnie wipe the hard drive and install Linux? Or are they supposed to buy Johnnie his own $1000 computer. For a 10 year old who might not give a rat's behind about computers by this time next week.
Riiiiiight. I suppose the little tyke could just repartition the hard drive and install a dual-booter like LILO to make sure Mom and Dad can still use Windows, right? Would YOU trust a 10-year old who knows nothing about Linux or programming repartition your hard drive for you?
Remember: we're talking about children here! Not teens!
Like woodworking? Build your own picture frames.
What can be done to improve this situation?
How about making it harder for kids to learn how to do what most of us do? Let's try to have *fewer* people learning how to code. Let's try making kids *less* computer literate. Come on, people....do you think those kids that learn all the neat techie stuff aren't going to take your job for half the pay you're getting?
Look what happened to mechanics....
When cars first became popular, mechanics were the 'geeks' and 'nerds'. People were afraid to work on their own cars, or were incompetent to do so. Mechanics made terrific money and the field was highly touted as 'in demand'. Now mechanics are a dime a dozen (not *good* mechanics, mind you) and it's trade-school fodder now. I don't want to be working as an admin in 15 years with a denim uniform and my name sewed in cursive over my pocket. Make using computers as simple as you want to, but keep fixing them difficult. Otherwise we're putting ourselves out of jobs.
Besides....do we really need *more* just outta college know it alls flooding an already crowded job market?
http://xkcd.com/386/
My dad was a metal worker and we simply couldn't afford 2kUS$ for a PET Commodore. I hoped he would win the lotto one day but he never did.
/. readers once they have interested kids will setup their own Linux/FreeBDS home network (at the latest.)
I recall begging teachers for CPU time and they refused claiming they needed the school computer for admin tasks (a load of BS.)
A couple of times my brother in law let me in the university where I happily wrote Basic programs and tried out Algol.
The technical school I attended closed the computer room during breaks so I only could use the free time I generated by finishing assignments very quickly.
It wasn't until I was doing my BSc that I had access to a couple of HP systems running Unix.
Nowadays setting up a programming box is dead easy. Linux has never been more easily available and most distros come with a variety of compilers/interpreters for decent languages.
Why should you learn programming through Windows?
Anyway,
I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
My knee jerk reaction was to recommend linux as it comes with a whole host of development tools. Unfortunatly you need to be pretty switched on to get the ball rolling [Makefiles, Editor choice, compiler settings etc etc]. It wasnt until I opened up Project Builder [for the fith time today] that I realised that that is where the answer lies.
It is plainfully simple to write programs and design user interfaces and connect it all together. It supports a number of different main stream languages and there are loads of tutorials on the internet. The best thing is that all these tools come with Mac OS X on the developer cd so you dont have to fork out once again.
If I had a kid wanting to learn to program I would get them a Mac and let them play. Failing that, I would get DOS 5 out and let them use GW-Basic within a Virtual PC Window.
So there we go. Thats what I reckon.
chris at darkrock dot co dot uk
http colon slash slash www dot darkrock dot co dot uk
if i recall correctly,
~(~p v ~q) == ~~p ^ ~~q == p ^ q
your parents probably didnt want you inhaling so much of those lead fumes. they probably got worried when you displayed signs of tourette's.
Free GUI's for .Net programming:
.95, and looks like it has promise. Allows for console, service and web projects in VB, C# and Web Form projects in C#. My experience is that the Web Form designer still needs some work, but this looks like it will rock.
ASP.net Web Matrix is a free GUI for ASP.NET projects by "Never give away anything" Microsoft... WROX even has a PDF book on it... Wrox Press ASP.NET Web Matrix>
SharpDevelop an Open Source IDE that is currently Beta
www.christopherlewis.com
A free program building suite for you younsters!
Install Python on their system and let them learn with it. It is an excellent learning language. Very clean syntax, and a lot of nice modules available for it. Before you flame me, I'm a Perl programmer by trade, and I prefer Perl for a lot of tasks. I would, however, never, ever, ever recommend someone learn to program with Perl. It's cruel.
Just get them Lego Robots. They come with their own language, which should make programming pretty graphic. Pushing those robots around with programs they did on their own. Way better than that crappy pascal we learned in school.
IAAL
There isn't much to 65xx assembler though. I found it a hell of a lot easier as a teenager cracking games on the C64 than to learn a whole *system* like Windows, Linux, whatever: look at the size of documentation. You could get away with just the programmer's reference guide on the C64 but need a ton of documentation to do anything appreciable on a "modern" box.
Amigas were pretty much the same way. If you threw out the OS (like demo coders did), the machine was a lot easier to deal with. Nowadays it's not possible what with all the different machine configurations.
So I don't see interfacing directly with hardware at the assembler level to be all the hocus pocus it's cracked up to be: learning how hardware works is typically much simpler than 20,000 API calls.
But machines were much simpler then, also...
As far as I'm aware, nearly every current version of Windows comes with support for some kind of VB variant whether it is VB Script or VBA. In addition, due the ubiquity of the browser you can add Javascript to the mix.
Whether or not you consider these valid programming languages, the fact remains that both would be valid environments with which to teach the rudiments of computer programming. If the person found that they enjoyed it and had an aptitude for it they could then move on to the more heavy duty and robust programming environments.
I have no trouble at all recommending these two options to people looking to get their feet wet with programming.
My knee-jerk reaction to "What can be done to improve the situation?" is to point out the obviousness of Linux. Tons of libraries. Lots of compilers. Piles of documentation. Mommy and daddy may not like the idea of a different operating system installed on their computer, however. A lot of people are fiercely opposed to anything that changes things they don't understand. That was always my experience. I was fearless, nobody else was.
So, let's give the kids a lot of pros of Linux on Windows. Send them to this web site. While Cygwin is good, it isn't great. You lack a lot of the flexibility (especially in terms of libraries) but it'd be very useful for beginner programmers who are only going to write programs using console based I/O and little else.
Join Tor today!
I mean, they still come with Q-Basic, afterall. That's a programming language. And, it's trivial to get Windows scripting host of Visual Basic scripting running on most Windows installations for free.
End of Line.
then let them play with robocode!
...vividly encapsulates that post-Watergate/pre-punk/coked-up moment when you could trust no one, least of all yourself.
I teach a Java programming class for non-careers at our local library. We get some older people, but mostly it's 10-15 year old boys who want to make games. Java's great for this, because though it is slow, it's been constructed so that you can have somebody drawing squares on a JFrame in about ten minutes. If you don't worry about interfaces, threading, events, or any of that object oriented crap that you don't need as a student, you can learn the meat of Java fairly quickly. The tools are free. And there's plenty of good online references.
The best way to program, of course, is to copy and alter other people's examples, so I have about ten programming by example books I loft with me, as well as a number of programs I ported from old textbooks like "101 Basic Computer Games" and the MicroAdventure novels. I run things like the computer club I was in in middle school, tapping on those apple IIes...everybody does what they want, i help where I can, and if I think it'd be beneficial for others to hear the example I have a quick lecture.
Do I think the OS needs to have a built in language? Hell no, there's no need now that everybody and his grandmother is networked. You can download something like Java or Perl in about a picosecond -- ten picoseconds if you're on dialup. And the process of going out to the website, sorting through all the information and eventually getting to download the SDK is beneficial. It burns off some of the technofear people have about programming their computers...lets them know that there's a whole industry out there mucking about in command windows and terminals and none of THEM has ever formatted a hard drive accidentally.
That's what people really need...with enough courage and enough time, anybody can make great software.
Hey freaks: now you're ju
Give him a 486/66 that you can find on eBay for $50
Score some old programming books on eBay for $5 each.
Back then, it was $2500 for the computer and $60 each for the books
It's still the best language for building a database frontend around (access, ms sql, mysql, oracle ...etc)
Define "kid". Teen-agers? Nah. Let them futz around with adult tools.
What's missing, though, are simple tools usable by children whose age is still indicated with a single digit. These guys don't need to read about programming logic. They need to see logic manifested on screen as a result of something they typed on the keyboard. E.g. typing in a few lines of code and seeing your name printed over and over will teach someone about looping a lot faster than reading pages in a book. Ditto creating and opening files, etc. This is the kind of exploration that young kids need to begin to understand the basics of programming.
This points to interpreters, not compilers. And, frankly, since we're tryng to introduce children to programming and not trying to train legions of new professional programmers to fill even more cubicles (as most posts here seem to take as their premise), something like a nice interpretive BASIC would be just fine.
-- Slashdot: When Public Access TV Says "No"
Start with Windows, add the .Net Framework or the SDK, download and install Sharp Develop and you've got everything you need to develop console apps, WinForms apps, Libraries, etc... For free.
.Net Lite" and it costs nothing.
.Net but they're free and really quite functional.
SharpDevelop is basically "Visual Studio
For ASP.Net applications, grab the WebMatrix tool from ASP.Net.
Neither one is perfect or can fully replace Visual Studio
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
Here is what I learned from the project:
Lasers Controlled Games!
The biggie is BlitzBasic. It's not free--but it is only $70--and it essentially turns a PC into an ultra-modern Commodore 64 or Atari 800. It takes one command to initialize a graphics window, for example. The nice part is that you can use a decent version of BASIC for everything; you don't have to dip to assembly for the cool stuff like you did in the 8-bit days.
Python + PyGame is a free option, although it suffers from too much OOP on the brain, which makes things murkier for newbies.
Much as I'd rather not install it on a system, just to keep people from accidentally running malicious code, the VB Scripting Engine does come with Windows 98 and above. So people can write VBScript (.vbs) programs even with the basic Windows setup for no extra money.
Now... compare that to when I was younger. The only "free" langauges I had for DOS/Windows 3.1 was qbasic and debug (and writing assembly in debug was a bit over my head when I was a kid). There were also a few shareware/freeware assemblers that were farily good, but I never found any good free compilers for high-level langauges (and I did look). Since I wan't a rich kid, langauges like C and Pascal were inaccessable to me. Any kid who wants to learn how to program today is far better off than I was when I was a kid.
What's the point? Within 5 years you won't be able to get a job programming outside a 3d World country anyway!
Though there are many many other alternatives that are free and available.. ( and cross platform in case windows ISNT your OS of choice )
Python, Forth, Squeak, Oberon, Perl, TCL.. etc etc etc..
---- Booth was a patriot ----
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.
I have to admit you are perfectly right. I started programming when I was 8 or 9, I had a Macintosh LC, and my father installed BASIC... ok, it was nice.. you could do many nice things...
And we've got to face that most peolpe has a PC with Windows... and probably a 10 years old child does not even know GNU/Linux exists...
Moreover it is very likely the "average boy"'s got no interest in programming. Probably he just wants to play with Quake 3...
And think about this... You could code pong in C in let's say an afternoon... maybe more maybe less
And that means that in those days you could write a game that resembled those you used to play...
But... could you code Quake 3??? I don't think so...
The point is that computers have spread among common people who are not intrested in computer science or anything ike that... they don't care how things work... the just want to write a document and to read mail...
Once the ones who had a computer, were really interested IN the compuuer...
So... even if you give them a programming language, they won't learn it...
I can tell you.. I am a maths student at the university (i'm also italian)...
People who were not interested in coding, BEFORE, still remain not interested after they've been taught...
And so... what's the problem...
if you are interested in coding, be sure that you find a way....
I switched from MacOS to Linux just because I had no programming language for MacOs 8 a part from AppleScript....
Coding is just a sort of art... is something you have within... from 95 to 99 i had no compiler... so I wrote flowcharts and programmed on paper...
then i got GNU/linux/compiler and i was happy again...
and then
don't talk about VB... that's crap!!!
Well... i'm not saying it is bad... still let's say it is very easy to develope awful programs, written in an awful way...
if you try to code like that in C, I've been told that Ritchie can jump out the monitor and kill you.....
I don't want to start any blasphemous rumors but I think that God's got a sick sense of humor. DM
Its interesting to hear people say that its somehow a loss because others can't experience things the way they did. First, computers are much cheaper today, and even with the addition of a set of development tools (which are lightyears ahead of what we had in the 80's), than what computers cost in the 80's. Of course, possibilities today are much greater, allowing for vast freedom in experimenting with programming. I can still write a simple address book application, but I can also build in p2p networking capabilities, for example. The possibilities have increased exponentially, while the complexity has not neccessarily increased.
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.
LINUX. Get Linux put on a great many more machines. Become totally devoted to the "Linux way" and shove it down other people's throats every chance you get. It's not pretty, but it would work. Then the kids would have their little proggy languages.
Furry cows moo and decompress.
Now we have Windows ... What can be done to improve the situation?
Fire -- and lots of it!
Long ago, when most consumer electronics were built using discrete components connected via point-to-point wiring or simple printed circuit boards, i.e. single sided or double sided, a resourceful hobbist could build it in his garage. As more custom integrated circuits and multi-layer PC boards were used, these hobbists found themselves outclassed.
Years ago, you could build a Heathkit stereo that was really good. It would be difficult for a hobbist to build a modern receiver, not only because of the parts but because of more sophisticated functionality.
Wansu, th' chinese sailor
Remind the kids that they need to look at what device, system, or application they'll be writing code for before they even think of sitting down at the code editor. Make sure they know that PCs and Windows are NOT the Answer to Everything, and work accordingly.
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.
Bruce Lane, KC7GR,
Blue Feather Technologies
Pretty much the only language out there that is available on every OS and every system is JavaScript. Starting out beginning programmers with JavaScript would be easy, wouldn't require a (separate) compiler, and would allow the student to learn in a familiar environment, namely the web browser. Doing eye-candy tricks with the browser would provide immediate feedback, and JavaScript is complex enough that you could even introduce some mid-level concepts into the mix, such as classes and regexps.
Conversely, it also keeps the student from having to bother with crap like typecasting, exception handling, and null pointers until they are more ready for such things.
This:
alert("Hello, world.");in an HTML file is much easier to explain to beginners (and for them to grasp) than is, for example, the following:
try {out.print("Hello, would.");
} catch (IOException ioe) {
System.out.println("Exception in out.print()");
}
I would like to restate the key argument here: JavaScript is available on every modern desktop system, and is therefore available to everybody.
While I was in University we would play with the Lego Mindstorms kits while we weren't coding our projects. The most amazing thing in my opinion about Mindstorms was their programming IDE. It was completely object oriented.. all of the code looked like lego! IMO a great concept for teaching the ideas of IF/Else, while loops, and basic programming logic.
In fact I would say that even downloading Tcl/Tk or Perl could be overengineering the solution.
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.
lysergically yours
You'd be surprised what kids can do
When I started, it was with the Sinclair ZX-81 I had as a Christmas present.
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).
Oolite: Elite-like game. For Mac, Linux and Windows
(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).
/w a tiny graphics card, the samples render livably. Now, since I really want to test out how well GL apps render on an accelerated card+fast PC, I've installed an extra HD on my main box just to use GL with 'nix.
/w GCC) to step forward and provide links and samples?
This is exactly what made me finall make somewhat of a switch. After continuous poking and prodding at openGL, I finall got tired of trying to get old GL samples to compile in my current VC++ version (or maybe it's also because VS6 doesn't like XP?).
First, I've tried installing Mesa 3d on my laptop, which was already 'nix. For a P2-266
One of the biggest issues I've had so far is that simple Mesa/GL samples with documentation don't seem very easy to come by. Yes, there are books (and supposedly good ones), but to find one in stock costs over $100 at the moment.
I'm comfortable enough with 3d (from my early D3D/GL days) and C++ to make a go at getting something up and running using GL/GCC, but the lack of starting tutorial or simple samples... tracing down which libs to link etc etc is quite maddening when trying to start with 'nix programming.
Perhaps this is also a good place for any veteran gcc coders (or better, openGL
The high price every new version of Visual Studio seems to be a real detriment to MS. If startup developers can't even afford to teach themselves a little coding, then I will expect more and more developers to move to 'nix. With more 'nix developers, we will find better and cooler 'nix apps amongst the dross (maybe even some nice games eventually), and gradually accelerate away from the world of windows.
As far as I can see and tell, nowadays almost all OS's come with pretty much everything you probably want already either built-in or available.
In most cases, the need to actually do programming yourself, doesn't exist anymore.
When I started (in 1980), I coded because I wanted stuff that wasn't available. My back then Z80 computer was too slow to handle 19200 bps transfer rates over RS232, so I rewrote the BIOS and the intterrupt handling.
For that same machine, there wasn't an Unarj program available, and no C compiler that could compile the sources, so I rewrote the whole thing in assembly.
I think those kind of incentives have pretty much gone, considering what all is available and the price of computers nowadays.
Just my 2 eurocents.
Coz eternity my friend, is a long *ing time.
Sure, Windows comes with a built-in language: Javascript! It's an interesting way for kids to learn to program -- you can do neat stuff with a browser...
many times, many ways ... Get a kid a Mac, today!
It's been mentioned. Linux and Mac OS X both have many similar tools built in, sometimes identical tools. The ADC tools can be had, for free, although I don't know that you can sign up yourself if you are under 18 (never tried, I ain't been 18 in many a moon). Lisp, BASIC, Perl, PHP, C, C++, Objective-C, Java, Python, and just about any other language you can think of are available, most of them natively, and most of them completely for free. With one ~$70 purchase (BBEdit, because syntax coloring is REALLY REALLY helpful, especially when you're just learning) above and beyond the cost of the computer, you've given the child an enormous opportunity to learn programming.
After the child has grown up some with Mac OS X, and has built some automation with AppleScript, Perl/Python/cron/whatever, they'll have skills that easily translate to Linux (though, with the BSD-ish base of Mac OS X, not always directly), Free/Net/OpenBSD, and (less directly) Solaris, HP/UX, AIX, and so forth. Since Microsoft is in its death throes (watch very carefully for the next two years. They are in a world of hurt like they've never imagined), Windows programming will be unnecessary before they are out of college. Okay, maybe not quite that soon, but soon! SooN! My PREcioUS!
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. (Einstein)
It was one of those educational toys, circa 1988, simaler in style to the Speak and :( The good news is
Spell, which had several educational games
built in. One of the programs built into it's
ROM was a real BASIC interpreter which a child
can create simple programs through, and 10
example programs that a child can load up, list
amd modify. I picked one up fron the
Salvation Army thrift store, and I was amazed
that it had this. The latest toys from Vtech
seem to mimic the "point and click" computers
of today, and I didn't find any mention of
Basic for any of them.
that Vtech appears to still be selling
the Precomputer 1000 through their website.
As far as learning the basics of programming, there are a ton of emulators out there that can run the old C64 games and such. A great introductory look at digital logic is found in the amazingly addictive "Rocky's Boots" for the Commodore, and I've even recommended the game to some of my friends who are having troubles with logic statements. Some introductory programming is also easily accomplished with the "LOGO" turtle program. There are a ton of games aimed at teaching kids the basics of programming. These are not _actually_ programming games, but they teach kids the stuff that they'll need to know when they start taking their _actual_ programming courses in school. My brother has taken programming since Gr.7, and I'm sure that schools will slowly start to creep programming into elementary school, given that it strengthens so many logical skills needed to succeed with Junior High algebra. *shrug* Maybe I'm just too practical, or my family is just more computer-oriented, but I think that if kids want to program there _are_ opportunities for them to do so (with a little research involved). Any one else have some favorite C64/whatever games that taught them about the basics of programming?
But I'm surprised that nobody has mentioned pygame yet. pygame is a game programming library for Python. it makes for some excellent tinkering, and I suck at programming.
Make smarter coders!
So what's wrong with BASIC? Sure, it isn't a great programming language but kids at that age don't need the best. We all started our programming careers that way, didn't we?
What can be done to improve the situation?
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.
Table-ized A.I.
If the lil' coder has an older machine, you can get him DJGPP for DOS. You can get Allegro for it, which is pretty much like SDL is like for Linux, and is pretty easy to use and you can do a lot of cool things with it.
There's quite a bit of science behind programming systems for children and novices, and a few good solutions as well. I'm understandably partial to Alice, which is free and provides a structured, drag-and-drop syntax editor which prevents all type and syntax errors. I'm currently working on a Ph.D. centered around making Alice even easier for novices by designing highly integrated, error-preventing programming and debugging tools.
But regarding age, keep in mind that most children don't even have the cognitive abilities to create and manipulate social and communicative abstractions, let alone programming abstractions, until 5 or 6. But no one's proven that no programming system exists that can't lower that threshold.
I can't believe some of you are suggesting that an 8-10 year old child should be introduced to programming by way of C, C++, or Java. Are you kidding? Perhaps you've forgotten what it meant to be NEW to programming and don't realize that children are going to approach programming in a different way than a veteran will.
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.
There are a lot of great scripting languages on all platforms, but the real answer is web pages. HTML is a _really_ easy way to get started programming computers. Obviously its not the same as a real programming language, but it contains an important abstraction that one has to learn first: that I put in some particular text, and as a result I get some interesting behavior from the computer. This is really not much different than when I discovered I could type in a command to my Apple ][ to turn blocks of the screen different colors. If people get used to the abstraction of text turning into interesting behavior (and are fascinated by it, as I'm sure most of the people reading this are) its an easy next step to move on to javascript and start learning about control statements and data structures/objects.
Almost all of the adults I know who work in different fields and get interested in programming do it through writing web pages, and it seems like a perfect thing for kids too.
do the kids need everything? I do not remember any help or understanding of computers but remember finding out the commands I need to make rrandom numbers and guessing games on the Commodore. Stop spoon feeding them.
A hand up and a foot on every chest...
Get a frigging grip. The only nuturing the little coder needs is hunk of hardware and an internet connection. If ubergeek was meant to be, that's all they'll ever need. If he/she needs handholding and guidance, they may grow up to be wonderfully competent and industry proper thinking computer specialists. But who the hell wants their kid to aspire to be a code monkey living on caffeinated soda??? (Dorks, that's who.)
You want to help you kid learn the "right" way to how to program computers? Hey how about first teaching them how to READ?!?! Then how to TYPE? Then how to Google and search USENET newsgroups?
BASIC isn't bundled in machines anymore, and THANK GOD for that! Perl is free, GCC is free, java is free, what more does a coder need??? Its all bundled in a linux distribution, and that's the platform the kid should be running on anyway (for learning purposes). When I was a kid, we all knew the "real" programs weren't written in BASIC. You had to learn assembler to make REAL programs. And guess what every real coder went out and taught themselves?
Yeah, maybe the kid will pick up some bad habits. But if ubergeek was meant to be, they'll eventually break the bad habits or find a better suited line of work. Yeah, maybe the sink or swim environment is tough on the budding programmer, but programming is not a skill every little kid needs to know in order to progress to adulthood. Mediocrities need idiot books and baby steps.
Face it, you're a soccer mom who'd be injecting some pederasts' DNA if it would guarantee the baby enters Mensa. You want to be a *real* parent who made a real impact on the future of your kids' lives? How about teaching them the things you won't get from books or school? Like morality, the unwritten rules and tactics of social interaction, or critical thinking? That way, you won't end up with a cracked-out anti-social coding whore who scores real high at topcoder.com.
When I was a kid and first started messing around with programming, it wasn't that hard to make something relatively cool. You could pretty much make a text based adventure game with if, goto and a print statement.
:)
That could still be done quite easily in some simple langauge but it's not quite as cool now as it once was since games now have graphics and everything.
I've seen several people mention Linux or Cygwin as an option for a free compiler. That might be ok for an older kid but I think it might be a bit much for a 6 year old which I think is around the time I started writing stuff on my aunt's C64.
I remember the first time I looked at C after getting used to QuickBasic and my reaction was along the lines of 'whoa, what's with all those funny squiggly characters like the { and %... maybe I'm not ready for C just yet'.
Here's a path that may not be too bad... start with HTML where it's really simple to make a page with forms and graphics and such. Then from there, go to a scripting langauge like PHP to generate the HTML so you start getting simple programming experience. Visual Basic might also work but isn't free. In my opinion though, you need something that's simple from a programming standpoint but will still let you do something that is going to interest a kid.
Another thing to look into might be Lego Mindstorms. While not exactly cheap, it wouldn't be that hard for a kid to build a little car of some kind and program it to drive around and make turns or something.
Jesus tap dancing christ. Send your kids to little league or force them to take up a hobby like painting or something athletic. Teach your kids programming and all they will have is a hard life of unemployment and no sex.
-Dipster
TRS-80 emulator and a copy of Ahl's Basic Computer Games
(Actually, I typed that book into an IMSAI 8080, but the emulators you find for that are all about using the panel switches)
for your enjoyment...
Okay, then, children of the modern age (where we live in a world so tied together with wires that Pangaea ain't goin' nowhere!), you tell me if this is a predicament or not.
In the 1980s, you could look up from your Commodore 64, hours after purchasing it, with a glossy feeling of empowerment, achieved by the pattern of notes spewing from the speaker grille in an endless loop. You were part of the movement to help machines sing! You were a programmer! The Atari 800 people had BASIC. They know what I'm talking about. And the TI-994A guys don't need to say a word, because the TI could say it for them!
The old machines don't compare to the desktops of today, or to the consoles of today. But, sadly, current versions of Windows have no immediately accessible programming languages. And what's a kid going to do with Visual Basic? Build a modal dialog? Forget coding for XBox. Requires registration in the XBox Developer Program. Otherwise, you gotta crack the sucker open. GameCube? GameBoy? Playstation 2?
Coding Just Isn't Accessible
Yes, there are burgeoning free SDKs for many of these platforms. But they are obscure and most children have no means of actually deploying or executing the code on their own hardware! This is obvious to us all and likely doesn't seem such a big deal. But ask yourself what might have happened had you not had access to a programming language on an Atari 800 or a Commodore. You tell me if this is a predicament.
It turns out, most of the kids in my neighborhood are exposed to coding through the TI calculator. A handful of languages are available on the TI and its processor is interesting enough to evoke some curiousity. But this hasn't spread to its PDA big brothers, where young people could have more exposure to programming. And undoubtedly the utility of a language on the Palm, Pocket PC and others would be useful to many.
So what's the problem here? We have no shortage of new languages, but they become increasingly distanced from the populace. Are the companies behind these platforms weary of placing the power of a programming language in the hands of users? Is there not a demand any longer? It's got to be some kind of greed, power, money thing, right?
Perhaps this is just another reason to push Linux and BSD on consumer systems. Still, are scripting languages easily accessible to beginners on those systems? OSX has made several scripting languages available (including Ruby and Python), but most users are unaware of their presence.
I should mention that Windows is equipped with its own scripting host for developing in JScript and VBScript. But the use of the scripting host is (I believe) under-documented and limited for beginners. Try doing something useful in a script without using Server.CreateObject. Let's not let kids touch the COM objects, please!
The Christmas List
I'm thinking a toy language for consoles and desktops alike could be monumental. I'm not saying it needs to be cross-platform. A language for GameCube that took advantage of platform-specific features could be more appealing to GameCube users than a language that used a reduced featureset, but could execute on a handheld. Really, we live in a world where both choices should be available.
As for essential features:
1. Transportable code.
On my TI-994A, I could make a little, animated Optimus Prime from pixels. Insert cassette. Record. Pass around to friends. Receive high fives from friends. Put on wraparound shades. Thank you, TI! Thank you, Optimus Prime!
A little language for the consoles could be wildly popular if combined with the good nature of sharing code. This could be done by trading memory cards, but would be more effective if code could be easily obtained and posted on the Web. Learning would accelerate and collaborative development could take place.
A suitable language should give coders access to I/O devices, to allow experimentation with network devices and the ability to enhance one
A: Wipe and install a real operating system, like Linux. Next question.
Remember LOGO? That turtle rocked!
Given how the article refers to the halcyon days of the old machines with built-in BASIC interpreters, etc., what about running one of the many emulators available?
I grew up doing Z80 on an Amstrad CPC (although it had a built-in BASIC, too) and 68000 on an Atari ST. I recently tried out a couple of the great ST emulators and had no trouble firing up my old editor/assembler combo (which I paid for, as it happens) and messing with my old source code.
I actually think there's some value to be had in playing with older systems under emulation - either in BASIC, for its ease-of-use, or even in assembler for the sheer hardcore value.
Registering accounts later than some other chrisb since 1997
The point is that there does not exist the materials for young developers to learn with.
Certainly if you wish to do .Net you can go get SharpDevelop, heck it's even linux worthy.
Is a rather cool game that includes a built in C style scripting language to control various robots whose tasks vary from hunting aliens to collecting ore. Nice graphics as well. The homepage is here.
It's the architecture. I remember reading an article on Ars-Technica that discussed just how different the architecture is for the PS2 vs. Xbox/PC. And how it was causing some issues with programmers not being able to fully comprehend and exploit the system. I just got done playing Midnight Club II, and I can tell you that they comprehend it now -- that machine is over 3 years old and still puts out amazing graphics.
This is my digital signature. 10011011001
I find that most of my friends in high school who know how to program started (and most ended) with web programming. It seems building your first webpage is about as important as taking your first step nowadays. And after learning to walk, they learn to run. Even "jocks" seem to know PHP now. I don't think I know anyone who can't whip up a PHP/SQL site.
So instead of going BASIC->Pascal->C->C++, today's children are going HTML->Javascript->PHP->Java. In ten years, we're going to have a LOT of web developers.
There is another difference between the two that I have noticed. My friends who started in BASIC learned compiled languages first, and then ventured into interpreted languages. My friends who started with web development never ventured into compiled languages, except for maybe a bit of Java.
Scratched Emulsion
Simple machine. Simple language. Instant feedback. Sound and graphics. 'Nuff said.
Please donate your spare CPU cycles to help fight cancer and other diseases
Game modifications are the way to start these days. Even small details like changing the damage value for a rocket can be a starting point for kids to learn how to go about programming.
I'd say that games have been the starting point for many, many programmers.
I'm surprised that more highschools haven't taken something like Unreal or Quake and started an introductory programming class with UnrealScript or QC.
(Apologies if this is redundant, I'm too lazy to check if thats has already been said.)
I am not a programmer, but I have read that BASIC is not the best programming language to start with. They say that it teaches bad habits. Is it really a bad thing that BASIC is not included with Windows?
For java there is the jdk + bluej (bluej.org) combination. bluej is an IDE intended to teach java to beginners.
For Perl, shell, and C, a combination of (x)emacs, and cygwin will do the trick.
For C and Pascal, one could also download the "antique software" from Borland (remember Turbo C and Turbo Pascal)
I am sure there are some old Basic environments available for free for windows users.
S
Now we have Windows, which typically comes with no built-in programming language. What can be done to improve the situation?"
Then chuck Windows and move along, duh.
Alas, it only runs on Win32 right now, but they are looking for collaborators to beef up their Mac and Linux prototypes. This would be very worthy work for folks looking to test their 3D programming chops.
Got my start on Mac OS 7. Learned C by reading The Black Art Of Macintosh Game Programming. Played with the toolbox. Moved to multiplatform. Learning GLUT/openGL now.
I should point out that I learned my first (non-calculator) language was learned from an "advanced" book (it actually said so on the back!) that assumed knowledge of the language from the start. I learned this language on an OS which had no default programming language, no shell, and no scripting.
If you think it's too hard, your standards are too low. Anyone who looks around will find a few versions of basic, perl, python, and maybe some other stuff online, as well as tons of books (in local book stores and online). Anyone who's going to be a good programmer will learn to program regardless of what's put in front of them.
Another point I'm sure others will mention is that programmers are usually tech geeks and thus will often run linux. C on linux is pretty close to a "default" language. It's certainly better for learning than that basic crap. I'm not going into the linux-in-schools discussion here -- that's another thing I'm sure others will talk about at length.
All that's really changed is that people must now go out and look a little to learn to program, instead of having a handicapped language handed them on a silver platter. In my opinion, this will lead to fewer incompetant programmers without any decrease in competant ones. And if you've ever worked with someone who still thinks in BASIC no matter what language they're programming in, you'll understand why this is a good thing.
Clearly the solution is a Java applet that emulates a BASIC interpreter. Something like COCOA?
Sig for sale or rent. One previous user. Inquire within.
You have to be kidding me. When I got my apple 2 and the young age of 9 I started teaching myself BASIC just by "listing" (looking at the source code) of those old text based adventure games (the cheap rip off's of zork). I eventually got a book written on basic by apple which was very terse and not much help.
For windows nowadays there are plenty of free languages you can use. Java, Javascript, and Assembler come to mind right away. There are Zillions of books on programming nowadays plus free tutorials on the web. I wish I had these resources as a youngster. (I didn't even have a modem since my mom watched "wargames" GRRRR) On top of that, kids today can upload their programs to the web, use newsgroups etc to show their work off and get help. The only person I could show my text games to was the fat kid down the street. Does this person honestly think programming in BASIC was easier than programming in Java? Try to get some basic animation going in java vs in BASIC and you will see what I mean.
These little brats don't know how good they have it. I'd like to ship them off to an island where they would have to program with punch cards like my father did.
So your new Dell PC running Windows XP doesn't come with a programming language. Buy one.
I have one question, does sporting equipment come standard with purchased homes? Computers are no different from any other hobby and/or career path. If you want to help invest in your kid's programming skills then buy your kid a programming language. It's no different from buying your kid sports equipment, or buying musical instruments, or paying for lessons, etc. Investing in your kid's development costs.
Ship a free zx80 prototype board with every copy of Windows. :-)
SCNR, Alex.
You look like a million dollars. All green and wrinkled.
I think everyone out there crying "Java, Perl, Python, Linux" is missing the point of the article. We used to be able to flip on our Apples, Commodores, and TI-99s and start typing away in BASIC. In a few lines, we could draw something on the screen, maybe move it around with the keyboard or joystick. Today, trying to get a GUI or some other type of graphical application going in Windows or Linux is not the easiet of things for a kid starting out. He or she probably won't get callbacks, event handling, etc. Forget Java: classpaths can drive an adult crazy, let alone a kid. A child's attention span is going to be pretty short, so they need to get going quickly.
Somebody mentioned RoboCode, and someone else Neverwinter Nights--I think that's an awesome idea. Another one is DarkBasic (http://www.darkbasic.com). In just a few lines of code even a beginning programmer can have a 3D game up and running on the screen.
Does anybody remember tools like STOS? STOS was a basic-language and dev environment for the Atari ST . You could put a game together in a few hours, including sprites, music. It was as simple as the basic-shells of the 8-bit days, simple enough for a 10 year old to build a game in a weekend.
... but they lack the integrated tools (sprite editor, score editor, map editor). A toolset on top of python + pygame would rock.
I can still pull out my ST and whip a game together with that tool. The only thing that comes close today is Python + pygame (or perl + sdl)
mx
Here is an interesting project that combines learning some basic Java with the entertainment value that a younger programmer requires to keep them focused: Robocode
-gnudot
None of this photo-realistic BS that kids today are met with right out of the gate. How about gaining some appreciation for where we are by seeing where we've been. Let the kid learn 6502 asm for a bit, after BASIC.
I am not kidding.
blakespot
-- Heisenberg may have slept here.
iPod Hacks.com
As a person relatively new to coding myself, I would suggest Java. With only about a page of code you can develop a small program. Lots of beginning programmers want to see actual results to their work and don't want to just deal with programs that simply mess around with derivatives of Hello World.
Also, Java is an object oriented programming language like C or C++. This way they won't have to learn an entirely new programming system when they start doing more advanced programming.
for programming Java on Windows I use Jedit, which is a freeware text editor specifically designed for coding java and can also be used for just about every other programming language.
read my blog
musings on politics and technol
With the net and the general increase in computer use in general theres clearly more resources out there for the aspiring programmer. Theres more choice, but you can still download QBASIC if you want. Only now you can get source code that won't be full of typos (anyone recall the back of magazine programs that blighted a generations eyesight?) And then its simple. I think the *real* predicament is actually the gulf between what you want to play (or use, but more realistically for kids, play) and what you can program yourself. This is discouraging. When I started out I wanted to write a text adventure like those I enjoyed playing, which was a tractable goal. Setting out to write GTA4 isn't. Take a look at say the gamedev.net forums. They are bursting with kids who are new to programming and what they have in mind doing amounts to Everquest 2.
Darkbasic (http://www.darkbasic.com) is pretty good for addressing this problem *and* the wish list stated in the article. Program away in what is more or less BBC BASIC but also get relatively easy access to DirectX etc and in particular 3D. Does it teach "good" habits? Probably not, but you can something fairly flashy done within a short period time which is useful motivationally. This is important I think before taking on the more difficult programming challenges out there. It has little or no kudos associated with its use, but I'd argue its the right horse for this particular course. Sure, its not a great language compared to even VB, but I feel its niche is right here. Its not free (although there are evaluation versions for free) but its I think about 30 UK pounds, which is clearly cheap by comparison with say VB.
Plays violent online games as: Nerfherder76
Much like HTML can lead to web development languages and later more powerful programming lanuages, Macromedia Flash has the potential to draw kids into programming.
It might be hard for kids to get their hands on Flash but if they can they'll have access not only to Flash's animation and sound capabilities but also ActionScript, Flashes embedded scripting language. The language is similiar to JavaScript in syntax but with each version of Flash is getting much more powerful. Kids could start by using simple action script to make a ball bounce 5 times but could eventually use Flash to build full-blown webapps using XML and server side scripts written in any language. Seems like a great language to evolve with.I don't mean that seriously, but just before I graduated I was sitting talking with one of the professors who had taught my first year programming courses.
Over the course of the discussion we covered why they had used Miranda (functional, like Haskell) and Modula 2 in the starter courses (and indeed they'd switched from Modula to Turing the year after me).
The reasons she gave were almost word for word what you just said about 'public static void main()' and 'System.out.println'
Too much cruft too early, no matter how powerful it may be later, is bad.
Lord Pixel - The cat who walks through walls
A little bigger on the inside than out
I'm now firmly in the trenches of middle age, and so have begun to succumb to that tendancy that we all get as we grow older to gaze back upon my life and to tell the kids of today how great they have it now. This usually begins with the phrase Back when I was a kid...
Back when I was a kid, microcomputers were just beginning to be something that my super rich friends could get. Computers like an Apple II, which I had no chance of affording.
Then the Atari came out. Not only was it cheaper, but it had really kick/ass graphics like Star Raiders. So I worked for nearly a year, earned $400 and bought my first computer. I had already learned BASIC on other machines, so I saved a bit longer and got a BASIC cartridge. A few months more, and I had a cassette deck to store my programs on.
About that time I started to learn about how the graphics architecture of the machine worked. I bought a copy of De Re Atari. I got their assembler/editor cartridge and started to write some programs of my own. I read the ROM listings. I remember writing my first truly useful program: a program for copying copy protected cassette tapes so I could backup my copy of Jawbreaker.
I goofed around with that silly computer for years. By the time I was finished, there was really very little about the system that I did not understand. And that's probably the last computer that I truly did understand.
It's simply not possible to understand all the inner workings of a computer like that any more. Or, maybe it is possible, but it simply isn't worth your time. You (or your kid) probably have other things to do with computers, like make web pages, edit photos, or make videos. Computers have become a doorway to doing other things, and like most doorways, people don't give them much thought anymore. I sometimes find that a bit sad, but then I think of all the cool things kids can do. My nineteen year old swears that he didn't want to learn to program, but he has a webpage with all sorts of javascript madness on it. He's made videos. He's photoshopped photos of his friends. In short, he's doing what he likes to do: taking the computer for what it is, and using it to do what he wants. I can't say that I see much wrong with that.
I guess I should give some recommendations for those people whose kids really think they do want to learn how to program. They could do a lot worse than to use Python. It's a fairly reasonable language that is interactive and enables you to do fun stuff nearly immediately. If the kid is interested in making games, they can use Pygame, which I've found to be very pleasant to play with, and is available on many platforms. Download some example games, and then help them figure out how they work. Change some of the graphics to use graphics of their own. Encourage them to share their work with others, perhaps using the web. Answer questions. Be enthused. Help get a club or group started at their school. Be a parent. :-)
There is much pleasure to be gained in useless knowledge.
BASIC stamps (http://www.parallax.com/) provide a great intoduction to both hardware and software. Kids can write (and debug) programs that actually DO THINGS -- blink lights, make noises, wave a small flag taped to the end of a cheepie servo motor.
Yes, they also offer some of the worst features of a programming language-environment, no type-checking to start with, and there are severe limitations on RAM and program memory.
But these limitations also teach kids about the "real world" -- if you are limited on RAM, program space, and program speed, then you have to actually think about how you're going to solve a problem!
Once upon a time, *nix supported multiple users on a 64kb PDP 11/45 -- and we took pride in tight, elegant code.
Namaste-
WinBatch is an incredibly easy to learn scripting language for MS Windows that I think fills the niche left by BASIC. It's as easy to learn and use as BASIC, but structured, has an easy-to-read non-cryptic syntax, and is remarkably powerful -- its target market is network administrators. It's not bloated, and doesn't require an intimidating programming environment (it comes with an optional, simple, useful environment about as easy as the one in QBasic, or you can just use notepad). Making simple dialogs is trivial, and fancy dialogs are also pretty easy. For serious use you can buy the optional compiler to turn your scripts into stand-alone EXE's.
It doesn't teach certain good habits like declaring variables and strong typing (I admit it, I still think Pascal is the best learning language ever), but it's no worse than BASIC or Perl in that respect, and easier to learn than Perl.
I would encourage anyone who needs a scripting solution for Windows, or who just wants a handy and cool programming toy for Windows, to look at it: http://www.winbatch.com
It's $100 (and well worth it); the optional compiler is $500 (worth it if your employer will pay for it!) And no, I don't work for them.
Yeah, you try getting work done on a crummy 8 bit accumulator and 2 stinking registers. And a lousy 256 byte fixed stack.
Don't confuse complexity with elegance.
There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
It seems that there are two big hurdles that the little coders face these days and it seems that not having a freely available language isn't one of them. There are lots of free quality programming languages complete with extensive tutorials, such as Python (as pointed out by many)or the lesser known but very capable Squeak.
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â
What can be done to improve the situation?
see subject
grisha.org
"Also, Java is an object oriented programming language like C or C++"
C is anything BUT object oriented. C++ is a big bag hung on the side of C show that you can write object oriented code but the majority of people in the industry tell me that they actually are writing classic C crap and telling management and marketing that they are writing object oriented code.
C is one of the worst things to happen to programming. It is one of the reasons that the buffer overrun exploit has opened the doors to the crackers of the world. And it is it great for writing totally incompreheniable code.
K&C should be shot for this.
Yes, back in the day I used program basic/pascal/udms but now days nobody that didn't have a computer below a 386 even knows what DOS or a command prompt is...pretty saddeningâ¦
PC's today don't let you program easily? Buy a PC from yesterday...
I picked up a Mac Quadra 610 for $1.25 on ebay... came w/ a 250MB HD and 32MB of RAM, keyboard and mouse... bought a MAC->VGA converter on ebay for $6... had an older 15" VGA monitor laying around...
System 7.5.5 is available for free from Apple... many many many games are available free... Downloaded Think Pascal 4.5 from Borland's website (it's free now too)... you can find Hypercard and other similiar tools out there as well which will let them create real applications, etc, etc...
So for under $30 (shipping was vast majority) and a few hours of my time I setup a decent Pascal development system cira 1992... I did it because it re-created the systems I used in high school, and I was able to run my old projects and remenice... but it would work ok for a kid...
Or... beg/borrow/steal a copy of Visual Basic... I bought the book "Essentials of Visual Basic 6.0 Programming" (Schneider) which includes a VB working model... the book is easy to follow and you can make real-world applications that they can run on any windows machine.
Or get shell account at an ISP that has the java environment loaded... Sun provides a great tutorial / API web site, and the programs you create are similar to those used in the 80s... plus you can web-enable things when you get more advanced. Usually these ISPs also have gcc available, but maybe vi/emacs and gcc are a bit advanced for a kid...
Point is... get creative and it can be done... but if your kid isn't into it, or isn't patient you're in trouble...
If s/he wants to sit down and create an xbox-like game in a week or two, then forget...
Send them to any "intro" class at the nearest community college. There is no faster way for them to find out what's available and where they stand in terms of skill and interest.
You can lead a horse to water, but you can't make her a programmer.
Practically all Windows version with IE 4 or 5 come with a built-in programming language, provided by "Windows Scripting Host" (WSH).
For example, save the following line in a file hello.vbs and you can "run" it:
Use Google to find a tutorial (e.g. this one).
-- Sig down
Modern computers are so powerful that a lot of things would still be lost if people grew up programming them. Perhaps we should think about this the other way around? Children should go to the programming.
I learned how to program on my TI-80 calculator. It is slow -- painfully so -- and uses its own sort of BASIC. If you think your child is naturally curious buy them something like this, or an old 386/486 computer. Either way would do fine, I think.
...came with a TKL and a python interpreter pre-installed. Hmmm...
I have not used it yet, but have been exploring ideas and environments that I might introduce my 8 year old son to the wonderous world of programming. It is mostly aimed at simplifying game programming, but what kid wants to program a financial application anyway. My two cents.
Dump Windows.
It's very simple to create a GUI app with GLADE on Linux. It could be a C, C++, Perl, or python app. No need to spend big bucks on development tools.
And, I'm 40 now. This is just like the good old days when we wrote our own code and belonged to
SIG groups. Yes I was 15 when I started coding. I cut my teeth on a Timex Sinclair and an Atari 400. Not to mention my Sym-1 that I programmed entirely in assembly language.
The Internet and news groups bring together the SIG type of group I used to learn. I dialed up the SIG on a 2400 boaud modem and poked around the message boards. Now we hit the internet.
There is plenty of free software out there for a young programmer to learn with. I learned C with DJGPP and a 21 days book in the mid 90's. The resources are there and todays tech minded youth know how to look for them. Besides, the poster talks of improving the situation, but in reality the situation has never been better for youth to learn the ins and outs of computers. Thats just my 2 cents tho
Later,
Phil
TI 99/4A was the perfect machine for learning. It had a decent built in basic, an excellent Extended Basic Cart, and good learning documentation. I remember going from a total neophyte in 5th grade to writing cool little skiing games over the summer... may have to ebay one or find a decent emulator for my son...
Well, there's always the heavy overtones of GNU//Llinux being the only freeware in the world.( at least that's how it seems on /. )
However there are many places on the net that can supply even the lowly Windows user with tools.
Here are a few:
http://www.thefreecountry.com/
http://freebyte.com/programming/
http://www.mingw.org/
^-- ( for those who can't live without gcc/g++ =) )
Remember the Turtle?
That will get thru to a 6 year old.
Polymorphism... perhaps that can wait a few years.
I am very small, utmostly microscopic.
15 years old now and I started programming at 13. My suggestion is Visual Basic for starting out (did you know that in VB you can make a database access application without writing ANY code?). I think that if a kid, or anyone for that matter, wants to learn to program then they can buy some software to do it (compilers and tutorials if they want). The rest of the world who lets us do the programming doesn't want the cost of a compiler wrapped into their OS. Also, as microsoft office is a popular software package it might work to start out using VBA.
OK, that's it, just had to let you know where the kids stand on this one.
-Tim Louden
When I was in high school, I had an Aniga 2000, and was into demo programming. I had to learn the hard way using assembly, and it took me an eternity until I had the first moving pixels on my screen, but in the end it was worth it. Using assemly tought me to be patient and also to be persistent. I think it also weeds out the people who are not really interested in learning hot to program. I had however, a lot of friends who helped me in the learning process, which was essantial in achieveing anything using assembly.
WHen I moved to the Mac, I used Think Pascal for a while.
Just because software environments have become more complex doesn't mean that the opportunity for learning in a simpler environment has vanished. Those old 8-bit micros might not be good for teaching 3D rendering, but they're still good for teaching microprocessor fundamentals. There's no need to go antique shopping on eBay, either: emulators for these simple machines can be found all over the web. How about an Altair, an IMSAI, or a COSMAC ELF for your Windows system? Or emulating an Apple II on OS X? I've even written an ELF emulator for Palm handhelds, and secured permission to publish Tom Pittman's "A Short Course in Programming" to help educate the curious on the good old CDP1802.
The problem isn't that the educational tools of the past have disappeared, it's that there's a wide gulf between learning the fundamentals and writing modern software. What I wonder, however, is just what sort of foundation is really necessary to become a programmer these days. Hardware guys benefit from understanding things like a microprocessor's addressing modes and register usage, as do compiler developers... but to the average programmer, what difference does it make?
I don't think there's any single correct answer, any more than there's one single curriculum that will cover the full breadth of today's software technologies. The challenge of knowing where to start is knowing where you want to end up. Once you know that, the tools and literature needed to acquire that knowledge are all readily available.
But I designed every part of it. My parents were artists and couldn't follow me. My only reference was "Getting started in electronics", which taught me how to use logic gates.
Never underestimate the 12-year-old.
Hardware, software, and blinking lights!
I'd recommend PHP as an introductory language. It's freely available, is easily installable if you don't already have it (for Linux and Windows, and perhaps the Mac), gives the newbie immediate feedback, on Linux has a command line interpreter that doesn't require a web server (or anything else for that matter), has very simple syntax, and is an exceptionally easy language to grasp. It's the next best thing to the 80s when all home computers came with BASIC in the ROM.
I was facing this predicament recently and found a few solutions. They're all BASIC dialects, but I learned BASIC on the Apple II decades ago and still turned out to be a decent programmer when I learned "real" languages. (Personally, I think that if you can be "ruined" by using a language, you were too brittle to be a programmer anyway.)
The first was BLASSIC, which is as close to the BASIC dialects of early personal computers as it gets, complete with line numbers, PEEK, and POKE. The cool thing about it is that it supports simple graphics, which is what really got me interested in the early 80's. It's free and purports to be multiplatform, though I've only tried it under Linux.
The other two interesting BASICs were DarkBasic and Blitz. DarkBasic actually consists of several different packages. There's one called the 3D Game Designer which lets you create first-person shooters by dragging and dropping. When your little one has exhausted the rather limited possibilities there, you can upgrade to the full DarkBasic package and he or she can begin implementing simple behaviors in dirt-simple BASIC.
The Blitz product is primarily interesting (to me, anyway) because they offer a dedicated 2D version of the language devoted to 80's-style arcade games, which are orders of magnitude easier to program than 3D games for a novice programmer. Blitz doesn't use line numbers and optionally supports C-style syntax for function calls, and has a GUI toolkit that is pretty easy to use once your beginner gets a toehold in programming.
My project with my daughter was a clone of Pac Man with Blitz. It took several weekends, much of which had more to do with helping her understand cartesian coordinates than actual programming, but in the end she did most of the coding for a single level of Pac Man, and she was quite proud of herself. I doubt she'll pursue it very far -- which wasn't the point anyway -- but now she has a much better understanding of how software works.
Proud member of the Weirdo-American community.
When I was in Junior High, I learned some basic HTML in much the same way. Every computer already has the "tools" you need to do that, a text editor and a web browser, it's easy for me to picture a kid naturally progressing from simple HTML to some Javascript, and then either to Java, or to CGI/Perl/etc. The problem with this is that I doubt that many websites use "plain" HTML anymore. On the rare occasion that I look through the source of a webpage nowadays, it takes me several minutes to find what I'm looking for, and I know what all that code does. I think it would be quite inscrutable to someone just putting their feet in.
On a different note, the article complains about programming tools not being included in the set of apps that come with the OS. MacOS X does come with the very nice (and free) Project Builder, which is a joy to use, and I've used it to write C and C++ code, using OpenGL. (It also does Java and Objective C). Because OpenGL is a cross-platform standard, and since ProjectBuilder uses gcc to compile C/C++ code, it's trivial to port it to Unix or Linux. I can vouch for this personally, having moved large projects for an undergraduate Computer Graphics course back and forth between OSX and Solaris&IRIX, and only having to change the path for the OpenGL header files.
"Inflammable means flammable? What a strange country!" -Dr. Nick, The Simpsons
Python and Ruby already come preinstalled on Mac OS X. But I personally think Squeak (originally developed at Apple, BTW) would be a better choice for kids. It doesn't come preinstalled, but is available as a free download. (And it's also available for Windoze, if you insist.)
Computers today are MUCH more accessible to beginners. There's a lot more to learn and it may be more overwhelming but most tool are much better designed and documented and the Internet has an unlimited supply of tutorials, message boards, and chat rooms to help the beginner. Kids learning today have a much greater advantage than those that learned in the 80's. I'm not just being an old grump about this; kids today are learning much more than people used to and its primarily due to the advancement of technology. I remember spending months trying to get color working correctly on an EGA card with assembly language source code from an old book. Today, you don't have to do things like that.
Rebol does everything that basic does and a whole lot more. Runs on any platform you can name (almost). The entire executable fits on a floppy (~500k)
http://rebol.com
Learn it, Live it, Love it.
I agree. Of course younger minds are more flexible than older. look at how much easier it is to teach a foreign language to a young person. But anyway, I'm trying to teach myself Smalltalk and a couple problems make themselves apparent. One is as someone else mentioned is documentation. Both quantity and quality. Tutorials that are outdated. Ever try to find a book on your specific dialect? The bookstores are scarce on such topics. But oh boy is things like VB and C# applenty. Even SVG books are scare. There's also the wrapping of the mind around concepts. What's recursion? What's an instance? What's a method? How about polymorphism, encapsulation, and multiplicity? How is intent represented in an object-message paradigm, without their being chaos? (kind of like getting a crowd to do something, by passing notes around). There's also the question of safety-net. A good language allows you to make plenty of mistakes without penalizing you severly for making those mistakes (Kind of like learning Linux, and having to reinstall every time you make a mistake). Start up squeak, pull up a project and play with it. Want to modify it. Change what? Attempt a change, scary error box pops up with long amounts of text saying you've been a bad boy and I don't understand you. Now what? Where's the undo? Hey! I don't understand you either. I'm going back to the safety of what I do understand.
You don't need anything more than a browser and one of the billion online tutorials to learn JavaScript. It's simple enough to be productive quickly, but complex enough to get into something like "actual" OOP as you go. As a first language I think it's a great choice.
From what I know of squeak, it sounds like a good environment, but AFAIK it wasn't designed specifically for kids.
VBScript comes built in w/ some windows, and perl is what I started in. Those are both a bit easier than c++ for beginning programmers...
we are all one consciousness experiencing itself subjectively - bill hicks
I think a TI-83 calculator is a perfect option. Kids do not need to learn complex programming, but just an idea of what it is like. They will atleast be able to understand the flow of how programs are constructed. Loops, If/Else, and variable managament concepts can all be learned from a TI-83. They'll also understand the value of programming when they make a program that can help them cheat on their math tests.
The biggest problem for begginers is GUI's. Back in the 80's, I was a pretty good programmer on DOS and other systems using text based procedural programming (C, COBOL, FORTRAN, PASCAL, BASIC, Assembly). When the GUI started taking over, I found it extremely difficult to make the transition, it's a whole other world to learn. When a beginner is faced with the task of learning programming, plus learning the API and methodologies of GUI programming, it must be an almost impossible task to get started in. Plus I'm sure most beginners are not going to be excited to make console based apps, they are going to want Windowed apps. But I'm sure they will have an easier time if they forget about GUI's for a while and just learn the basics.
I remember growing up and getting the kid's magazine "3-2-1 Contact!" in the mail every month. It would always come with a new BASIC program (always a simple game) and I would rush to my TI-99/4A and type in the program to play the game. Of course the BASIC programs were written for the Apple II so they wouldn't always work (though I learned to "port" them rather quickly). A big motivator was that you had to connect the TI to the television, so it was always fun to see your programs running on the t.v. (at least it was when I was 7 ;).
Teach them to program in Java. Then you only have to worry about the state of the Java Virtual Machine, not the entire computer. Granted, they won't learn how to create thier own printf functionality in a mere 4 pages of MACRO-11 assembly language, but then, why should they?
"Freedom means freedom for everybody" -- Dick Cheney
- Windows XP Why? Because, like it or not, MS is the 'standard' right now. It can be a good, reasonably stable front end for the beginner. As has been stated here previously (and to satisfy all the Linux championers) - When the kid bumps up against the limits the system imposes, they'll find a way around them. If that means moving to Linux or a better (home built) box, so be it.
Of course, do make sure that the system has SP1a and any other available (stable) patches loaded, along with some basic levels of protection such as:
1) Up to date anti-virus protection. AVG Anti-Virus FE (Free Edition) is great for this.
2) Up to date software based firewall protection. Again, a free product can fit the bill here as well. ZoneAlarm FE works well.
3) A 'system restore' CD, preferably bootable. Just image the installed system onto a cd, so that if anything ever corrupts it beyond repair, even given your careful setup of the machine, that the kid can easily restore it back to working order with the CD. Nothing will sap a kid's interest faster than having the machine be inoperative when he/she wants to go learn on it, but it's unusable. A restore CD that they can use without you being around is a good idea to mitigate this.
Then, load the machine with:
- QBasic
Yes, I know MS made it. Yes I know /. has an almost immiediate bias towards MS. But for me as a kid, QWbasic was a wonderfully simple programming environment. And the fact that it had online help for all the commands, many with examples, cut and paste facilities, along with a built in debugger and example programs to pick apart, was a god send. It doesn't come with XP, but you can easily copy the latest version either off the 'Net, or the 98se install CD may have had it buried somewhere IIRC...
- Games
The games need not be overly resource hungry, your chice of what games to load should be guided by the power of the machine you are loading them on, and the tastes of the kid that will be using it. The games will serve a very useful purpose.
Kids sometimes have a short attention span. When they butt up against a wall in their programming, or their homework, or hat have you, the games will be a good way for them to relax. And a relaxed mind that comes back fresh can often find the answer to the problem much easier.
This should be a good starting point. Encourage the kids to learn on the machine, to poke around with the software (and hardware, but preferably under yur guidance.) Soon they will ask all sorts of "What would happen if I.." questions, and will use the PC to find out, which is the goal here.
Also, a good book on BASIC programming would be a nice addition. I don't know if your local public library would have any, but look around. And yes, you want this to be a physical book, not a CD. Why? Because it will encourage their typing skills, as well as be better for their eyes. Looking at a computer screen with no break is bad. Having to shift your eyes between a book and the screen is much better.
Good luck, and Qapla'!
Qapla'!
All modern computers come with web browsers, so they can learn to program in JavaScript.
Yup. Java the language isn't all that hard... but try explaining to a kid how classpaths work and all that nonsense, or imagine pulling up the APIs and being swamped with fifteen thousand classes.
Even the tutorials would be overwhelming to a kid.
What about the Lego Mindstorms Kit? This is the sort of thing that kit was invented for. You get a bit of engineering, a bit of programming, and a bit of problem solving all in one.
The Lego software is very, very simple-- so simple it's like clicking blocks together, but as they get more advanced, they can use Visual Basic or other languages to get more advanced functionality.
If they're more interested in the engineering side, there is at least one O'Reilly book available that tells them how to build their own sensors and many other advanced applications.
I only WISH I had something like that when I was a kid.
-Alan
[Sorry for the AC post. I know I left that Slashdot ID around here somewhere....]
My New HP computer from Office Max had Python 2.2 pre-installed on it in a hidden system folder just off the root. No idea what it's used for by HP, but I was thrilled to find it.
This is a great article. My little one is 2.5 and just learned how to work a mouse good. On a related note, does anyone know of good keyboards or mice for kids? He has a hard time managing things sometimes.
This site is a high school web site for a beginning course called Introduction to Computer Programming. The instructor uses Python, and has a link to the iso of the CD given to each person in the class. I have the previous (2001) version of the CD and it has Linux, Windows and Mac versions of Python, all documentation, Tutorials, How to Think Like a Computer Scientist, sample code and games and much more. While Knoppix is great, I think this CD is better.
Eat Lamb, 1 million coyotes can't be wrong
Introducing programming to a kid with Perl would have to qualify as child abuse.
;)]
[That being said, I use Perl wherever possible
I created a complicated feature req + bug report + task mgmt DB in MS-Access. It's a split DB with the data tables on an NT server and a forms client on each user PC. 33 tables, 39 relationships, 188 fields, 42 forms & sub-forms, 84 queries, 27 reports, 10 macros, and 20 modules with several thousand lines of VB. It worked great with a couple hundred records and 2 users. With 125+ users (usually 5 or more simultaneously), and a 14 Mb of data, it's a real, slow, piggie, and the primative page-level locking becomes a major pain. .Visible property on forms. Yes, I try to use SQL instead of recordsets. Yes I've analyzed my indicies. But still, users beat me up when their brand new, high dollar, 3 giga-poodle, thousand mega-ram, half tera-disk, compiles-faster-than-a-bat-outta-hell PC looks alike a 286 when accessing my DB.
Yes, I've done the basic optimizations. Yes I use the
The Russians have won. They have made the world a cesspool of distrust, greed, fear and hate.
Why not get KiXtart and play with it? It is free, has a lively user community, some great addons, and can be easily debugged. ScriptLogic have produced a good HTML Help version of the documentation, too. And there are loads of User Defined Functions to play with.
;-)
One idiot is even scripting Nagios plugins with it
Phil
PHP is a rather easy language to learn and it uses the same type syntax as other languages.
Get him an iBook with OSX and let the kid learn Ruby - it's builtin to OSX.
Another entry into programming is creating web pages, by tweaking them with JavaScript, and eventually CGI scripts. Really anything that allows tweaking is good, such as tweaking Mozilla or the computer desktop. Programming is about tweaking the world.
Once they feel ready to transition to a full programming language (Java, C++, etc.), there are ways to ramp up to that too. JavaScript is a great way to learn object-oriented concepts. Learning game programming really motivates kids and they learn about 3D graphics too (Nehe and GameTutorials). For building real desktop applications, NetBeans and the free JBuilder edition let you visually design java user interfaces, but something like Thinlets simplifies java development greatly (and introduces you to XML, see also other XUL-based development tools). Of course there are thousands of resources out there for learning java, see Sun's New to Java center.
Lastly, I think kids should keep a blog or a journal somewhere. If you have webspace, set them up a MovableType blog and let them tweak everything they want (adding commenting, shoutboxes, javascript goodies, etc.).
Don't learn. Hire more H1-B's. Problem solved. That's what the big businesses do.
Why should kids bother to learn any programming langauge when they can hire some hi-tech coolie from India or China?
It came with TI Basic. I was only in Kidnerdgarten and remember copying short TI-Basic game programs out of computer magazines so I could play them, and also remember having to queue up the tape recorder to save/load them. Heheh that's the first time I heard 'The modem sound'. The best games tended to be too long for a kidnerdgartener to type in, so I'd ask my Mom or Dad to do it. Although I never understood the programs for the games, I do remember drawing colorful pictures with print statements... ( on the TI, you could make say the letter X display as a character sized red 'pixel' and the letter O display as brown and so draw a red house with a brown roof. I don't remember if I comprehended for loops, but I doubt it..
The novelty of that wore off with the Atari 5600... They made like 8 games for that but I scored over a million points in Joust!
My next experience with a computer was with a used Macintosh 512KE. My mom used the spreadsheet program Wingz at work, and had shown me how to add columns of numbers etc with it. I was about 10 or 11. I never used the thing much though. Didn't interest me much. Then my friends turned me on to AD&D and I thought... "Why not have a spreadsheet to keep track of rolls/hitpoints/dice etc. Soon I taught myself enough formulas to create a speradsheet to do that, and my Mom was asking me for help with formulas..
After that success, I wanted to learn to program a game of my own. I got out the old TI and took out the BASIC manual but I was missing the cord for the tape recorder and the RF adapter caused screen static. So I looked through Mac magizines for stuff about programming... I read about a 'programmers switch' that stuck on the back. I tried pressing it, but nothing interesting happened. I think there was a prompt or something.. There was certainly no useful documentation in the manuals. I was looking for the TI-BASIC Ready sort of prompt for the Mac ( I had no idea what a compiler was and assumed computers must have a 'programming mode' or something. I kinda gave up till I found Microsoft Quickbasic for the Mac. I asked for it for my birthday and got it. After playing with that for a while I was hooked. Soon after they got a Mac II si. I used the algebra I was learning to draw funky shapes etc, and tried to make spirograph looking stuff.
I was irritated because there was no way to draw a nice elipse using ax^2 + by^2 = c. If I looped over x, then the circle was smooth at the top and bottom but choppy near the sides and if I looped over y then the sides were smooth but the top and bottoms were choppy. I tried everything my crappy grasp of math could think up to make a nice circle like the 'DrawElipse' function made to no avail.
That was until we got to the trigonometry section of our algebra textbook. Then I learned how to loop over degrees and could draw some neeto circles by computing x and y using sines and cosines. Now I could make all the spirograph pictures I wanted - even nifty lissougous screen save looking things!
Microsoft Quickbasic for the Mac had replaced cross country running as my hobby by the time I turned 15, and soon I lost interest even in that. I was onto BBSs and majoring in Biology in college. But once I took calculus there I decided to switch majors to math/comp-sci and started taking classes. CS101/102 was Turbo Pascal for DOS. I ended up learning x86 Assembly language and Scheme next. Till then I'd had to use the computers in the lab, but there was a nice scheme interpreter for the Mac ( I'd stupidly bought a Centris 610 before switching majors ) so I could do my home work at home for once. I also bought Symantec's 'Think C' a bastardized C that wanted to be something like C++ but was just plain dumb. ( By then I'd heard that C/C++ was the thing to learn - too bad no C/C++ classes were offered at my school at that time ) I taught myself that, and even managed to make a little Mario looking icon animate usi
I don't see the lack of programming access for kids to be a problem. The days of the 80's where everyone ended up learning to program are over. We now have the programs, both free and costly, that serve the purpose of the old needs.
As a programmer we often wish that others were able to build their own tools or fix their own problems. Perhaps we wouldn't have as many problems with programs or other programmers if programming hadn't been such an informal subject in the 80's?
If a child is interested in computer programming, there are too many sources of information and free software to not be able to fulfill that desire.
I see no situation that needs improvement.
DH
Sure, Win32 doesn't come with any reasonable built-in programming languages.
But it does come with MSIE 5+. Kids can easily begin "programming" in HTML in 5 minutes (I've taught junior high school kids the basics of how to create and view a file this quickly). And from there it's only a short matter of time before they want to check out JavaScript.
Granted, JavaScript can't manipulate binary files, it can't [really] open socket connections, and it cannot do a bunch of other things that adults expect a programming language to do. But it is free, it is readily available, and kids *can* be motivated to learn it through seeing all the "neat" things they can do to their web pages. There are lots of online resources, etc. The bar is set very, very low for learning JavaScript. And from this they will learn variables, loops, functions, objects, syntax, etc.
(I know very well that full-fledged DHTML is a nightmare to do cleanly and x-platform, but I'm just talking about basic JavaScript getting their feet wet in programming.)
I'd say that Dark Basic or Blitz Basic (and their 3D versions) could be a great start for kids. At young ages, it really helps to have projects that keeps the child's attention, and a game can do that. Also, there is near instant satisfaction (you can write a good version of pong in less than 50 lines).
The one thing that you have to be carefull of is bad programming practice - unless they have good guidence, they can pick up bad habits very quickly.
(Also, I don't think either have you explicitly declare variables, so debugging can be a pain.)
Picture here.
By the way, this was a final project for cs32, the sophemore level software engineering class at Brown University.
There's a compact, simple development language called OZEXE at http://www.ozexe.com. I think it fulfils most of the points in the article. At any rate, the language is easy, but flexible. There's a mini-API interface for I/O and other windows functions. It has a lot of support for automation. There's a built in UI editor. You can write all kinds of non-graphics-oriented programs really quickly. The coolest thing about it is: it hides your source code right in the .exe file, so you don't have to maintain separate source files, and you can actually load the .exe file right into the editor!
Plus, it's a small download, and it's basically free for non-commercial use.
I was asked this question two months ago and for a home schooled high school student and I said python. Because:
As for Java, that would be fine as well and probably has some similar resources but why start (as mentioned elsewhere in this thread) with a bunch of detail you have to master before you can start getting something done <flame> indeed why get into it at all -- unless you need it </flame>.
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
If anything, I think there are a lot more good options for kids these days than there were 20 or 15 years ago. Machines may be more powerful now, and programming environments potentially more complex, but that power can also be (and has been) used to make the task of creating programs simpler. RealBASIC is just one great example of an environment that's both powerful and friendly. You essentially draw your user interface, then hook stuff up to it using a language that's relatively straightforward.
Other good choices are AppleScript, Visual Basic, and Java. I haven't heard much about LOGO recently, but it's long been a favorite in the educational realm, and I'm sure there are some good implementations out there. Heck, there are so many different programming tools that you can basically pick the level of complexity that you want to work at and find an environment to suit.
Kids today may not have as much opportunity to dig into assembly programming and all that, but that's probably a good thing. In a world where very few of us ever have a chance to design and implement an entire project from the ground up by ourselves, it's not such a bad thing to start out in a sort of black box environment where you have to read documentation and use the tools at your disposal.
Seriously, get a Mac. Mac's come with a full set of development tools for free. Learn to program in Java, C, Objective-C, or C++. And we're not talking about a command-line-vi-or-emacs-and-type-Make build, either. Project Builder and Interface Builder, though not perfect, are pretty good and free.
Works for my kids.
> DB in MS-Access
Thats your problem. Not VB.
VB and a good back end (say SQL Server 2K or Oracle) can handle your app no sweat.
The surprise isn't how often we make bad choices; the surprise is how seldom they defeat us.
Give your kids a National Instruments - Lego RoboLab kit!
Syntax is difficult when you're first learning because you can easily isolate a simple program down to it's core functionality. Learning how to implement that pseudo-code in a real language can be daunting. A good reference helps.
C programming isn't difficult, it just requires attention to detail (same with Java, C#, C++, etc...). VB is a sloppy language. I do a significant amount of work on Linux and Windows systems. My first choice on Windows is VB (quick and dirty). My first choice on Linux is Java. For web apps it follows the same pattern, Windows/ASP Linux/JSP. If I had my choice I'd do everything in C/C++. However since there is always a time constraint I am forced to choose speed of development over the time necessary to make a stable implementation in C/C++. Granted this is largely due to my experience. However, I've worked with some pretty intelligent people who were C/C++ developers for years and they all seem to prefer Java by a significant margin.
Most windows machines have web browsers with a built-in Javascript interpreter that kids can learn to program with. There are also hundreds of other free platforms kids can download to play around with, from perl to the JDK to custom RPG engines and game engines.
I really don't think the fact that computers were more limited in the past meant they were easier to program. I remember trying to hack some GWbasic once and it was difficult just to edit the text! The editor didn't even have the smoothness of MS-DOS edit!
A kid today using a free copy of the JDK and any one of the free fantastic IDEs is going to be able to do way more then I was with my paid-for copy of Borland TurboC++ for win3.1 that I got with my first computer.
The person who wrote this needs to learn that "The way I learned" is not "the best way to learn".
autopr0n is like, down and stuff.
This is a really good example for how to learn new things effectively. I can bore the heck out of anyone with data-modeling/OOP/CS concepts who are new to computers. But if someone has a goal in mind, then you wouldn't mind jumping through hoops to get to the the finished line. For me I started to program on an Atari 800 because I was intrigued with their games and wondered 'how they do that?'. I didn't care if I have to learn BASIC or ACTION or some assembly language to do I wanted it to do.
"I for one started writing text adventures on my TI-82. :+)"
I would say the TI-82 was also the platform that sparked my love for programming.
I took classes and coded up the assignments on PC, but I never really got hooked. But after I discovered just how powerful and complete the basic-like language of the 82 was, I was hooked.
People were astounded when I showed them the simple driving game I came up with. Nobody at my school had ever thought of the 82 as anything more than a fancy calculator.
The key is, kids need something straightforward to initially ignite their interests. The interface and programming language need to be closely tied to the hardware, something you can't get on PCs today.
So, get your kids a graphing calculator. It's the closest thing on the market to the computers of the 70s/80s.
That or else download an emulator for your computer of choice. Simplify the introduction. They'll pick up the complicated stuf when they discover how much they like the process.
Man is the animal that laughs.
And occasionally whores for Karma.
You can find it at http://www.livewires.org.uk/python/index.html
Get a free ipod.
PovRay. (http://www.povray.org/) Folks like to see their code DO something, ray tracing is interesting. Its free as well. PovRay has a nice C-looking scripting language and lots of examples to get started with. You might get bored fast, and want to move to something like QBasic, but I suggest Java. Most of the problem when people are starting to programming is finding something for their code to DO, with out getting to complicated. High level languages like Java or Python will allow for maximum satisfaction in minimal time.
OS X has lots of good developers tools (being unix,it would). I dont understand how some developers can enjoy programming on Window at all, unless they have not been exposed to other platforms.
TallGreen CMS hosting
I program professionally in Scheme, you insensitive clod!
(Seriously, I do.)
If I were teaching this imaginary kid, I'd go out and find two things:
1. "Fun" types of programs that allow you to ease into programming with some constraints and a built-in scripting language(there are lots and lots of game-making tools that satisfy that need, or you could try something like Flash...)
2. Modern languages that are designed to cater to the programmer over the machine(Python is a good example of course). C and C++ may be the standards for the "heavy apps" but they are fairly frustrating at times.
Personal experience: I tried learning some C out of the K&R book, using GCC on a Linux box my brother had set up. I stopped around pointers because I was getting frustrated with the fact that I wasn't able to immediately use what I had learned in a bigger project.
What I wanted, and still see a need for today, is a set of standard library functions that give you the same level of control that a programmer using the built-in or cartridge BASICs got in the 80s. There isn't a guaranteed no-hassles solution for a lot of otherwise fine languages, which is too bad since a young programmer would probably appreciate, like most humans do, being able to make pretty pictures and sound appear a lot more than learning new data structures, especially if it can be done with only a few lines of code.
I mean, the kids who learned everything about their computer 10 years ago didn't do it because the tools were there. The computer was something that interested them and they soaked up all they could when they could. The same is still true.
:P.
:P), and a lot more. I didn't learn to program because it was the only thing I could do with my computer, I learned to program because I loved computers.
Back when I first got my computer, in 1995, I didn't even have an ISP account. Then I got AOL on 2400bps (hey, it was a small town, OK?). Eventually I got unlimited dialup, but we only had one phone line.
Now I live in the dorms and have 24/7 internet connectivity.
But it sucks, I spend all my time surfing the web and posting on slashdot and fark rather then coding, like I used to.
So I wonder, maybe having access to the web isn't the greatest thing for kids who want to learn to program
But other then that, I agree. This article is totally pointless. Not having DOS with built in basic isn't going to hurt kids. I cut my teeth coding win16 programs with copy of Turbo C++ I paid for with summer job money (along with the rest of my computer). Later I moved on to Java with JDK1.0. Along the way I picked up C, Pascal, VB, Scheme, X86 assembler, Qbasic (okay, so my computer did have basic built in after all. I didn't discover this for quite some time though
autopr0n is like, down and stuff.
'nuff said.
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
I think BASIC has to be the best simple to use and learn.
Once they have got their feet wet, then they can move on to a higher language like C/C++, etc.
Just add window control commands?
OPENWINDOW
CLOSEWINDOW
OPENDIALOGBOX "HELLO"
OPENFILEDIALOGBOX OPTIONS, *.JPG
SETMENUITEMS
SETMENUBARITEMS
Wise men speak because they have something to say, Fools because they have to say something!!!!
Why the heck should a kid who's never coded before download a bunch of incredibly obscure (to THEM, not US) crap like Cygwin
They won't. They'll download things like sphere an Javascript interpreter optimized for writing RPGs or any one of the hundreds of other programming systems designed for fun rather then UNIX hacking.
And anyway, they'll almost certainly start hacking together web pages with Javascript and stuff.
autopr0n is like, down and stuff.
I was just thinking about this subject recently...
;-)
.NET either.
:-)
I "started out" at 14 years old with a 64K Atari and Atari BASIC. You guys with C64's, Timex etc. all know the story... you got your computer, traded code with friends and typed in every magazine listing you could find.
Back when there were more OS "choices" the vendors shipped decent languages... and even IMPROVED the languages after they shipped. The language was designed to add value to the computer, and hopefully drive sales. What "bundled" language does that today? Oh, that's right... monopolies do not depend on value
Now we have, what? Microsoft Visual BASIC (for Windows only, not that I want it on Linux). VB's purporse is not to drive sales of computers (or Windows OS licenses), it's just a product. VB users are not quite happy with the MS market-roid decision to fold VB into the
Best thing out there for curious coder folks is Python. It is clean, designed to be simple and very high level (more so than the language it is most compared to, Perl). Python favors an "application" approach as opposed to quick string-parsing tools. You have bindings for most popular GUI toolkits, such as GTK1/GTK2, Qt, wxWindows (Win32-ish but portable), Curses etc.
Assuming GTK is installed, I'm having a blast experimenting with GUI code that's at home on Linux or Windows. Yes, GTK runs great on Windows these days (assuming it's installed!
It's still not quite like the 80's, but the open-source tools are the closest thing.
For graphics and sound, the *SDL libraries are nearly universally portable. For Python, you want "PyGame" not PySDL (which is unmaintained).
Learning to program in the 80's was simpler because the machines were more limited, and generally came with BASIC
;-) Anyway, I don't think programing back then was easier, if you wanted to do any kind of graphics you had to pretty much write it from scratch (there was no graphic library, engine etc...). If you wanted to get into something a bit advanced like having lower case characters in your output (no I am not kidding) or play "music" on the speaker, you had to learn Z80 assembler (I enjoyed it, but don't tell me it was simpler).
On my TRS-80 BASIC was quite limited, plus admiting I used it would be admiting I actually used a Microsoft product at some point in my life
Beyond the technological limitation there was a culture thing too. Most kids today have access to a computer and can easily have access to somebody who has a clue about computers. Public libraries carry a lot of books about computing and programing these days.... Going online you can find documentation on pretty much anything, and even find people who can help you.
I had to buy my first computer which cost me the wages of working for two summers full time, and any adult I knew at the time thought it was a waste and that I should have bought a moped instead. To get books I had to go to specialized stores, and books were very expensive.
Simpler ? I think not.
When I have children, I will be more than happy to let them use my Mindstorm RCX.
RCX Basic (?) is a simple way to program, based on putting together different tiles to write a program. Any 10 year old could do it.
Later, they could move on to Lejos, and once they are confident with that, they could move on the RCX scripting language (I forget the name... might even be RCX basic) in order to gain some insight as to how the machine really works (eg interrupts, thread management, etc).
I remember reading that Linus used to program games in machine code when he was a kid(can't remember what system that was...)
I'd pay to see a kid(or anyone) do that today.
It's free (beer), and easy for kids to use (comparatively). It's also what I started on.
Tim
The reason I started programming (on my Commodore 64) was that computers were cool. I loved computer games, and wanted (doesn't everyone?) to write my own. I leaned BASIC by a combination of trial-and-error-and-error-and-error, and good old COMPUTE magazine.
After a little while, I learned 6510 assembly, because I wanted to do things fast, and was amazed at just how fast assembly would do little things.
Because I learned assembly *before* any formal classroom computer education, I had a really easy time with things that other kids struggled over. If you learn assembly, you understand what the computer really does with your data, and concepts like pointers and data structures are really easy.
The problem is, kids today have 3GHz P4 boxes on their desks. They have 512M of RAM or more. Therefore, they can write in bloated languages and it STILL goes fast. Since everything has to have lots of pointy-click buttons and menus everywhere, you can't write assembly from scratch the way we used to... so we're back to trying to teach kids the abstract ideas of programming without having a totally hands-on way of showing them why it works the way it does.
I do think functional languages such as Haskell are absolutely gorgeous, but they do tend to have an inherent confusability-factor that isn't so severe as with imperative languages.. Try to explain this to a young child and have them understand it:
Don't get me wrong, I think it would be a fantastic thing to teach, but maybe it should be restricted to nearer the GCSE level.
It lets you make mistakes. You will never learn why (and when) goto is bad until you hit a problem using it.
I learned why functions are good via hard way. Wrote a game in qbasic and then to add a second level I needed to retype all 1000+ line all over again. It then became very clear why functions are good.
My experience - early 80s home computing in the UK
---
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 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.
--- Commission free trading & free stock up to $500 - use http://share.robinhood.com/kelvinp6
In the 80's, pc's were largely for hobbyists. The original Apple was designed by, for, and sold to hobbyists.
A huge percentage of the people who bought computers were buying them for the sake of the computers rather any other reason. They wanted something to play with, program with, and explore. Even in schools, 99% of them were bought to teach programming.
Nowadays, the machines are sold for primarily non-programming purposes. People want home machines for email and doing their taxes, and maybe playing games. (They want to see this new thing called the world wide web.) Even updating a web site or blog doesn't require programming.
Currently, I doubt if 1 in 20 computer users ever do, or want to do, any programming. (linux users mostly fall into that 1 in 20)
Today's machines aren't primarily for hobbyists anymore. It's been corporatized and the suits sell machines now.
Naturally, no one is going to provide programming functionality to every box if 95% of your customers don't want it and can't understand it. Why develop it as part of the OS then?
It makes a lot of sense to separate it out from the operating system and sell it as an additional program. After all, if the compiler came with Windows, it could never stay competitive with separate compilers. If it did, it would probably prevent other compilers from doing well. (IE vs netscape. *cough* *cough*)
Now, linux is a different story. Linux users tend to have a much higher percentage of programmer vs mere user.
Of course, it would be nice if the ps/2 and xbox allowed coding for free. But both Sony and MS are basically monopolies, and neither has any interest in helped the hacker-minded modify their systems. If they did, they wouldn't have added the "security* features that require mod-chips to defeat.
The guy there specifically wants to address this very problem and has created a java applet for new programmers to use to get aquanted with procedural programming.
/. crowd can help him out... (please be kind!).
He's been at it for over a year, and hasn't had much feedback. Maybe the
devapprentice.com
Source code, of course is the easiest way to learn. Just have the person start with web pages, let them view the HTML and javascript. The languages are very easy to understand, even if you have no programming knowlage, and it makes it possible to learn without anyone teaching. After that, download the code of some program that kids will probably want to mess around with, like Quake 2. They can just fiddle with things, by making players go faster, weapons spawn differently etc... By just messing around with the code, it is very easy to learn how it works and its a great start as a way to learn how to program.
My nine-year-old son has been learning to program (brings a tear of geeky-paternal-pride to my eye). Our approach has been two-fold.
On the expensive side, we've purchased a Lego Mindstorm set (VERY cool! I like it as much as he does). The starter set runs about 200 bucks, but you can get 'em a little cheaper on eBay.
The Mindstorm development environment is drag and drop based and you fill in property settings to make things work. It has most of the fundamental coding constructs - if statements, for loops, while loops, etc. You can use variables, and it also has various I/O functionality by way of timers and external sensors. My son and his 10 year old friend both picked up on it very quickl, and are now doing really cool things with their Lego robots.
On the free side, we've also been teaching him Web development with JavaScript. My computer at home has a whole host of development tools/environments on it (VS6, VS.NET, PHP, Java, etc). He doesn't use any of it - Just notepad and a web browser (IE and Mozilla - to point out the differences!).
My point is this - if a kid wants to learn how to code, he/she doesn't need the computer to come with BASIC or anything more fancy than a text editor and a web browser. I'm familiar with the argument that "scripting isn't programming", but as an ealier post pointed out, programming is about learning to solve problems, and you can do that just as well without a compiler.
Its got a well defined syntax, is ported widely, works interactivly (makes a great calculator), integrates well with GTK.
bcl
Remember Lexington Green!
Your right, and I hear that alot from people. (what the previous person said)
They ask what assembler language is, and you explain how it works... they look at you with a wierd look and ask you why the hell you would use something that simple with no structure.
Elegance definately comes to play with assembler...
-- This space for lease, low setup fee, inquire within!
You really want to reinvent the wheel? You really want to give people an old fashion start at the noble art of code hacking? Well, deep in the Borland Web site is a free download of Turbo Pascal (5.5). It wiped BASIC's clock; it made heroes of Boys; It came with IDE and Debugger, it washed clothes whiter...
An' thee wonder why t' young generation dont understand us naymore...?
Here's how I remember my mindset as a "little coder" playing with Apple IIs, Atari 800s, etc.: What novelty can I coax out of this 8-bit machine? I see my "little coder" peers do stuff with their computers that make me say, "wow, that's neat! Show me how you did that!" What can I code that'll make my peers say the same about my work? (That motivated me to write a small turn-based wargame on a 40x24 text-screen.)
The mindset was the same when I became a "not-as-little coder" with an HP48 graphing calculator for Calculus class: What novel use can I coax out of this 4-bit machine? I see my classmates do things with their calculators that make me say, "wow, that's neat! Show me how you did that!" How can I get the same reaction from them? (That motivated me to write "simulate two sound pitches out of one speaker" code in 4-bit Saturn assembler, so that my calculator could sing a Christmas carol in two-part harmony.)
Unfortunately, my mindset is considered threatening by software and hardware vendors. I find a way to make their product do things that the designers and engineers never intended or even dreamed of. In people like me, that mindset is called creativity, but for a few, it's instead called vandalism. Viruses and similar horrors are unleashed, for no other reason than the desire to hear or imagine a peer saying "Wow, show me how you did that!" Then the big vendor is publically scorned as a company that makes insecure products, instead of heralded as a company that fosters creativity in their customers. The "big vendors" predicament is the complement of the "little coder's" predicament. The bad apples motivate an electronic gadget or software company to:
You see, end-user creativity and freedom to tinker are security risks.
Last time I checked, Linux came with gcc, and java, Perl, Python, PHP, etc., are only a free download's step away. Real hackers, real programmers aren't going to get their start on Windows: it'll be on Linux.
Cyde Weys Musings - Scrutinizing the inscrutable
I got into computers because of video games and curiosity, not because I had access to some whiz-bang machine with high level languages.
Machine code was POKE'd into memory. No assembler. No compiler. BASIC at that point was little more than a CLI you booted into, not a real language.
You can't "make" someone interested in things, just encourage them when they show interest. Anyone looking for quick gratification is not going to stick with programming -- it just takes too much time and attention to detail for most people to tolerate.
I do not fail; I succeed at finding out what does not work.
One of the best thing about TP was the sample programs that demonstrated their BGI. Having a set of sample programs to start from really helped me get started.
POV-Ray is a free raytracer for making computer-generated images. You can build up 3D scenes using the Scene Description Language (SDL), rather than a modeller; and after a little practice, you naturally move toward writing algorithms to generate more complex images, etc. It comes with lots of sample code, a good help file, and could be used as a way to learn programming. The nice thing about it is that the language itself is simple to use, and making pretty pictures is a good incentive to keep practicing and learning more.
You can do pretty nice things with the SDL. The help files explain how to write a raytracer within POV-Ray. You can also read and write text files, etc.
VBscript? ASP? .BAT? Did we forget these? Maybe they are not the gcc that people might be thinking of, but anyone who thinks you cant interact with Windows hasnt read a WSH book.
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.
I disagree! In the 80s there was a lot of programming going on, but there was also a lot more people who got their parents to buy 8 bit micros for educational purposes, with the real intention of doing nothing more than play games on them.
:)
Ok there were a some hobbyists that built their own ZX-80s but by the time the ZX-Spectrum was available it was all about playing games.
The reason was that games were cool and fun, and there was very little information available about programming. You had to buy a book, buy magazines or go to school where you would be taught a little.
These days I'd say it's far easier. We have the internet where you can search for information about programming, unlimited free tuition and plenty of examples. Lots of open source code to look at, from complex projects to simple ones. Lots of mailing lists where you can get involved with something or get interactive help. Things may be more complicated but there is better documentation available and a wider community to help with any problems. Serious coders these days have better tools, better editors, IDEs, debuggers, code profilers and memory checkers.
Would you really want to learn machine code by poking it in to Sinclair basic REM statements? Or learn 6502 assembler with BBC basic inline assembly? If you were lucky you had a monitor and disassembler, source level debugging was a dream.
The bottom line is - I'd give anything to be starting again right now
Just because a kid can't write games natively to the XBox doesn't mean a kid can't find things to program with, whether he/she's running windows or linux.
Get over it.
"On the Internet, nobody knows you're a dog!" - a dog
The motivation to learn to program comes from many things, but really learning something comes from having a problem to solve. It is true there is fun and interest in doing meaningless things with a language, but the real passion comes from making something - or making it work.
Kids have to see the problems, limitations, and complications of the real world to understand how the computer enhances human thinking, not replaces it. This does not have to be a complicated understanding. A problem can be simply wanting see a different background with every login.
The point is, the kid needs to understand that he/she can do what he/she wants with the computer. He/She has control of the machine. If he/she wants more control, there are many ways to find it. The first step is the key: making the computer a tool for itself.
*Simple* language, easy to learn... something that can do useful work, too. Sorry, guys, but the old Basic crap fit the bill to a T. For all that's wrong with Basic, it was an enabling language that got a *lot* of people into programming, and helped jump-start the whole PC scene. The computer world needs a new Basic, not Perl, not Python, not Java, but something simple and easy to understand. And it'll need documentation too - not crap like the O'Reilly Perl book, go read an old old Basic book to see how to get the docs right... *every* instruction explained, with a snippet of in-context code for an example. "This works just like it does in C" is an absolutely useless explanation to somebody who doesn't know C, and O'Reilly books are full of crap like that.
Two different friends have asked me for advice about their sons, both of whom are into computer games, prefer science to language classes, and generally seem to be future geek material.
The question was how do the parents encourage their sons to apply their interest in computers so that they will be better-prepared for college, and perhaps have a head start in terms of being able to program.
In both cases, I recommended that the kids learn JavaScript. It's an easy language that doesn't require compilation. The work ends up on a Web page, so it's easy to get feedback about errors in the code, and it's easy to put up your projects on a Web site. And, even though JavaScript is not a complete, robust language, it is based on C, and gives a good foundation in the most basic aspects of programming: if/then, for/while loops, recursion, etc.
Older kids would probably want something more challenging, but JavaScript is the way to go for kids 12 or younger. Also, no software to buy, the interpreter (any Web browser) is already installed, and the Web is full of code snippets to try out.
every stain tells a story
WindowsXP still comes with debug.
Remember, You are unique...just like everyone else.
A great recommendation. It would give wonderfully-graphic feedback: very fulfilling as long as they were just wanting to learn.
My only cavaet would be how much of a framework they need to understand to make things work.
Java, JavaScript, gcc & Linux, and Web tutorials galour!! All for free!!
Not to mention UnrealScript and the Mod' community!!
Back in high school (early nineties) I was a dry sponge. Living in Redmond, WA helped a lot 'cause I could get Visual C/C++ from friends and their parents (still prefered Turbo C++ when I had it though). But even having a guy come in to our computer club every other week wasn't enough to help me learn what I wanted.
I considered myself lucky back then, and I can only imagine there were thousands of others without the means I had back in the day.
I'm not saying nothing existed, but it required a lot of motivation and dedication to jump from BASIC (GW-, Quick', or even C64) to another language/project. Today the slope is more gradual with more excitement along the way to keep people involved. It is a perfect time for eager minds to get involved!!
Anm
I am a big proponent of self-motivated learning, so I'm very impressed with you (and your son's) approach. I think ideally, an interested beginner should be introduced to a very simple programming language with relatively instant gratification.
:)... probably much the same reason your son started out with Inform rather than C.
IMHO, part of the problem with modern programming systems is that it requires much work and planning to accomplish anything really significant... much less something significant to a youngster -- "ooo, I just made it say 'Hello World!', how exciting!"
I remember a game called Omega by Origin Systems for the Apple IIe from my youth. It was a "high-tech" tank simulation game wherein you programmed a very basic script for a tank and pit your tank against others on a battlefield in automated warfare. I thought it was awesome at the time and probably helped fuel my interest in programming. Once I mastered the basics, I started optimizing my tank scripts to figure out the best way to balance speed of execution with maximum features and intelligence.
A while ago I installed an emulator (AppleWin or ApplePC) and tried out the Omega game again (along with Taipan, Pirates, etc.:)... you can get Omega here.
By modern standards, the graphics are fairly sad, but all that needs to be done is to put a modern face on it... I think the basic idea of a simplified game language is an excellent beginning for learning to program and, perhaps more importantly, for cultivating interest in learning to program.
--
Programmers do it with their 1s and 0s.
If the poor kid must deal with Windows, install cygwin. Show them a little about how to manuever in the bash shell. Show them how to read the relevant newsgroups for the language(s) that they're interested in. Buy them an introductory book or two. They can do shell scripting, python, perl, c, c++, guile, whatever. They could use a simple text editor, or you could introduce them to vim. If the kid is really interested in programming, this is real programming. If the kid isn't really interested in programming, then this thread doesn't pertain to them.
The next thing you should do is install a real operating sytem for them. Or short of that, download Knoppix (Linux which boots from CD - doesn't affect what you currently have on your hard drive). Save work to a floppy or CD-RW.
--Lawrence Lessig for Congress!
while I agree that it's a long way from programming to development, I think the goal here is to teach programming. Kids don't have the mathematical skills necessary to do serious development anyway which is why really high-level scripting languages are probably a good place to start. Unfortunately, there really is no good scripting language to start with that will hold a kid's attention. I had initially thought that perhapes a language like AppleScript might be an okay place to start, but I think that kids will find it too limited in terms of functionality.
The reality is, there's no magic bullet. Each language has its own niche and none of the current options really helps a kid who's interested in programming to learn. And to those who have suggested that using games to teach programming could be effective, all that will do is teach kids who aren't really interested in learning in the first place. Then again, that's just my opion, I could be wrong.
--- Don't ever trust a woman until she's dead- B.B. King
Kids want to make cool stuff. In 1984 I could write a stupid script to scroll my name on the screen using TI BASIC. I could also write a neat graphical maze game with speach synthesis using the same tool. With Windows Scripting Host and JavaScript (etc), I can write stupid stuff, but not cool stuff. Anyway, how many people here know how to fire up WSH and go? I don't think that's even in the manual.
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.
If they wanted to know about games, I'd start them in Java.
One thing, I'd keep them off C or C++. No kid is going to start programming writing 3d quake clone games. If they want to do games, try something like Java.
Now we have Windows, which typically comes with no built-in programming language. What can be done to improve the situation?
This is Slashdot. Isn't that sorta a rhetorical question? (: On a serious note, kids should probably use "live" Linux distros until they're capable of repartitioning their parent's machines and fixing their mistakes. Python would be a good starter language.. and there is increasing use for game development, which is a good draw for youngsters.
Ha, ha, ha!
I can just see trying to tell a 12 year old, that he has to take a college class to learn to program. That's really going to spark his/her interest!
...richie - It is a good day to code.
Yes, it's evil, it costs money, but see the advantages:
Finally, a few hundred posts later, someone gets it! :-)
Your average ten year old is unlikely to care about any of Python, Perl, Java, PHP, VB, etc. etc. etc.
Your average ten year old want to have some fun. Let them play with a dead simple language that does funky graphics easily.
The best computer book I ever had when I was younger was a load of type-it-yourself games for BBC BASIC. (OK, that was too grown up, I only had an Electron, but that's not the point. :-)) I programmed space invaders and such out of the book, and then messed around changing things.
The next best thing was when my dad introduced me to Fractals. I didn't understand the maths much yet, but I could program what he showed me for that, and then make it look pretty. This was waaaaay before Fractint came along! :-)
Kids want to have fun. They want to draw pretty pictures, or make noises, or play games (graphical or otherwise -- good ol' text adventures and word games are cool too). They don't want to write the next database front end for a web app.
Did anyone think of POV-Ray, BTW? Lots of fun, simple to use, makes pretty pictures. Might be a bit frustrating if they're not up to the geometry yet, though. Maybe better for mid-teens, who'll understand enough about the camera and lights to see why their output is totally black the first time they run anything...
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
My son uses Linux happily and codes in whatwever language he needs. The 80s you HAD to program to do ANYTHING decent with a computer, or payout HEAPS to get software.
Nowdays people dont have the need so much because you can get programs that do it all for you.
My son is 11, he knows the basics of perl/php/html/etc
/sig
JBuilder Personal Edition for Windows: Windows
for Solaris: Solaris
for Linux: Linux
Install pygame and python, find the docs, and let them play.
However, they must want to do this. When I was 10 years old, I was programming on my Apple ][ in Basic and 6502 assembler. I had the computer, the tools and the books. But it also fascinated me - my parents didn't understand what I was doing, and my mom even discouraged me ("go play outside stop wasting time behind that thing").
And give kids credit - they are persistent and they don't have silly notions like 'failure' and 'I can't' yet. They stubbornly persue what they enjoy.
When I was little, my dad got an Apple IIc. It came with a bunch of disks. The Apple at Work, The Apple at Play, Introduction, The Inside Story, Exploring Apple Logo, and Getting down to BASIC, among others. These were what got me into programming, particularly the "Getting down to BASIC" disk.
The two best things about the "Getting down to BASIC" tutorial were:
- It came with the computer, and I tried out everything that came with the computer.
- It was very, very, very friendly.
This is what we are lacking today. Something that most kids will discover on their own that gets them into programming, WITHOUT the influence of an adult in their life to suggest it.I think we need a well advertised website with a tutorial on it like the Getting Down to BASIC tutorial. A tutorial that you don't have to download or anything; the website has it's own interpreter.
Furthermore, for most of the tutorial you shouldn't even be using the real interpreter yet; in Getting Down to BASIC, most of the time the tutorial would type a line or two of code, and then ask you to finish one word or something. You weren't really in the BASIC interpreter at all. If you typed the wrong word, it would give you a fake error message and then explain in detail what you did wrong, and ask for another guess. If you made a common mistake, it had a response tailored for that. It also heaped congratulations on you when you did something right. Only near the end would you type in an entire line of code at once or maybe even a whole short program.
I think just telling kids to go use Python is way off. There's like a million steps in between "go learn Python" and writing Hello World. Among them are "download and install Python", "Run the interpreter", "figure out what an "interpreter" is ", "figure out what a "program" is", "find out how to quit out of the interpreter", "figure out why typing "i want you to put my name on the screen" doesn't work, even though i'm saying essentially the same thing as they are saying in the tutorial, overcome confusion and frustration when you say "Python" and the computer says
etc. With Getting Down to BASIC, all you had to do was put in a disk and follow the instructions. Almost anyone who could read could do it. This is what we need. For example, I think that when you are at the tutorial website and you get to the point where you type "Python", the computer should reply something more like this:
)When I purchased my hp 762n from Circuit City about 8 months ago, Python came preinstalled. Also, you can use batch scripts, even if they lack the power of a real programming language.
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.
Well, I was hacking in a mix of BASIC and Z80 assembly language at the age of 10. I wouldn't write off 10 year olds being able to understand C, & getting GCC to compile an ANSI-C program really isn't that difficult.
I mean, how hard is 'gcc foo.c -o foo' ???
The programmable games ideas are pretty nice. Fortran-77 is pretty much glorified BASIC, and seems more intuitive to read than C. You don't need to declare variables (if you assume the defualts), and print statements are as easy as BASIC. I'm sure an 11-year old could pick it up quickly. No pesky line numbering, either...no void stuff....afterwards, they can learn C++.
A free compiler is available (g77) which will run on either linux or windows platforms.
Things have actually gotten easier. With
Visual Basic kids can write professional
windows applications. I know from my son.
And no I am not trolling.
I'm not a 'youth' any more; my first experience of programming as a child was with 8-bit machines running Logo and BASIC. That didn't get too far though, and after a long break (and a Maths degree) I am now taking up Python as a 'first' programming language.
I feel that I am learning fairly good habits with Python, as it is strongly typed and the syntax enforces readable code, to a degree. As a free scripting language, it's cross-platform compatible. It also has lots of 'buzzword' features like introspectibility, garbage collection, multiple inheritance, and functional programming tools. So there's plenty still to learn once the basics are grasped.
Linux computers come with all sorts of programming languages and environments...
.NET platform, which will come with a compiler (ok... it won'y ship an IDE, but... you can program with a .NET windows out of the box... or will... depends on when there will be such thing... - for now is just vapourware on steroids).
Windows machines will be shipped soon with the
Not really. M$IE is, for all intents and purposes, embedded in Windows. M$IE runs JavaScript proggies, among other things. Therefore, JavaScript is the embedded language. (See also the comments of previous posters.)
I ended up buying CodeWarrior limited edition for Mac not really too sure of my $70 purchase.( It was sure the best one I've ever done though!)
Now, anyone who buys OS X has developer tools included. Cool! And PHP, Perl, etc, whatever language flavor of the month you want to learn can be downloaded for free on whatever platform of the month your using.
I think a greater problem is with standardization of languages. There's so many out there now, I've learned C, C++, PHP, Perl, LISP, Python, BASH scripting, Ruby, Ada, plus all the Linux commands, and some proprietary database stuff, macromedia director Lingo, javascript, (D,X)HTML, XML, Mac toolbox commands a few years ago, remember CopyBits() anyone!? it's just blowing my mind now. Give me a break!.
Jeez, I never knew I had this rage inside me.
Free therapy on Slashdot!!
Hmmmm... I don't know, I think a lot of you are missing one very key component of kid "accessibility" that exists now that didn't when I was a kid. The internet itself. There was nobody to ask about programming my Timex Sinclair. I had to find books. If I couldn't get a book on a subject or find someone else who knew about it. I either had to figure it out myself or suffer in ignorance.
:-)
Nowadays, kids can just go to Google and get all kinds of answers and find in depth tutorials or forums with loads of good information. Maybe they don't have DOS or BASIC, but just being pointed in a direction for learning to program and having the Internet for expert help if they get stuck, puts them in a position that I think is at least as good as when I was a kid.
I'm probably revealing too much about my age with that Timex Sinclair comment.
FingerDemon
"Contrarily the lookaside buffer might not be the panacea... "
My own "ebook" is somewhat lame, and still not finished, but I did (at least partially) intend it for someone at the 12 yr old level.
Introduction to Assembly Language
PS Spalp="society for the preservation of assembly language programming", not some weird porn site...
When I was young, about in 3rd grade, I ran across my first book on computer programing in the school library... naturally it was a neat little colorfully illustrated book on the BASIC programming language. Unfortunately my family didn't have a computer at home at the time, but there isn't much syntax to the language anyway, and I ate the book up like candy. I actually sat down and wrote out all sorts of programs on our word-processor (fancy typewriters that used to be big but died out as computer prices came down) which I could never run.
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.
I too had that feeling of "How the hell do I program this thing?" when I first started learning to program. I stared at my computer perplexed as to how to even approach making an application. That was 1998, its 2003, I'm going to be a 2nd year student in college next quarter, and Cocoa has finally made programming applications as easy as I always wanted.
I dabbled in linux and all my programming courses in high school were taught on linux boxes running Debian/GNU Linux, it was certainly an approachable programming platform and easy to make programs, but I would never use a linux box as my primary machine. Without getting all into it, there wasn't enough prettiness to it, keep in mind this is in 2000 that I was considering making linux my primary platform. I could not bring myself to like any of the window managers enough to persuade me from my mac.
Then Mac OS X came out and Apple saved me by bringing me Cocoa. The single most approachable programming language I have ever encountered. Within hours I was doing GUI programming and I didn't even have to write huge code blocks to do it. It wasn't till this year when I took my accelerated CS courses that I gained Software Design skills and crafted GUIs with code in Java that I was able to approach the more complex techniques, but now I have two full fledged application under my belt and It seems like I can only go up from here.
X cheers for Cocoa.
An HTML Application .HTA looks like and HTML page and can run scripting languages similar to browsers, but also has more 'trusted security' than a browser.
ie: it can do file i/o and basic os stuff in script
--- "1.21 Jigawatts!" -Doc
One of these.
MINGW32 and C++ (sooner or later they would need to develop something serious anyway).
Stop writing shell scripts and bat files, no matter how simple. Install Python, and write your utilities etc in that.
Lesson one: "I am cool" in python:
while 1:
print 'I am cool'
$ strings FTP.EXE | grep Copyright
@(#) Copyright (c) 1983 The Regents of the University of California.
Check out wxPython, these are wxWindows bindings for python, work very naturally for Windows API literates and binds to several widget sets: windows API, gtk, and quite likely more.
I would build them a simple Linux box with a simplified package/application load, backed up to a home file server for easy restore of mistakes. This lets them play with:
 gui config tools for Window Manager â" immediate flashy changes (background, borders, etc.)
 xhtml (apache set up for them, and fire walled) â" again immediate but a bit more advanced.
 java shell (xemacs had this, not that I recommend xemacs for them.) â" starts getting to programming but in an interactive environment. Shell interpretation and immediate feed back are great.
 python/java â" getting serious.
 bash â" Kind of like BASIC as a command line language. Leaving them with a java shell seems deceptive except as a simplification for the very young.
 Boots to console, they type startx. So they see there is a back end.
This deliberately lays as many fun erector sets as possible within easy reach with big icons plus 24/7 access. I would add a few books, or an Oâ(TM)Rieilly subscription. Or I would conveniently have some beginner books in my library.
I think having the full Linux platform available â" as in not closed - is important. This way, efforts at exploration are encouraged which is likely far more important long term. Plus that back up.
I learned Basic at around 12 at a local science center plus school computers, then some high school Lisp. I now do (I think) very good OO C++/Java/XSLT/ etc, so the possible BASIC scaring can be overcome.
Some people might like to start off with cocoa. This allows for interesting results from a few lines of code and allows for C and C++ as well as the normal objective C or Java.
You can start off connecting simple buttons to effects and move on to more sophisticated programs, it has a good collection of pre-written objects too.
As a personal opinion though I wouldn't recommend Applescript.
Comes with Red Hat Linux 6.1 cd, and I found a simple use for it, although I am not a professionally trained programmer:
My Linux Files, Page Two
I would have loved to have had something like that to play with when I was a teenager. At the time, all we had was Ham Radio, and PC's didn't exist. Only transistors I could get my hands on were the 2N107 (GE) and the CK722 (Raytheon).
Teach programming on the older machines.
Seriously... if you want to teach BASIC, PASCAL, ForTran, C, Assembly; you know, "the standards", why not use antique machines? In just two local second hand shops that I frequent, there are continually at least a few Commodore 64, Tandy CoCo, Apple II type systems about. They usually sell for like $2. It shouldn't be too hard to accumulate 30 or 40 of them to populate a programming classroom or two.
Or go back to the days of terminals and a central computing system. A modest Pentium II or a Mac G3 system should be able to run at least several classrooms worth of terminals (via serial line MUX or Ethernet) when just simple 50-100 line programs are being compiled and run. Run a basic GNU/Linux or BSD system (like Mac OS X). I learned Pascal by programming on punch cards... nothing makes you want to write good code like a 3 day turn around time for your code run results.
In this case, the students could use dumb terminals, or generic PCs to connect to the programming environment and program in simple, API and GUI free environments that still protect errant programs from each other.
Article X: The powers not delegated... by the Constitution...are reserved...to the people
OK, I'm not serious. But really: too many people use really dumb spreadsheets to do things they SHOULD be doing in a simple script.
The other day I was asked to evaluate a tool someone wanted to sell that required some simple input (size of your disk, a few preferences for file systems) and that would output suggested file system layouts. Nice little helpful thing for some folks. I doubt he could sell it for any price at all, but that wasn't my main objection: the darn thing was a big (BIG) ugly spreadsheet.
I suggested that Perl or VBScript would do this easily, and also suggested that what it probably needed to be is a html form powered by a cgi back end. Heck, ugly and dumb as it would be, they could even get that same spreadsheet to give up its answers to a web page. The response was that they had no one in the organization that could do that and it was too much trouble to learn. Pretty amazing, I think.
I see spreadsheets used as databases all the time, and of course they are usually awful. The programming effort that goes into building and maintaining these monsters has to be tremendous, but it's "too hard" to learn even a simple thing like Perl.
-- Tony Lawrence
How about programming in Javascript. Works just fine and is more capable than basic ever was.
People who think they know everything really piss off those of us that actually do.
SuperCard!
HyperCard was the first environment where I built real tools and applications for my own use, back when I was around 12 or so. Before then, I had done things in Symantec C++, BASIC on VAX, and a little C, but nothing that was actually an application or tool (e.g. Hello World!). Anyone who used HyperCard has got to admit it was an amazing development environment. I actually got a personal finance shareware application (named BalanceBook) on the Shareware Of The Month Club CD and wrote a trade route tool for Federation in HyperCard. I started putting together a Final Fantasy like game in HyperCard too, but I never got around to finishing up the sprites.
http://saveie6.com/
Python is a terrific language to teach with, and no need to tie the kids down to any platform. Unix, Mac, Windows, whatever. GUI development, command line, web, whatever.
Small language, very nice standard library, logical.
Just give them hardware from the 80s! That's what I learned on, several years after the eighties.
You can't judge a book by the way it wears its hair.
A very simple combinations give the Kids Apple Macs and AppleScript, throw in apple script and they'll have a small but powerful scripting language which they can make applications out of... ~Marcus
Not only that but the things are graphically stunning. And, the runtime is free (with a small nag, but no time limit or crippling). I've used it to create a personal applet to check my hotmail account and feed back the number of new messages. It's a beautiful applet, took me ~1 hour, and uses perl for the grunt work. Sweet! =D
If you want to teach a kid auto mechanics, you don't start him out on a Cadillac, you start him out on an old Briggs and Straton engine on a push mower. Take it apart and put it back together. Computers are really the same. Get the kid some old PC like a Vic-20 or a C64 where he can actually interact with hardware and the scope is small. I wish so much that I had had one of those when I was starting out...
whats this 10 goto 20, 20 goto 10 garbage?
whatever happened to good ol 10 goto 10?
I miss BASIC. I refuse to learn object-oriented programming or a complicated programming environment. I just want to crunch a few numbers.
Well, I have downloaded several two or three versions of Squeak and still never got into programming it.
The barrier I find are the strange interface. It works different from the rest of the operating system. If I press ESC, a frightening window appears to debug the unimplemented event.
I am also afraid of saving the image. I can easily make changes that I don't know how to revert.
Maybe it's me having habits from other computer experiences.
__
Men with no respect for life must never be allowed to control the ultimate instruments of death.
GW Bu
Kids don't want to study theory, they want the goddamned box to do something cool. You *need* to give them a language. Not just any language, it has to be interpreted for the instant gratification rewards, and it has to be a hell of a lot simpler than than the stuff that's out there now. To suggest kids should learn a lot of theory or a complex language is elitism at its worst. The key is for kids to have fun at the keyboard. If they want to do more they'll figure it out, but if they just want to screw around, well, that's cool too. They're just kids, dammit. Don't force a lot of dry theory down their throats and take the joy of discovery away from them.
From one geek to another, that's a touching story man. You did a great thing for that young boy.
Most young computerusers of today loves one thing, chatting on irc. There is a client which allows for some pretty hefty scripting and from what I can tell, it's pretty darn popular to make your own script and whatnot in it. Even if they're tied down into the boundaries of mirc I believe this proves that there is a demand for exploring the computer beyond the desktop.
The simplest solution is to simply install Linux, once this has been done you have an embarasement of riches, several dozen languages and enviroments to develop in. Personally I recomend python with pygame . Allowing the kids to code videogames in a page or two of code.
If you stick to the Windows Enviroment (which, alas will lead to stunted growth, hairy palms, feeblemindedness etc...) simply download ActivePython from ActiveState.com along with pygame from pygame.org. Now you have a full tilt language and an excellent integrated development environment for free (as in beer).
On the other hand you could simply download brainf*ck http://www.muppetlabs.com/~breadbox/bf/ and a win32 freeware version of vi.
Interesting! I've never heard of this. I use Windows at work, but Mac OS X or some other Unix at home, and I really know little about Windows specific development. With this and PerlScript, I could create happy little apps for work that distibute easily, are small, and can run with the base ActivePerl install- no need to get a GUI toolkit. Thanks AC... whoever you are. :)
Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
It's called YABASIC and is also available for Unix and Windows.
Vino, gyno, and techno -Bruce Sterling
The gs command prompt is sort of like a BASIC prompt. Add to the drawing:
See? Results in real time. Something better:
Yes, I know BASIC is more intuitive. And I'm glad I learned on BASIC - if Postscript was my first language I might be insane. But Postscript is possibly the most beautiful language.
http://squeak.org/
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.
"Anybody care to describe the purpose of the damn things to me in a way that actually makes sense?"
Do you understand the purpose of a shortcut, or a symlink? A pointer points. That's all. Different languages may dictate what it can, and can't point to, as well as what the pointers behavior is when it's pointed to something in particular. You see pointers all around the real world. i.e. Directional signs and signals, treasure hunts, Dewey Decimal. In all the cases pointers give a measure of flexibility to what would otherwise be either rigid, or even impossible. Pointers are in file systems. Add, or take a file away. A list of pointers are manipulated, to keep everything straight.
That's an easy one. Coding first, development later. We're talking about kids here, and coding is a lot more fun than development.
It's sort of like the difference between "OK kid, here's a piggy bank you can save some money in" and "Son, today I'm going to teach you how to manage your portfolio."
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.
I learned networking instead of programming.
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.
-phish
Think back to when you started programming - what you wanted most of all was to get the computer to do something - anything - under your control. Once you gotten that far, you're hooked....
There's much wisdom in making 'hello, world' a first goal for novice programmers. By the time they've done this they've run through the tool chain at least once. So, make the tool chain to get there as easy and straightforward as possible to build confidence.
If it's a visual suite, that fine but be prepared to train your young coder on it. Personally I think a simple text editor and a shell (with stdin/stdout/stderr) is easier to master at first. It sidesteps the Byzantine GUI 'window dressing' trap and focuses the young mind on the logic of the program itself.
I also have a strong bias toward C/C++ as a starter language because of its compactness and that it can allow a young coder close to the bare metal if that's their proclivity. Some people make a case for Java; mastering its initial environment (classpaths and such) could be daunting, and in many ways it's too restrictive.
Finally, I think providing a dedicated Linux box for your hacker-in-utero helps better foster programming creativity: the tools, languages and sources are all there to be seen, used, and learnt from. Second choice would be OS X, except the hardware is expensive in these days of $100 EPIA boards.
- dvd_tude
IRC, peer to peer, gcc, perl, whatever. Kids who are eager to learn will find a way, legal or not. Just like in the 'old skool' days.
The only thing that has changed is now the software is more bloated and takes that much longer to download.
Shrug. This is news?
Nothing against the kids themselves, but for crying out loud. Hard to learn to program in 2003? Too bad there's not a free unix-like operating system (actually a few of them) that you can put on any old box that happens to be lying around. Too bad there's no Free Software Foundation to provide a high-quality C compiler. Too bad there's no Perl. To bad there's no Java. Too bad all those things would be so expensive if they existed.
No wait... they DO exist, and they're FREE. Now if only we could come up with an easy and affordable software delivery method to get these poor bastards the code. If only we could connect all the computers in the world together. Dare to dream.
Imagine that. If all the computers in the world could talk to each other, it would revolutionize research. Kids learning to code today wouldn't have to buy all those BOOKS... they could just go look up what they need. They could learn to program from the best programmers in world and collaborate in realtime.
Too bad that doesn't exist. If it did, it would definitely be easier to learn to program than in the 1980s.
Oh, by the way... don't have an old machine lying around and all you have is Windows? Download Cygwin. How much? Yep... free.
RP
While I don't think that the craft of programming will ever go away, given the large number of kids with access to computers I am confident that the supply of programmers will be sufficient. Kids have a very rich source of programming languages and paradigms from which to choose in the Windows environment. Windows scripting, VB Script embedded in IE 6 and MS Office, an almost infinite supply of environments like Java, Python and Perl.
-- Michael
Windows has built in languages. Javascript, vbscript, etc.
Example javascript program. Run it with cscript.exe:
var con=WScript.StdIn;
var out=WScript.StdOut;
out.write("Enter your name: ");
var name=con.readline();
out.writeline("Your name is "+name);
You just can't do much with it, unless you put it into an html page and save it with an hta extension, in which case you can write pages that look like windows applications and run with full permissions. They're very easy to write but they can quickly become unmanageable if you're not careful, and many tasks require ugly hacks.
Otherwise kids can download decent compilers pretty easily nowadays. In the past, when most computers didn't have internet access, having a built in language like basic was all-important. I suppose that doesn't justify them taking it out though. Linux, on the other hand, usually ships with all the best programming languages.
Especially Gentoo LiveCD :))
Less is more !
All those different methods of linear programming that I figured out had to be unlearned the moment I started with structured programming. IMHO, it was a waste.
I fooled around with logo on an Apple IIe back in elementary and middle school, when the rest of the world had advanced to much more powerful machines. IIRC, it isn't much more than turtle graphics.
I recommend a simple, structured language. Something along the lines of PHP, but with a simpler (optional) API and printed documentation. Lego Mindstorms graphical approach is most certainly the WRONG way to do such things.
You can't judge a book by the way it wears its hair.
Here is what I did with my first PC, a VZ 200.
Plug in power.
Plug it into the TV.
Turn it on.
Start programming with help from the manual.
No grappling with the OS, no downloading stuff, or installing programs. It was ready to be programmed from step one. The closest you would come to emulating that, is to have a DOS system that loads GWBasic or QuickBasic automatically when it boots.
Being a Father of now an 18 year old that has been playing with computer since he was 10 or so and can say he has found his own path to learning code. Like all kids cool sites and programs are spread by word of mouth and email. Gaming what else hold a young mind! There are a lot of free game writing program out there and have been out there. He wrote his first games around 13 using a free Windows based program writng DOS games in basic. At 15 he got together with 4 of his freinds built their own development team. Built a little DOS based role playing game and even sold it. Imagine letting my 12 year old inside my computer? Personally what I have seen I would rather have a 12 year old inside of there more than someone my age (49 jesus you're an old fart!) Kids these days grow up with it they teach it in the schools, and the kids have a need to figure out what makes it work (ust like the rest of us geeks) I agree that html is a good starting point. I mean what do you need but Notepad and a book of code and the passion to learn. Its a easy (see what I did!) and pretty simple language to learn. Kids understand the pratical application of the language and can see the results quickly through a web browser. After learning html XML is fairly easy and this looks like this is where the world is headed. Notepad is better I think to learn the basics of coding anyway, AND no need for high dollar development software. There is also a plus to this track of learning. High dollar development software does make the job faster and easier (yes I use it yes I do this for a living and time is money) but starting out with it you don't learn what make it work you just "see" it in the WYSIWYG. They also learn to get by and make what they have work. I guess the moral of my dribble is I think will have plenty of good programmers in the future.
Squeak smalltalk is a briliant language for smalls. Runs on all small computers under your o/s of choice. Your work will be completely shareable because the Virtual Machine is identical on all hardware platforms. It leads on to the the most productive language ever created.
Squeak smalltalk for kids
Squeak smalltalk for grownups
Smalltalk for business
Smalltalk for engineers - Very fast.
There are many others, have a look through The Smalltalk Portal.
Just remember that with 30 years of developemnt it just works!
I don't get it.
-Carl Gundel, author of Liberty BASIC
http://www.libertybasic.com
I got started programming because back then, computer magazines had type-in lists in them. And they actually had articles about programming.
I don't know about anyone else, but I'm trying to get back into programming for PalmOS, and am appalled at the high ($400) price of development for such a cheap machine. My old version of CodeWarrior won't run on my current version of Windows, and demo versions are no longer available without a personal phone call to Metrowerks' sales department.
I know PRC-Tools is free and available, but it's wounded without a good front-end and graphical form / resource editor under (Cyg)Windows. I don't feel like anyone (specifically me) should have to install another OS just to write software for a third OS!
Call me a wuss, but I'm a seasoned programmer who doesn't want to deal with this hassle, and certainly wouldn't expect a middle school student to. I know in my heart that the Palm would be a wonderful first platform for young programmers. Some of my best learning was done on an Apple Newton in its own self-hosted development environment (Steve Weyer's NEWT), and my earliest assembly was done for my TI-85. Handheld gadgets are captivating, are simpler than desktops, and make it easy and fun to show off your 1337 5k1lZ to your friends and family.
Let's do something to reduce the barrier to entry. Until then, let your kids sharpen their teeth on a TI calculator with TI-BASIC. You won't get any closer to the old command-line machines of yesteryear unless you happen to have one in your attic.
--Jasin Natael
True science means that when you re-evaluate the evidence, you re-evaluate your faith.
I am constantly surprised at how few people are aware of and use this useful little tool. I use it on both Windows and Linux as I would use VB...it is a great little substitute for VB on Linux. It is cross-platform, easy to use and very useful. Write code on Linux - works great on other platforms.
Not that great for basic programming learning but certainly great for learning GUI programming with widgets.
but try explaining to a kid how classpaths work
I've had programmers working with me who couldn't figure out how to launch java programs on their own.
That said, I'd wager that the majority of java programmers couldn't tell you how they could get a ClassCastException when casting an instance of a given class to the exact same class.
(answer: two different class loaders loaded the class)
-- The world is watching America, and America is watching TV.
I'm talking about the IDE. No amount of bad coding should cause me to lose that bad code. I shouldn't need to 'error handle' every single loop, and forgeting a single line of code shouldn't cause me to loose hours of work. That's just idiotic.
autopr0n is like, down and stuff.
I agree. C C++ and Java are bad options. I'm a Perl programmer so I'm biased when I say this but I would start with Perl.
Perl is arguably as simple as BASIC but much more powerful when you get into it. The compiler is friendly and spits back nice error messages. The learning curve is gentle, you can get simple things done quite easily. It has libraries that let you extend it to do almost anything. And best of all, it's concepts and syntax bridge well into the rest of the programming world.
It has loose variables which makes it conceptually easy to start in (and "use strict" for when you are doing real work.) It's interpreted so it's easy to write something, then run it and see what it does.
print "Hello World\n";
actually prints hello world. It's a complete program. Perl is able to run parse the output of other programs easily which makes it great for extending other programs to get somthing done.
It runs well on the currently popular Windows platform but is at home on the *nix's which will likely be popular when a young programmer enters the work force. It also is a great platform to develop web-based apps in which makes it easy to write things that they can show off to anyone in the world.
I like what I have heard about Python. It seems like a good powerful language. It's probably another good place to start but I would start with Perl.
set softtabstop=4 shiftwidth=4 expandtab nocp worlddomination
I used to dream about having OR and NOT gates. I used to have to build circuits using neon bulbs as negative resistance elements, using resistors and diodes unsoldered from old television sets found on the street powered by wall current filtered using 40 microfarad capacitors salvaged from one-tube kiddie record players.
(The strange thing is that this was actually true for me. There are an amazing number of things you can do with neon bulbs. You can even use them as input devices--biased with DC between the points of hysteresis, if you touch them, the hand capacitance is enough to make them go on. My 7th grade science fair project on basic computer circuits had a 6-bit binary adder made entirely using neon bulb logic.)
I cut my teeth on ROM BASIC, and I actually appreciate the line numbers. Even though they suck from an advanced point of view, they provided a way to see how the program was flowing. Sure, GOTO 250 is considered poor coding by todays standards, but if you can learn to step through spaghetti code (especially at an early age), you can step trough just about anything. (Thank the maker for the RENUM command though :)
--It doesn't have a GOTO (or equivalent) - which is a major fault, but you can do lots of cool stuff with shell programming.
( Online version )
--After picking up a Bash programming book from O'Reilly I was able to write quite a lot of helpful scripts that are used almost every day on my Linux boxen.
http://safari.oreilly.com/?XmlId=1-56592-347-2
http://www.oreilly.com/catalog/bash2/
( Print version )
.
== WolfriderV6 == I'm willing to admit that *I just might* be wrong... Are you??
I am another sad child of the 80's that remember BASIC coding on a ZX Spectrum. At the time it took about 6 months worth of pocket money for me to buy. For that you could probably buy an old Pentium and mod it (windows/lights) and run some cool Op Sys like Vector Linux.
As other have pointed out, things like Python would make a good start, but the libraries are big and complex.
Although not easy, I would also recommend kids playing with POVRAY (http://povray.org) as the language is C like (and complex) but you can start by playing with the sample scripts and see the result of tweaking object properties by rending it - which looks nice.
On the other hand, visual basic 2.0 would probably fit the bill. It worked fine, and didn't try to dump the whole visual studio on you at once.
Wumpus
Now that I think about it, the number of people entering the coding job market shows all the symptoms of being a damped, driven harmonic oscillator:
Restoring force: If coding is a "hot" job, more people will want to start. Likewise, if there are too many coders, people will be less likely to start learning.
Driving force: New people becoming interested in programming through e.g. TI BASIC.
Damping: The lag time between people becoming interested in programming and entering the job market.
It would be interesting to see a plot of the number of people entering CS-related jobs vs. time. The gradual disappearence of a default programming language just removes some of the driving force. Hopefully the system is not critically damped...
Kids should be outside playing in the street, hitting each other, calling each other names and falling in love with unreachables of the other sex.
They should _not_ be stuck behind a computer at a young age.
In fact computers should be kept out of reach of kids until they are 15-16 years old. Then if they have talent they'll pick it up fast if not, then they'll become lawyers.
I am a maintainer of the FAQ for the de.comp.lang.php.* cluster of newsgroups and we see quite a lot of beginners coming over. Many of these people have already been creating HTML pages and now want dynamism in their pages, by adding counters and guestbooks. Or they have a site based on some PHP nuke variant or the other, and now want to understand the code and customize it. Often these people do not even know the most basic programming concepts, such as variables, scope, conditionals, loops and the like.
Using PHP, beginners get going from hour 0, and they have instant gratification because very little code can have rather well visible effects on web pages. Also, PHP has a very gentle learning curve, but goes a long way: Starting with simple echo statements and a few conditionals, PHP reaches up into the realm of low-end application servers (with SRM), touches on issues of concurrency which are often seen in web server environments, handles databases very well, introducing beginners to the concepts of relational databases, and starting with version 5 even has a decent object concept.
PHP is in no way pure or structured, but this is not really necessary. PHP is not an academic project or tries to make a point. It gets the job done, it gets the idea across, and it does it gently and conveniently.
Also, it is ubiquitous in hosting environments. At least in Germany, you'd be hard pressed to find web space that does NOT offer some version of PHP, again making it a very common beginners language.
Kristian
But it's hard to take VB seriously as a "production" language, no matter how widely abused for real-world purposes, or how cute its IDE is, or how sentimental M$ is about the product that launched their global crime spree.
Perhaps just a coincidence, but VB is a godawful beer, too.
you had me at #!
...social circumstances and parents differ, and it reflects on the kids education and accumulation of skills. For example, there's still a lot of farm kids who can do an amazing amount of skilled tasks, because it's part of their normal environment, they can weld, operate machinery, repair, construct, etc, because they just do it, it's part of their life. Granted, the numbers are very small *today*, but it's entirely possible and normal and used to be way more common. I would imagine it's the same with computers, either the hard or soft side. Programming simply has to be easier to learn when you are younger, it's closer to being bilingual or multi lingual, almost every expert you can read says it's easier to learn multiple languages the earlier you start. Older folks who learn foreign languages can do it,but it's a bear for them to get so good their accents don't suck, whereas kids raised bilingual can pull it off pretty easy.
I would have loved it as a kid, there weren't any home computers to play with. My dad was a mainframe guy going way back, but that's all there was, nothing to play with at home. Didn't have a spare several million and a spare building back then for a learning experience, and no way was it taught in schools under college level that I recall. At best they had electronics shop and mechanical drafting. But I learned a lot of other stuff, had my own tools since geez, maybe 6 years old? So long now can't remember clearly, seems like that though, around first grade was when I started getting them, usually hand me downs he gave me, because he did his own carpentry/home repairs and auto mechanics, etc, as well, that stuff I learned, because it was there. Age doesn't has as much to do with it as exposure.
"It used to be that programming was practically an inalienable right for users"
:-)
This is the reason why GNU and the Free Software movement was started!
I think that a 'GNU-like' revolution for coding on widley availiable consoles is an exelent idea.
Or you can always do scripting. It is fun trying to do weird things when you're scripting, because you learn what boo boos are and you become a tad bit innovative getting around certain issues.
http://www.activestate.com/Products/Download/Get.p lex?id=ActivePerl
To download SciTE :
http://www.scintilla.org/SciTEDownload.html
(I would recommend the download with extensions)
Have fun ! Tk is a quite good graphical interface, and Perl/Tk used with SciTE is much more pleasant to write small graphic programs than BASICA, GWBASIC or QBASIC ever were.
Signature omitted in order to save space. Thanks for your understanding.
the computer is online
i am not at it
what a waste of ressources
The '10 PRINT "Hello World!"' stage was a step to that end. But the very second program I wrote was a (very primitive) level bombing run simulation.
So the points are:
1) And in BASIC that all easy. You just needed to print some characters at given positions, and your games were (almost) as good as shrink wrapped titles. Before moving on to complex stuff, you saw some feedback on your efforts on simple stuff.
To that end, I _pity_ the poor kid who gets Linux and GCC to get him started. Or Java. Or Microsoft Visual C++. What's the poor kid going to do with THAT? Learn a _ton_ of X (or Win32 or Swing) programming before he can even see his first mini-game working at all? Good grief!
2) It didn't look discouraging. On a ZX-81 games were really primitive. Noone, not even the biggest software house, could do more than blocky characters as graphics. It was easy to think "hey, I can make one of these too." And indeed you could. See again point 1. You saw some positive feedback for your efforts.
Nowadays... well, if you were 12 nowadays and you saw Unreal Tournament 2003... would you think the same? And could you really? In C++ or Java? And are you going to make all those 3D models and textures alone? Dream on. Basically this time the feedback for your efforts would be _negative_ for a long time.
So what to do?
Well, as you've said, give the poor kid a _game_ construction kit. It may be Pygame, or one of the many other freeware game building kits out there. I can think of half a dozen just for RPGs. (And at least two scriptable MMORPG engines.)
_That's_ what the kid needs. Something where it's (A) easy to get some minimal scripting done, and (B) quick to get some positive feedback. I.e., where it at least _looks_ like "hey, I'm actually making a game here."
A polar bear is a cartesian bear after a coordinate transform.
I learned on an Apple II, starting with Basic. Basic had a low cost of entry, so it sucked me in pretty quickly. Soon, I was coding in 6502 assembly, optimizing critical pieces of code. The memory map was fixed, and the entire machine was easy to dig into and poke around it. In fact, 'peek' and 'poke' were the terms for mucking about with the guts of the machine. This was an amazingly useful learning process in a number of ways. First, I learned a lot about how computers work, pretty close to the metal. It also gave me a huge appreciation of high level languages.
Today, I'd recommend starting coders with a high level language, such as Ruby, and encourage them to recode critical sections in assembly as a linked library. This isn't much different than how I'd program commercially, only I'd only drop down one level to a compiled language, such as Haskell or C for the critical sections; most compilers can do a better job at optimization than I could coding the assembly by hand, anyway.
It is easier to do this with Linux than Windows. There's less OS overhead, and more variety in tools. It is still a much more complex system than an Apple II, but is much more open than Windows.
with our playstation 2 YaBASIC was included on the demo disk, infact the first thing i did with it was grab my USB keyboard and start messing with it. Who ever said games consoles couldnt be educational.
Invincibility is defense. Vincibility is attack. Defend and one has a surplus. Attack and one is insufficient.
i believe that the city fathers of carthage, and the employees of the twin towers in new york could debate this statement on point.
We ought to use them to teach children those languages that are immensely powerful yet, judged by our standards, too inefficient to be practical.
Functional languages are not inefficient. Haskell programs in particular are much faster than equivalents written in scripting languages like Python or Perl, which are widely deployed in industry, because they can be compiled in an efficient way. With Haskell, space usage can be a problem for naive users, but in call-by-value languages like SML and Ocaml that problem disappears as well.
BH
Fools! They laughed at me at the Sorbonne...!
Having applets is a nice thing if the younger coder is interested in having something viewed from a web page. I'm thinking of a "Young" developer as being in Jr. High.
Applets, and maybe Java, might be overwhelming for anyone below the 6th grade.
Hand them a bunch of pencil fill-in type "Punch cards" and WAIT 3 days to get your output back
....
That'll teach'em
(Feeling really OLD today). I can remember the Apple ][ and the Commodore PET/CBM series coming out, and wishing I could get my hands on it! My 2nd year in HS, you actually got to use
The teletype!
If you can't remember the JOY when folks came out with cheap (read under $200) 300 baud modems, you have not been doing this long enough
And yes, this is a poor attempt at being funny, but true
-- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
some of us were out getting LAID when we were 12. Not writing BASIC on paper at our grandma's house.
No contest. Cute turtles, clear language, instant graphical results.
here
having fun? you seem to have a lot of time there. you know why? you are almost out of a job because you are at a failing .com. and judging from the FUCKING CRAP you write, you probably have a major role in said .com's failure.
you cant fucking say aything without code samples, fuck, and then you hide behind NDA. you are a fucking poser loser asshole whitepaper fucking fag. SHUT YOUR FUCKING MOUTH.
GW were initials of a Gary Wozniak (I know, I know) or somebody else who wrote it. One of the founding members of Microsoft.
Cover your eyes and click this link!
This is the programming system that is so powerful that the virus writers all use it for those HTML and Outlook email viruses. And the documentation is very complete and thorough. And it's on every windows machine. These languages also have an object model that can be used to program every aspect of a windows client or server machine, including active directory. Look up WMI and ADSI to learn how to use VBSCript and JScript to totally control your windows system or entire network. Also, you can look up those two keywords on Amazon if you want to spring for a book. Furthermore, there are web sites with lots of free scripts that run on Windows.
Plus, you can get free cygwin tools from cygwin.com that will enable you to program in all those GCC languages.
Plus, you can download a FREE Java environment from the Sun website. Mostly command line.
Plus, you can download for FREE, the entire suite of .NET Framework programming tools, at this web page, provided you are willing to live with Command Line tools! You are slashdot, are you willing to live with command line tools to use FREE C# and so on? It's a big download, though.
Plus, you can download FREE perl and Python, already compiled and adopted to Windows from Active State.
Wait -- there's more! Batch files! The latest 32 bit OS's have a powerful batch system with real if-then-else structure! And, on XP, it's even documented !.
Wait -- there's more! Inside Cygwin, there's emacs, and inside emacs, there's Elisp!.
Complete enough for you?
No? Okay how about free command line C++ compiler from Borland?
I18N == Intergalacticization
For children, try LOGO. The programming language developed for kids!!
Also, try Kids Freeware for other ideas.
I18N == Intergalacticization
So as a responsible parent, you can read and understand what your little kiddie is trying to do...
I'd love to have had it "so hard".
Some thoughts...
1. Notepad + i.e = scripting
2. PHP
3. perl
4. The other 1,000,000 free compilers here (or a hundred other such lists): http://www.thefreecountry.com/compilers/
5. The MASSIVE amount of free information, tutorials and source code available
ANYONE with access to a PC and the internet cannot whine about not having qbasic/BASIC/etc. It is a non-issue. I only learned basic because my vic20 had (er has) it. I wanted to learn a "real" language, but there were no free compilers, damn little PD source, and few free tutorials.
Dan