Forgot your password?
typodupeerror
Programming Education

Learning Programming In a Post-BASIC World 510

Posted by Soulskill
from the have-you-tried-going-to-10 dept.
ErichTheRed writes "This Computerworld piece actually got me thinking — it basically says that there are few good 'starter languages' to get students interested in programming. I remember hacking away at BASIC incessantly when I was a kid, and it taught me a lot about logic and computers in general. Has the level of abstraction in computer systems reached a point where beginners can't just code something quick without a huge amount of back-story? I find this to be the case now; scripting languages are good, but limited in what you can do... and GUI creation requires students to be familiar with a lot of concepts (event handling, etc.) that aren't intuitive for beginners. What would you show a beginner first — JavaScript? Python? How do you get the instant gratification we oldies got when sitting down in front of the early-80s home computers?"
This discussion has been archived. No new comments can be posted.

Learning Programming In a Post-BASIC World

Comments Filter:
  • by ninthbit (623926) on Friday June 24, 2011 @11:03AM (#36555956)
    And why doesnt BASIC still work? Any reason they can't still use BASIC?
    • Re: (Score:2, Informative)

      by tepples (727027)

      And why doesnt BASIC still work?

      Because Apple has banned it from the iPhones and iPads that most of the "cool kids" are using nowadays. In fact, Apple pulled a Commodore 64 game from the iOS App Store [google.com] solely because the player could reboot the emulated C64 into the REPL of ROM BASIC.

      • Re: (Score:3, Informative)

        by MightyYar (622222)

        Because Apple has banned it from the iPhones and iPads that most of the "cool kids" are using nowadays.

        Bogus. All interpreters are banned, not just BASIC.

        And they run javascript sites just fine, some [calormen.com] of [osaware.com] which [yohan.es] implement BASIC [quitebasic.com].

    • It does still work. My, and my friends', first exposure to programming was with TI-BASIC on our TI-83+ calcs when we were in 8th grade. Assuming graphing calcs are still widely used, it seems like a very easy method of exposing first-timers to programming. Unfortunately, programming using the keypad is a huge pain, but can also be done on a computer.
    • by mcvos (645701)

      I suppose, but it's also a community thing. My brother learned to program at a young age mostly by typing BASIC code from hobby computer magazines, by recording binary from hobby computer radio shows. Do such magazines and radio shows still exist?

      Well, of course there's the Web with more stuff than there ever was in the past, but that can also make it harder to find what you really need. For example, are there any introductory programming websites in Dutch? English might be an extra hurdle for non-native sp

    • by TheCarp (96830)

      I started with Applesoft BASIC myself.

      Honestly, I, it took me a long time to get over the bad habits that BASIC taught me, as it is so far removed from modern languages that its barely worth discussing.

      It only had the most basic concept of subroutines, no functions. Line number based references? No concept whatsoever of memory allocatio or lexical scoping....

      I would say that C is great, even if the vast majority of the time, doing memory allocation "by hand" sucks and delivers no benefit. However, most work

    • Sorta. I dunno about others, but what got me interested in programming when I was a wee little lad was that I could make something fun and immediately see the results. All games on my parents' old ZX-81 with 1K RAM (yes, 1024 bytes of RAM, total) were really far more primitive than your typical cell phone game these days. It wasn't hard to get ideas like "I can do better" and actually do so. I actually invited a few friends to play my own primitive strategic bombing "simulator", and they actually found it f

    • by Bengie (1121981)

      I tried BASIC as a kid. Hated it, so I stopped learning to program. A few years later, I stumbled across C++, loved it, so I started to program. I found ASM much more fun than BASIC.

      I felt like I was scripting with BASIC, wanted to tell the CPU what to do, not what the scripting engine should do.

    • by dzfoo (772245) on Friday June 24, 2011 @11:49AM (#36557000)

      I guess the point of the submitter is that, back in the day, the rudimentary input and output of BASIC programs was rather de rigueur at the time, while nowadays such interfaces seem archaic and obsolete. Therefore, writing a BASIC program may not fulfill the expectations of someone who has grown up using a GUI environment.

      This is, of course, bullshit. Making a computer write "Hello World!" or your name across the screen repeatedly by your own device is as much fun, intoxicating and empowering today as it was 30 years ago.

      Of course, those wishing to sit down and write a multi-player, 3-D rendered, high-performance game for the iPad after spending a week reading a "For Dummies" book; they will be thoroughly disappointed.

      This is no different from how it was in the 1980s. Writing my name across the screen repeatedly was about the most interesting thing I could coax my C=64 to do after a perplexing read of the instruction manual.

      Eventually, I had to learn some very complex concepts in order to advance further than that and really get control of the machine. Things such as interrupt vectors, bitmaps, movable object blocks, RAM/ROM addressing, data structures, flow control, memory maps, Boolean algebra, non-decimal number systems, etc. Sure, these may not be high-level abstractions, but they are nonetheless sophisticated, non-trivial concepts, and just as hard to master to the uninitiated.

      Perhaps because of their decidedly low-level detail, they may be even harder to grasp than modern platforms, which are by their very nature, designed to match closer the way humans think and work.

      Having the curiosity, interest, and aptitude to learn and master complex concepts is what distinguishes the amateur programmer from the casual user. These are traits inherent to the person, not the subject or the tools, and they are as present in today's generation as in past ones. Moreover, they transcend languages, cultures, and even platforms.

                -dZ.

  • Off the top of my head, three languages and platforms with which one can quickly produce GUI based apps. Android's Java is very approchable and you can do your "hello world" type app in a few lines of code. Likewise, Flex (aka Flash for apps) is for lack of a better word, flexible and lets you use a nice combination of Actionscript and XML to build apps quickly. And finally, Objective-C is very user friendly and can be found bundled with OSX or you can get a copy of Borlands C++ Builder.
  • I like Ruby (Score:5, Informative)

    by jarich (733129) on Friday June 24, 2011 @11:03AM (#36555966) Homepage Journal
    It's lightweight, portable, and has a ton of interesting projects for learning. Start here at http://www.ruby-lang.org/en/ [ruby-lang.org] Check out the "Try Ruby in Your Browser link" on the right hand side.
  • wxWidgets and Python are a good combination of easy to learn and visually satisfying results. The later being for positive reinforcement. Oh. And using it to write more practical programs in the future isn't hindered by a boat load of patents.

  • Just the top two google results:

    http://ask.slashdot.org/story/08/07/22/0452225/How-To-Encourage-a-Young-Teen-To-Learn-Programming

    http://ask.slashdot.org/story/10/07/30/2150208/How-Should-a-Non-Techie-Learn-Programming

    Someone should keep track of them. Maybe stash them in some "Learn to Program" folder on Slashdot?

  • by tepples (727027) <tepples&gmail,com> on Friday June 24, 2011 @11:05AM (#36556008) Homepage Journal

    I'd say go for the JavaScript. The learner already has the instant gratification of an HTML document. Then add a button whose onclick handler changes the button's value to "Hello World".

    How is event handling unintuitive? "When this happens, do this and this and this."

    • Re: (Score:2, Insightful)

      by Anonymous Coward

      I would say python. As event driven is not something people get right away. But people can think in sequences.

      What trips people up is 'button click', 'magic happens', 'your code is called'. That messes with people for some reason as the 'magic happens' means they do not control it. When you are starting out you want some feeling that you control it.

    • by mackil (668039)
      When I got the opportunity to teach a programming class for the local Home Link group, I chose Javascript because of the network lockdowns that the admins had put in place in the classroom. That way I avoided running into any permissions problems or having to reinstall a compiler or JVM every time we had a class.

      It worked great as a beginning course. The ability to just run the script in the browser, and to build something "cool" in a matter of minutes, really opened their eyes to a whole new world on th
    • by w_dragon (1802458)
      Totally agree. You can still throw up a couple dozen lines of code and get visible actions happening, those lines are just in javascript, html, and maybe PHP rather than Basic.
    • I would concur on Javascript. No need to buy or learn a complex IDE, easy to learn and use like BASIC with the ability to print lines without complex GUI concepts, and just about any laptop or PC with a web browser and a basic text editor is ready to go.

    • Yeah, and the platform environment is ridiculously easy to use, and tools people are familiar with. Text editor -> save with extension .html -> open in browser (reload to see changes). Just about anything else is nightmarish by comparison.

  • Python or JavaScript or whatever maybe be currently in vogue but the act of programming transcends languages. Just pick one and do it. Python can be used with or without the "back story" depending on what you want to do. Once you are in the GUI world it is pretty much all back story.
  • by betterunixthanunix (980855) on Friday June 24, 2011 @11:06AM (#36556026)
    I can think of a few, a little bit more advanced than BASIC but which should suffice for a beginner:
    • Scheme
    • Python
    • Shell scripting languages (I won't even try to list them all)
    • VBScript (as far as I know, this is still shipped with Windows)
    • Re: (Score:2, Insightful)

      by Anonymous Coward

      Scheme?! You've got be kidding!

  • Processing (Score:4, Insightful)

    by zerosomething (1353609) on Friday June 24, 2011 @11:06AM (#36556028) Homepage
    http://processing.org/ [processing.org] it's easy and gives immediate gratification.
  • There's Alice (Score:4, Informative)

    by rsilvergun (571051) on Friday June 24, 2011 @11:06AM (#36556032)
    Google it. Especially if you like the Sims, try the 3.0 beta. Other than that I'd second HTML + Javascript. You can very quickly get up an running with something fun and interesting.
  • The only thing it will do for you is give you serious brain damage. Python is widely recommended as a good starter language that is also good as a serious language. Following from that you can easily branch to Perl, Ruby, Haskell, even C (which I recommend learning after Python if you can).

  • I can fault MS for a lot of things, but C# is nice, and their interface builder is a piece of cake that takes the agony out of building a UI. I'm pretty sure that Hitler and Stalin are building Java UIs by hand right now...
  • I think the language doesn't so matter so much as the time that is put into it. In the summary basic was given as an example, and I'm sure the basic he's talking about isn't considered good code these days. No object orientation, plenty of gotos and so on. The thing is he spent time on it, and from that language went to others.

    With this in mind I would say that today there are plenty of good starter languages. My suggestion would be python, which introduces a number of good habits. It also has the advanta

  • I've never met a programmer that did not end up being better at their craft after spending time writing Ada. Some did not like it and shun it but even they seem to be better programmers in their language of choice after using it. (Though of course it is not magic and if you are not cut out to be a software developer, it is not going to fix that).
  • by ndogg (158021) <the...rhorn@@@gmail...com> on Friday June 24, 2011 @11:10AM (#36556132) Homepage Journal

    I recently heard (though not used) about Alice [alice.org], which sounds interesting for at least introducing programming concepts.

  • Just use BASIC, or an older version of VB(VB3 comes to mind). Simple, little required in the way of GUI(even VB3 is extremely simple with GUI), and enough to teach the basic concepts. The fact that they're old doesn't mean that they aren't useful.
  • Early 80's? (Score:3, Funny)

    by numb7rs (1689018) on Friday June 24, 2011 @11:11AM (#36556156)
    "How do you get the instant gratification we oldies got when sitting down in front of the early-80s home computers?"

    By using a language that has lasted through that time to this one: Fortran.

    Fortran is still one of the most widely used languages in scientific applications, and is a great starting point for beginners.
  • by mhamel (314503) on Friday June 24, 2011 @11:13AM (#36556206)

    When I was a kid, the computer i programmed for (trs-80), was one of the first computer I ever saw. There were not that many programs for it. So it was easy to get excited about almost nothing.

    Now all the kids have been exposed to all sort of technologies. They'll never get excited by very simple things like I have been. The thing to remember is that it will never be has rewarding has it was at the time for such simple things and no language is going to change that.

  • BASIC still exists, and so does Pascal, but honestly, why not use a real language?

    Python has always been trivial to get started in. I taught my 9 year old to program in python in a few hours.
    Java is easy to use, and the syntax is clean.
    C# is basically a clone of java, so the same applies there.

    You don't need to learn object orientation to use any of these languages. Sure, you probably SHOULD, but you can learn java programming solely in the main() if you just want to learn the basics. Even moreso wi

  • Have them learn LISP.

  • If anything, the post-BASIC world is far, far, better supplied with both explicitly pedagogical languages, application-specific rapid development tools(Processing, for instance), and fairly mature options that allow you to do anything from what is essentially shell scripting to full application development.

    However, you run into the rather messy problem that off-the-shelf examples of software have(both in terms of software complexity and in terms of ancillary stuff like graphics and sound assets) Vastly increased in number, sophistication, and availability. This makes it harder to engage any would-be-learner who isn't explicitly interested in programming by sucking them in with the cool results.

    Back when daddy borrowed the company Compaq Luggable so that he could work on spreadsheets on weekends, your choices for computer entertainment were pretty much "Lotus 1-2-3" or "Make your own damn fun with basic". Option two was pretty attractive even if you really just wanted some games and only became interested in what made them tick later.

    Nowadays, when we have all removed the onions from our belts, hypothetical kiddo is enormously better tools and documentation at his/her fingertips; but is also comparing the rudimentary results of a beginner against products of 2-3 years of effort by a professional design team, backed by artists and sound guys, available for 20-50 bucks off the shelf. Even the sort of flash games that will load about as quickly as the Python 3.2 reference manual will are comparatively polished and intimidating.

    Arguably, it might actually be better to start beginners out with more physical projects: Sure, robotics has also increased enormously in sophistication and power; but high end robots are still expensive and uncommon, and there is a more visceral "wow" factor to "Hey, I hammered out the feedback logic that allows my little *duio bot to follow lines" than there is to "Oh, I've just produced 10% of Zork; but less witty and 25 years late. Let's go play Medal of Life Half-Gear Assault 2011."
  • TI-BASIC (Score:4, Informative)

    by gman003 (1693318) on Friday June 24, 2011 @11:14AM (#36556242)
    Grab a TI calculator. Learn the slightly weird version of BASIC installed on them. That's where I got my start.

    You can write an actually useful program in just a few lines. It's got a few simple data types (floats, strings, lists and matrices), has a few basic functions (Disp, Input), and all the common language constructs (If-Then-Else, For, While, Goto). There's a few oddities (assignment is reversed, instead of "a = 2" you have "2 -> a"), and there's no proper way to declare a function (you can either make another program and call it, or use goto), but you can do a surprising amount with it.

    I programmed those for a year or so. Tried learning assembly to get around the limits of Basic (mostly the speed), couldn't do it. But I did get into C++, and later all the other "real" languages, and am now pretty much a real programmer.
  • When my daughter is old enough I think I will introduce her to the applescript gui tool - where you can simply stick together existing applications into small macros, where the output of one application is piped into the input of the next. It is like visual shell scripting...but even simpler. You can include your own more complex shell scripts as steps in the overall script and really go nuts with it. I'm sure I'll get flamed for this, but to me it is a great way to introduce a (very) young person to the
  • Logo and ML (Score:4, Interesting)

    by markov_chain (202465) on Friday June 24, 2011 @11:18AM (#36556310) Homepage

    I learned BASIC first. When I was shown LOGO, I wrote a few lines of code to draw a Sierpinski triangle, and thought to myself: there is no fucking way this can be this simple. It worked, though, and sure got me to appreciate the weird academic languages.

  • by MikeRT (947531) on Friday June 24, 2011 @11:19AM (#36556330) Homepage

    A kid who isn't satisfied with very basic accomplishments is one who will never have a shot at writing a 3D game. I had to explain this to a younger guy the hard way a few weeks ago. It requires real work, drive and willingness to learn. If you can't delay gratification or find gratification in simple accomplishments along the way, you're not even a candidate for success.

  • by ZekeSMZ (874386) on Friday June 24, 2011 @11:19AM (#36556338)
    MIT's Scratch ( http://scratch.mit.edu/ [mit.edu] ) has gotten my kids started with programming. It's fun, and teaches all the fundamentals necessary for learning programming logic.
  • by fermion (181285) on Friday June 24, 2011 @11:21AM (#36556380) Homepage Journal
    It is not so much abstraction, but required basic skills. What one needs to do today is different from what a person had to do 20 years ago. Today only a small subset has to be able to manage memory, or write sort routines, or think carefully about parameter passing. Now the skills are designing objects, applying design patterns, writing short segments of procedural code, and, increasingly, writing code the will run parallel. I can code, but that last one is nearly beyond me, but will be critical for anyone who wants to do serious work.

    I too started with basic in middle school but it did not teach me much. In high school we did fortran, which taught me mad skills, then I taught myself C and C++. I still think C is important for people who want to do serious programming as it does not have the cruches of the other languages, is simple enough to be put in a two hundred page book, and will teach everything one needs to know about debugging and basic design.

    In terms of instant gratification, I would suggest writing web apps in python. Most of the GUI stuff is taken care of by the browser, Python takes care of parameter passing to and from the user, and one can teach all the concepts, aside form parralel programming. A kid can write any number of games and if one has access to a web server, it can be run anywhere there is internet access. Such a thing can be great motivational tool.

  • I got my start in BASIC when I my mom bought me a book on the topic. However, what really got me into it was modifying games. At our school's computer lab we had a set of games created in BASIC. I would get into the code and make modifications to these games. Back then everything was simple enough I could find my way around as a kid. It was also simple enough I could look at the code, compile it and run it all on one machine without the need to download a bunch of software. I have no clue how to recre
  • You should definitely look at Scratch [mit.edu], which is designed for kids, even (especially?) kids who don't type very well yet, yet it teaches them programming skills. This is the same crowd who initially did Logo all those years ago, and they think this is better...
  • Last I heard, PowerBASIC [powerbasic.com] was still going strong.
  • It seems like a version of this comes up on /. at least every quarter. What does it say about programming that so many people look back at BASIC with a mix of nostalgia and disdain? What paradox is embodied in the idea that BASIC isn't good enough for any 'serious' programming and yet nothing else is as good as BASIC in providing an easy to use interpreter that introduces programming concepts and structures in a way that satisfies the neophyte?

    Sure, everybody will trot out supposed successors like Python
  • How do you get the instant gratification we oldies got when sitting down in front of the early-80s home computers?

    Well I have a working Apple ][ around so that's not a problem to fix.

  • by dr_leviathan (653441) on Friday June 24, 2011 @11:32AM (#36556650)

    I've been teaching some kids how to program simple games using Python and the Pygame module (wrapper for SDL) with some success.

    One problem I've noticed is that the kids aren't all that interested in programming the simple exercises, such as the "guess the number" game or programs that generate simple ascii art -- all stuff that was exciting to program in BASIC back in the day. I had a promising 12 year old student who was making good progress and had successfully made (with help) a side-view tank shoot-em-up game with two players. Guess what he wanted to do for his second project?... a StarCraft clone.

    He was able to produce a random ground texture and to control a single "dot" to move where he wanted it via mouse clicks, and then he bogged down. He gave it a good try but the project was a bit too complex to provide easy progress.

    I need to come up with some simpler project ideas that are still fun to create.

  • Backstory: I learned to program at age six on a Commore Vic-20. I decided to learn because games on the Vic sucked and programming was the only thing interesting one could do on it (even for a small child). Commodore BASIC was limited and quirky, but provided me with hundreds of hours of fine entertainment. One could pick it up quickly thanks to the programming manual that was bundled with every computer (take note).

    When somebody asks me who had the most influence on me on my career choices and inspired m
  • by TBone (5692) on Friday June 24, 2011 @11:34AM (#36556694) Homepage

    For anyone suggesting VB, or Visual C#, or any of the other "Click to build the framework then fill in the back end", this is the worst possible thing an actual beginning programmer should be looking into.

    I would assume from the OP that we're talking about people with no programming background. Taking someone like that, giving them a button to click to generate a UI, then having them fill in the blanks is #fail. They don't already know how to program. It would be like asking someone to complete a puzzle, in a dark room, where they don't know what shape the blanks are in the puzzle, or what colors they should be, or even where the front or the back is.

    Interface builders are nice for people that already know how to program, because while creating UI's is tedious, it's also about the 10th thing to be done when building a program. People who have been programming for years can work backwards (Yes, UI to logic is backwards in all cases except for programmers-who-specifically-design-UIs, but that's not what we're talking about here) from the UI to the underlying program logic and the flows between UI elements, but someone new shouldn't be developing in this direction. They should be understanding how the logic behind the program works, in many different variations, before they go putting a pretty button in front of that logic to show the result in pretty graphical ways via some rendering library call..

    BASIC, Lisp, Perl, Python, Java (not javaw or AWT), all are useful for the basic understanding of what a program is, what control and input and output logic is. As people have mentioned, Python and Java both have graphical toolkit extensions that can eventually extend your development to pretty pictures and not input/logic/output. If you really want some sort of "visual" developer to put in front of this person, go look into some of the "Blocks" development tools, like Google AppInventor, for example. These use interfaces analogous to puzzle pieces to represent the code in the application, and you can drag and drop inputs and outputs to hook into control statements to do things - sorta like the virtual programming equivalent of everyone's favorite Radio Shack 160-in-1 Electronics kit.

    For the love of god, though - don't "teach" someone to program by putting them in front of a framework generator and having them "go at it".

  • My daughter (8 years old) will be learning Etoys [wikipedia.org] this summer, and when she's grown tired of that, Python.

    The Navy did an exhaustive study of programming languages a little while back, and recommended Python as the best teaching language for high-school level computer programming.

    I hope she doesn't stop there, but seeing as I haven't written any VIC-20 assembly, Apple ][ BASIC, or Turbo Pascal in nearly two decades, I don't think the languages are really what's important.

  • by ajs (35943) <<moc.sja> <ta> <sja>> on Friday June 24, 2011 @11:38AM (#36556776) Homepage Journal

    Python, Perl, Lisp, Scheme, BASIC, Java, JavaScript, shell... it doesn't matter. Pick up whatever feels most comfortable, or whatever tool is most readily available. Learn the basics of flow control, data structures, and the most fundamental algorithms. Learn how to debug, document, log, build, install and maintain.

    Once you've mastered these basics, move immediately to C (not C++). Programming in C will teach you what it is that you're actually doing in that high level language, and force you to manage everything that you want to do. You don't just instantiate a new class to get a thread or forget about that variable's storage when you're done with it. You have to think about the details and understand them, and even if your entire career is spent writing Python, you still need to understand these things. I'd recommend assembly, but there's a lot more well documented sample code in C to work from, and getting larger projects done in C is still practical, if somewhat painful.

    Once C is something you're comfortable with, trying out C++ is an excellent next step, but that's probably best determined by what you want to / have to work on.

  • All the fun and cool stuff that is easy enough for a beginner is off-the-shelf these days. Why bother learning to program? The interesting stuff that is not off the shelf is no longer easy enough for a beginner who knows "X" to write programX.

  • python would be the best imho, you don't even need to write the code on a file, just start the python shell and play with it, for the gui use pyqt4 signal and slot are easy to understand, ruby might also be good, I think it has a shell too
    Another good "all in one" option might be C# .NET it's easy to create gui interfaces, AFAIR event handling is quite easy too you just need to click on the object and select the event from a list and it will automatically create the function, one of the best thing about C#
  • It isn't as much the languages today but our level of instant gratification.

    Back in the old days.

    10 PRINT "HELLO"
    20 GOTO 10

    was considered kinda cool for your first program.

    Or if you wanted to make a game...

    10 PRINT "Your are in a room labeled Center where to go (N,S)"
    20 INPUT $D
    30 IF $D = "N" THEN GOSUB 1000
    40 IF $D = "S" THEN GOTO 2000
    50 PRINT "I do not understand your request"
    60 GOTO 10
    1000 PRINT "A Monster eats you... Your dead do you want to play again? (Y,N)"
    1020 INPUT $D
    1030 IF $D = "Y" THEN GOTO 10
    10

  • by glwtta (532858) on Friday June 24, 2011 @11:41AM (#36556848) Homepage
    Ruby.

    Kind of surprised it's not getting more love here.

    (hey, not everyone's into the Python philosophy)
  • by icensnow (932196) on Friday June 24, 2011 @11:44AM (#36556910)
    What I find amusing is how completely Pascal has disappeared from both historical memory and current usage. Some of you may remember the 80s for Basic on a C64, but I remember a huge bandwagon for Pascal both as a teaching language and as a working language. (I am not advocating Pascal, just reminiscing.)
    • Turbo Pascal on the IBM PC worked extremely well and was cheap enough for everyone to afford. It was a killer-app all on its own. I don't even remember a C compiler being offered in the early days of the PC. And I don't know why there wasnt one. But all the Microsoft development kit was expensive except for the assembler.

  • As in what, 1987 and onward?

  • If you want instant "wow" gratification, the closest I've come to that lately is with LSL, the second life scripting engine. Which affects the objects you make in the Second Life Virtual world. The interface is easy to use and the syntax is really approachable.

    Second to that I'd say Python, mainly for its easy to pick up syntax, ubiquitous nature and the capability to do actual 'real-world' stuff with it as you develop skills.

  • Assembler (Score:4, Interesting)

    by Narishma (822073) on Friday June 24, 2011 @11:51AM (#36557050)

    How about starting with assembler?
    http://altdevblogaday.org/2011/03/24/machine-code-is-for-kids/ [altdevblogaday.org]

  • by pentalive (449155) on Friday June 24, 2011 @12:12PM (#36557404) Journal
    • Structured
      • no line numbers, no brain damage.
      • Edsger might even like it....
    • Interesting sharing mechanism
      • when you 'share' your program you are given a code to give to others so they can download
    • I think it even compiles to an exe.... been a while since I have used it.
  • by narcc (412956) on Friday June 24, 2011 @12:20PM (#36557492) Journal

    Microsoft Small Basic [smallbasic.com]

    It's the best learning tool I've found so far -- it's simple and has an excellent help system. The auto complete has descriptions along side the text (encouraging exploration and discovery), the sidebar help automatically displays help for the current command, and the PDF tutorial is well-designed and simple enough for a bright child to understand.

    Some of the changes are a bit odd, but they make sense. Next has been replaced by EndFor, for example, but this does keep things consistent with EndIf, EndWhile, etc.

    The program itself is small (6mb download) and incredibly simple -- no weird options or anything to get in the way. It actually makes tools like Scratch look complicated!

    Microsoft actually did this one right. I give it my full endorsement.

  • by Mia'cova (691309) on Friday June 24, 2011 @12:21PM (#36557512)

    I'd recommend a compiled language with exception handling. I feel that makes it a little harder to get stuck/frustrated without any clues. The compiler keeps syntax in check. Exception handling gives a better clue as to why something is failing at run time. Of the major languages, I'd take either Java or c#. Eclipse or VS express, both solid and free IDEs. There are also tons of structured "learn this language" tutorials. Most also start with console apps which are a good place to start. I'd lean towards VS because I prefer visual studio. But from the academic value point of view, I don't see any notable difference between c# and java for the beginner. Obviously you'd go for Java if you're on a mac though.

    Contrast that against something like javascript. It can be damn near frustrating trying to understand the DOM, the CSS inheritance, etc. That and simple syntax errors can prevent methods from loading, etc. Sometimes too much simplicity leaves a beginner without any sort of help. That doesn't even touch on browser compatibility.

  • by Urza9814 (883915) on Friday June 24, 2011 @12:22PM (#36557532)

    I'd start with one of two options: Web programming or physical devices. Either one lets you make pretty simple programs that actually DO SOMETHING.

    For web, I'd obviously start with HTML/Javascript, then go into PHP. Or maybe skip Javascript at first, as it's a huge pain to debug. Point is, you can build something with a nice pretty GUI pretty quickly and easily, and PHP and Javascript will prepare you well (in terms of basic concepts and syntax) for more advanced languages like C or Java.

    The other way to go -- the way I really went -- is to start with programming physical devices. I started with Lego Mindstorms -- you start with their programming language (drag-and-drop stuff), but that quickly becomes too basic, so you start looking into things like NQC -- basically a C variant that has a rather limited instruction set, specifically designed for the Lego microcomputer. It's a bit hard to learn on your own (I still remember asking for help with my first program -- "You need semicolons!" "...I do? Where?"), but if you actually read the tutorials or have someone to help you with it, it isn't too bad, and you can immediately see what it's doing. Something like an Arduino could also work, though it may be too complicated. I'm only familiar with the TI MSP430 Launchpad stuff, which is similar in design, but would be way too difficult for a beginner....but I gather that the Arduino has some easier programming tools.

  • by meloneg (101248) on Friday June 24, 2011 @12:34PM (#36557702)

    A teenager I'm acquainted with has been geeking-out with http://www.qb64.net/ [qb64.net] for several years. It seems to fill the niche that C-64 BASIC did for me and MS-BASIC and QBasic did for slightly younger geeks.

  • by Sloppy (14984) on Friday June 24, 2011 @12:55PM (#36558054) Homepage Journal

    Has the level of abstraction in computer systems reached a point where beginners can't just code something quick without a huge amount of back-story?

    The "back-story" was always there, unless you go back to the 1940s or something. The BASIC programmer of 1981 didn't think about things like how does PRINT really work, the garbage collection that kept string variable storage from growing to infinity, etc. The abstraction and (temporary?) ignorance of the back-story is what lets you "just code something quick."

    I think the reason things "feel" different now, is just that the back-story is longer and the abstractions are higher. When the 1981 BASIC programmer decided to dig deeper, it wasn't very long before he was working in assembly language, whereas when the 2011 Python programmer digs deeper, he's reading the source code to the library (most of which is itself written in Python) or maybe down in C and learning the OS' API calls. It's a deeper dig before you're thinking about transistors, but I'm not sure that's really important. You've got to start somewhere and really no matter where that is, you're going to start learning new things if you're interested.

  • by jandrese (485) <kensama@vt.edu> on Friday June 24, 2011 @01:06PM (#36558202) Homepage Journal
    Back in the day I learned a lot from programming Hypertalk (Hypercard) on my parent's Mac LC. Despite the somewhat heavy syntax sugar, it really let you do a lot with very little, and all of that sugar meant that you could figure out what is going on by simply looking at the code. I'm still annoyed at Apple when they started shipping the player instead of the full development environment, and when they eventually dropped it entirely. The code is still around, but it's wildly overpriced for kids and example code is much harder to find.

    Still, the ability to put a button on the screen, and then pull up the code in the button to find:

    on mouseUp
    ask "Please enter a number"
    put it into theNumber
    answer "You entered " theNumber
    end mouseUp


    That's the sort of thing you can build off of very easily.
  • by Ant P. (974313) on Friday June 24, 2011 @03:13PM (#36558866) Homepage

    If you want instant gratification and know how to code then you can call into C libraries with one-liners [wordpress.com].

    If you don't know any programming at all then there's a whole series for you too [strangelyconsistent.org].

    And if you write PHP then imagine what it'd be like without the bad hangovers from v3-4, with all the planned improvements from the 6.0 they abandoned, and with functions that use a consistent needle-haystack order everywhere.

I have not yet begun to byte!

Working...