Slashdot Mirror


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?"

177 of 1,073 comments (clear)

  1. Second hard disk + Linux by A+nonymous+Coward · · Score: 2, Interesting

    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.

    1. Re:Second hard disk + Linux by los+furtive · · Score: 3, Insightful

      Wouldn't it be easier to just install perl on the windows machine? Your technique is neither easy nor intuitive. And I can't imagine it being something that _most_ 12 year olds can do (I wouldn't let my 12 year old inside my pc).

      --

      I'm a writer, a poet, a genius, I know it. I don't buy software, I grow it.

    2. Re:Second hard disk + Linux by shokk · · Score: 4, Insightful

      No no no. The kid wants to do something productive and actually program, not get trapped into setting up a whole new system and get involved in patches and unrelated packages. All he has to do is get a hold of a free language package on the web like Tcl/Tk or Perl or even LISP and he's good to go with one download and a double-click. So why go through the trouble of all that for something so simple? Talk about overengineering the solution.


      This is the problem with Slashdot readers: they automatically assume Linux=freeware. You know, freeware *does* exist for other systems. However, the author of the article didn't necessarily state that Windows was the system that was loaded on the theoretical 12 year old's target system.


      --
      "Beware of he who would deny you access to information, for in his heart, he dreams himself your master."
    3. Re:Second hard disk + Linux by rkz · · Score: 5, Informative

      give them a game to play which sneakly teaches them to program.

    4. Re:Second hard disk + Linux by the_2nd_coming · · Score: 3, Insightful

      no, it would be easier to install python.

      you realy think an 8 year old can jump right into perl?

      Basic was popular to learn on in the 80's becasue it was such a simple language...python is even better than basic and it enforces good programming techiques.

      --



      I am the Alpha and the Omega-3
    5. Re:Second hard disk + Linux by saintan · · Score: 2, Funny

      Then get the kid a second car....jeeesh!
      I've been wiring stereos and cleaning carbs since I was 12!

      --
      ****--- A fortune cookie once told me the meaning of life...so I ate it. ---****
    6. Re:Second hard disk + Linux by saintan · · Score: 3, Insightful

      you're average box does indeed come with a programming environment:
      HTML and JavaScript (and any other web pluggable scripting)

      they are even simpler than say, Python (although Python is definite a great first language) and they come bundled with your average browser...its also a good first lesson in platform dependencies, standards, and the do's and don'ts of implemeting those standards (no names will be mentioned here *cough* IE *cough*)

      albeit they are narrow in scope and limited in features, but we're talking somthing to whet the newbies appetite right?

      --
      ****--- A fortune cookie once told me the meaning of life...so I ate it. ---****
    7. Re:Second hard disk + Linux by missing000 · · Score: 4, Insightful

      "I wouldn't let my 12 year old inside my pc"

      I have to say you are way off base here.
      The fact is that unless you let your 12 year old break/fix pc stuff, providing they show an interest in it, you are telling them not to be interested in science.

      When I was 12, I was building clones from components, at 16 I was selling beige box's for a tidy profit. If my father had told me no when I wanted to see how the family machine worked, I would never have played with electronics very much.

      Today itâ(TM)s so much easier. Just buy them a cheep ebay throw away, an you have nothing to worry about. They will learn more from an old DOS machine then the bloated XP box you probably run anyway.

    8. Re:Second hard disk + Linux by BlackHawk-666 · · Score: 3, Funny

      and yet you'd let your 12 year old code in Perl? Aw, c'mon, show the poor little tyke some mercy and at least let him start with a structured and easy to learn language first.

      --
      All those moments will be lost in time, like tears in rain.
    9. Re:Second hard disk + Linux by BlackHawk-666 · · Score: 3, Informative
      Would you let a 12 year old child replace the alternator in your car?

      It was compulsory in our family when young to help dad repair cars. So yes, he did get me replacing alternators (relatively easy) or striping parts, cleaning and then re-assembling.

      --
      All those moments will be lost in time, like tears in rain.
    10. Re:Second hard disk + Linux by tankbob · · Score: 3, Insightful

      How about, as it states they've already got windows, they just install the .NET framework (which is available on Windows Update) NotePad to edit then just run the command compiler. Manual is available on MSDN (or you could download then entire SDK!). Failing that download #Develop (www.icsharpcode.net) if you want an IDE.

    11. Re:Second hard disk + Linux by Austerity+Empowers · · Score: 2, Insightful
      I hope that you would if that 12 year old was your own child. I probably have the relatively high paying (albeit economically uncertain) job I have today because at some point my dad let me do what I needed to do. I guess I started swapping simple cards in and out at around 9-10 (about the time when "sound blaster" because a game requirement).

      When I was 12 I desperately needed to swap my 286 for a 486. My dad was complaining about the $1000+ price tag associated with a new PC, so I told him I could do it for a few hundred. I'm sure he had his doubts, and feared for the life of his machine, but I swapped out the old board and voila. He gained a money saving computer techie for free, and ensured my early financial independence!

      Now I think linux is great and all, but the REAL reason I learned all of the above on a PC (as opposed to a mac) under DOS was because that was where the games were. If you give linux to a 12 year old they're not going to learn it, because the really good games you find in stores are on the PC. So the point about installing Perl on Windows is valid.

      The linux community REALLY needs to get gaming on linux to the point of being "real" if we want to have widespread appeal to youngins.

    12. Re:Second hard disk + Linux by JohnFluxx · · Score: 2, Interesting

      hmm not unreasonable.
      If you have a kid that wants to learn that sort of thing - then why not grab an engine for him to play with?
      Start with a diesal engine, and get it working, with a pump or something.

    13. Re:Second hard disk + Linux by MikeFM · · Score: 2, Interesting

      I learned most my PC skills from breaking the family PC and rushing to fix it before my parents killed me. Of course it wasn't long before my parents were breaking the PC and asking me to fix it. I'll definately be giving my children a PC each as soon as they can sit up and teaching them how to take it apart and rebuild it. I'll probably wait until they can read and write to teach them programming. :)

      Is this any different than giving your kids legos or teaching them to build a tree house or any other hands on skills? At 2 I was already learning about chemistry and machines. I tried to build a time machine. As a kid I built robots and rebuilt my Atari.. all before the age of 10. I'd feel bad if I held my own children back.

      --
      At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
    14. Re:Second hard disk + Linux by dtfinch · · Score: 2, Insightful

      I didn't start programming until I was 9. Got a PCjr for free, with no software, turned it on, and after not finding a boot disk it would load up Cassette-BASIC from rom. What else could I do but learn to program? I had few friends, no game consoles, and little interest in doing homework or playing outside. Watching TV was fun, but it got boring at times. Programming was my only escape from boredom.

      Put a kid in a situation where they can do little more than program, keep them interested, and they'll catch on really fast. They'll write games to play games, etc.

      Although nowadays it's becoming gradually harder to protect kids from the temptations of the non-programming world. They sure don't make computers like they used to.

  2. A couple places to start by David+E.+Smith · · Score: 4, Informative
    First, for those interested in the subject, get them a basic "how to program" book. One that's gotten fairly good reviews among the (few) teachers I know is How To Design Programs. It has the remarkable benefit of being free (as in beer) online, and I believe its learning environment is equally free also. (OTOH, it's Scheme. Some people are allergic to parentheses.)

    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...

    1. Re:A couple places to start by PunchMonkey · · Score: 2, Informative

      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...

      http://shop.store.yahoo.com/pandorascube/gamkeysol out.html

      And no, it's not the result of a fark photoshop contest.

      --
      I'll have something intelligent to add one of these days...
    2. Re:A couple places to start by Dark+Paladin · · Score: 4, Insightful

      It's the lack of a standard that I think the real problem is.

      A few years back, I remember the rumors of a standard Windows Scripting Language that would be to Windows 9x systems what bat was to DOS. (I haven't power used Windows in years except to run games on, so forgive my ignorance.)

      But the biggest issue with this would be what language? Do you make it uber simple like bat, which could do some interesting scripting things but no real programs? Do you let people actually make up some "interpreted language" programs (like BASIC) so they can do some things, then deal with the headaches from users messing up their systems (or, worse, the viruses that would span if the language actually let you do "stuff" with it - Windows has enough problems with Office macros running amuck in the world without adding more headache).

      And what kind of language? Visual Basic is still around, but I don't know of any serious programmers who really use it hard core - it's more for very small, internal apps (yes, there are visual basic apps out there, but last I checked, nobody's programming Doom III in Visual Basic, move on). So would you build it in C, C++, C#, Java, Perl, Python, Pascal - as soon as you do, there's another group of people (even inside the company making this "Basic scripting language") who have thier own near religious ferver regarding how it should work.

      Odds are, it's just easier to go out, get yourself the Java SDK and notepad/Cygwin and Perl/Python, and go from there.

      Oh, and you can get a keyboard for the Gamecube. I'm not sure if they're selling in the US yet, but they're mainly used for Phantasy Star Online addicts. (Though I would not mind a "Typing of the Dead II" - that game kicked ass.)

    3. Re:A couple places to start by Anonymous Coward · · Score: 5, Insightful

      Kids don't want a "how to program" book. They want to write small, simple programs that do cool things. Gcc/gc++ and friends? For a 10-year-old? I don't think so.
      What is required is a very simple interface with simple commands. Programming is about Problem Solving (I resisted the urge to put that in caps). It is not about coding style or compilers or interfaces, any more than a sports car is about the CD changer in the trunk.
      Logic is logic. What we need *is* a return to a simple environment for kids. The smart ones will run into restrictions of the environment and branch out into other environments on their own.

    4. Re:A couple places to start by Eight+01 · · Score: 3, Insightful

      PHP or VB/ASP are very simple and easy to learn.

      I'd suggest a kid get an inexpensive web account or learn how to install a web server on their computer (such as PWS for Windows). Messing around with server-side scripting is very approachable, and the UI is a webpage, which every kid understands.

    5. Re:A couple places to start by jmccay · · Score: 2, Interesting

      From what I have seen of it. i would suggest teaching them ruby. It seems to be a decent language, and has lots of built in types. They used to advertise it as bringing the fun back into programming.

      --
      At the next eco-hypocrisy-meeting, count the private jets used to get to the meeting. Should be interesting to see that
    6. Re:A couple places to start by sdjunky · · Score: 2, Informative

      "Visual Basic is still around, but I don't know of any serious programmers who really use it hard core - it's more for very small, internal apps (yes, there are visual basic apps out there, but last I checked, nobody's programming Doom III in Visual Basic, move on)"

      Wel.. There is this feature rich, stable and FREE CD Burning Software written in Visual Basic 6.

      You can find CDBurner XP here
      VB does have it's uses. No. Nobody's going to write Doom 3 with VB but it's not as limited as people tend to think it is.

    7. Re:A couple places to start by gallen1234 · · Score: 2, Insightful

      So is JavaScript. I've had some luck teaching kids to do client-side scripting this way. The language is straight-forward and they can get the immediate gratification of seeing a web page (which you're right - every kid understands) do dynamic things.

    8. Re:A couple places to start by tomhudson · · Score: 4, Insightful

      Another place to start is with the javascript interpreter available in most browsers. You can run a lot of javascript code locally w/o the need for a server, just make sure everything you need is in the file. Make all sorts of interactive calculators, games, whatever, via javascript/css/the DOM. Easily passed around via email/floppy/printed code listing/cd :-)

    9. Re:A couple places to start by Eight+01 · · Score: 2, Interesting

      The point of the article is to hilight programming languages and environments that are approachable for kids and can teach some basic logic and simple programming.

      VB would be good for this except for the required overhead (Visual Studio).

      VBScript or PHP scripts fit the bill nicely.

      Expecting a 10 year-old to pick up C++ and start working on the next Doom is ridicuous. Kids want something that is simple, easy to understand, and allows them to create fun applications. They don't want to get mired in the arcitecture and process and years of time neccessary to write a modern commerical application.

    10. Re:A couple places to start by RevAaron · · Score: 4, Interesting

      I've never heard about any standard Windows scripting *language,* but there is a standard Windows scripting system, called the Windows Scripting Host, WSH. It's not quite as nice the the Open Scripting Archetecture in Mac OS, but it isn't horrible.

      WSH, like the OSA, is neat in that you can plug-in a number of different languages into it. In some ways, sort of a proto-.NET, as you can share functions between languages. That is, if I write up a function in Perl, I can share it throug the WSH to JScript, VBScript, or any other WSH language. Or vice-versa. PerlScript- the bridge between perl and the WSH- comes with the ActivePerl distro for Windows.

      WSH is a neat toy, and I've used it for some automation on my work windows machine. But having done a lot of AppleScripting on my own and work Macs, I can say that WSH isn't as useful- most apps have no idea was WSH, and the apps which do support it, don't support the wealth of actions like Mac OS's OSA does. Mind you, AppleScript is just one language in the Mac OS OSA, and it happens to be the default one. However, you can get language extensions to script apps- just like you would in AppleScript- for Perl, JavaScript, Ruby and Tcl and more. (that was just off the top of my head)

      Nobody is programming Doom III in anything except C, assembly, and maybe some C++. Does that make every other language irrelevant and worthless? No! I personally couldn't give a flying fuck about Doom III, and thankfully, never have to use C++. I must work on phantom appliacations! OOOOH SPOOKY!

      I can't say I enjoy VB or use it anymore, but even being a staunch Smalltalk programmer, will not hesitate to use RealBasic (with which I can support Mac OS 9, X, and Windows) for an application for which it makes sense. There are a lot of applications out there which are written in VB, a lot more than you seem to think. Not just for very small, internal apps. Heck, a fair amount of people write a bunch of their code in C++, COMize it, then use it all from VB.

      --

      Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
    11. Re:A couple places to start by e2d2 · · Score: 3, Informative

      Expecting a 10 year-old to pick up C++ and start working on the next Doom is ridicuous. Kids want something that is simple, easy to understand, and allows them to create fun applications. They don't want to get mired in the arcitecture and process and years of time neccessary to write a modern commerical application

      http://turtletracks.sourceforge.net/

      Or any other Logo implementation might do fine for young ones. Nice and easy way to teach logic.

    12. Re:A couple places to start by crisco · · Score: 2, Insightful
      I completely agree. The learning curve is short. You start by not even programming, but putting HTML together to create your own Geocities page. Then you want rollovers and swipe some JavaScript.

      From there you might move on to Flash, where you've gotta learn their ActionScipt to do anything useful. And Flash is pretty much what the Advogato author was describing, play sounds, move graphics. Only it costs money unless the kid snags it from p2p.

      Better yet, the kid decides that he wants something on the server so he has to learn about webservers. Somewhere he finds Apache, PHP and MySQL that run on Windows. He gets an introduction to PHP, Perl, maybe some other languages. He finds out that his web server is going to run better on Linux so he grabs a distro and checks it out.

      So by now he's decided he likes computers. CompSci for college? Definatly an option. Even if he were to choose a major in some other field, he's got some experiece programming and making complicated systems work.

      --

      Bleh!

    13. Re:A couple places to start by HiThere · · Score: 2, Insightful

      You don't even need CygWin. Just download the latest Python. Or Ruby. Or even Squeak (Squeak may be more fun..though I find it less job related).

      And get a good book on programming, and translate it's examples into your downloaded language. ("Hello, World" is easy, but it quickly gets more complicated == interesting.) By then you're started enough to work on something that *you* find interesting.

      But this *is* assuming a lot of internally generated motivation.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    14. Re:A couple places to start by mentin · · Score: 2, Insightful
      VB would be good for this except for the required overhead (Visual Studio).

      Move to VB .NET - you don't have to use Visual Studio anymore. Microsoft's .NET distribution comes with free (as beer) VB .NET compiler (vbc.exe in frameworks folder) which does not require Visual Studio. You can program in Notepad or any editor.

      Of course most people would still like to use VS - VS can generate lots of useful code in minutes, which would take hours to write manually. I've not seen anybody creating complex UI "manually" these day, it just does not make sense. Same with Web Services etc.

      But if you have good editor (like SlickEditor) that can perform many of "manual" tasks and don't do UI, you can probably live without VS fine.

      --
      MSDOS: 20+ years without remote hole in the default install
    15. Re:A couple places to start by Marc2k · · Score: 2, Informative

      No one's writing Doom III in C#, Java, Perl, Python or Pascal either, Cap'n, those are all relatively horrible languages to write graphics intensive apps on. It sounds like you don't know what you're talking about with VisualBasic either. Update your analogy or update your list of what's '1337'.

      --
      --- What
    16. Re:A couple places to start by Marc2k · · Score: 2, Interesting

      Hm...following your logic...then you've read aloud the Doom binary in Japanese before? I doubt it. However, to his credit, you could describe Doom (however excruciating) in boolean logic, and of course logic is a means of solving problems.

      --
      --- What
    17. Re:A couple places to start by Q+Who · · Score: 2, Informative

      Nobody is programming Doom III in anything except C, assembly, and maybe some C++.

      Doom III engine is written in C++.

    18. Re:A couple places to start by awol · · Score: 2, Informative

      I don't think there is anything inherently wrong with javasript that would make it broken enough to suggest that it is a bad place to start.

      It is with every machine you can think of. It has procedural aspects, some decent obect oriented features, yep, I reckon it just might work. Nice idea!

      --
      "The first thing to do when you find yourself in a hole is stop digging."
    19. Re:A couple places to start by G-funk · · Score: 2, Informative

      www.icsharpcode.net

      sure it's not visual studio, but it's damned good value. :-)

      --
      Send lawyers, guns, and money!
  3. Um.... Linux? by ryarger · · Score: 4, Insightful

    Free... Multiple free programming languages, includng BASIC... GUI Editors and debuggers... Copious documentation... Responsive community...

    Seems like a no-brainer to me.

  4. Wrong by borgdows · · Score: 4, Funny

    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? ;)

    1. Re:Wrong by mAineAc · · Score: 2, Funny

      you mean VBScript errors built in don't you?

  5. Yet another reason for BSD/Linux by Vengeance · · Score: 4, Interesting

    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.
    1. Re:Yet another reason for BSD/Linux by larko · · Score: 2, Funny

      If you want him or her to really play... make sure it's not the computer YOU use ;)

    2. Re:Yet another reason for BSD/Linux by Durin_Deathless · · Score: 2, Insightful

      If these are young kids, they might be happier with Mac OS X. I mean, not many kids have the patience to work with any command prompt at all. The Mac will also run M$ Word so they can write macro virii^H^H^H^H^H^H^H^H^H^H^Hpapers for school.

      --
      You should use AdiumX on your Mac.
    3. Re:Yet another reason for BSD/Linux by Anonymous Coward · · Score: 2, Insightful

      The real problem isn't lack of programming languages. A programmer-wannabe can get just about any language for free, including every teacher's favorite languages (Java, Modula, Pascal) and "industry standard" languages like C or C++. Kids can choose from interpreted languages and compiled languages, from IDEs and simple editor/commandline-compiler based environments and from implementations for Windows, Linux, MacOS or just about any other OS. Free descriptions are available online for every API. There are (mostly) helpful people on uncountable messageboards, newsgroups and chatsystems. It couldn't be better, except for one thing: In the 80s, if you wanted to use a computer for anything but playing games, you practically had to learn how to program. Computers were hard enough to understand so that you almost understood programming simply by learning how to use them. Today it's easier to find not only the documentation and the programming environments, it's also easier to find ready-made programs and code-snippets ready to be copy&pasted. Anything remotely useful of which an implementation can't be found on the first page of a Google search is so far away from the capabilities of a novice programmer that many don't have the perseverance to learn by writing completely useless code for a long time. There's a serious lack of rewarding learning projects. That said, for someone with perseverance who strives to understand how computers work and how you can make them jump through hoops, the internet is a cornucopia of information, much better than everything which was available in the last millennium.

    4. Re:Yet another reason for BSD/Linux by Bungo_go · · Score: 2, Interesting

      IMHO, the hardest part of learning any programming is just getting the environment working to the extent that you can play with it - unless all you want is to print text to the console it's inordinately hard nowadays with the ton of windowing etc. code that GTK or whatever expect. It's pretty difficult to code much from scratch in linux if you've no idea how to begin... For example, getting graphics working in the good old DOS days was very simple - one function to set graphics mode, then write to the screen. No other code required. Granted, nowadays you just call a library to do all the complicated bits, but the amount of code bloat is impressive, and rather frustrating for the novice... I think the important thing for beginners is to give them environments in which they can play with powerful code without having to worry about the learning intricacies of GTK (or whatever) as well as the language they're trying to learn.

  6. Create a simple learning language... by pir8garth · · Score: 5, Interesting

    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...
    1. Re:Create a simple learning language... by Lord_Slepnir · · Score: 5, Funny
      some sort of learning language to get the kids hooked when they are young.

      The scene: In a park with a lot of little kids around

      (stranger dressed up like Bill Gates in a trenchcoat): Hey kid, I got something for you
      Kid: What
      Stranger: It's the good stuff...(holds out a box labeled 'GW-Basic#'
      Kid: I don't know. My daddy told me that stuff is bad for you...it causes you to get fat and pimply and never get a date
      Stranger: That's a lie! Come on. First taste is free (holds out box further)
      Kid: Well, ok....

    2. Re:Create a simple learning language... by jmertic · · Score: 2, Insightful

      Learn BASIC ( or Pascal for that matter ) it certainly won't kill you!

      Seriously, fundementals of programing such as if...else, for and while looping, and simple AND/OR logic is key before you can start to tackle C/C++/Java etc. Those structures are prevalent in all languages.

      Sitting a kid in front of some Visual Tools will only hurt them in the long run; they miss those valuable skills that are learned at the low level of a language. It's like what MS Word is doing to writing ( don't have to spell correctly or know proper grammer, Word does that for me ) or math ( why add/subtract/multiple/divide/etc by hand when a calculator can do it for me) ; pretty soon we'll have a crop of programmers that get confused by "for (i=1; i<j; i++)" statements.

    3. Re:Create a simple learning language... by Chris+Burke · · Score: 2, Redundant

      I was 9 when I started programming, and it was in BASIC on a TI-99, which I'm not certain but I think it was called CRAP-BASIC. Moving to a PC with GW-BASIC was a big upgrade. :)

      Anyway, I do not think that BASIC is a good learning language. BASIC encourages bad programming practices. Not C either, simply because it's got too many loaded guns you have to ensure aren't pointed at your foot. Something like Java, or Python, or whatever where you can learn programming concepts without having to also learn hardware concepts. Though eventually those should be learned as well, but not necessarily at age 9. :)

      But yes, having GW-BASIC or whatever available is the only reason I learned to program. And to people suggesting Linux -- that works great for your or my children, but what about the children of parents like mine, who aren't programmers themselves and aren't going to be putting Linux on their computers any time soon?

      --

      The enemies of Democracy are
    4. Re:Create a simple learning language... by RobinH · · Score: 2, Insightful

      Anyway, I do not think that BASIC is a good learning language. BASIC encourages bad programming practices.

      While I'm sure Dijkstra would agree with you, I have to say I think this is a myth. I don't think that "bad programming practices" are habits that are difficult to change. I find that usually, as soon as someone is shown a "better" way to do something, they will immediately start using that programming practice and forget all about the way they used to do it.

      I don't think you can throw a 10 or 12 year old kid directly into advanced software methodologies before they play around a bit with some really simple programs to get their appetite wet. Some kid who wants to write a program that you can "talk" to in English prose (who hasn't wanted to try that when they were young?) is going to be far too intimidated if they have to learn OO first. Here's what they're going to try in the first 5 minutes:

      Answer$ = input("What is your name")
      Print "It's nice to meet you," + Answer$

      RUN

      Then they'll add a few more lines, and a few more, and at least they're getting interested. If you're worried about them becoming too dependent on the "build and fix" software development model, then I think you've forgotten the original excitement you felt when you started hacking on a computer.

      --
      "I have never let my schooling interfere with my education." - Mark Twain
  7. Windows comes with programming tools! by groman · · Score: 5, Funny

    What, did you forget about "debug"? Man, kids these days. Go to Start->Run...->"debug". There, learn! :-)

    1. Re:Windows comes with programming tools! by Plutor · · Score: 2, Informative

      Haha, brilliant! Debug is the source of half of my DOS programming experience.

  8. Windows does have a built-in language... by The-Forge · · Score: 4, Informative

    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.

    1. Re:Windows does have a built-in language... by AveryT · · Score: 3, Informative

      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.

      The .Net Framework (standard on Windows now, use Windows Update if you don't already have it) contains a C# compiler: csc.exe (command line only, no IDE.)

  9. /.ed? by PetWolverine · · Score: 2, Interesting

    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.
  10. Flexible Learning, Independent of Language by Amadaeus · · Score: 2, Interesting

    I think the problem with teaching programming to youth these days is the perception of learning a "language". Instead of subjecting students to the CONCEPTS of programming, such as inheritence, oop, etc., schools are more inclined to teach children languages instead. It produces grades, I presume.

    The trouble with that presumption is that kids get so accustomed to one language that when they get to college and learn the concepts, they have to throw all they learned out the window and start fresh. Why can't we start these kids off the right foot and wean them off of the language dependency?

    The way I see it is children should be taught the fundamentals of programing at a relatively young age (12-16), like looping and recursion, and let them experiment with the fundamentals with their own choice of language.

    --
    ------
    Amadaeus
    The last bastion of Mathie-ism
  11. Two words by tomRakewell · · Score: 2

    Python

  12. Tough choice by BabyDave · · Score: 5, Funny

    No programming language ... or BASIC.

    I won't put in the obligatory Dijkstra quote, because by the time I finish this sentence, about 200 people will have posted it already.

    Oh, what the hell:

    It is practically impossible to teach good programming style to students that have had prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration. -- Dijkstra
    1. Re:Tough choice by haystor · · Score: 2, Insightful

      I've thought about this statement and at first considered it arrogant. Then I think who said it and it seems authoritative.

      Now I think it confuses cause and effect with correlation. I don't think BASIC cause bad programmers. I think it drew people that never would have gotten into programming into the field. The kinds of people that would never realize good style.

      Think of the code from web developers or sysadmins that have been pressed into service. Those other avenues may bring them to programming but they are usually limited by their abilities, not their previous experience.

      --
      t
    2. Re:Tough choice by roman_mir · · Score: 2, Funny

      Oh, that's a great comment, only here is an example for you: I was 12 when my grandmother got me a book on BASIC. I did not have a computer, did not even have access to a computer, but I really liked that book (it was written in a really cool style, it was a kid's story where the reader would have to learn BASIC as the story progressed in order to solve puzzles, and solving puzzles was necessary to understand the story) and I wanted to try programming.

      So I wrote my first programs on paper in BASIC. I traced my programs by hand and I created input/output tables. I created subroutines with precise definition (pre and post conditions and error handling.) I wrote labyrinth and robot games on paper. It was exciting but I did not have a computer. When I finally got access to Atari 600 and 800 computers I adopted the programs that I wrote for generic BASIC to the BASIC that was built into those machines. The programs worked. I am 27 now, I work as a systems architect I code in dozens of languages, I create architecture documentation, I solve problems and people look up to me for solutions.

      So I don't find that statement to be applicable in every single case.

    3. Re:Tough choice by exp(pi*sqrt(163)) · · Score: 2, Insightful
      Dijkstra is a typical programming Nazi. As far as he is concerned there is one way to program and that is that. There are many programming languages and models: Turing machines, assembler, neural networks, Pascal, FORTRAN, BASIC, C++, Smalltalk, FORTH, finite state machines and Haskell among others. Only one of these look like Pascal, and that's Pascal.

      Each of these languages and models has a domain in which it solves a problem well - programmers have to work from systems ranging from multi-CPU servers with many Gigs of RAM down to tiny embedded systems with a few bytes of RAM. These people are all still programmers. Learning each new model opens your mind to a new way of doing things. Once you have enough experience you'll extract useful computation out of any complex enough system. Hell, to write software for a language like BASIC, without complex datastructures or pointers took a lot of fucking ingenuity and problem solving skills. So people like Dijkstra making ex cathedra declarations that GOTOs and BASIC are bad are a hindrance to solving real-world problems, not a help.

      --
      Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
  13. Squeak by nonya · · Score: 5, Informative

    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.

  14. You Meticulous Rapscallions by madcoder47 · · Score: 5, Funny

    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.

    1. Re:You Meticulous Rapscallions by loucura! · · Score: 2, Funny

      Bah! You nancy-pants youngsters... in my day, All I had was a stick and some toroidal stones... and by golly we liked it.

      Durn kids and their durned electricity...

      --
      Black and grey are both shades of white.
  15. Where to start? by eli173 · · Score: 5, Interesting

    Hand them a Knoppix CD and a book on Python.

    Or let them get python for Windows, if you must.

  16. Shell Scripts by RumpRoast · · Score: 2, Informative

    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.
  17. Language choices by DJ+Rubbie · · Score: 3, Informative

    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 /dev/null
  18. Open Source to the rescue! by steevo.com · · Score: 2, Insightful

    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.

  19. IBM's Robocode by capedgirardeau · · Score: 5, Interesting

    There is a neat game that uses java to make robots. Starting very simple, as you learn to program you make more powerful robots to compete against others.

    IBM Robocode Home

    Covered on slashdot here:
    Robocode Rumble: Tips From the Champs

    And here:
    Learning Java Through Violence

    --
    Wax on, wax off baby!
  20. Re:Bundle VB with windows by MeanMF · · Score: 2, Insightful

    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.

    They almost got split into two companies the last time they tried bundling something with Windows...

  21. erm... by REBloomfield · · Score: 2, Informative

    er, hello? Windows does still come with QBASIC. Go to run, type QBASIC... or CMD->DEBUG ;)

  22. Do you want to teach programming or development? by alek202 · · Score: 4, Insightful

    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.
  23. JavaScript by FTL · · Score: 2, Insightful
    > Now we have Windows, which typically comes with no built-in programming language.

    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.
  24. Java by nate1138 · · Score: 4, Informative

    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.
    1. Re:Java by pmz · · Score: 2, Informative

      Download, install, and run. Read the tutorials on Sun's site.

      If a kid can't do that, then programming isn't for them.


      Be careful, though. A kid might look into Java, see the hundreds of APIs in the Java "platform", become depressed, and decide that those liberal arts classes aren't so bad after all.

      Java/J2EE and .NET are enormous. Kids needs a simple, interactive, and fun environment for learning. Logo is fun for a few minutes, but the novelty wears off. Quite honestly, something along the lines of a Commodore 64 BASIC might be very appropriate, with fun examples in old issues of Compute's Gazette, animated sprites, and easy sound generation. I also remember seeing young people managing fun things in Pascal and Turbo C, but those might be best for a second language/platform.

      It really is too bad that a kid's first computer now-a-days will have the opaque behemoth that is Windows XP. My C-64 was a great first computer, and even my first DOS 5.0 PC was a lot of fun. Now, however, when I boot Win2K or XP, all I really am motivated to do is click around until I find something and the "magic" is gone. I would even argue that even UNIX/Linux is a bit too much, at first, but, perhaps, these are the best thing going, anymore.

    2. Re:Java by Jester99 · · Score: 4, Funny
      I'd introduce... emacs (in order to have the simplest possible environment)

      Hmm. You're one of those people to whom the dashboard of a 747 is "simple," aren't you. :)

      "Daddy? How do I compile?"

      *sigh* For the last time, Bob, M-L, M-X, C-M-K, "make", esc-esc-return...

    3. Re:Java by wrfink · · Score: 2, Interesting
      Java is on the of BEST languages to learn as a first. Why?
      1. Command line (if you like)
      2. Free
      3. Many Free IDE (i.e. Eclipse)
      4. Available for Windows, Linux, Mac, Mainframe
      5. Class files can be sent to friends without a recomple
      6. Applications AND Applets
      7. Tons of free learning stuff like Thinking in Java
      8. No demented DLL hell and install issues that will f_ck up Dad's computer
      9. Many specialized area of interest (i.e. Multimedia, 2/3d Graphics, Networking, Voice, Games, Web, etc.)
      As an added bonus, budding young kids of descruction can battle with Robocode or Race using CodeRally CodeRally
    4. Re:Java by fnc · · Score: 2, Informative

      While I like static typed languages, I think that Java type system is too complex, I would prefer start using Pascal. And for children, I think Squeak (squeak.org - a nice multimedia Smalltalk) or DrScheme (drscheme.org - Scheme with learning facilities) are better.

  25. Give them GNU/Linux, not windoze by destiney · · Score: 2, Informative


    Give them a full GNU/Linux install. It will include gcc, glibc, autoconf, etc..

    Or you could make them build their own LFS system like I make my kids. Sink or swim I always say. :)

    1. Re:Give them GNU/Linux, not windoze by sir99 · · Score: 2, Funny
      Give them a full GNU/Linux install. It will include gcc, glibc, autoconf, etc..
      You'd inflict autoconf on children!?! You animal!
      --
      The ocean parts and the meteors come down
      Laid out in amber, baby.
  26. Three little letters ... by kalidasa · · Score: 4, Informative

    OS X

    Learn AppleScript, then Perl, then C (with GCC). All comes on the developer disk, or a free download.

    If you can't get a Mac (and given how cheap the Macs are getting, that's a smaller proportion of the audience), why not start with command line batch programming, then download ActiveState Perl or Python, then learn some Java, then you can decide whether you want to sell your soul to MS and do VBA and VC++, or slap some Linux on that box.

  27. Whatever happened to Logo? by Viol8 · · Score: 2, Interesting

    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?

  28. Text Adventure Games by thrillseeker · · Score: 5, Interesting

    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.

  29. A little into the future but... by levell · · Score: 2, Interesting

    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
  30. good ol times by n0mad6 · · Score: 2, Interesting

    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.

  31. Lego Mindstorms! by Lars+Arvestad · · Score: 3, Insightful
    I started programming on a Sinclair Spectrum as a teenager and that threw me into a life of computing. It was great! I certainly programmed more than I played games on that machine.

    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.
  32. HTML as the starting point by NixterAg · · Score: 4, Interesting

    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.

    1. Re:HTML as the starting point by hether · · Score: 3, Interesting

      I agree 100%. In the begining HTML provides something very tangible - you can see the results as you code. It's fun to play with colors and font sizes, add graphics, etc. fulfilling the need for visuals, but it also teaches you about some of the basics of coding. For instance you learn how to put things in quotes, make sure you're typing things in exactly as required for the tag, etc. You'll learn to look through your code to find out where the errors are, how to FTP, etc. Then once basic pages are up and running perhaps you'll look at other people's pages and wonder how they got those cool drop down menus, or how the form emails comments to the webmaster, pulls things out of a db, etc. and move on to other languages. At least that's what happened to me. I don't really claim to be a "programmer" per say, but from HTML I moved on to server and client side scripting languages, the to using databases, and even took a C++ class at college for fun. HTML was certainly my gateway into programming.

      --

      Most people would die sooner than think; in fact, they do.
  33. Built-in Windows Language by dfinney · · Score: 3, Informative

    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:

    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 /., 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.

  34. Programming languages hidden on accompanying CDs! by larko · · Score: 2, Interesting

    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.

    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? ;) If an educational version of VB had been on my first computer, I never would have gotten off of it.

  35. Neverwinter Nights by Len · · Score: 4, Insightful

    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.

    1. Re:Neverwinter Nights by dadragon · · Score: 2, Interesting

      Or, Quake-C from back in the day.

      I remember hearing from a friend of mine a long time ago that Quake II uses "some modified form of Quake-C for scripting", so I thought I'd check it out. Turns out that it was just C++ :)

      --
      God save our Queen, and Heaven bless The Maple Leaf Forever!
  36. Scripting languages by i-neo · · Score: 2, Insightful

    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.

  37. Programming in the future... by amper · · Score: 2, Interesting

    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.

  38. Try Python by Default · · Score: 5, Informative

    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.

    1. Re:Try Python by twoshortplanks · · Score: 2, Insightful
      Agreed. Though I suggested Perl, but then I would.

      The important thing as you imply, is that both these languages you can just pick up and go with. You don't have to worry about 'int main(char argc char[][] argv)' and all that...the kid can just start up straight away.

      Oh...you missed out 'powerful' when listing python's good points. I remember BASIC - I could make the screen draw a pretty picture. Python is powerful enough to produce something like bittorrent.

      Hey, today's kids have it made!

      --
      -- Sorry, I can't think of anything funny to say here.
  39. Java by Glock27 · · Score: 4, Informative
    Java provides some nice solutions. I'd most likely start with one of the Logo implementations (this one has a nice tutorial on it's website). Once the child reached the point of handling a full programming language (probably 10 or 11 for a bright one), I'd introduce the JDK and emacs/jedit (in order to have the simplest possible environment). This would also be the time to begin teaching formal programming concepts like algorithms and data structures. I'm sure the child would pick up other languages (Python/Jython, etc.) beyond this point, and also one of the free IDEs like Eclipse or NetBeans.

    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
  40. Lego Brainstorm by CharonX · · Score: 2, Insightful

    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 +++
  41. Delphi Anyone? by sapgau · · Score: 2, Informative

    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

  42. Java by jhines · · Score: 2, Troll

    Download, install, and run. Read the tutorials on Sun's site.

    If a kid can't do that, then programming isn't for them.

  43. You can find LOGO here by Sans_A_Cause · · Score: 2, Informative

    It's available for free for most platfoms.

  44. Python by Dot.Com.CEO · · Score: 5, Interesting
    And the reason is that it forces no bad habbits on people. It is well structured, it can be read easily, is truly multi-platform and is free. The Windows port is very good and allows access to Windows Widgets with a minimum of trouble.

    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.
    1. Re:Python by leoboiko · · Score: 2, Interesting

      I'd add two points:a large amount of useful libraries, and good "non-programmer tutorials" - including a free book.

      I learned to program with Python in a Windows environment. Three years later I'm a CS student and I use GNU/Linux and BSD exclusively. Advocate Python to your newbies!

      --
      Prescriptive grammar:linguistics :: alchemy:chemistry. Stop being a nazi and learn some science.
    2. Re:Python by Electrum · · Score: 4, Interesting

      The Windows port is very good and allows access to Windows Widgets with a minimum of trouble.

      Pygame is even better. When I was a kid, I started programming because I wanted to make games. Pygame gives them everything they need to make games. I also recommend this book as an excellent introduction to Python.

  45. duh linux by bloosqr · · Score: 2, Insightful

    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

  46. Facing this with my 8 year old daughter now by WillAdams · · Score: 2, Informative

    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....

    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) http://www.squeak.org
    (5) http://www.superkids.com/aweb/pages/reviews/scienc e1/widget/merge.shtml
    (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.
  47. Squeak by fizbin · · Score: 4, Informative

    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)

  48. I face this problem. by jdclucidly · · Score: 5, Interesting

    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.

  49. The problem isn't just the computer system.. by schon · · Score: 5, Interesting

    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.

  50. Do you really want to ask this Q on Slashdot? by duffbeer703 · · Score: 2, Funny

    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
  51. My heart bleeds by pete-classic · · Score: 2, Insightful

    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

  52. Java? by KamuSan · · Score: 2, Informative

    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.

  53. Re:The solution - Python by malfunct · · Score: 2, Insightful
    I agree, python would be great.

    I think the bigger problem with getting newbies to program is that programmers are sort of elite. When I first started programming I did silly things like make an arrow "fly" across the screen by doing a very very simple text mode animation, which made my peers thing "wow that guy is amazing". Now I'd get laughed out of the room for the same program. I think that new programmers will have a hard time getting past that first hump because there isn't enough appreciation of the small stuff.

    --

    "You can now flame me, I am full of love,"

  54. Scripting built in since Win98 by Hobart · · Score: 4, Informative
    Windows comes with VBScript built-in!
    Yes, or more precisely Windows Scripting Host (WSH) has been shipped with Windows since Windows 98.

    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 ...
  55. BASIC by svenjob · · Score: 2, Insightful

    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

  56. Except... by rblancarte · · Score: 5, Insightful

    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.
    1. Re:Except... by John_Booty · · Score: 5, Insightful

      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.

      But how do kids get their interest sparked in the first place? Nothing beats booting up a computer and having a BASIC prompt staring you in the face, daring you to type in your first "10 PRINT 'I AM COOL' / 20 GOTO 10"-type program.

      I always loved computers but who knows if my interest in coding ever would have been sparked if it hadn't been that easy to get started by farting around and making funny little programs like that.

      Why the heck should a kid who's never coded before download a bunch of incredibly obscure (to THEM, not US) crap like Cygwin, etc just to pursue some totally unknown hobby? Some kids will still make this leap of course, but it's going to be LESS people than it would have been had there been a fun, built-in-to-the-OS, totally obvious, free way for kids to get started like you had in the 80's.

      --

      OtakuBooty.com: Smart, funny, sexy nerds.
    2. Re:Except... by John_Booty · · Score: 3, Interesting

      Ideally I'd like to see Microsoft provide a really stripped-down of Visual Basic free with the OS. And it should be installed by default, and placed prominently on the Start Menu.

      This would provide something simple for kids (or newbies of all ages) to start playing around with. I think this would increase the number of kids getting into coding overall... which would help Microsoft as kids would be learning Windows programming early, and with more kids overall discovering coding you'd have more total kids "graduating" to more advanced stuff like real programming languages and alternative OS's like Linux, etc.

      It would be a win/win situation for the advancement of programming, IMHO. Perhaps not a win for ME, though, as I'll have more kids competing for my coding job in the future. That problem is tough enough already. :P

      --

      OtakuBooty.com: Smart, funny, sexy nerds.
    3. Re:Except... by kisrael · · Score: 5, Insightful

      That's a pretty cool idea, and probably one of the few workable ones. I don't see MS doing that, but we can hope.

      It's interesting to think of the history of it:

      Booting into BASIC was a godsend for budding programmers. I really wonder what the lack of that will lead to. (And blah blah blah "BASIC considered harmful"...I think the non-line-numbered versions are fine.)

      I never got to use 'em but I suspect it's too bad HyperCard fell by the wayside. I think that's the closest WIMP-based computers have come to a useful languge that beginners were exposed to and could do useful stuff in.

      These days, most kids will be exposed to the web, and the smart ones will realize "hey--this is pretty easy" and do interesting stuff. That tends to be more design than programming...and server side programming (from a kids point of view) is hampered by the lack of a screen to draw on. I think kids like to make THINGS on a screen, sprites, or 3D if it was easier.

      I think DarkBasic or GameMaker or something like that might be a good bet for grownups who wanted to get a kid started who seems to have potential for this kind of thing.

      --
      SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
    4. Re:Except... by anonymous+loser · · Score: 4, Insightful

      I've seen a lot of kids learning to program because they play games on the computer, and want to learn how to make their own. For example, I know several folks whose first exposure to programming was making a mod for UT in UnrealScript. One kid I know even used UnrealScript to do homework assignments for school, until they finally started picking up other languages.

    5. Re:Except... by rot26 · · Score: 2, Insightful

      (And blah blah blah "BASIC considered harmful"...I think the non-line-numbered versions are fine.)

      Dykstra wasn't always right, and I'd like to see him write a decent compiler, or even hand-code an LR1 parser, without any "goto's" in it. It would be unreadable. "goto's" aren't inherently evil, they're just easily abused. Let the newbies make their spaghetti code; there's plenty of time later on for them to approach that 2000 function API for the latest coolest OO nightmare after they've gotten addicted to programming in general. It worked for me.

      --



      To ensure perfect aim, shoot first and call whatever you hit the target
    6. Re:Except... by tvsjr · · Score: 2, Informative

      Perhaps I can weigh in as a part of the younger Slashdot crowd (I'm 19, BTW).

      I started "programming" with a very close derivative of the 10 PRINT 'XXX'/20 GOTO 10 logic. I was about 2 when I started being able to type my name of the computer, and about 3 when I started actually doing some simple BASIC programs.

      I was given Borland C++ around age 10, and inhaled all the manuals, books, readmes, etc. I could find. I also elicited help from others over the Net (then available to me using UUCP and Waffle... remember those days?)

      Long story short, the language didn't give me the desire to code. My parents showing me what a computer could do (along with some other exceptional parenting, school involvement, grandparents, ad nauseum) made me interested in learning the computer. Once I started learning, I wanted to do my own thing - the only way to do that was by writing some programs. So, I learned what I needed to know to build those programs..

      In short, the language doesn't make that much difference. Programming languages are *not that hard*. If a child has the desire to learn, he'll find a language.

    7. Re:Except... by John_Booty · · Score: 2, Insightful

      I would imagine that the parent would download and install the software for the child. Granted when I was a kid I had to figure it out for myself. But when/if I have a child I'll set an environment up for him/her if he/she expresses an interest in programming.

      You and I would do that, sure. Would the other 99.9% of parents in the world, the ones outside our "hardcore computer user" demographic do the same? Nope!

      --

      OtakuBooty.com: Smart, funny, sexy nerds.
    8. Re:Except... by M.+Skjellyfetti · · Score: 3, Interesting

      My first programs were written on a machine (I forget what it was called) that had something like a 5 x 9 (or so) led display and the keyboard had only hex symbols on it. I was pretty young but I figured it out. The point is, back then after you got bored running the half dozen or so programs that came with the machine your only option was to program it yourself. Same for Sinclair-1000, TI/994A, Vic-20, and whatever else.

      Later on it wasn't like I was pulling free compilers out of thin air for my Amiga. I actually had to do a little searching around on the BBS's for that on my own. But by that point I was already interested in programming.

      The thing is, computers (Windows) aren't designed for hobbiests anymore. Most people just want to plug it in and surf the net, play a game, type a document. Its become simplified, more like a TV. Most people dont buy a computer because they want to code. Windows is intetionally designed to require little thought, for good reason. It sells to the masses. It can do hundreds of things without the user ever having to type a single line of code. Most kids aren't going to find any reason to expose themselves to coding when everythings already done for them. And thats too bad.

  57. It wasn't that hard to get my little lad started by Snaffler · · Score: 5, Interesting

    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.

  58. Cocoa? by Jeremy+Erwin · · Score: 2

    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.)

    1. Re:Cocoa? by KamuSan · · Score: 2, Insightful

      You really can easily make simple pograms with it, but explaining a Controller object might be a bit too much. It's a bit too much for experimenting on your own as a kid, I think.

  59. I hate to say it, but VB is the way to go. by Kevin+Stevens · · Score: 3, Insightful

    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.

  60. Curl would've been good... by F1_Fan · · Score: 2, Interesting

    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...

  61. I did some consulting for a school near me and.... by SwedishChef · · Score: 4, Interesting

    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!
  62. Pascal by s20451 · · Score: 4, Informative

    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.
  63. Maybe Kiddie Knoppix by Aging_Newbie · · Score: 2, Interesting

    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.

  64. Game Maker by httptech · · Score: 3, Interesting
    There is an excellent freeware program for Windows called Game Maker which allows you to create simple to sophisticated 2-D arcade/rpg style games through a drag-and-drop interface. My 9 year old enjoys creating the games this way, but the beauty is in the built-in scripting language. When he can't accomplish what he wants using drag-and-drop, I teach him how to insert a snippet of code into the game objects to get the results he wants. Little by little, he learns to program this way.

    Game Maker URL: http://www.cs.uu.nl/people/markov/gmaker/

  65. Python by Phantasmo · · Score: 2, Insightful

    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
  66. Teach them functional programming! (Really) by tmoertel · · Score: 4, Interesting
    The vast computing resources that children have today are both a curse and a blessing. The curse is that there is so much more complexity for today's children to grapple with than we had when we were learning to write software. But, the blessing is that today's children have vast computing resources at their disposal, resources that we could scarcely dream about.

    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.

    1. Re:Teach them functional programming! (Really) by Rinikusu · · Score: 2, Interesting

      You know.. I alluded to this in another post about this story but..

      When I was 10 years old, I didn't give a fuck solving problems and math. I liked pretty graphics, music, and joysticks. I was a KID. And most kids I knew were the same. We learned BASIC and whatever so we could make pretty pictures, music, and games, not because we wanted to solve problems and learn math (which we learned in the process, but NOT as the end in itself), but because we liked pretty pictures and music and games. People like you keep thinking of "what's in a kid's best interest" and forget that when you were a kid, when people told you what was in "your best interest" it immediately turned you off of whatever it was you were into.

      The key is not to present it in a "Here's a way to solve important mathematical problems that you'll need in the future" but in a "hey, isn't this cool? I wonder how they did that!?" framework.

      And who said everyone wants to be a programmer?

      --
      If you were me, you'd be good lookin'. - six string samurai
  67. Microsoft rep replies by tuxathon · · Score: 2, Funny

    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

  68. Java? No, maybe python... by jkauzlar · · Score: 2, Insightful
    Pros:
    • 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)

    1. Re:Java? No, maybe python... by 72beetle · · Score: 4, Insightful

      Actually, given this scenario of enabling a kid to learn programming, I'd absolutely point them at Java.

      I was one of those kids that learned programming in BASIC on TRS-80's back in the early 80's... and back then the order of the day was procedural programming, so that's the methodology that I learned. Because of my background in procedural, I have never gotten fully comfortable with OOP, and it's been the Achilles' tendon of my career.

      OOP is significantly easier to learn if you don't have to 'unlearn' procedural programming first... so start there with the next generation of programmers. Java's got it's flaws, but for learning Object Oriented Programming, it's the way to go.

      -72

      --
      -Those who dance are considered insane by those who can't hear the music.
    2. Re:Java? No, maybe python... by xenocide2 · · Score: 3, Insightful

      Java is nice in some ways, but I must disagree that its a learning language. I used to think along the same lines, but careful thought and argument has changed my mind (who would have thought that anyone's mind could change from the internet).

      To begin with, procedural programming isn't diametrically opposed to OO, like many like to imply. OO is, in part, a way to organize those procedures into coherent wholes. I don't think you can write a OO program without knowing how to write a procedure. When I was going through my basic undergraduate programming classes, many fellow students were having problems using iteration to do something to an entire array. Hopefully the foreach concept won't have too high a barrier of entry.

      Now the above understanding is easy enough to rectify without abandoning Java. Simply begin teaching them the basics using the classic "static void main(String[] args)" line. This is the real problem with Java as a learning language: there's a lot that the student must be told to remember but not understand. The meaning of many keywords nessecary to program in Java can be overbearing to teach and mostly serves as a hurdle to student's interests. Exceptions are a nice way of handling errors, but they require a lot of confusing ideas to beginner programmers, like the notion of execution control flow, the activation record, and the keywords throws, try, and catch. There used to be a very classic line in introductory Java texts, for doing standard commandline input. Something like BufferedStream keyboard = new BufferedStream(System.in()). Again most students are just taught 'Just memorize it for now, we'll discuss (or replace) it later.'

      That said, there are worse choices than Java for a language. If you can skirt around the issues I've mentioned above, Java does have many nice benefits. The exceptions have a very handy benefit compared to other compiled languages; rather than get a Segment Fault, you get something like NullPointerException(MyClass.java:40). And of course, the lack of explicit pointers itself is just one less concept you need to teach, especially when you're simply trying to cover the basics that are present in nearly every language in use. The Javadocs are also handy.

      So really it isn't a clear cut yes or no. If the student is dead set on learning to program then perhaps Java is the way to go. But for students on the fringe, every boring hurdle to get something done is another step towards middle management. ;) I guess the real question is, should we cater to (read: dumb down) the fringe?

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    3. Re:Java? No, maybe python... by richieb · · Score: 2, Interesting
      Actually, given this scenario of enabling a kid to learn programming, I'd absolutely point them at Java.

      I tried this once. I wanted to show my 11 year old son how to code in Java. So I tried to show him how to write a simple program to solve a homework problem - solving a simple equation.

      The first step was to read two decimal numbers from the console. When I got lost among the various stream classes, I gave up. I could figure this out, but how would I explain it to an 11 year old? And not bore him to death?

      --
      ...richie - It is a good day to code.
    4. Re:Java? No, maybe python... by dekashizl · · Score: 2, Insightful

      I completely disagree with your post. Java is horribly verbose, overly complex, and entirely lacking in simple ways to make cool things appear on the screen (which is what gets kids interested in programming).

      Before you say "you don't understand Java", let me say that I do know it very well. I have used it for several large engineering projects, and am using it now in building a SOAP-based server. But that's not the point.

      Furthermore, your point about having to unlearn procedural programming is just plain silly. That would be like saying children should not use computers until they can learn to touch-type properly, because it will be too hard to unlearn hunt-and-peck typing styles. It's silly, but your example is even worse, because while touch-typing is superior to hunt-and-peck, OOP builds on simpler procedural programming styles, and without the foundation, you are a mystic and not an engineer.

      Lastly, the biggest problem I see for kids programming these days is that they don't have to. When I was a kid, I turned on my computer, and it didn't do or connect to anything. I had to put a disk in, and then it would do that one thing. And the disks cost money. So if I wanted it to do anything else, I had to make it do it. Now, you just point your browser to goatse.cx and a whole new world is opened up to you, so why bother inventing anything yourself? That's the fundamental problem that I see, which is that there is no longer that boredom that inspired me as a kid.

  69. Re:Download QBasic from Microsoft for Win2K/XP by jandrese · · Score: 2, Interesting

    Unfortunatly it's not very useful to download that on Win2k/XP, as most of the applications in there just spit out "Incorrect DOS Version" and quit. Apparently most of the applications are not NTFS aware.

    --

    I read the internet for the articles.
  70. I have actually done this and used Java by John+Harrison · · Score: 4, Interesting
    I started programming our C=64 the day after my dad brought it home. I was in third grade and I taught myself Basic. My little brother and I wrote all sorts of games and made our own animated cartoons using that computer. I wish someone would make a cheap C=64 (hardware, not emmulator) so I could let my kids have a crack at it as well.

    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:

    • Free (as in beer) development kits are nice. The kid didn't have money to buy Visual Studio.
    • Free documentation is important as well. Sun has some nice stuff on the web and there are lots of java game tutorials out there.
    • AIM is incredibly useful for something like this.
    • The web is a great tool for letting kids share their accomplishments with others. This kid gave the URL to others at his Jr. High and they could see the game he made.
    • This sort of thing take a long time and lots of patience, especially remotely. It would be nice to have been able to have worked in the same room on occasion.
  71. Mac OS X by spam38 · · Score: 2, Informative

    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.

  72. Poor Billy can't read BASIC by HydeMan · · Score: 2, Interesting

    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.

  73. Re:Not OO! by RevAaron · · Score: 5, Informative

    OO doesn't mean a scary IDE. OO doesn't mean VB.NET or any other language on the .NET object model.

    Smalltalk has been used for teaching kids for 30 years, and with a good amount of success.

    Part of the reason kids can learn Smalltalk well is that there is no need to learn and use OO off the bat. You can do a fair amount of stuff in Smalltalk just by using Object-Based Programming, rather than OOP. Object-based means *using* objects, creating them, but without a full dose of creating classes, etc.

    Now a days, we have Squeak, which takes it to the next level. Kids can get a big return on their investment of time, creating moving, colorful things, while writing a very small amount of code. Unlike some environments for beginners, it scales up, being useful for creating big and scary applications with a lot of code. :) Kids end up learning OO by manipulating actual objects, in the form of graphical "Morphs," giving them functionality, changing their properties... until the day it clicks, and they decide they want a totally new "kind" of Morph.

    Check out the demos- it's open source, and runs on just about every platform worth runnning, including Mac OS Classic/X, Windows > 3.1 (incl WinCE), and all modern Unices under X11 (or DirectFB, Linux FB, SDL).

    --

    Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
  74. Match the code to the application by KC7GR · · Score: 2, Insightful

    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

  75. Lego Mindstorms! by ghztew · · Score: 2, Interesting

    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.

  76. overengineering the solution by Transient0 · · Score: 5, Interesting

    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.

  77. ZX-81 - Manuals really meant something by Alioth · · Score: 4, Interesting

    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).

    1. Re:ZX-81 - Manuals really meant something by Alioth · · Score: 2, Interesting

      Don't forget the ZX-81 also came as a *kit*. You needed guidance to not only plug in the keyboard, but the CPU, the memory, and possibly how to use a soldering iron!

  78. Why "improve" it? by Tablizer · · Score: 2, Interesting

    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.

  79. C? C++? Java? Get real! by Cereal+Box · · Score: 5, Insightful

    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.

  80. I know the answer: by yalla · · Score: 2, Funny

    Ship a free zx80 prototype board with every copy of Windows. :-)

    SCNR, Alex.

    --
    You look like a million dollars. All green and wrinkled.
  81. Gulf between expectations and reality by BlightThePower · · Score: 2, Insightful


    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
  82. BASIC Stamps? by sillivalley · · Score: 2, Insightful

    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-

  83. Two big hurdles for little coders by jitterbug · · Score: 2, Interesting

    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â

  84. PHP by StormReaver · · Score: 2, Insightful

    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.

  85. HTML is the new BASIC by goodchef · · Score: 2, Insightful
    I first started programming in BASIC on an Apple //e when I was in 2nd grade or so. I taught myself to program mainly by looking at the source of other programs, experimenting with what the different statements did, and playing around with it.

    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

  86. Alice: designed for kids to learn to program by Khelder · · Score: 2, Informative
    I recommend looking at Alice, an environment that's designed specifically to be an easy way for kids to learn to program. It's quite mature (started at least 7 years ago) and the developers have evaluated it with real kids. It's about programming in an interactive 3D world, which I think is a great environment for beginning programming. One of my early programming experiences was in LOGO, and I really liked being able to type commands and see an immediate effect.

    From what I know of squeak, it sounds like a good environment, but AFAIK it wasn't designed specifically for kids.

  87. Perl by pergamon · · Score: 2, Funny

    Introducing programming to a kid with Perl would have to qualify as child abuse.

    [That being said, I use Perl wherever possible ;)]

  88. I'm teaching my kids Python by ChaoticCoyote · · Score: 2, Informative

    For the purposes of home schooling, I use Python. The interactive nature of Python resembles the old MBasic and GBasic interpretters; immediate feedback is terrific for learning.

    Python's capabilities scale nicely between simple "hello world" and complex applications; my daughters can gradually learn concepts and techniques.

  89. Scheme IS practical, you insensitive clod! by brlewis · · Score: 4, Funny
    it's Scheme....get them something a bit more practical

    I program professionally in Scheme, you insensitive clod!

    (Seriously, I do.)

  90. Linus by Alpha_Nerd · · Score: 2, Funny

    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.

  91. From little Acorns... by chiller2 · · Score: 5, Insightful

    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 :)
  92. POV-Ray by Pall+Agamemnides · · Score: 2, Interesting

    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.

  93. "robot programming" games by divbyzero · · Score: 4, Informative

    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.
  94. Random thoughts on kids & programming by Kismet · · Score: 2, Interesting

    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.

  95. Macromedia Director by no+parity · · Score: 2, Insightful
    It's so f*cking obvious, yet I see no mention of it among the 800 comments.
    Yes, it's evil, it costs money, but see the advantages:
    • Lingo is an easy-to-learn language.
    • You can easily create pretty, colorful stuff.
    • You can even put your results on the web, for everyone to see.
    • Once you add buttons and stuff, there's a natural tendency towards event-driven GUI programming, which most Slashdotters don't seem to understand even today.
  96. need more than a language by bshanks · · Score: 3, Insightful
    I think most of the 5s that I read above are missing the point. Many of them answer the question "If you want to teach a kid to program, what do you do?" (and most get even more specific, to "which language?").

    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:

    1. It came with the computer, and I tried out everything that came with the computer.
    2. 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

    Python 2.1.3 (#1, Sep 7 2002, 15:29:56)
    [GCC 2.95.4 20011002 (Debian prerelease)] on linux2
    Type "copyright", "credits" or "license" for more information.
    >>>

    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:

    Python 2.1.3 (#1, Sep 7 2002, 15:29:56)
    [GCC 2.95.4 20011002 (Debian prerelease)] on linux2
    Type "copyright", "credits" or "license" for more information.
    >>>

    Good job! Now you've started the Python "interpreter". This means that it is time to start giving commands to Python. Commands are things that tell your computer to do something. For instance, if you typed

    print "hello"

    next, here is what would happen:

    >>> print "hello"
    hello
    >>>

    Now you try! We've already done the first part for you. Type the word "hello" in quotation marks, and then press <return>:

    >>> print
    )

  97. Thanks for the comments, notes by whytheluckystiff · · Score: 2, Informative

    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.

  98. Brings Back Memories by ShonFerg · · Score: 3, Interesting

    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.

  99. Re:Well, if they've got a Mac... by Squidgee · · Score: 2, Interesting

    Err, that link should be to here. Sorry!

  100. Bert Kersey, where are you? by Our+Man+In+Redmond · · Score: 2, Informative

    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.
  101. Examples by Our+Man+In+Redmond · · Score: 2, Informative

    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.
  102. My Programming Tale by Phishpin · · Score: 2, Interesting

    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
  103. kids figgure it out on their own by heybo · · Score: 2, Interesting

    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.

  104. Smalltalk is for small people. by chris_sawtell · · Score: 2, Interesting

    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!