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

64 of 1,073 comments (clear)

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

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

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

  4. 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.
  5. 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.
  6. 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.)

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

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

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

  11. 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 +++
  12. 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.
  13. 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.

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

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

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

  18. Re:Don't forget the new language it has! by Anonymous Coward · · Score: 1, Insightful

    Knee-jerk trolling. How boring.

    You really think VBScript on Windows is unreliable and difficult, but suggest a 10 year-old try to install and configure a Linux development computer? Are you completely out of touch with reality? Answer: yes.

  19. 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,"

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

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

    4. 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
    5. 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.
  22. 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.

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

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

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

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

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

  30. 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 Anonymous Coward · · Score: 1, Insightful

      As a professional Java developer i would not teach first principles in Java. In fact i have taught Java at night school, and found it to be quite difficult . Python is a much better choice for a starting language and includes many of the 00 features yon come to expect from languages like Java.

      I'm not saying l prefer Python over Java ,Just that python is a better stating Langwage.

    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.

  31. 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."
  32. Why bother? by Anonymous Coward · · Score: 1, Insightful

    What's the point? Within 5 years you won't be able to get a job programming outside a 3d World country anyway!

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

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

  36. 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
  37. 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
  38. 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. ---****
  39. As one of those young whippersnappers... by Anonymous Coward · · Score: 1, Insightful

    Got my start on Mac OS 7. Learned C by reading The Black Art Of Macintosh Game Programming. Played with the toolbox. Moved to multiplatform. Learning GLUT/openGL now.

    I should point out that I learned my first (non-calculator) language was learned from an "advanced" book (it actually said so on the back!) that assumed knowledge of the language from the start. I learned this language on an OS which had no default programming language, no shell, and no scripting.

    If you think it's too hard, your standards are too low. Anyone who looks around will find a few versions of basic, perl, python, and maybe some other stuff online, as well as tons of books (in local book stores and online). Anyone who's going to be a good programmer will learn to program regardless of what's put in front of them.

    Another point I'm sure others will mention is that programmers are usually tech geeks and thus will often run linux. C on linux is pretty close to a "default" language. It's certainly better for learning than that basic crap. I'm not going into the linux-in-schools discussion here -- that's another thing I'm sure others will talk about at length.

    All that's really changed is that people must now go out and look a little to learn to program, instead of having a handicapped language handed them on a silver platter. In my opinion, this will lead to fewer incompetant programmers without any decrease in competant ones. And if you've ever worked with someone who still thinks in BASIC no matter what language they're programming in, you'll understand why this is a good thing.

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

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

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

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

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

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

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

  48. 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.
  49. 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
  50. How about Lego? by Anonymous Coward · · Score: 1, Insightful

    When I have children, I will be more than happy to let them use my Mindstorm RCX.

    RCX Basic (?) is a simple way to program, based on putting together different tiles to write a program. Any 10 year old could do it.

    Later, they could move on to Lejos, and once they are confident with that, they could move on the RCX scripting language (I forget the name... might even be RCX basic) in order to gain some insight as to how the machine really works (eg interrupts, thread management, etc).

  51. 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 :)
    1. Re:From little Acorns... by Anonymous Coward · · Score: 1, Insightful


      Back in '83 my father bought the family a BBC B [...]

      Switch the Beeb on...
      *blur*beep*


      The correct way to pronounce this is to to write out the two notes -- *blur* and *beep*, which are one octave and a tone apart -- as letters. Note that the first note is twice as long as the second, so it is written twice:

      BBC

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

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