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

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

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

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

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

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

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

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

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

  12. 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."
  13. 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.
  14. 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.

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

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

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

  20. 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 :)
  21. 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
    )