Slashdot Mirror


Learning Programming In a Post-BASIC World

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

510 comments

  1. what I did by Osgeld · · Score: 0

    I wanted to try something new, and guess what Visual Basic 2010 express, so in a post basic world I am checking out the newest MS basic

    its not the end all be all for everything, but its letting me whip out simple apps for windows which I am thankful for at work

    1. Re:what I did by The+MAZZTer · · Score: 1

      I wouldn't call VB.NET a starter language. Maybe for someone who wants to get a bit more serious, since you have the visual designer and it'll generate skeleton event handler functions for you to fill in.

    2. Re:what I did by pyrrish · · Score: 1

      Although I had QBASIC as a child, I also learned on VB and I think an "industrious" young person would have no problem picking up the basics in today's world of languages.

    3. Re:what I did by i+kan+reed · · Score: 5, Insightful

      God no. Visual basic is a very syntax sensitive language with huge libraries. It is like the anti-beginner language. Even microsoft's other major .NET offering(C#) is better.

      My reccomendation is python, with a lean towards using graphics libraries like vpython. Being able to go mysphere=sphere() is glorioiusly simple and have it show up in 3d is grand.

      Python has the following features that are great for learning:
      interactive debugger- type your program line by and and see what each line does.
      english-like syntax(except elif). As much as possible, python is designed to be written as it would be read out loud. eg: for item in array: print item
      at the language level, absolutely no machine restrictions. Integers can get as big as your ram, no pointer math,

      It's almost certainly the best choice.

    4. Re:what I did by fuzzyfuzzyfungus · · Score: 3, Funny

      Are you implying that my habit of using "elif" in natural-language conversation may be marking me out as some sort of deviant geek weirdo?

    5. Re:what I did by navyjeff · · Score: 1

      Agreed. I suggest Python to any aspiring programmer who asks me.
      Here's a great place to start.
      And another good one.

    6. Re:what I did by rainmaestro · · Score: 1

      Definitely agree with Python.

      In addition to all the points you made, there's one other that I find to be a great help for newbies: the sheer volume of libraries available. When 99% of the low-level stuff can be done with existing libraries, it allows the newbie to focus on the big picture and slowly work down into the details.

    7. Re:what I did by CastrTroy · · Score: 5, Interesting

      Python is not a good solution. Especailly if you are worried about syntax sensitivity as your parent poster was. Sure white space is a good thing to organize your code, but the actual execution of your program shouldn't be changed by the lack of whitespace. Python is a pretty good language overall, but forcing beginners to understand that whitespace makes a difference in how something executes is asking for trouble.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    8. Re:what I did by nyctopterus · · Score: 2

      Huh? Why? I don't use Python, but I just don't see any basis for your assertion. Whitespace is how we arrange natural languages when written, so why not programming languages? It's perfectly intuitive, especially to visual thinkers.

    9. Re:what I did by DrXym · · Score: 4, Funny

      I'd recommend Brainfuck. It has no library at all to confuse beginners and only 8 commands.

    10. Re:what I did by geminidomino · · Score: 2

      Whitespace is how we arrange natural languages when written

      If I resize my browser window so that your post linebreaks at "when written" instead of "especially to", the meaning of your post doesn't change.

    11. Re:what I did by Anonymous Coward · · Score: 0

      especially to visual thinkers.

      Is that similar to a mouth breather?

    12. Re:what I did by Dorkmaster+Flek · · Score: 1

      Agreed. I would format my code the way I write it in Python anyway for readability, so why not? Forcing better code readability is a fine tradeoff for me. I might think a beginner would have more trouble understanding that nicely formatted code block A is the same as code block B with completely random indentation and line breaks, even though they look totally different. On the other hand, this doesn't apply when dealing with lists, tuples and dictionaries, where whitespace doesn't matter until you actually close it, so maybe there might be an issue there. Overall though, Python is a simple language with a very strong standard library that I would absolutely recommend for beginners. Hell, I'd recommend it for basically anyone. We do 99% of our code in Python at my workplace (web pages, cron scripts, network applications, etc.) and I personally find it fantastic to write in.

      --
      I like to think of online DRM as something akin to a college -- you pay for lessons until you learn something.
    13. Re:what I did by Weezul · · Score: 1

      Just fyi, any Python experience will serve them well when they reach high school and university calculous courses. The Python & Cython based Sage CAS is displacing Mathematica for calculous courses. There is also an LLVM based Cython & Python compiler that's helping liberate Python from various interpreted language bottlenecks.

      I'd actually seriously consider some reduced subset of Haskell myself.

      --
      The Christian religion has been and still is the principal enemy of moral progress in the world. -- Bertrand Russell
    14. Re:what I did by 0100010001010011 · · Score: 1

      Start with what ever you have.
      RosettaCode has a ton of different tasks for 385 (and growing) languages. Find one (python, perl, php, bash, c, c++) that you can get for free and then

      The biggest problem isn't syntax (IMHO) it's that people (at least mechanical engineers) don't grasp the concept of what a for loop, while loop, if statement, etc DO. If you break it down and explain it to them they "get it" a bit, but most are lost on their own. So pick something that you 'get'. Find a language that you think makes sense in your head and go from there.

      I cut my teeth on TI-89 Basic. That's where I 'learned' to program. From there it was MATlab, Java, PHP, C, C++. I still use most of those rather extensively.

    15. Re:what I did by Anonymous Coward · · Score: 0

      POV-Ray would be fantastic for total beginners. Ok sure it's not a real programming language, but it would teach you many of the fundamentals in an environment that's simple, easy and most of all fun. It has a massive community and you can run it on some pretty interesting hardware setups for extra added geek fun.

    16. Re:what I did by KingMotley · · Score: 1

      You obviously don't know what you are talking about since both VB.NET and C# use the EXACT SAME libraries.

      What makes Visual Basic an excellent place to start is the environment. Code completion, instant error/syntax checking, code reformatting, and a real debugger. All of which is integrated, easy to set up, and easy to pick up quickly. Although, C# is also a good choice, I'm not sure learning when and where to use curly braces and semi-colons is easier than putting each statement on it's own line.

    17. Re:what I did by sigxcpu · · Score: 2

      I think that as long as you avoid BASH-like "fi" and "esac", you're probably safe.

      --
      As of Postgres v6.2, time travel is no longer supported.
    18. Re:what I did by Bengie · · Score: 1

      sentences are delimited by punctuation, not white space.

    19. Re:what I did by jayp00001 · · Score: 1

      Small basic is the version of basic without all the more difficult concepts to master (http://msdn.microsoft.com/en-us/beginner/ff384126.aspx). There is nothing wrong with python per se- I do not think it is as readable as basic however- consider a simple adder function:

      class adder:
                def __init__(self, value=0):
                        self.data = value # initialize data
                def __add__(self, other):
                        self.data += other # add other in-place

    20. Re:what I did by LWATCDR · · Score: 2

      I would add Java. The Java haters will hate but Sun created a great set of tutorials to teach people how to use Java and they are still available on the web. Eclipse.org and Netbeans are great free IDEs that you can download. I would also suggest Squeak. If you are on the mac Objective C is available but may be a bit much for people just getting started. You also have Ruby, Perl, and Free Pascal which is really a good choice as well.
      Of course you could go with the real replacement for Basic.
      PHP!
      Easy to use and abuse and will do nothing to teach you good programing skills just like basic.
      Truth is that back in the C-64,Apple II, TRS-80, 99/4a, Atari 800/400, Coco, and Sinclair days we all used Basic because that is what we had. Some times you could find an Assembler or believe it or not a machine language monitor but real programing languages where expensive and hard to come by. I was so excited when a friend gave me a copy of COMAL. Now you can get just about any language you want.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    21. Re:what I did by cdrudge · · Score: 1

      God no. Visual basic is a very syntax sensitive language with huge libraries. It is like the anti-beginner language. Even microsoft's other major .NET offering(C#) is better.

      How is C# "better" with regard to syntax sensitivity or library size? They are the same libraries. And VB is far more forgiving syntax wise with allowing case insensitivity, automatic type casting between select data types, not getting caught up with a statement like
      if (foo = bar) {...}
      when it should have been
      if (foo == bar) {...} .

      It's forgiving nature can be a mixed blessing as it can also foster poor practices when transitioning to other languages that aren't as forgiving.

    22. Re:what I did by Anonymous Coward · · Score: 0

      My reccomendation is python

      My problem with Python was always that it uses whitespace as syntactically significant. That to me is the single dumbest thing you could do with a language. Well, that and actually using Hungarian notation.

      Every time I've tried to look at it, as a language it seems like shit on a plate as they took a bunch of features from a bunch of languages, and put them together into one awful mess.

      Maybe I've only seen Python written by cheap hacks, but what I have seen of it has left me completely underwhelmed. Certainly, the stuff that I've seen isn't something I'd ship as a product, because it mostly seemed like a bunch of 'clever' tricks to bash out a demo, but was otherwise un-maintainable. It just seems like a language that encourages all sorts of awful programming practices.

    23. Re:what I did by Anonymous Coward · · Score: 1

      Icompletelyagree,punctuationisthedelimiterforsentences;spacesarenot"Whitespaceishowwearrangenaturallanguageswhenwritten,sowhynotprogramminglanguages?"isjustasillyassertionbytheoriginalposter.

    24. Re:what I did by Anonymous Coward · · Score: 0

      LOL. Your first link to help a newb learn python is to LearningPythonTheHardWay.com
      You know, recommendations should be based on what will help the person learn for the future, not what will get them up and creating something quickly. Structured languages would be better.

    25. Re:what I did by gstoddart · · Score: 2

      sentences are delimited by punctuation, not white space.

      Ithinkthatmaybeonlypartiallytrue.

      Certainly by the time you're dealing with paragraphs and multiple sentences, whitespace actually does become significant.

      I've never been a fan of whitespace being syntactically significant in a language, and my only exposure to Python was almost a decade ago ... that was enough to make me cringe. But, that could have been the guy writing it the code that I saw. But, it was complete crap and pretty much soured me on the entire language.

      --
      Lost at C:>. Found at C.
    26. Re:what I did by Anonymous Coward · · Score: 0

      This is mostly only seen as a problem by rusty old C and java programmers ;-) Whitespace has had syntactic significance in many languages for a long time. In python, it does so in a way that actually makes sense for humans.

    27. Re:what I did by davidiii · · Score: 1

      I wound up taking a similar approach to learning how to program but rather than VB.NET I dove headfirst into VBA (Visual Basic for Applications) for Microsoft Excel. I think it may have been the perfect intro to scripting, working with spreadsheet data you can easily see what all of the data is that you're working with and you can see what it's actually doing. All of the default libraries are Excel related but it seems like it can be expanded out a bit to include other VB libraries if needed. I'd definitely recommend this as an intro to programming.

    28. Re:what I did by Shadow99_1 · · Score: 2

      That is not entirely true. We have many 'whitespace' rules in written language. Like leaving a space between words, after periods or commas, etc. So in effect it is a combination of punctuation and whitespace. Many programming languages use punctuation as well, but not usually in the way written language does or at least not the same types (ending 'lines' in C++ with ; for instance).

      --
      we are all invisible unless we choose otherwise
    29. Re:what I did by dkleinsc · · Score: 4, Informative

      As somebody who writes Python professionally, I'm a bit biased, but can say with some assurance that the whitespace thing is not a major problem in the Real World. It's certainly no more of a problem than any other technique for designating a code block.

      Compare these:

      ' Basic
      If a == b Then
            do_something()
      EndIf

      /* C and relatives */
      if (a==b) {
              do_something()
      }

      ; LISP and friends
      (if (== a b)
          (do_something))

      # Python
      if a==b:
              do_something()

      Are you seriously suggesting that the last one is more confusing than the others? If your blocks are large enough that they can't easily fit on a screenful, you have other problems not related to your language of choice.

      There are things to go after Python for, but whitespace is definitely not one of them. My take on its strength as a teaching language is that it can do really simple beginner stuff and really advanced stuff with graphics and sound (with the right libraries installed).

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    30. Re:what I did by Anonymous Coward · · Score: 1

      ... Python is a pretty good language overall, but forcing beginners to understand that whitespace makes a difference in how something executes is asking for trouble.

      Any language that makes whitespace part of syntax is very very badly braindamaged - if you don't like the way someone's source file looks then write a filter that formats the source the way you like to see it but don't force your ideas down other folks throats. While the facts of life are that I may have to cope with other folks python code, I will never write anything in Python. I use Perl, C, Java, shell and in another life Rocky Mountain Basic for original work. Hell, even Fortran and Cobol treated whitespace more intelligently than Python.

      Signed,
      An old retired fart who has written more in all the above mentioned languages (except Python) than he cares to remember.

    31. Re:what I did by GooberToo · · Score: 1

      That's a ridiculously dumb statement. If they are too dumb to figure out the tab key, there doesn't exist a programming language to help them.

      Your argument boils down to new programmers shouldn't understand scope. That's dumb. That's idiotic. And worst case, you can have the classic, basic-like, linear, non-nested, procedural, rats nest which coders have long associated with learning basic. The only difference is, python encourages something smarter, something saner, and something more professional on which to grow whereas your recommendation re-enforces just about everything bad with undisciplined coding.

      Without a doubt, python should be the goto language for newb, wannabe programmers. Pssst - see what I did there.

    32. Re:what I did by fireball84513 · · Score: 1

      In my opinion, making whitespace matter is actually a good thing for a beginner programming language. It was much easier for me to learn to make programs based on whitespace which is more visually pleasant and understandable than with C++ where you could accidentally tab a line over making the code work visually, but still wrong in terms of syntax. Beginner programmers automatically turn to that visual cue and the people who maintain python realize that.

      --
      "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe." - Albert Einstein
    33. Re:what I did by aztracker1 · · Score: 1

      I would probably lean towards Python or JavaScript... as they're interpreted and it's easy enough to get into understanding programming decision logic without getting too stuck on low-level semantics. JS is available in every browser, and these days every major browser has a JS console to muck around in. Let alone command-line support via node.js, wscript and other tools. Most of the same can be said for Python. I'm rather fond of JS myself, but either would be better than most compiled alternatives... being able to get hello world with the path of least resistance will inspire further learning, opposed to overwhelming users with complex IDEs or compiler options.

      --
      Michael J. Ryan - tracker1.info
    34. Re:what I did by GooberToo · · Score: 1

      sentences of a paragraph are delimited with punctuation and white space. Words in sentences are delimited by white space.

      Once you get over your white space phobia and brainwashing imposed by other languages and closed minded programmers, you'll actually learn to love python's white space scoping. It saves types, prevents common bugs, increases readability and slight consistency in structure. There are literally, only two down sides to python's use of white space. One, some editors do really dumb things. Two, it feels unnatural for the first couple of weeks because of the endless brainwashing from other developers and languages.

    35. Re:what I did by gr8_phk · · Score: 1

      Python is a pretty good language overall, but forcing beginners to understand that whitespace makes a difference in how something executes is asking for trouble.

      They're going to be forced to understand something. The whitespace thing probably is a little odd to a beginner, but if it's presented as "this is how it's done" then maybe it's OK. The worst thing when I was a kid would have been mandatory understanding of objects and data structures. I didn't even know what an array was until I tried to do a pac-man clone and wanted 4 ghosts. I figured they'd each have 2-letter variables: x1,y1,d1 for position and direction, but I'd need to replicate the logic 4 times. I complained to my dad that xn was another specific variable and I wanted to use a for loop with n specifying which x,y,d it was working with. He promptly showed me x(n), y(n), d(n) and I was ecstatic! Now contrast that with someone being told about arrays or data structures prior to them having the need... I think a lot of CS focuses on the abstractions too early. Of course that's what CS is all about, but for someone learning on their own they need to be able to experiment without all that "stuff" and boiler plate or the need to learn objects. I think Python would be ideal and the need for proper white-space can just be presented as a fact of life.

    36. Re:what I did by Anonymous Coward · · Score: 0

      Hmm, I have the opposite experience. That it is very good. A friend, who only knew php, was able to learn python and throw together a UI with python+QT in an evening. Not like he would be called a complete beginner in that sense (his knowledge did not extend to the concept of OO etc), but still it do hint on the ease of learning python.

      But talking about structure and the forced use of white spaces I believe that it makes a more visual understanding of what code goes together than the {} in "certain other" languages do. And for the rest of the world, the beginners get to learn sensible indention.
      def funny():
          print("i am a poop") # yes, when i was 6 it was fun to make the computer say that. simple humor for simple minds ;)

      void funny() { printf("i am poop");} // yes, some code i wrote was like this. no enforcement of indention etc. getting a headache reading old code sometimes.

      btw slashdotters. Happy midsummer/Glad midsommar!
      Go out and celebrate. Cya at a party close by, Linköping ;) /Joakim

    37. Re:what I did by Guignol · · Score: 1

      Your parent said 'delimited' by punctuation. That is not the same thing has not having any space inside a sentence so as to delimit words.
      spaces also delimit keywords in python just as in a great many other languages so this is not even a point
      Your parent was talking about spaces having a value at the sentence value, which does happen in python, unfortunately, but, thankfully nowhere else that I am aware of.

    38. Re:what I did by mkosmul · · Score: 2

      Once you get over your white space phobia and brainwashing imposed by other languages and closed minded programmers, you'll actually learn to love python's white space scoping.

      I used to be one of those brain-dead space haters, too. Now ever since I first saw the light, my language of choice has been WhiteSpace and I've never looked back.

    39. Re:what I did by MacGyver2210 · · Score: 1

      It has its uses, but learning programming should not be considered one of them. VB.NET teaches you managed .NET programming - not actual, functional, cross-platform coding.

      The only language I would recommend anyone start out with, beyond BASIC, is C and/or C++. Almost everything in the computer world is built from these base languages. Including most of the C#/VB.NET compilers/linkers/MSIL encoders, etc. It's essentially an easier-to-understand wrapper for the ASM and machine code.

      Learning C/C++ to start gives you a fundamental understanding of how the data is moved and manipulated - without abstracting into a simple datatype and method to do everything for you.

      --
      If the only way you can accept an assertion is by faith, then you are conceding that it can't be taken on its own merits
    40. Re:what I did by Lennie · · Score: 1

      Which is an obvious fit for Python, because it's creator wanted it to be used that way.

      From the Wikipedia page about Guido:

      "In 1999, Van Rossum submitted a funding proposal to DARPA called Computer Programming for Everybody,..."

      --
      New things are always on the horizon
    41. Re:what I did by MacGyver2210 · · Score: 0

      Python is like 'fake programming'. You will learn even less about how real coding works using Python than VB.

      --
      If the only way you can accept an assertion is by faith, then you are conceding that it can't be taken on its own merits
    42. Re:what I did by blair1q · · Score: 1

      Possibly the best example of how programming computers actually works, once you realize BASIC was crippleware.

    43. Re:what I did by Anguirel · · Score: 3

      If you format nicely, sure, that's true enough, and while I'm a fan of teaching proper indentation, your examples are technically incorrect (the best kind of incorrect!).

      Your code in BASIC:

      ' Basic
      If a == b Then

            do_something()
      EndIf

      Functions identically if you do this:

      ' Basic
      If a == b Then
      do_something()
      EndIf

      Or even this:

      ' Basic
                  If a == b Then
      do_something()
            EndIf

      However, in Python, I believe this:

      # Python
      if a==b:
              do_something()

      is not identical to this:

      # Python
              if a==b:
      do_something()

      or more specifically, not identical to this:

      # Python
      if a==b:
      do_something()

      And even if that is functionally identical (due to the brevity of the snippet), a larger structure which requires varying levels of indentation would not be. This would, admittedly, be painful to look at from an experienced programmer's point of view, but having no indentation is how I remember learning to write in BASIC the first time (since line numbers and explicit structure end syntax controlled flow anyway).

      That all said, from what I know of it (and I've only briefly used it several years back, so my knowledge may be out of date or mis-remembered), I'm in favor of Python as a learning language (and a language in general), but I can see the potential concerns for teaching if one doesn't expect the student to be able to maintain perfect (or even good) indentation formatting for some reason. Having explicit non-whitespace characters control program flow might be slightly easier for a new programmer to understand -- and using an editor that automatically indents code based on those characters would help them understand good formatting (along with helping them see the code structure form as they write), and enable them to transition quickly to Python later, where you're essentially just dropping the explicit curly braces in favor of implicit ones using indentation.

      --
      ~Anguirel (lit. Living Star-Iron)
      QA: The art of telling someone that their baby is ugly without getting punched.
    44. Re:what I did by leptons · · Score: 1

      All the python fanboys here are totally missing the point. The post is about getting kids to learn programming. Most kids these days will have their first exposure to computers in a web browser. Not a command line, not a text editor, not a compiler or an IDE. A web browser. There is no better choice for instant gratification for someone interested in learning to program. A child learning to program can write any kind of simple program and be able to send a url to their mom, dad, grandma, best friends, facebook, etc.. they don't have to compile anything or then .zip the .exe because emailing it to mom, dad, grandma, etc, and expecting them to unzip and run their little program is just too much to ask. Python does little towards instant gratification, and keeping them interested in learning more. JavaScript is a better choice, it is as ubiquitous as any language, well documented around the net, and it runs in the most used environment by over 2 billion people on a daily basis. If I were a kid these days JavaScript would be the best language to start with. If wanting to go further there are plenty of back-end platforms that also run JavaScript. They can even write iPhone apps with it.

    45. Re:what I did by angel'o'sphere · · Score: 1

      Visual Basic only has the name "basic" in it and is in no way comparable with classic basics the story is talking about.

      The fact that you don't know that and feel the need to post, is closely related to that story ;D

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    46. Re:what I did by MacGyver2210 · · Score: 1

      Java's great.

      If you don't mind that you'll probably lose support for it and get sued by Oracle now.

      --
      If the only way you can accept an assertion is by faith, then you are conceding that it can't be taken on its own merits
    47. Re:what I did by angel'o'sphere · · Score: 1

      How do you explain to a new programmer the _self_ thing in Python?

      While I agree that Python might be a great language for someone who actually already can a little bit program, it certainly is not a starter language.

      I met lots of people, regardless from which background they came (C/C++/Java/Shell) who shoot themselves into the foot very badly.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    48. Re:what I did by angel'o'sphere · · Score: 1

      Then you never had a mix of spaces and tabs in your code, had you?

      I also really doubt you ever used white spaces in a natural langue similar to it is used in python. Your claim regarding that makes no sense (or is simply factual untrue). Show me a singel "if" you ever wrote in a letter to someone where you indented the following text.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    49. Re:what I did by quinto2000 · · Score: 1

      I agree with Pascal--first "real" programming I used after playing around with Basic interpreters on the Mac II. It's much easier to start with than C, but has C-like syntax so it's not hard to transition.

      --
      Ceci n'est pas un post
    50. Re:what I did by elsurexiste · · Score: 1

      yet I understand better if you use only spaces for delimiting then you ll have more troubles i think in a semantical sense

      --
      I rarely respond to comments. Also, don't ask for clarifications: a brain and Google are faster, believe me!
    51. Re:what I did by Broolucks · · Score: 1

      I could just as easily say that forcing beginners to understand that the semicolon at the end of a statement is not optional is asking for trouble. Forcing beginners to understand that a program might not behave as it looks is also asking for trouble. Beginners will have trouble with one particular kind of thing in syntax: features that seem useless or redundant. Forgetting the semicolon at the end of a statement is a common error in C/C++, precisely because it looks redundant with the line break, and that multi-line statements are comparatively rare. For this reason, line breaks should be significant. In general, significant whitespace is not intuitive: it makes no sense to differentiate "a + b" from "a+b", or "( a )" from "(a)". Languages that do these things are very annoying, and Python is not one of them.

      As for significant indent, it depends on whether there is a block terminator or not. If your block is of the form "if condition then ... end if", requiring indent for statements inside the block is completely redundant. However, if, as in Python, the block is precisely the statements that are indented, then there is no problem, because it is impossible to forget to indent. Once your block ends, you will wonder how to close it, and you will remember that "oh yeah, I need to indent". This is something all beginners can understand.

      Beginners will actually have way less problems with Python's rules than with C's if statement. If you can write something like "if (cond)\n[indent]statement", and you want to add a new statement, the immediate intuition (of a beginner, anyway) is to add a second statement after the first one, indented the same. Of course, IDEs will help, but I can see a lot of beginners mess it up or wonder why it doesn't work.

    52. Re:what I did by angel'o'sphere · · Score: 1

      Two, it feels unnatural for the first couple of weeks because of the endless brainwashing from other developers and languages.

      That is complete bullshit.
      Every programmer I ever met lays out his code very similar to pythons requirements. ONLY that they in addition use { and } or other markers.
      There is no brain washing. There is only SPACE versus TAB bullshit. There is the REQUIREMENT to have a newline and indent the block after the 'if' while it might sometimes be more natural to write 'if (a!=b) { do something; and even more; }
      And the claim that the "proper python indention" prevents bugs is utter nonsense.
       

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    53. Re:what I did by Hatta · · Score: 1

      What about Lua? The syntax is very simple, and you can find Lua interpreters in all sorts of projects these days. It's designed to be light weight, so the beginner isn't overwhelmed by libraries.

      With Lua, a kid can write programs for his Rockbox enabled mp3 player for instance. Many games use Lua scripting, which a kid could hack and alter the game. This is an awesome way to get kids interested in what you can do with programming.

      --
      Give me Classic Slashdot or give me death!
    54. Re:what I did by GameboyRMH · · Score: 1

      Holy shit dude, you broke out of the comment box!

      --
      "When information is power, privacy is freedom" - Jah-Wren Ryel
    55. Re:what I did by elsurexiste · · Score: 1

      You aren't thinking as a beginner: you are thinking as a programmer. When I learned to program, If I wanted to emphasize a certain line of code with a tab, or use tabs and spaces wherever I wanted, why shouldn't I? Why restrict the student? I'm learning programming, not style. Eventually, after I learned how to program, I understood how useful was to have a coding style, or Hungarian notation, or whatever. Python is a great second language, but not the first one.

      There's also a great notion that has escaped you, now that you are a Python programmer: as a normal person, you don't see the blank and the tab characters, they are "empty", therefore they surely don't alter the program at all! They don't alter the meaning on a newspaper or a book. It's common sense, and a huge downer for beginners. Of course, we, as pythonists, know better, but if you want to teach you have to think in their terms, not yours!

      --
      I rarely respond to comments. Also, don't ask for clarifications: a brain and Google are faster, believe me!
    56. Re:what I did by obarel · · Score: 2

      if a == b: do_something()

      Doesn't work.

      Python 2.7.1 (r271:86832, Nov 27 2010, 17:19:03) [MSC v.1500 64 bit (AMD64)] on
      win32
      Type "help", "copyright", "credits" or "license" for more information.
      >>> if 1 + 1 == 2: print "yes"
      ...
      yes
      >>>

    57. Re:what I did by elsurexiste · · Score: 1

      That's even worse than Python! :O

      You said that he/she can distribute a URL, so you're assuming a server is available; why should a beginner care for such things, I wonder. Then you have to deal with different browsers. Then with different libraries (so you don't suffer so much from the previous point). Then with setting an ad hoc environment (remember, we are talking beginners here). Then with CSS. Then with JavaScript's magic (there wouldn't be questionnaires asking why "undefined !== undefined" if it were so simple).

      A lot of people here just isn't thinking in how to learn to program! They are thinking in how cool or useful is Derp Programming Language because of certain features. Python is crap because of blank spaces and tabs: empty characters, IRL, don't alter meaning, yet it glorifies spaces and tabs semantically, and it's a massive downer for newcomers (I literally chose to learn C when I was 15 because the other language I could choose had that feature). JavaScript is crappy, as I said above, because of all the hassle.

      Yes, I programmed in both Python and Javascript, I like certain aspects of both, and do enjoy programming in both. But I wouldn't recommend those languages as your first brush with programming. They are more like a second or third choice.

      --
      I rarely respond to comments. Also, don't ask for clarifications: a brain and Google are faster, believe me!
    58. Re:what I did by allo · · Score: 0

      why not using a real turing machine? who needs more than one bit per register?

    59. Re:what I did by pclminion · · Score: 2

      And the execution of your C program shouldn't be changed by the lack of curly braces... See, I can make dumbshit statements also.

      Python is a pretty good language overall, but forcing beginners to understand that whitespace makes a difference in how something executes is asking for trouble.

      Even a computer-illiterate person can usually understand the concept of bullet points which have sub-bullets and possible sub-sub-bullets, and they "get" that the sublevels are encompassed by and related to the higher levels. They're non-programmers, it doesn't mean they're idiots.

    60. Re:what I did by pclminion · · Score: 1

      sentences are delimited by punctuation, not white space.

      Sentences are delimited by small pauses. It's almost as if there was some blank... space... between them.

      Oh, you mean those sequences of symbols we write on paper to encode information that we'd otherwise communicate using speech. Yeah, the convention seems to be to put a dot or something between the written representation of sentences. But that's arbitrary -- the reality is, all languages of all humans have the feature that individual statements are separated from each other by silence (the lack of something), not the presence of something.

      But I don't know FULL STOP Maybe people in your neck of the woods say "full stop" between each sentence they speak FULL STOP

    61. Re:what I did by pclminion · · Score: 3, Informative

      or more specifically, not identical to this:

      # Python
      if a==b:
      do_something()

      That is not permitted in Python. It is a syntax error. You must either list a statement on the same line, or begin an indented block. If you want an empty block, you use the 'pass' statement. See, it's almost as if there are features designed into the syntax to help prevent mistakes. How odd.

    62. Re:what I did by DarthVain · · Score: 1

      Even if you used "Elseif" I would still think you strange. Seriously was the "se" just too many letters to type out?

    63. Re:what I did by narcc · · Score: 1

      Your argument boils down to new programmers shouldn't understand scope.

      Wow, you're an idiot. In no way does the parent's argument "boild down" to that. Sorry, it's just not even the least bit true.

      That's dumb. That's idiotic.

      It would be, if it were true. The parent in no way implies that scope isn't important.

      And worst case, you can have the classic, basic-like, linear, non-nested, procedural, rats nest which coders have long associated with learning basic.

      Fail again! Where did you even come up with "non-nested"? Do you even know what nesting is? Did you know that BASIC had that from the very beginning? Also, what's wrong with "procedural"? It's really out-of-place, even in your idiotic list of words you seem to think mean "bad".

      Sorry, it's obvious that you're just (badly) repeating some nonsense (that you don't even understand) that you read on a forum somewhere. Way to not form your own opinions!

      As for the "long associated" bit, it's a tired old meme that was Never true. Again, you're just repeating nonsense that you clearly don't understand.

      The only difference is, python encourages something smarter, something saner, and something more professional on which to grow

      No, it doesn't. Love or hate Python's whitespace rules, they're a HUGE barrier to a beginning programmer. Even if they "get" the whitespace thing right away, they'll need to constantly remind themselves that spaces and tabs are different, and what you see on the screen may look correct, but may in fact harbor errant spaces that'll ruin their program.

      The only argument for python's white space is that it forces your code to look "nice". Absurd, as pretty printers have been around for ages. I'll bet your IDE even has one built-in. This isn't sane, "professional", smarter, or anything else. It's just another stupid barrier for new programmers to overcome.

      whereas your recommendation re-enforces just about everything bad with undisciplined coding.

      What on earth are you talking about? The parent gave exactly one reason why he doesn't think python makes a good beginners language. How does that "re-enforce just about everything bad with undisciplined coding"?

      Did you even read his post before you started in on your incoherent rant?

      Really, judging from this post, you're the LAST person I'd take advice about programming from. The incompetence you've displayed here is staggering.

    64. Re:what I did by m50d · · Score: 2

      As someone who learnt it as a first language, java is a horrible first language. Just look at Java's hello world (it's about eight lines, one of which starts "public static void main") - it's intimidating as hell compared to something like python ("print 'hello world'"). Java forces you to understand the notion of classes from the get-go (or cargo-cult a bunch of arbitrary crap before and after your actual program), which is a whole load of trouble you don't need when you're learning basic concepts like a for loop. And that's without even going into the lack of an interpreter or first-class functions.

      --
      I am trolling
    65. Re:what I did by narcc · · Score: 1

      Beginner programmers automatically turn to that visual cue

      Oddly enough, the visual bit is why Python's controversial white space is bad for beginners. See, spaces and tabs are obviously different to *us*, but NOT to a beginner.

      They could very easily slip and accidentally space a line over "making the code work visually, but still wrong in terms of syntax". Lean over and help them find that! A quick visual inspection won't tell you anything. Even worse, with the abundance of errors in typical beginner code, it may very well remain hidden and obscure other problems.

    66. Re:what I did by LWATCDR · · Score: 1

      Pascal was my first programing language. I learned Basic after Pascal. Of course I was lucky enough to have used the good old Commodore SuperPET which came with Interpreted Pascal, FORTRAN, COBOL, APL, and BASIC. We didn't really get into the FORTRAN or COBOL but I did play with APL which at the time was really cool. Frankly I would say that the SuperPET was the best computer for learning about programing available around 1982. We even had a primitive network that allowed us to share drives. I would love to find the manual for the MUPPET yes that is what the sharing device was called that we used.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    67. Re:what I did by gstoddart · · Score: 3, Insightful

      There are literally, only two down sides to python's use of white space. One, some editors do really dumb things.

      Oh god, this.

      Years ago I got into a bit of a row with a co-worker. He liked two space tabs, and insisted on using emacs, which is fine ... except emacs replaced a series of tabs with a single tab (or something) that it interpreted as needing to be indented according to its own rules. But left the file unusable for everyone else because they weren't privy to these fancy rules, they were just text editors.

      Basically, every commit he made looked like the entire fscking file had changed. It took days for him to understand that I don't care if he sees tabs as 2, 4, or 8 chars ... but if he couldn't make the resulting output something which I could still edit in vi or every other editor we used, I was going to lock him out of CVS. Because once the file had been edited in emacs, it was fucked up for anybody not using emacs. When the display preferences of your editor start to affect other things, it's bad -- you can't break it for the lowest common editor just so you can have syntax highlighting in emacs. He didn't seem to understand that I wasn't complaining about his visual preferences, I was complaining about what it was doing to the actual source files.

      I'm not sure I agree with your arguments in favor of whitespace being syntactically meaningful (I personally think it's stupid) ... but, the amount that I code has dwindled over the years, and it is what it is. My exposure to Python a bunch of years ago left me with a very bad impression of it as a language as it seemed to rely on/advocate some really poor coding choices that when carried into a different language made for absolute shit code -- C does not benefit from that kind of layout, in fact, it becomes absolute crap.

      (Actually, I vaguely remember letting someone else go who wouldn't adhere to our coding standards ... he didn't seem to understand that it wasn't his own personal code base, and that far more than just him was affected by his choices. He seemed to think that I was stifling his creativity, as opposed to protecting the integrity of a huge code base which had been around for some years and represented the product as built by people far smarter. No great loss, he was fairly useless anyway.)

      --
      Lost at C:>. Found at C.
    68. Re:what I did by maxwell+demon · · Score: 1

      Maybe that's because too many people thing CS is programming.
      IMHO you should learn programming before learning CS. Just like you learn calculating before you learn proper math.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    69. Re:what I did by maxwell+demon · · Score: 1

      However, whitespace is easily changed by non-programming-aware software (heck, even Slashdot's <ecode> doesn't always perfectly preserve whitespace!), while accidental changing of non-whitespace is much more rare (at least as long as it is in the ASCII range).

      --
      The Tao of math: The numbers you can count are not the real numbers.
    70. Re:what I did by styrotech · · Score: 1

      How do you explain to a new programmer the _self_ thing in Python?

      You'd dump your new programmer straight into OO concepts and writing their own classes?

      I'd argue that requiring self in methods wouldn't be much of problem to someone who had mastered functions and stuff and was actually ready for OO.

    71. Re:what I did by maxwell+demon · · Score: 1

      Don't forget Unlambda. After all, you have to know functional programming.
      Oh, and visual programming is all the hype, therefore you should also consider Piet.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    72. Re:what I did by leptons · · Score: 1

      javascript:getinput=prompt("what is your name);alert("hello "+getinput) This is as simple as any programming language gets these days, and you can type this into the address bar of any web browser and get instant results. It is the first step towards learning to program, using javascript. It really couldn't be any simpler. Something this simple illustrates how easy it is to get started. Ok, so you will eventually need a server. Well, there are servers built in to many operating systems these days, including windows, mac osx, and linux. It's either install python or install a web server, and in some cases a web server is already installed. Even XP comes with IIS, all you have to click a check-box in the Programs and Options to get it installed, and then you have C:\inetpub where you can write all the javascript you like, with ease, with notepad or whatever you like. There are also plenty of free online hosting options, and there are free online javascript editors/hosting to make it even easier to get started and share your code. jsbin.com and jsfiddle.net come to mind. No python to install, compile. Javascript is a natural choice for the beginner, not because of it's syntax, or it's features, but because people already know web browsers. They don't know python or why they'd even want to know it. They want to make websites. They don't want to make desktop applications, or console applications. This is the flaw in thinking that they should be using something like Python, beginners don't know why they'd want to code in something named after a snake. But, they've heard of javascript and it is widespread around the internet, and well documented. Every language has quirks, and that is a non-issue in terms of why people shouldn't use javascript. Also, Javascript's dynamic typing and lack of boilerplate make the bar to entry very much lower than most other languages, and for a beginner this is a huge win.

    73. Re:what I did by angel'o'sphere · · Score: 1

      I'd argue that requiring self in methods wouldn't be much of problem to someone who had mastered functions and stuff and was actually ready for OO.

      The original story was about newcomers to programming. Not about programmers new to OO.
      And you still did not answer my question, very likely for the simple reason: you did not understand it.
      Why the heck do I need to declare an explicit _self_ in Python? How do you explain that?
      I assume you never tought programming ... there are so many things people won't get or are difficult to teach if they don't already have a programming back ground ..

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    74. Re:what I did by Anonymous Coward · · Score: 0

      Learning to program requires you to learn rules. Any language you pick, you'll have to learn something. Why is "indentations indicate blocks" an impossible rule for a beginner programmer to learn? Surrounding blocks with begin/end might be simpler to explain, I guess, but not by much.

    75. Re:what I did by residieu · · Score: 1

      So you didn't learn about arrays until you needed them. A beginner python programmer could wait to learn about lists/tuples until they need them to (I think that might be the toughest early thing, the difference between a list and a tuple...)

    76. Re:what I did by tzot · · Score: 1

      if a != b: do something; and even more;

      or

      if(a!=b):do_something;and_even_more;

      These are valid python statements. You can also (and typically do) omit the final semicolon. You talk about a requirement that isn't exactly what you think it is.

      And you mean "utter nonsense" to and for you. Many a programmer have erroneously added an indented second line to a braceless C if-statement (usually somebody else's code), expecting the obvious. Of course, you might say that you are a very thorough programmer and you'd never make this misteak, and those that did are not worthy of the "programmer" title, but then you would justify my point at the start of this paragraph.

      PS since I don't want to make you run to the python documentation just to find another ugly construct, here is some help:

      if a!=b: do_this
      else: do_that

      Ugly, I know. Nobody in their right mind does that, though, and python isn't the only language that, if insisting enough, one can write attrocities in.

      --
      I speak England very best
    77. Re:what I did by tzot · · Score: 1

      I really believe you should also mention that in Python there is the following option:

      from __future__ import braces

      --
      I speak England very best
    78. Re:what I did by tzot · · Score: 1

      > Without a doubt, python should be the goto language for newb, wannabe programmers. Pssst - see what I did there.

      http://entrian.com/goto/

      One of the best April fools' prank I've seen; just like that April Fools' day, when Google announced the eternally expanding storage space for GMail. They're still expanding.

      --
      I speak England very best
    79. Re:what I did by tzot · · Score: 1

      Um. One would write this class:

      class Accumulator:
              def __init__(self, value=0):
                      self.data = value
              def add(self, other):
                      self.data += other

      because an Adder is just

      my_adder= value.__add__

      or

      import functools, operator
      my_adder= functools.partial(operator.add, value)

      --
      I speak England very best
    80. Re:what I did by Archwyrm · · Score: 1

      If you are going to make a comment like that then you should provide an example else don't bother fi.

      --
      Fascism should more properly be called corporatism because it is the merger of state and corporate power. -- Mussolini
    81. Re:what I did by spongman · · Score: 1

      my problem with significant whitespace is that when merging conflicting changes in a source control system, you can quite often end up with some lines being indented differently than their surrounding change, especially if change 1 indents a block for some reason and change 2 just changes one of those lines. When you have significant whitespace, you have to make sure that your merge tool understands that the whitespace from one change has to match the whitespace from the other change, otherwise the semantics of the merge is incorrect. with insignificant whitespace, the source file can be poorly indented, but at least the semantics of the merge remain intact.

    82. Re:what I did by spongman · · Score: 1

      brainfuck is too large a language for beginners. i'd recommend FRACTRAN for which the programmer only has to learn a single operation and a halting condition.

    83. Re:what I did by marnues · · Score: 1

      Completely disagreed. First, a beginner is a beginner programmer. They are learning to think like a programmer and should be given every incentive to learn best practices right away. Python enforces this. Guess what, so does BASIC, my first language. Not as much as Python, but it was. As soon as I picked up Perl I began playing around with single line programs and good lord was that a bad idea.

      Also I take offense to you and anyone else that thinks programming languages should be treated as a natural language. If you try to teach someone "in their terms" as you put it, you do them a disservice by letting them think programming languages are fuzzy and difficult like English or other natural language. The learning curve is steepened, not lessen by such nonsense.

      Again, teach programming, not natural language parsing.

    84. Re:what I did by gpuk · · Score: 1

      For the C and relatives, you could do something very similar to Python (or at least you can in php):

      if (a==b)
              do_something();

    85. Re:what I did by gpuk · · Score: 1

      you sadist!

    86. Re:what I did by kwoff · · Score: 1

      As a Perl programmer, I find it strange to see someone arguing that Python has an English-like syntax. For one thing, I guess you've forgotten "def", "len", (for that matter, "print", "return", and "break" are a bit awkward on a natural English level, though obviously not specific to Python. "pass" what? "try"...."except" - so I should try everything except these ones? "while True" (with an unnatural capitalized "True") "yield" a....generator, mkay....). I find it strange because it's usually the opposite of what Python lovers argue. Compared to Perl, which Pythonistas generally abhor due to its complicated (natural!) syntax, Python is supposed to be a model of sterile cleanliness and simplicity -- which is about like trying to write poetry in Lojban.

    87. Re:what I did by Clueless+Moron · · Score: 1

      How do you explain to a new programmer the _self_ thing in Python?

      Gee I dunno, how do you explain "this" in C++ which just appears out of thin air? How do you explain that "x += 3" within a "method" or whatever the hell you might call it in your language magically touches one x but not another?

      Don't trivialize OO programming.

    88. Re:what I did by uninformedLuddite · · Score: 1

      Didn't someone actually write a BASIC interpreter in BF?

      --
      The new right fascists are bilingual. They speak English and Bullshit.
    89. Re:what I did by GooberToo · · Score: 1

      The lady doth protest too much, methinks.

    90. Re:what I did by GooberToo · · Score: 1

      Holy shit you're dumb.

    91. Re:what I did by camperslo · · Score: 1

      Some beginners did pretty well with Hypercard 20 years or so ago. At least it allowed people with no programming background a path to get some things done while learning in the process. That practical application motivated some people that would have never thought of programming otherwise.

      I really wish Apple would re-invent Hypercard for modern consumers and education. The current App Store rules wouldn't allow anyone else to do it.

      Maybe someone can emulate it in Javascript?

    92. Re:what I did by GooberToo · · Score: 1

      And the claim that the "proper python indention" prevents bugs is utter nonsense.

      No, you're position on the subject is entirely bullshit and idiotic. People literally change their coding style to avoid these types of bugs. Python, non-rigorously enforces such concepts.

      Basically you are completely wrong, added nothing to the discussion, and have every appearance and not only sever brainwashing, but a willful desire to maintain it and general ignorance. Sad.

    93. Re:what I did by angel'o'sphere · · Score: 1

      In C++ methods don't have a this pointer in the argument list .... in Pythons the methods have and you can name it like you want even ...
      My point is: you have this extra thing, that hangs around all the time which a newbie likely don't really grasp in the beginning ... so a language which offers less might be easier for a beginner.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    94. Re:what I did by angel'o'sphere · · Score: 1

      the only thing I had wrong is that I was not aware that you can write:
      if (a!=b): do_something(); and_do_more();
      in one single line.
      So, where else was I wrong?

      You did not so far but claim I was brainwashed, rofl. How can you think that if you don't know anything about me?

      Show me one bug that is prevented by Python coding styles ;D

      You are here the brainwashed one by repeating this myth all the time without realizing that coding styles or languages have nothing to do with bugs (except perhaps the C habit to write if (CONST == var) to prevent the accidents like if (var=CONST) )

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    95. Re:what I did by Clueless+Moron · · Score: 1

      In C++ methods don't have a this pointer in the argument list .... in Pythons the methods have and you can name it like you want even ... My point is: you have this extra thing, that hangs around all the time which a newbie likely don't really grasp in the beginning ... so a language which offers less might be easier for a beginner.

      One could argue that pedagogically it makes more sense for the this/self to be explicit.

      counter = 0
      class Counter:
      .counter = 0
      .def __init__(self):
      ..self.counter = 0
      .def add(self, arg):
      ..self.counter += arg

      I'm using "." for indentation here because slashcode removes leading spaces in ecode tags for some stupid reason. Anyway, here we have a module-global counter, a class counter, and an instance counter. Because the instance is explicitly passed in, it is obvious which counter the "add" method is modifying.

      Personally I don't have much of a preference either way, but it does cause confusion when I switch between C++ and python.

    96. Re:what I did by styrotech · · Score: 1

      That was my point - a newcomer to programming will never see or use the explicit self. It's only later once they move on to OO that it will become something they need to know about.

      And Python lets you go a long way before you even need to learn how to create classes.

      Yes I have taught people how to program. Learning to program involves an awful lot of stuff that has to just be accepted at first as the way things are - this is with all languages. After all the syntax of any language boils down to a set of arbitrary rules that the language designer decided on. There is no point questioning everything.

      You also forget that a newcomer to prgramming doesn't have any baggage from other languages - they are surrounded by seemingly arbitrary rules and they have no inkling for which rules are language specific or which rules are just the way programming is.

      And as the student progresses they can gradually start being taught the "whys" as required. You need to get newbies productive and accomplishing something first to build their confidence rather than bombarding them with background theory.

      If someone was progressing on to OO and wanted to know why methods had an explicit self, I'd tell them that methods are just like functions attached to an object and self supplies the method the object it is attached to. A newcomer to programming wouldn't even know that other languages don't require it.

      If you'd stuck to your other point that Python can trip up programmers from other languages (eg Java and C++), then yes I would've agreed with you. But that is a problem with previous expectations which is not something a newcomer to programming would have.

    97. Re:what I did by An+Elephant · · Score: 1

      coding styles or languages have nothing to do with bugs

      You have got to be kidding.

      In general, managed-code languages killed a whole category of bugs that you find in C/C++ programs.

      In particular, Python's "if it isn't properly indented it won't work" approach prevents two kinds of bugs:

      1) As noted above, the statement-intended-to-be-under-if-but-isn't.

      if (a!=b)
        x = y;
        z = t;

      2) The bugs that follow from misunderstanding weirdly formatted code. I have seen code that looks like

      if (...) {
        do_something();
        do_something_else(); }
      // Note the close brace above
        do_a_third();
        for (i=1; i<N; i++) {
          do_4();
      }

    98. Re:what I did by angel'o'sphere · · Score: 1

      My appologizes, I should have excluded memory bugs from my claim that languages don't change much regarding bugs. Ofc managed environments remove certain bug classes.

      However, I waited for an answer like this ;D
      As your point is the common repeated myth.

      1) if the line with the z is not indented it does not belong to the if. However: I as a reader can not decide if it should unless I know exactly what your code is supposed to do.

      2) Yes, the "}" is unintuitively at the wrong place. And?
      First of all, IDEs prevent this, they usually format your code for you.
      Secondly: it is exactly the "do_something" and "do_something_else" example, the Python enthusiasts always bring.
      My counterargument is the same as to 1): unless you know what "do_something" is supposed to mean, and unless you know what "do_something_else" is supposed to mean, you can not decide if a "wrong indented" line actually belongs into the { } pair or behind it.

      So bottom line you have to understand what is going on and whether the code is formatted correctly needs to be decided based on the requirements.

      This is the exact same problem regardless whether you program in Python or any other { } fancy language.

      BTW: I never ever saw a bug that was obscured by wrong indentation. At my university once a study was made regarding bugs and coding habits and language influence. If I remeber correctly most bugs - coding errors - where produced in C/C++. The rest of the bugs where as usual: wrong understood requirements ... missing checks for bounds and other parameters. That was more or less in all languages the same. The only two aspects that reduced bugs signifcantly where programming by contract (not widely supported in any language except Eiffel and Groovy - via annotations only) and refinement based programming (some old obscure languages support that, or crefine, a preprocessor for c/c++ adds refinements to c/c++ - gogle for it)

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    99. Re:what I did by An+Elephant · · Score: 1

      Oh well.

      My two examples were really of one principle: Code's look should be a hint to its function, and violating that is a problem. The point of the first example, for instance, was not that the 'z' line is necessarily incorrect; the point was that the programmer who wrote it was unclear about her intentions, effectively saying one thing to the computer and another to human readers. This being a problem is not a myth; it's common sense.

      Your claim comes down to: No, such violations do not matter (or never happen in practice). You even claim to have some quantitative argument to support that. I doubt the argument will hold -- most such studies conflate to many factors to make strong positions on one language feature or other. And barring such data, your position seems quite irrational.

    100. Re:what I did by angel'o'sphere · · Score: 1

      Hey! This is not an argument ... in the sense who is right and who is wrong. I only point out my opinion.

      I mean, if you want to take an opposie stand and "claim" that python programmers make fewer bugs, you would need to back that up with "numbers" as well.

      I did not answer especially to you but also to others about the "right indentation" prevents bugs "idea".

      In my experience it does not. As I said before: I myself never made such a bug and never saw one from someone else.

      However you are right, the studies I mentioned where done with students (who are not that experienced in programming) and with a pretty low number of participants, perhaps around 100.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    101. Re:what I did by Bengie · · Score: 1

      You delimited the words within a sentence, not a sentence between a sentence.
      Here is an example of two sentences delimited by a period.

      The boy was happy.He had his birthday.

    102. Re:what I did by jgrahn · · Score: 1

      As somebody who writes Python professionally, I'm a bit biased, but can say with some assurance that the whitespace thing is not a major problem in the Real World. [...] There are things to go after Python for, but whitespace is definitely not one of them.

      AOL. The whitespace complaint pops up every time non-Python users discuss Python -- but it's just a distraction. Get over it.

    103. Re:what I did by fireball84513 · · Score: 1

      "Lean over and help them find that!" Your assuming that every kid will have their own personal coach which can look over every bit of their code and give them tips which wasn't the case for me. Even though part of my programming experience came from formal classes, the professor could only devote so much time to each individual. When learning C++ I spent 95% of my time debugging rather than learning core programming concepts. The experience was like chewing on sandpaper because it was so tedious. When I switched to python I found that I was spending a significantly smaller amount of time debugging and more time learning about core programming concepts.

      --
      "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe." - Albert Einstein
  2. And why doesnt BASIC still work? by ninthbit · · Score: 5, Insightful

    And why doesnt BASIC still work? Any reason they can't still use BASIC?

    1. Re:And why doesnt BASIC still work? by tepples · · Score: 1, Informative

      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 solely because the player could reboot the emulated C64 into the REPL of ROM BASIC.

    2. Re:And why doesnt BASIC still work? by chemicaldave · · Score: 2

      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.

    3. Re:And why doesnt BASIC still work? by mcvos · · Score: 2

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

    4. Re:And why doesnt BASIC still work? by exploder · · Score: 0

      I started programming on Apple ][ BASIC, and for a long time I believed that anything the computer could do, it could be programmed to do in BASIC. Eventually, I found out that you needed some machine language code to do a lot of things (even sound--the way you generated a tone on that computer was to "tick" the speaker in an explicit loop, and in BASIC you could practically hear the individual ticks!), but that didn't happen until I'd encountered and solved many problems on my own.

      Even playing the best games of the time, I felt like given enough time and mastery of the language, I could produce something comparable in BASIC, and that drove me on, for a long time. Give a bright kid a BASIC interpreter now, and they'll ask you, "what's the point of this?"

      --
      Yo dawg, I heard you like the Ackermann function, so OH GOD OH GOD OH GOD
    5. Re:And why doesnt BASIC still work? by TheCarp · · Score: 2

      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 is going to be done in higher level, modern languages. Assembly is still worth tossing in there at some point (I wouldn't start there) to really drive home "how the computer works" and to give you some respect for the tools you have.

      BASIC though? I loved playing with it but, I found that learning C after it basically meant starting from scratch.

      --
      "I opened my eyes, and everything went dark again"
    6. Re:And why doesnt BASIC still work? by Anonymous Coward · · Score: 0

      You had graphing calculators in 8th grade? Man, am I jealous...

    7. Re:And why doesnt BASIC still work? by Bengie · · Score: 1

      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.

    8. Re:And why doesnt BASIC still work? by MightyYar · · Score: 2, Informative

      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 of which implement BASIC.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    9. Re:And why doesnt BASIC still work? by Anonymous Coward · · Score: 0

      Hey, buddy, that story is from 2009. Get with the program: there are plenty of Basic interpreters for the iPhone nowadays, such as "Basic!" by miSoft, LLC. (selected as an Apple App Store Staff Favorite) and HandBasic - CBM Flavor by Ahmad Hawwash and iAltair by Peter Schorn.

    10. Re:And why doesnt BASIC still work? by Anonymous Coward · · Score: 0

      Mod this poster down. I know all the "cool kids" on Slashdot bash Apple every chance they get, but there are at least 3 Basic apps available on the app store. I'll even link them since the poster can't do basic research before Apple-bashing:

      Hand Basic

      iAltair

      Basic!

    11. Re:And why doesnt BASIC still work? by Anonymous Coward · · Score: 0

      "doing memory allocation "by hand" sucks and delivers no benefit."

      Really? Might want to rethink that. You will never really work on anything truly interesting if you can't.

    12. Re:And why doesnt BASIC still work? by dzfoo · · Score: 3, Insightful

      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.

      --
      Carol vs. Ghost
      ...Can you save Christmas?
    13. Re:And why doesnt BASIC still work? by TheCarp · · Score: 1

      I never said that that. Context matters! I said:
      "C is great, even if the vast majority of the time, doing memory allocation "by hand" sucks and delivers no benefit"

      The vast majority of the time is...most of the programing that people do. Little one offs, quick little tools, most small applications, web applications etc. I never said that was all very interesting stuff, just that it constitutes most of what most people do with the tools. Its still good to learn and teach because some people need it, and it does teach basic understanding of internals.... and yes, there are many "interesting" things where it is important.... and I would never claim otherwise.

      Hell, I like to pull my hand brake and slide the back end of my car around to line up with the driveway, when the roads are icy and nobody else is around. That doesn't mean I feel this is a skill everyone needs, or that I advocate in all road or traffic conditions.

      --
      "I opened my eyes, and everything went dark again"
    14. Re:And why doesnt BASIC still work? by MightyMartian · · Score: 1

      I started with the Radio Shack/Tandy variants of MS-Basic (mainly CoCo BASIC). Took a year of Pascal in school, and that rid me of the bad BASIC habits. Worked with QuickBASIC at one of my first jobs, actually writing a POS program in it. I was actually working with EMS and XMS libraries and stuff into the mid-1990s before finally moving over to C. If you can code in Pascal, you can code in C.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    15. Re:And why doesnt BASIC still work? by dcw3 · · Score: 1

      Unfortunately, programming using the keypad is a huge pain

      Kids these days. We did ours from the toggle switches on the front of the Data General Nova, and we liked it.

      --
      Just another day in Paradise
    16. Re:And why doesnt BASIC still work? by darkwing_bmf · · Score: 1

      Odd. I found assembly language very similar to BASIC.

    17. Re:And why doesnt BASIC still work? by narcc · · Score: 1

      It's the UID -- Chances are the BASIC he was using is very different from the BASIC you were using.

      Still, I agree. I also found assembly and BASIC to be very similar. It makes me laugh when someone brags about learning assembly after a brief stint with BASIC on their micro

    18. Re:And why doesnt BASIC still work? by Anonymous Coward · · Score: 0

      Bogus. All interpreters are banned, not just BASIC.

      How does that "disprove" what parent said? Saying "X was banned" does not mean "Only X was banned".

    19. Re:And why doesnt BASIC still work? by Anonymous Coward · · Score: 0

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

      Umm, not. I have a Basic interpreter on my iPad, downloaded directly from Apple's iTunes app store. Not sure what its full/official name might be, but the icon for it is labeled "Basic!"

    20. Re:And why doesnt BASIC still work? by TheCarp · · Score: 1

      Well yah. Pascal was fine. I never actually used it, but I looked at it and decided to stick with C (something about having to type the word "procedure" all the time turned me off). They really didn't look that different. Aside from being a bit obscure these days (can't remember the last time I heard "oh thats written in pascal"), it seems like a fine language.

      --
      "I opened my eyes, and everything went dark again"
    21. Re:And why doesnt BASIC still work? by lingu1st · · Score: 1

      You can get Pixie Scheme from the App Store. Sure it's sandboxed, but for playing with LISP logic, it's right there on your iPad.

    22. Re:And why doesnt BASIC still work? by Anonymous Coward · · Score: 1

      Were you really starting over from scratch? You were already familiar with sequential execution, variables, control structures, loops, etc. Those concepts may seem trivial in retrospect, but you need to live and breath them to understand programming.

    23. Re:And why doesnt BASIC still work? by chemicaldave · · Score: 1

      It was lots of fun at the time. But tell me, would you like to program with switches and punchcards now that you have a keyboard?

    24. Re:And why doesnt BASIC still work? by gravis777 · · Score: 1

      Agree 100%. Get them an emulator if you need to. Then you can build on top of that with Visual Basic.

      If you want to teach students structured programing languages, Pascal is still good. I hear too many people say that we should forget Pascal as no one uses it anymore. I just can't believe people are seriously suggesting stuff like Java and Python as a first language. These languages may be simple for us to pick up, with our backgrounds, but you REALLY need to tech kids fundamentals such as working out logic before dropping them into languages where they are probably going to struggle with syntax and object-oriented stuff.

      No, I say continue to start kids off with Basic, to teach logic, then go to Pascal, to teach structured programing languages, then go to Visual Basic as an easy way to get familer with GUI programming, then go to C. Only after they learn C should you then start with Java and Python and Ruby.

    25. Re:And why doesnt BASIC still work? by Peter+Harris · · Score: 1

      Because it's crap. Seriously, it was really poorly designed both as a teaching language and as a software development language.

      Don't be fooled by the name, with its false promise of simplicity. Anything non-trivial written in BASIC will be considerably more complicated and difficult to understand than the equivalent code in a language with proper data structures and first-class functions.

      The only thing it had going for it was it was the only widely available language on 1980's home computers. But do to anything useful on those things you had to go down to machine code anyway. So we learned programming *in spite of* BASIC.

      If we could have just had a cut-down LISP interpreter with a built-in assembler then software engineering practice would be 10 years further on by now. There would have been no VB, for example. As an industry, we're only now slowly recovering from that infection.

      But this question keeps coming up on Slashdot for some fucking reason I can't comprehend. The same answers are always reiterated: Python, Smalltalk, Javascript etc. The one true answer is: Please, anything BUT fucking BASIC

      If you had to write a useful program, and you could choose BASIC or any of the modern high-level languages, there is literally no good reason to choose BASIC. So it follows that if you start learning to program in BASIC, you will have to at some point ditch it and start using something better. I suggest that the optimal time to do that is immediately before you begin learning to program.

      --

      -- What do you need?
      -- Gnus. Lots of Gnus.
    26. Re:And why doesnt BASIC still work? by operagost · · Score: 1

      Toggle switches? Luxury! In my day, we manipulated individual electrons with a tiny set of tweezers! And I had to use a magnetized needle for the core memory!

      --

      Gamingmuseum.com: Give your 3D accelerator a rest.
    27. Re:And why doesnt BASIC still work? by hubie · · Score: 1

      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.

      Ah yes, remember PEEK and POKE? I never really knew what they did other than somebody told me a specific integer where I could write something on the screen that flashed. That was pretty cool.

    28. Re:And why doesnt BASIC still work? by Anonymous Coward · · Score: 0

      Because Dijkstra said that programming in BASIC causes brain damage, and we all know that Dijkstra was always right.

      ** rolls eyes **

    29. Re:And why doesnt BASIC still work? by martin-boundary · · Score: 1

      Ah yes, remember PEEK and POKE? I never really knew what they did other than somebody told me a specific integer where I could write something on the screen that flashed. That was pretty cool.

      Don't worry, that was a common affliction with precocious programmers. PEEK only really made sense to the over 13 crowd, and POKE, well that one was 18+ ;-)

    30. Re:And why doesnt BASIC still work? by Anonymous Coward · · Score: 0

      Take a look at Freebasic.net . Modern interpretation of the language, based around Quickbasic4.5. And has a active community.

       

    31. Re:And why doesnt BASIC still work? by RussR42 · · Score: 1

      Hehehe. My friend and I learned about poke as kids. It wasn't long before we decided to write random data to random memory address. This turned out to be a Bad Idea.

    32. Re:And why doesnt BASIC still work? by dcw3 · · Score: 1

      Oh, I completely agree...was just being silly in my original post. It was all new, and exciting back then.

      --
      Just another day in Paradise
    33. Re:And why doesnt BASIC still work? by MightyYar · · Score: 1

      I wasn't referring to it being banned. I was referring to him claiming it wasn't an option, and how his was a bogus argument. You are not limited to Javascript on an iOS device.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
  3. Android (Java), Flash (Flex), Objective-C (OSX) by Kenja · · Score: 1

    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.

    --

    "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
    1. Re:Android (Java), Flash (Flex), Objective-C (OSX) by Anonymous Coward · · Score: 0

      None of which are beginner friendly and very unlikely to generate interest from kids. You obvious have no idea what the poster means by their BASIC reference. Clue: it has nothing to do with VB, and goes back to 8 bit micros.

    2. Re:Android (Java), Flash (Flex), Objective-C (OSX) by Kenja · · Score: 1

      Yes, cause all them kids are screaming for GOTO commands and would HATE to make flash and android apps.

      All three examples I listed are very beginner friendly yet let you build actual apps you can run on hardware and systems made this decade.

      --

      "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
    3. Re:Android (Java), Flash (Flex), Objective-C (OSX) by Anonymous Coward · · Score: 1

      We're talking about kids or adults who never had any programing experience. Do you honestly believe that Objective C is a good starting language? For beginners stick with BASIC, Python or other easy to use languages.

    4. Re:Android (Java), Flash (Flex), Objective-C (OSX) by Anonymous Coward · · Score: 0

      Obj-C is "very" beginner-friendly???? Fucking hell, what children have you been meeting?

      Maybe this is hard for you to understand, since you obviously already know the languages. For a person who has never programmed in their life, Obj-C is not beginner-friendly. Neither is Flash. I've never used it, but apparently neither is Java.

    5. Re:Android (Java), Flash (Flex), Objective-C (OSX) by Kenja · · Score: 1

      Depends on which platform I guess. For example, going back to the BeOS Objective-C making a window was just MyWindow = new BeWindow();. On other platforms it can be more complex. But in general I do find that Objective-C is approachable with the right tools. But Android or Flex would be better to get started with.

      --

      "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
    6. Re:Android (Java), Flash (Flex), Objective-C (OSX) by Dog-Cow · · Score: 1

      The only platforms to have used Objective C are NeXT, Mac OS X and iOS.

      Are you thinking of C++?

    7. Re:Android (Java), Flash (Flex), Objective-C (OSX) by blackraven14250 · · Score: 1

      Computer Science electives at my high school started us off with Java, if that says anything about the language's friendliness.

    8. Re:Android (Java), Flash (Flex), Objective-C (OSX) by hood8263 · · Score: 1

      objective C is not that easily approachable. You have to be thinking about c# or C++. I'd rather stick forks in my eyes then program in objective C.

    9. Re:Android (Java), Flash (Flex), Objective-C (OSX) by narcc · · Score: 1

      Computer Science electives at my high school started us off with Java, if that says anything about the language's friendliness.

      Your HS's choice of language says absolutely nothing about the "language's friendliness".

      Java, and most so-called "modern" languages, have way too much "cruft" to be considered beginner friendly. Think back to that Java class -- how much code was written "because you need it" without having the background necessary to understand its meaning?

      Voodoo code offers the student nothing but a constant reminder that they just don't understand. It's demoralizing.

      A language like BASIC, however, offers no cruft. You can write interesting and useful programs and understand every single line of code. That's empowering.

      It's why I recommend Microsoft Small Basic for beginners. It has a fantastic help system, a great PDF tutorial, and the IDE stays out of your way. It's very inviting. Check it out and let me know if you still think Java offers a friendly introduction to programming.

    10. Re:Android (Java), Flash (Flex), Objective-C (OSX) by DrgnDancer · · Score: 1

      I believe it was that last one he was interested in. His theory, and not a bad one, is that kids will enjoy programming more if they can get an immediate and tangible result in a way that matters to them. "Learning programming" to a lot of kids is going to mean trying to replicate Microsoft Word or Portal. That's what they see and use day to day on their "computers". "iPhone programming", "Android programming", or "web programming" bring up a different level of expectation. People expect phone apps or web apps to be simple.

      Phones, in a lot of ways, are the largest current inheritors of the old school Unix idea of a chain of small simple tools that work together. Most phone apps are simple programs that do one thing or a very small group of things, and don't try to be all things to all people. After a few weeks of poking around you could probably make a phone app that doesn't look to much worse than some of what is currently being sold on the app stores. There's value in that for a lot of people. Learning to program a computer seems hard, becasue most of what you're comparing your work to is a huge project written by a team of professionals. Learning to program a phone seems easier becasue most of what you're comparing your work to was done by a single person or a small group, who may or may not have been professionals.

      The actual difficulty of the language, or it's popularity on a variety of platforms, is a factor to consider. On the other hand, there's a psychological edge to feeeling like you can make some as good or close to as good as what's for sale in the store.

      --
      I don't need a million points of light, just two points of multi-mode fiber and a 10 Gig-E router.
  4. I like Ruby by jarich · · Score: 4, Informative

    It's lightweight, portable, and has a ton of interesting projects for learning. Start here at http://www.ruby-lang.org/en/ Check out the "Try Ruby in Your Browser link" on the right hand side.

    1. Re:I like Ruby by mcvos · · Score: 5, Informative

      If I recall correctly, Ruby also has Hackity, a programming environment specifically for kids.

    2. Re:I like Ruby by jarich · · Score: 4, Interesting

      I've not used it, but here's the link: http://hackety-hack.com/ Looks like more of a general purpose intro for beginners to Ruby and/or coding.

    3. Re:I like Ruby by mcvos · · Score: 1

      That's the one I meant. A few years ago my impression was that it was specifically aimed at kids. I thought it was also initiated by Why the lucky stiff. The site looks very different now. Maybe to make it more general.

    4. Re:I like Ruby by Anonymous Coward · · Score: 0

      I kid has used it, and i think for total beginners and kids it would be better used as a supplement rather than a main course. It is fun and interesting, but hackety-hack does skip over some topics with little explanation. Still, its a great project, especially paired with some guidance.

    5. Re:I like Ruby by Anonymous Coward · · Score: 0

      I like Python, because it has good documentation -Ruby would perhaps otherwise be my weapon of choose.

  5. wxPython by sgt+scrub · · Score: 1

    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.

    --
    Having to work for a living is the root of all evil.
  6. How about... by da · · Score: 1

    ... (ba)sh? ;-)

    --
    I reserve the right to be wrong.
    1. Re:How about... by swanzilla · · Score: 1

      Imagine the looks of wonderment on the faces of the students, upon learning how to pass options into the ls command.

    2. Re:How about... by h4rr4r · · Score: 2

      It's not about wonder its about learning the basics.

      If you want fun and wonder teach the kids Pygame.

    3. Re:How about... by jank1887 · · Score: 2

      and that's where you're wrong. the initial question IS about wonder. I started messing with BASIC to make simple games on my C128 when I was 8. TFA is talking about kids.

      what would you teach an 8 year old to do with bash?

  7. Web browser provides instant gratification GUI by Anonymous Coward · · Score: 0

    HTML4 is super easy, any middle-schooler could start there. Branching out to some client-side javascript is a cakewalk, and PHP from there is a pretty sort jump and surprisingly powerful. If you want to do some 'real' programming, SDL makes the GUI side a lot more accessible.

  8. GUI? by fisted · · Score: 1, Interesting

    Beginners should not start with creating GUIs in the first place. (Neither did early BASICs support such a thing)

    1. Re:GUI? by w_dragon · · Score: 1

      Define early basic. I started on basic in the late 80s and I distinctly recall being able to draw circles with the CIRCLE command. Also, back then GUIs weren't used. Everything was terminal-based. Really until Windows 3.1 or 95 it was perfectly acceptable to do things with pure text input/output. These days there's no reason for a user to drop to a terminal, so it seems silly to expect them to get their first programming experience in one.

    2. Re:GUI? by GeodesicGnome · · Score: 1

      Beginners should not start with creating GUIs in the first place. (Neither did early BASICs support such a thing)

      I totally agree! I've been programming for almost half a century now and I've never seen languages more worthless than these things that insist on starting with programming the GUI (e.g., Alice). The key to teaching, or learning, programming at the beginning is striking a balance between conveying core concepts and keeping the newbie's interest (especially if that newbie is yourself). Starting with a lecture on machine language and memory layout (I actually took a class like that) is a sure way to put people to sleep. But if you start with putting buttons on the screen you have skipped over a world of core concepts and turned programming into magic where you just memorize incantations.

      I think what Apple has done with Obj C is a travesty and makes it very difficult to learn. They have GUI-ized it so thoroughly that it's really hard to tell what's going on under the covers. I was able to teach myself C from Borland's Turbo C, and I learned C++ pretty easily on my own. But Obj C has been hard and that's entirely because all the books insist on teaching it with this GUI Xcode stuff from Apple that keeps changing with each release so the books are always a little out of date. I'm convinced that C++ was easy only because I learned it before MS adopted it and did the same thing to it that Apple did to Obj C.

    3. Re:GUI? by fisted · · Score: 1

      No, sir. First of all, being able to draw lines/circles is in no way comparable to having some toolkit ready in order to build a GUI. Note this is not about coding widgets, but building GUIs out of ready-to-use widgets. However, irrelevant. You seem to wrongly assume the inverse of my statement would also hold, which is definitely not true, i.e. by saying 'Beginners shouldn't start with creating GUIs', I in no way say that advanced programmers should. Generally, it is *always* a failure to design something to be GUI based from the beginning. Unfortunately, Windows does in no way encourage people to separate front- and backends, worse, it makes it look like that wouldn't make sense at all. That is what leads people to the terribly invalid assumption that the CLI would be inferior, or obsolete, like you implied in your comment (since you mention windows as if there was nothing else, (or as if it was a meaningful reference at all) i assume you're exclusively using windows). Look at four decades of unix history, if you want some confirmation that it is still perfectly valid, and usually the best way to go, to write programs according to the filter pattern, as mentioned in this beautiful book http://www.faqs.org/docs/artu/ch11s06.html

    4. Re:GUI? by w_dragon · · Score: 1

      Ah, a *nix programmer who doesn't understand Windows. That's fine. For reference I've programmed for 7-8 different OSes, including Windows yes, but also a couple flavors of Linux, HP-Unix, VAX/VMS, Solaris, and a couple others. Windows has gone through phases of encouraging separation of front and back-end code and not caring, MVC is basically all about separating the model from the view from the controller. Yes, for young people and people new to computers the CLI does not exist. Even in modern Linux distributions you never need to drop to command line, and that's a good thing. A GUI gives you the ability to figure out what you're doing even if you don't know anything about the program you're using. Try using a CLI pretending you don't know a single command. You don't know man or apropos. What do you do when you get a blinking cursor? The answer is that you continue to wish that it was 20 years ago and you could still pretend to be a computing god simply because you knew some set of non-intuitive commands.

  9. This story is re-run monthly under different title by Shompol · · Score: 2
    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?

  10. JavaScript by tepples · · Score: 2

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

    1. Re:JavaScript by Anonymous Coward · · Score: 2, Insightful

      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.

    2. Re:JavaScript by mackil · · Score: 1

      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 the computer. A number of them have gone onto getting their CS degree, which is rather gratifying.

    3. Re:JavaScript by w_dragon · · Score: 2

      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.

    4. Re:JavaScript by burnin1965 · · Score: 2

      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.

    5. Re:JavaScript by nyctopterus · · Score: 1

      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.

    6. Re:JavaScript by tepples · · Score: 1

      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.

      In HTML, "magic happens" amounts to the name of the function being put in the button's onclick handler.

    7. Re:JavaScript by Anonymous Coward · · Score: 0

      I agree, wholeheartedly. JS is the way to go - and not just for newbies and kids

    8. Re:JavaScript by Anonymous Coward · · Score: 0

      debugging javascript is painful, particularly when you are dealing with browser behavior as well. bad idea for beginners

    9. Re:JavaScript by scot4875 · · Score: 1

      It's not substantially different than installing an interrupt handler back in the DOS days and then having it called back after some "magic" happens. Granted, that's a much, much lower level example than adding an onclick event handler to a button, but at some level "magic" is going to happen in just about any programming scenario.

      --Jeremy

      --
      Jesus was a liberal
    10. Re:JavaScript by Steauengeglase · · Score: 1

      I'd have to agree with this one. How many people quit halfway through installing the IDE or get a compiler error, get frustrated and rage quit.

      Give them a page with a button or just an onload event. Tell them this happens when the button is clicked or the page loads. Show them how to change the background color or add a simple alert. By the time they get to something like document.getElementById they've gone a long way toward getting over the fear of writing code.

      If they still aren't interested, you delete a single file.

    11. Re:JavaScript by narcc · · Score: 1

      In HTML, "magic happens" amounts to the name of the function being put in the button's onclick handler.

      I see you missed the point. It's still magic. "How does the computer know I pushed that button" is the issue. It's not part of their program, after all.

      Really, there's tons of magic-to-the-beginner with html/javascript. Consequently, they don't get that same sense of control like young learners had with BASIC on their micro. Too much is very visibly happening "by magic" to capture that important feeling.

      That, of course, and they need tons of background before they can even touch javascript. I taught exactly one beginners programming class with html/javascript and it was a huge mistake. Too much time was wasted on stuff unrelated to programming. It's absolutely horrible for beginners.

      Small Basic is the best learning tool I've found so far. It's small, simple, and encourages discovery. The auto complete provides simple descriptions in addition to the word and the sidebar help automatically updates itself according to your cursor position. There are no weird syntax rules to trip you up. They've even changed things like "next" to "endfor" to keep things consistent.

      It's not perfect, but it's much better than html/javascript for beginners.

    12. Re:JavaScript by VortexCortex · · Score: 1

      I agree: JavaScript is the fastest way to get into coding today. It's an Interpretor that every one can use with no setup -- like BASIC on my trusty Osborne One, except with JS you just open a browser.
      [Hint the URL bar is a console... think BASIC's > prompt. Try entering: javascript:alert(document.cookie); ]

      Using only the address bar I created a simple JS evaluator. that beginners can use immediately at the click of a link...

      Here is a Tetris clone I created using the address bar (which prompted the creation of the aforementioned JS evaluator).
      Here is a SHA1 Password Hasher bookmarklet created using the evaluator (use one master password to generate a new password for each website you visit).

      Note: I only tested these in Firefox. IE has too short of a URL limit to be useful without pulling in code from a server.

      IMHO, all web browsers should come with a nice JS console feature; It's really inexcusable not to...

    13. Re:JavaScript by jafac · · Score: 1

      I actually cut my teeth on TRS-80 BASIC in 1979. And I've been round and round on this argument for many years. I am thinking right now, I completely agree with you.

      The argument in the article was about what "programming platform" comes WITH the computer (sufficiently) such that, the technical barrier to entry is low enough that a beginner can get his or her "Hello World" to cough-up some output in the very first day.

      Well; I would first say - BASH scripting, (via cygwin on Windows, or native on every other freaking OS in the universe). echo "hello world". DONE.

      But after that, JavaScript is closer to being the actual Lingua Franca of the Internet right now. Every computer has a web browser, and everyone can very quickly set up a basic enough development environment (editor+apache instance) to make JavaScript+HTML work with instant gratification. Granted, now your BEGINNING complexity includes networking, graphics, network protocols, security, clilent/server architecture, but that is today's computing world.

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    14. Re:JavaScript by tepples · · Score: 1

      "How does the computer know I pushed that button" is the issue.

      Even in BASIC, "How does the computer know I pressed the Enter key?"

    15. Re:JavaScript by narcc · · Score: 1

      Forget it. It's pretty obvious that you don't WANT to understand what the other poster meant. If you can't see the difference from a beginners perspective between clicking a button and pressing the enter key, I can't help you.

    16. Re:JavaScript by tepples · · Score: 1

      It's pretty obvious that you don't WANT to understand what the other poster meant.

      You are mistaken. I do want to understand; I'm just stuck on something. With my programmer mindset, I somehow failed to comprehend the allegedly vast difference between a keypress event sent to a focused GUI control and a click event sent to the same GUI control.

      If you can't see the difference from a beginners perspective between clicking a button and pressing the enter key, I can't help you.

      And I apologize for not being helpable.

    17. Re:JavaScript by Anonymous Coward · · Score: 0

      Erf? JavaScript? JavaScript is amazingly powerful (altough interpreter being stupidly all mono-threaded for now, which is so lame in an octo-core world but I digress) but JavaScript is also amazingly complex. It's one of the most complex language around and the entire JavaScript ecosystem reaches a level of complexity hardly imaginable.

      JavaScript for kids: just say no.

  11. How is Python different than Basic? by strangeattraction · · Score: 1

    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.

  12. Good starter languages? by betterunixthanunix · · Score: 2, Insightful
    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)
    --
    Palm trees and 8
    1. Re:Good starter languages? by Anonymous Coward · · Score: 2, Insightful

      Scheme?! You've got be kidding!

    2. Re:Good starter languages? by Dog-Cow · · Score: 1

      He also mentioned shell scripting languages, so obviously he is kidding.

    3. Re:Good starter languages? by Anonymous Coward · · Score: 0

      Shell scripting is a good recommendation, it's very practical.

      I took a class that had us using LOGO, (turtlescript). Yes it's very easy and even a little fun.....BUT it's useless.

    4. Re:Good starter languages? by Hatta · · Score: 1

      That's how I felt about programming Pascal on 68k macs back in High School. Never programmed Pascal again. Never programmed a Mac again. BUT I use the basic concepts I learned every single day. This is exactly what you want from a teaching language.

      --
      Give me Classic Slashdot or give me death!
    5. Re:Good starter languages? by Anonymous Coward · · Score: 0

      I really like Python, but wouldn't recommend it for a beginner. I think for a procedural language beginners *need* to use explicit block start/end statements (braces or some variant of BEGIN/END) simply to understand language structure. As for shell scripts, they're generally horrible - they all look very similar but are subtly different, and have no end of obscure idiosyncrasies. Just trying to do a simple if/else sends me to google to try to work out which type of brackets I need, (), [], [[]] or none at all. They have their place, but would frighten off newbies.

    6. Re:Good starter languages? by Kaz+Kylheku · · Score: 1

      A minimal implementation of just RnRS Scheme is terrible for learning because of the lack of language features and the lack of an environment.

      There are some nice Scheme environments with good interactive features and extensions to the language, too.

    7. Re:Good starter languages? by Ancantus · · Score: 1

      VBScript (as far as I know, this is still shipped with Windows)

      If my first programming language was VBScript, I think I would have run away from the computer, screaming.

      --
      Violence is the last refuge of the incompetent. -- Isaac Asimov
  13. Processing by zerosomething · · Score: 3, Insightful

    http://processing.org/ it's easy and gives immediate gratification.

    --
    It all starts at 0
    1. Re:Processing by Anonymous Coward · · Score: 0

      I second Processing and its javascript offshoot: http://processingjs.org/

      Both a great way to code in an iterative, "let's see what this does" way.

    2. Re:Processing by strangeattraction · · Score: 1

      +1

    3. Re:Processing by Anonymous Coward · · Score: 0

      I find Processing to be lack-lustre as a learning tool. Plain Old Java is a better choice, in my opinion.

      Reasons?

      Processing ensconces all of it's syntax in passing parameters to functions. It does not truly teach a person how to write the functions that do the actual work.

      When you program with Processing, you're not really programming at all. You're plugging into an API.

      But worse still, all of the tutorials for learning Processing don't explain to you what it means to plug into, and program against an API.

      Dependency management is (again, in my opinion) the most difficult, and least addresses aspect of modern programming.

      Everyone LOVVVVVVES to teach how to shuffle a deck of cards, or how to draw a circle. But when you need five pre-built packages to do that, and no guides for where to find them, if they're even supported anymore, how to install them, and how to program with/against them, there are HYOOOODGE road blocks.

      And no one is willing to teach "n00bz" how to do that.

      Ever.

    4. Re:Processing by leenks · · Score: 1

      Mod Parent Up.

  14. There's Alice by rsilvergun · · Score: 3, Informative

    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.

    --
    Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
    1. Re:There's Alice by Anonymous Coward · · Score: 0

      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.

      Seconded. A person where I used to work was there on a special program.. he was pretty autistic but could do some work with me on computer hardware. He told me about the amazing things he did with Alice -- it's not really *like* Logo, but two similarities... like Logo you won't use Alice for ordinary projects, it's really a language for children to learn to program; and like Logo, you can get a quick payback where shortly after doing "Hello World" it's easy to produce stunning graphical demos, instead of get bored and quit.

                Otherwise, I've really liked the syntax of Python. It allows whatever programming style you wish to use. And, for me at least, the code just flows out of me, the syntax is so forgiving and flexible. I mean, if the learner writes code that seems logical and consistent, it'll probably work, it won't bail out because "Oh, well, *that* is a string and *that* is an array of characters" or whatever. It's important to learn C, but as an introductory language that is exactly the kind of thing that make it (and even Java) poor introductory languages.

  15. Bah! It is easy! by Anonymous Coward · · Score: 0

    Learn electronics, then learn assembly language. You do it in that order to prevent brain damage. Then you learn C. Again, no brain damage.

    Then you get a job and don't touch another language for the rest of your life. You'll get enough brain damage from the drinking you'll need to do to survive as a programmer.

  16. BASIC is and has always been terrible by Toksyuryel · · Score: 2

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

    1. Re:BASIC is and has always been terrible by revjtanton · · Score: 1

      Agreed about BASIC! It's poo.
      Python is a great scripting language, but I've got to disagree with your ordering of learning. I would recommend doing C, then C++, then move on. Get a strong core in OOP concepts will help you learn any other language you want.
      http://wibit.net/

    2. Re:BASIC is and has always been terrible by Dog-Cow · · Score: 1

      Python is an absolutely horrible language to learn on. I learned far fewer bad practices from BASIC than any newbie would learn from the whitespace brain-damage that is Python. Fortran and COBOL at least had a reason for whitespace limitations. Python does it because Guido doesn't like block delimiters!

      Any language that limits the programmer to favor the compiler is doing it wrong. Period.

    3. Re:BASIC is and has always been terrible by Skuto · · Score: 1

      Your last criteria would rule out pretty much any language in existence.

      I really fail to see why Python's whitespace quirks have any bearing on the suitability of the language to learn programming. The principles and reasoning you have to learn aren't affected by whitespace at all. A generation of programmers was brought up (just (well (in (Scheme)))) for crying out loud.

      I actually still have the first BASIC programs I wrote when I learned programming, and it's very clear to me that enforcing and explaining what indentation is would have made me a better programmer faster.

    4. Re:BASIC is and has always been terrible by rmstar · · Score: 1

      The only thing [basic] will do for you is give you serious brain damage.

      Well, evidence suggests it may give you the right kind of brain damage. Many people that learned with basic became great programmers afterwards.

      After learning to program with old style basic, and then moving to a higher language, the student will understand the value of many of the constructs. She will recognize the advantage of proper procedures and functions over GOSUB madness. She will understand the great freedom and power that comes from sane scope rules and proper control structures. I believe that this gives the student a deeper relationship with and understanding of language features. It also teaches that the choice of language is important, and that language features matter.

      In my opinion, starting with basic and then moving up is an important experience. Better than staring directly with the better language, confronted to answers for questions you don't know.

    5. Re:BASIC is and has always been terrible by narcc · · Score: 1

      Agreed about BASIC! It's poo.

      Why is it "poo"?

      Seems like an ideal learning language to me. I guarantee that you can't justify your position.

    6. Re:BASIC is and has always been terrible by Kazoo+the+Clown · · Score: 1

      Depending on how an editor handles tabs vs spaces can make a huge difference. Python's whitespace dependencies are truly myopic.

    7. Re:BASIC is and has always been terrible by narcc · · Score: 1

      Wow, that article didn't address my question even a little. Did you read it before linking it?

      The closest it came was: "Do you want skills that will resonate decades from now? Do you want to learn languages that are relatable and follow common rules? If you answered YES to these questions then do the development and business community a favor and stay clear of Visual Basic."

      Of course, no where in the article was that claim substantiated. The author, I suspect, is a bit of an idiot.

      Anyhow, the article only mentions "visual basic" which is odd, given the date. You'd think he'd have specified VB.net. Of course, it isn't that much different than C# -- if you learned VB.net, moving to C# takes virtually no time at all.

      Of course, VB.net isn't comparable to BASIC in any reasonable sense. The only thing most BASICs and VB.net have in common is the word "Basic". You might as well just say "the .net family of languages" is "poo" though I doubt you can justify that anymore than your other nonsense assertion.

      So, I'll ask again. Why is BASIC "poo"?

      I eagerly await an actual answer. I've asked this many times in the past when I've seen the meme repeated -- none have yet been able to justify their copy/paste opinion.

    8. Re:BASIC is and has always been terrible by revjtanton · · Score: 1

      Wow. Calm down. I'm not discussing anything with you being all jack-assish like you were there. You want BASIC to be the most amazing thing ever, fine: it is. WHATEVER. Your';re right, that is the wrong article and I posted it by mistake. The article, which is written clearly tongue in cheek and is a joke and I think that is pretty obvious, is a great article in it's own right. To call my friend an idiot simply because you've got your panties in a wad over BASIC is pretty lame. Enjoy your life from this point on knowing I said BASIC is the most amazing shit ever and I'm ashamed for ever having called it poo. And go f yourself.

    9. Re:BASIC is and has always been terrible by narcc · · Score: 1

      I don't give two shits about BASIC -- I just hate the meme, which is oft-repeated by idiots who can't think for themselves.

      That STILL doesn't answer my question. Why is Basic "poo"? Which, as I predicted, you can't answer.

  17. Powershell by Ryxxui · · Score: 1

    Alright, so I'm willing to accept that this is a strange position to take...but if I was asked to teach my girlfriend to write code, the first thing I would do would be to try teaching her Powershell. Powershell, for those of you who have never heard of it, is a sweet scripting language introduced by Microsoft in Windows 7 (although it is available for Vista and XP). I've heard it compared to Perl a bit; there's dynamic typing, little scope, and access to the lion's share of the usefulness of the .NET framework. I figure that if I gave her some of the basics (here's how to do some math, here's how to do string operations, here's how to find more information about this stuff) she'd be able to use the built-in help (it can be used as a command line or in an ISE, both installed by default in W7) and my advice to get her started. I just find PS to be incredibly simple to write in- not the command line stuff or their cmdlets so much as the basic math/string/IO crap that I find myself doing most of the time.

    1. Re:Powershell by Ryxxui · · Score: 1

      And while I'm here I'll send some props to a cool project trying to bring easy WPF GUIs to Powershell: http://showui.codeplex.com/

    2. Re:Powershell by gubers33 · · Score: 1

      Just a tid bit for you to know, Powershell was around before Windows 7. Microsoft released Powershell 2.0 with Windows 7. They were first released in 2006 though for Windows XP/Server 2003, and Vista/Server 2008.

      --
      Just because you are wrong and I called you out on it doesn't mean I am a Troll.
  18. VB.Net by Pendaelose · · Score: 1

    Personally, I find VB.net a good choice for learning It's easy to use and gently teaches the fundamentals you'll use in all object oriented programming. Visual studio does most of the heavy lifting for you allowing the GUI to be drag and dropped into place. Double clicking on a button creates the event for it's click. Once you start building your app you can get into objects and events at a slow pace while focusing on the basics. It also has extremely forgiving syntax compared to many other languages. I've had to learn coding twice... 10 years ago I started coding with VB5 but ended up doing support instead of development so it had to put it away. Now, my support career has come full circle and I'm helping build the software I've been supporting this whole time. 10 years later I find myself re-learning all the basics in VB.net.

  19. VB or C# by DurendalMac · · Score: 1

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

    1. Re:VB or C# by glwtta · · Score: 1

      I don't really do much GUI development, but I'm curious - how does WindowBuilder compare to the C# tools?

      --
      sic transit gloria mundi
    2. Re:VB or C# by Conrad+Mazian · · Score: 1

      The whole point of this exercise is to avoid an interface builder. Learning to program with an interface builder limits your creativity. Now if you were to hand them a copy of Quick Basic 4.5, that would be a different story.

  20. Great Idea by wadeal · · Score: 1

    You could always get a Commodore 64 and learn BASIC on it. But what an awesome project that could be for an IT class. Find a PC at least say 15-20 years old and write a program on it.

  21. 'Hello World' book - using python by Anonymous Coward · · Score: 0

    I like the approach taken by the Hello World! book. A nice introduction for beginner programmers to python and eventually gets to GUI stuff, which I never got to do with BASIC on my TRS-80 back in the early 80s...

  22. any scripting language by Anonymous Coward · · Score: 0

    and some kind of canvas to draw stuff to.

  23. starter languages by iplayfast · · Score: 1

    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 advantage of being able to import loads of goodies which allow graphical programming.
    Another suggestion is Delphi Pascal or C-Builder which allows you to quickly create windows applications. I hear that Microsoft has something similar with C#.

    Any language is good, as long as time is spent playing with it. That's the thing that is important.

    1. Re:starter languages by narcc · · Score: 1

      I think the language doesn't so matter so much as the time that is put into it.

      The right language can determine how much time is necessary to get started, and how much time the learner is *willing* to put in to 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.

      It's difficult to say if he's thinking of something like QBasic or the unstructured variants on early-80's micros. Still, the point is to learn to program, not to learn a trade.

      No object orientation, plenty of gotos and so on.

      No OO is a VERY good thing. You haven't seen spaghetti code until you've seen the messes created in so-called "pure OO" languages. OO is a joke. It was oversold and failed to deliver on ALL of the promises it made. Alan Kay regrets even coining the term.

      Using goto in those old unstructured basics, in contrast, made the transition to assembly remarkably easy. Goto isn't inherently bad. Hell, you'll find goto's used in the linux kernel.

      The thing is he spent time on it, and from that language went to others.

      Yes, the trick is motivating the learning to spend time learning. A good learning language will keep out of the way and encourage discovery. It's why I recommend Small Basic -- check it out.

      Python isn't for the beginner, as others have already pointed out. I know it's 'cool', but as a tool for learning, it's second-rate. I don't buy the "teaches good habits" argument any more than I believed that BASIC taught bad habits. What bad habits? What good habits?

      (You've got to do better than "indenting code" as just about every beginner will start doing that on their own, without Guido's help.)

    2. Re:starter languages by iplayfast · · Score: 1

      You sound angry.
      My point is that in order to learn to code, you have to code. It is one of those things like playing the piano, where if you don't actually do it you can't learn it.
      My point about good habits, is to know what a function is, what a list is, what a class is, and so on. Python gives that without much difficulty. It also gives graphics which is fun. If you don't like python, then go back to your small basic. Each to his own. It was only a suggestion. A bad habit is using goto's because you don't know any better. (not that using them is bad, it's the not knowing any better method that is).

    3. Re:starter languages by narcc · · Score: 1

      My point is that in order to learn to code, you have to code.

      Sure, I can't argue with that.

      My point about good habits, is to know what a function is, what a list is, what a class is, and so on. [...] A bad habit is using goto's because you don't know any better.

      We must have very different definitions of the word "habit".

      Python gives that without much difficulty.

      My point, of course, is that there are much better teaching languages than the one you suggest. (Python wouldn't even make my top 10.) I speak from experience, having taught the subject for several year to adult learners.

    4. Re:starter languages by iplayfast · · Score: 1

      Well I tried teaching and found it beyond me. So I will bow to your practical knowledge.

  24. Processing comes to mind by Anonymous Coward · · Score: 0

    It's got that same instant gratification that I remember from BASIC, while still teaching some of the logic, structure, and syntax of C++.

  25. Depends on personal preference. by Anonymous Coward · · Score: 0

    Python. Or Ruby, if you wanna use why's poignant guide. I'm not going to say there aren't superior alternatives -- JavaScript would probably showcase the immediate applicability of programming better -- but those two stand out to me as languages in which you don't have to get caught up in overhead, you don't have to explain a lot of stuff right off the bat, you don't have to say "ok, ignore these statements for now", you can simply start off with a one-liner and work your way up from there.

  26. Ruby by Anonymous Coward · · Score: 0

    Ruby. The correct answer is Ruby. Seriously.

  27. brainfuck by Anonymous Coward · · Score: 0
  28. Go with Ada by Ada_Rules · · Score: 1

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

    --
    --- Liberty in our Lifetime
    1. Re:Go with Ada by darkwing_bmf · · Score: 1

      Ada is one of the best, if not the best, structured languages ever designed. Can't go wrong with Ada.

  29. Ruby.. by gpinkham · · Score: 1

    Ruby.. easy to learn.. lightweight.. works on most platforms.. etc..

    1. Re:Ruby.. by revjtanton · · Score: 1

      Ruby is awesome but I would content it isn't the best place to start. If you start there it might be harder to go to other concepts later. If you start with something like C++ it may be harder at first (maybe) but the concepts can be applied to other learning down the road.

  30. Alice by ndogg · · Score: 2

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

    --
    // file: mice.h
    #include "frickin_lasers.h"
    1. Re:Alice by Anonymous Coward · · Score: 0

      Randy Pausch (http://www.cs.cmu.edu/~pausch/) contributed to this.

  31. Do not pick a language -- pick visual environment by Anonymous Coward · · Score: 0

    Use GIMP, ray tracing, games or any other interesting visual environments first.

    Then use the language embedded in those environments as starting point. In otherwods, do not create a notion of a 'program'. Instead create a notion of 'tasks/logic' that are needed to do something interesting (and visually rewarding).

  32. just use basic by bhcompy · · Score: 1

    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.

    1. Re:just use basic by Anonymous Coward · · Score: 0

      I would advice to go at least with VB4. It's just as simple to use as VB3, but VB3 has no support for class modules.

    2. Re:just use basic by leenks · · Score: 1

      Except it is far too easy to write bad code in them. A language that encourages good practices is better starting point - Python springs to mind (even though I'm not a fan)

  33. LOGO !! by Anonymous Coward · · Score: 0

    Got that cute turtle. How can you go wrong !! (Don't put it in your vita !!)

    1. Re:LOGO !! by MightyYar · · Score: 1
      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
  34. Early 80's? by numb7rs · · Score: 3, Funny

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

    1. Re:Early 80's? by 0111+1110 · · Score: 1

      The very first programming class I ever took was in Fortran and I actually ended up dropping the class. I hated it. A single whitespace at the end of a line would throw an error. Something that was almost impossible to debug with the tools I had at the time. Only later, when I tried languages like assembly, Turbo Pascal, C, and Hewlett Packard RPL did I truly start to love programming.

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    2. Re:Early 80's? by numb7rs · · Score: 1

      Fortunately Fortran hasn't stood still. Later versions are a bit more lenient, as they are no longer need to be set as punch cards!

      You can even have comments in your code, radical!

    3. Re:Early 80's? by Archwyrm · · Score: 1

      I work at a company that uses Fortran extensively and I don't much like it either, but.. You and everyone else who leaves white space at the end of lines needs to be taken outside into the street and shot. Seriously, if you care about your code so little that you are leaving invisible garbage characters all throughout it, you should be thinking of another career.

      Fortunately modern software tools point out these garbage characters but I am still left cleaning up after all the jerks who use braindead tools and put them there in the first place, thus making extraneous changes in commits or needless "cleanup" commits.

      --
      Fascism should more properly be called corporatism because it is the merger of state and corporate power. -- Mussolini
    4. Re:Early 80's? by alexandre_ganso · · Score: 1

      Fortran is still one of the most widely used languages in scientific applications

      It is for people who

      a) don't know better

      b) have this code running since forever and don't know better.

      And then they throw us this shit for us to optimize for our supercomputers, because, guess what? They don't know better!

      You have no idea how fortran is despised in the HPC world, but we have to deal with it because some people (not a single one with a CS background) keeps using it.

  35. A concept with learning is the problem here by Anonymous Coward · · Score: 1

    Yeah, so day one you're not going to put together a GUI. Is it that big of a deal? You're not going to be programming the next big FPS in two months either. I know it sucks to hear this but it's true.
     
    Dumb little programs like "Hello World!" serve a purpose. If people with an interest in programming didn't think they were going to jump right in to making a functional program that served some greater purpose there would be a lot less let downs. Your average Sam's "Learn [insert language here] in 21 Days" book isn't going to get you writing any new and innovative code. It's there to introduce you to the basics.
     
    Sorry guys but it probably takes *at least* 100 hours of banging out dumb little programs to get to doing a program that actually does something productive for you and even in that case there are probably 300 programs that are doing the same thing out on some programming tutorial site.
     
    I really don't know what people expect out of their first few hours of coding. It's going to be limited. It's not going to produce anything useful. If you're not satisfied that you got it to work, you're not going to be satisfied by anything else in that starting stage.

    1. Re:A concept with learning is the problem here by paulo.casanova · · Score: 1

      Mod parent up! Finally a reply that goes straight to the core issue.

      Learning to program is learning to design algorithms, data organization, encapsulation. It is learning module contracts and responsibilities. Once you master those (which is the difficult part), the language itself is irrelevant. I, as many around here surely, know how to program in a large number of languages. Certainly I know details of some languages better than others but I can make software in any (well, reasonable) language because I know how to program, not a specific language.

      What takes time to master is logic and, up to a certain point, APIs (but there Google is your friend). Granted syntax does make some difference in my personal taste. Sure I wouldn't like to program in TeX or postcript for a living (both a Turing Complete so theoretically as powerful as any other). But please understand that learning to program is not learning a programming language.

      This is also what I -- when contracting freshly-graduated software developers -- check for. I don't care about them showing me they can create a window with some text fields and buttons. I ask them how would they refactor some code in order to reuse parts of it in a new system forcing them to come up with an "interface" or "API" and decide how to modify the existing code to conform to that API. That is programming.

  36. DarkBASIC ftw by Anonymous Coward · · Score: 0

    DarkBASIC is BASIC with DirectX bolted on, I wish schools taught with it.
    Massive instant gratification.

  37. Different expectations makes gratification harder by mhamel · · Score: 3, Insightful

    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.

  38. Backstory is important for context by revjtanton · · Score: 1

    In my experience backstory is important to put languages and learning in context. A lot of students are just running head-long into Java but if they started with C++, and were explained why it's important to start with C++, then many of the OOP concepts would come more naturally when learning something like Java. Then things like Python or PHP would come like second nature since their more complicated aspects are the OOP concepts they implement.

    I think a main problem in making programming fun is that it's always so monotone and repetitive. I say if you learn OOP concepts when learning C++ why re-learn those concepts when learning Java? Get to the good stuff! Teach about what is unique to Java, the syntax difference, and move on! That's what we do at http://wibit.net/ and it's working for us.

    Otherwise I'd say there is just a lack of creativity overall in programming learnin'. It's always the same "Hello World" projects teaching you how to build a Fibonacci sequencer or a tic-tac-toe game. Let's get real about this stuff and get linear and highlight the fun parts of development for the kiddies! Again, that's what we do at http://wibit.net/

    1. Re:Backstory is important for context by Dog-Cow · · Score: 1

      OK, explain why it's important to start with C++ (when learning OOP). There is absolutely nothing that C++ does better than another language that aids in understanding programming. Start with Objective Pascal. It is OOP, but retains the Pascal underpinnings that made it a teaching language to begin with. And there's an Open Source compiler that implements more than enough of the language to teach on.

      Java is OK for teaching basic data structure and logic flow, but I think its verboseness gets in the way of scripting-like program examples. And it's absolutely necessary to learn a language that requires memory management. I have run across too many Java programmers that do not believe or understand that memory management is important and that you can run out of memory if you aren't careful.

    2. Re:Backstory is important for context by revjtanton · · Score: 1
      I'm not arguing the merits of other languages so please don't think I'm putting anything down (well....I really hate BASIC), I'm arguing for a linear approach to teaching. To quote my site "Many modern languages today were inspired by C++. It is imperative to learn C++ before even attempting Java or C# or any other OOP language. Syntax structure for C++ is pretty much the same as C and other higher level languages follow similar syntax and program structure as C++" http://www.wibit.net/curriculum/the_c_lineage/programming_cpp

      I definitely agree with you on the memory management point. All I am suggesting over-all is a straight shot approach. Start with C, then C++, then probably Objective C, then Java, on and on. Each language broaches concepts and don't repeat the taught concepts of the previous languages. I can't tell you how many times I've watched a tutorial or read a book and it's gone over what OOP is when this is something I should (usually) know already. I've not used Objective Pascal so I can't really comment on it, but I'm sure it came after C++ and therefore probably borrows concepts from it?

  39. No modern languages are hard by Arkham · · Score: 1
    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 with python, you can program in the interpreter at first, then move to running the code from files, then later migrate into an object oriented approach.

    --
    - Vincit qui patitur.
  40. Website Programming by Drafell · · Score: 1

    To start with, teach PHP and HTML. These are good ways to get people used to the idea of GUI design and basic programming without needing to worry about complex event handling. When they are ready to move onto this you can introduce JavaScript and database integration through MySQL.

    HTML/CSS takes care of the looks, and you learn about functions using PHP. It is easy to set up something 'live' that people can play with.

    Throughout this they will be learning elements of C-based languages and it will make the transition to C++ and other languages that much easier.

    1. Re:Website Programming by Dog-Cow · · Score: 1

      HTML/CSS is the most horrible way of learning GUI programming. If you want to learn Web technologies, go ahead. But please don't inflict them on newbies. And PHP is not environment that anyone can easily install on their PC and play with.

      I think you have strange ideas about what a real beginner needs to learn. They don't understand while and for loops, and string is something you tie things together with.

    2. Re:Website Programming by Anonymous Coward · · Score: 0

      I agree. PHP while easy to learn has had support added to perform many common daily tasks. It can be used for system administration, web programming and it has GUI extensions in PHP-GTK. Compilers are being developed. Java scares me. Its a hostage to Sun, Oracle, and whom ever patent trolls.

    3. Re:Website Programming by allo · · Score: 0

      there are LAMPP bundles, so its no problem to learn html/css/php/perl and deploying webapps with it.

  41. Python + HTML/CSS/JS by animeshpathak · · Score: 1

    I am teaching a friend the basics of programming, and Python is what I have chosen. Books such as Learn Python the Hard Way [found its ref on StackOverflow, and liked it] are very good for someone who wants to learn programming on their own time.

    That said, I think a lesson in the basics of flowcharting (inputs, outputs, conditionals, loops using counters and conditionals) goes a long way to prepare the student for programming languages.

    HTML/CSS+JS is relevant given

    • how many apps are web apps now, and the developer will likely need to work on it anyway
    • Writing short snippets of markup + code can give some very instant gratification

    The above is from feedback from my friend. YMMV.

    -A

    --
    "- What's so unpleasant about being drunk?"
    "- You ask a glass of water."[from h2g2]
  42. teach them right! by meburke · · Score: 1

    Have them learn LISP.

    --
    "The mind works quicker than you think!"
    1. Re:teach them right! by Anonymous Coward · · Score: 0

      Monster!

    2. Re:teach them right! by Anonymous Coward · · Score: 0

      Exactly! Give them the little schemer and let them rip. When they are old enough to appreciate it, give them SICP.

    3. Re:teach them right! by ignavusinfo · · Score: 1

      Along those lines: Racket: http://docs.racket-lang.org/ ... from download to putting pictures on the screen in 30 seconds.

    4. Re:teach them right! by Savantissimo · · Score: 1

      Or at least something functional: Lisp, Haskell, Scheme, Scala, Erlang, or Clojure.
      The problem is that the ones that you can actually get to do something are a bitch to install and are beginner-unfriendly, and the ones that are designed for teaching are almost impossible to get to do anything interesting. Clojure is the most powerful of the lot, with good libraries and no OO cruft, but it isn't a great instructional language and the installation is not easy.

      --
      "Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
    5. Re:teach them right! by Kaz+Kylheku · · Score: 1

      Lisp isn't functional, but supports functional programming approaches. If you want some pocket of your program to be purely functional, you can do that.

      Functional-only languages are going to be brain-damaging to newbies, who require a broad exposure to what computing is about.

      In Lisp you can use normal data structures and flip bits inside them, assign to variables and perform goto.

      Moreover, there is regular, non-propeller-head I/O without any bizarre cruft like monads.

      Order of evaluation is strictly left to right, without nasty surprises or annoying hacking to coax order when it's required.

      Also, the overall environment is destructive. You can re-define functions, change global variables, etc. You can save your work to an image, and load it later.

      Functional, haha. Gee, let's teach students music using perfect ratio intervals on a plywood box with one string ...

  43. Probably not the root of the problem... by fuzzyfuzzyfungus · · Score: 2

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

    1. Re:Probably not the root of the problem... by melikamp · · Score: 1

      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.

      When I was a kid, we were playing pretty intimidating games by Konami. And even the earliest DOS games, like Digger, Tetris, Sopwith, were nothing to sneeze at. That didn't prevent me from having oodles of fun while programming my own rogue-like game, or just drawing line art with MSX Basic. Having a game behave the way I designed it felt very empowering, even though it didn't look like much to others.

      You probably will think I am crazy, but IMHO, some kids may find it fun to learn PostScript. It certainly is not a language for creating interactive applications, but it makes it super-easy to draw stuff. It has probably the cleanest syntax I've ever seen, only a handful of commands, and it teaches the user about plane geometry (coordinates and transformations) and stack.

    2. Re:Probably not the root of the problem... by darkwing_bmf · · Score: 1

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

      Absolutely. I was just thinking the same thing. The draw, back in the day, wasn't the language itself but directly controlling the computer. Robotics is still new enough that just getting it to do simple tasks would be great for a "wow" factor.

  44. TI-BASIC by gman003 · · Score: 3, Informative

    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.

  45. JavaScript and Perl are not for beginners by Anonymous Coward · · Score: 0

    Both JavaScript and Perl scripting languages have a strange nuance that can be difficult for beginners to grasp. I am in computation neuroscience where you get a lot of non-programmers. The flow of Matlab -> Python -> C++ seems to work the best. Where Matlab is only necessary for a semester before moving on. People will stop on the language that suits them the best.

    1. Re:JavaScript and Perl are not for beginners by cryptographrix · · Score: 1

      I dunno...I find perl easy to teach to people...especially if they have already experimented with batch files or other rudimentary forms of coding.

  46. AppleScript by jomama717 · · Score: 1

    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 concept of input, output, and the foundations of procedural programming.

    I have heard the argument that functional languages should be used to teach young minds how to program, but I just don't think a very young child would grasp the recursive nature of it.

    --
    while [ 1 ]; do echo -n -e "\xe2\x95\xb$((($RANDOM&1)+1))"; done
  47. Microsoft's Small Basic by Anonymous Coward · · Score: 1

    Microsoft makes a free beginner's or kid's version of visual basic called Small Basic. It's a Visual Basic .Net compatible version with a subset of the full Visual Basic command set. It's really good for a young person to start out with and the programs created will work in the "Grown-up" version. http://msdn.microsoft.com/en-us/beginner/ff384126.aspx

  48. VB.NET by Anonymous Coward · · Score: 0

    Pretty easy to use and damn powerful....

  49. My $.0317, because I feel like being an ass. by japp1egate · · Score: 1

    With the understanding that I have no knowledge of this language outside of it's name... How about Haskell? :P

    1. Re:My $.0317, because I feel like being an ass. by donscarletti · · Score: 1

      At UNSW (Sydney) we had Haskell in our weeder course, since it would weed out students with prior programming experience but without willingness to learn and adapt as well as it would weed out students without. This is because it is just so different from procedural programming that only a sound understanding of the underlying logic could save you. Always amazing how many students who program during high-school don't have much talent to be top tier, though usually the spend first year feeling arrogant until they realize that the class has caught up 8 months in..

      Then they would quickly start off next semester with "write a MIPS emulator in C!" just to re-iterate that the math department was across the quad and that computers are scary and can only be tamed by scarier hackers.

      By third semester, programming courses are finished, so to celebrate they write Java as assumed knowledge for the core courses, even though you don't touch it in classwork until then. It sounds sadistic, but it worked great, prepared people for the chaotic, unfair mess that is work. Figure things out as you go along, make good guesses and be right, even if you have no way of knowing.

      --
      When Argumentum ad Hominem falls short, try Argumentum ad Matrem
  50. Logo and ML by markov_chain · · Score: 3, Interesting

    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.

    --
    Tsunami -- You can't bring a good wave down!
    1. Re:Logo and ML by Anonymous Coward · · Score: 1

      Logo was the first language I ever saw in 1984 on an apple IIe. In the fourth grade! Being able to manipulate graphical things so simply really sparked an interest in computers. And it taught me my first lesson on loops. I was soon on to Apple basic on a IIc in my very own home.

    2. Re:Logo and ML by Anonymous Coward · · Score: 0

      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.

      umm. so you copied some trivial code to produce some useless graphic. oh well done!

  51. Instant gratification is the problem by MikeRT · · Score: 2

    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.

  52. Scratch got my 6 year old started by ZekeSMZ · · Score: 4, Informative

    MIT's Scratch ( http://scratch.mit.edu/ ) has gotten my kids started with programming. It's fun, and teaches all the fundamentals necessary for learning programming logic.

    1. Re:Scratch got my 6 year old started by gubers33 · · Score: 1

      I know when I took Java in College, my professor had us play with Scratch on the first day of class. Most of the class was familiar with programming already, but the professor wanted to get those not used to programming interested. I have to admit scratch is a fun little language that a kid could play with and get familiar with concepts.

      --
      Just because you are wrong and I called you out on it doesn't mean I am a Troll.
    2. Re:Scratch got my 6 year old started by stating_the_obvious · · Score: 1

      A second for Scratch. Kids can take an idea from concept to execution very quickly. If you want to start 'em even earlier, get them playing with Turtle Art.

  53. for the Mac users by Anonymous Coward · · Score: 0

    I know it's a bit limited to Mac uses, but Carbon in xcode.

  54. Open Object Rexx by Anonymous Coward · · Score: 0

    Free, Simple to use, available on most of platforms, Open source. Although you can do objects and methods, it doesn't force you to do it that way. Easy I/O, and good debugging.. Lots of free extensions available (FTP, Sockets, concurrency, Windows GUI)

  55. Sorta by Moraelin · · Score: 1

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

    But therein lies the rub. It wasn't just the possibility to use BASIC as such. BASIC was just a tool, and the Sinclair BASIC was a piss-poor tool at that, being easily the slowest BASIC of that era. I actually "graduated" directly to machine code after a year, because ZX-81 basic was just too slow, and 1K RAM wasn't enough to run an assembler or compiler.

    What mattered was seeing some fun results.

    Think of it, dunno, like the quests on WoW. Nobody would run across half the continent and back just for the sake of running across half the continent and back. But throw in a reward, and it becomes fun.

    Similarly, nobody learned BASIC for BASIC's sake, and I can assure you that nobody who's not terminally schizophrenic would do something as horrible as converting assembly to hex codes by hand, just for the sake of converting opcodes to hex codes by hand. We did it for the sake of seeing some results at the end.

    I'm not sure most of the BASICs around can work like that. I most certainly wouldn't have learned BASIC for the sake of programming a fucking spreadsheet or a Word macro. When you're a kid and do that in your free time instead of playing something or hanging with some friends, if your dream in life is to make a better spreadsheet macro, you need professional help. Plus, it's not the kind of thing you can brag to other kids about.

    But I think all is not lost. If I were to get some kid interested in coding these days, I'd get them a moddable game. Scripting a new NPC or quest in Fallout New Vegas gets one a tangible reward in a reasonable amount of time, and some bragging rights after you upload it to a couple of mod sites. Or there are several games that are scripted in Python these days, which also has the advantage of being a skill you can take with you to the next game that uses Python for scripts.

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:Sorta by euroq · · Score: 1

      Think of it, dunno, like the quests on WoW. Nobody would run across half the continent and back just for the sake of running across half the continent and back. But throw in a reward, and it becomes fun.

      When I make a Star Wars reference at work, I get a congrats.

      When you make a WoW reference in the context of kids learning a programming language, you get a congrats.

      --
      Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
  56. MOO by Anonymous Coward · · Score: 0

    Check out MOO code. A MOO is like a MUD (remember? The text based RPGs of yester-year?) MOO code offers instant gratification as just a few lines of code can produce something that the beginner user can use right away and see that their adventure in to coding can see immediate results. The syntax is somewhat easy to follow and I've found that learning MOO gives the user a basic understanding of code allowing them to read (not necessarily code in) just about any language.

  57. Simple stuff has been done by fermion · · Score: 5, Interesting
    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.

    --
    "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
    1. Re:Simple stuff has been done by revjtanton · · Score: 1

      You make some great points here! I couldn't agree more. C and C++, to me, are the best places to start.

  58. Good Open Source Games by Normal+Dan · · Score: 1

    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 recreate such an experience in today's world.

    --
    A unique way to learn a language: http://languageloom.com
  59. WTF? by Anonymous Coward · · Score: 0

    Did you say Python deliberately to sound cool around ./? Nobody uses that, except the crackpots at Google. Another unique endemic weirdness is Perl -- used exclusively by Slashdot. Normal people use PHP. I thought you weren't trying to sound cool.

    1. Re:WTF? by TheSpoom · · Score: 1

      It's cool to make fun of PHP here. *shrugs* It's making me a fair bit of money to ignore them. ;^)

      --
      It's better to vote for what you want and not get it than to vote for what you don't want and get it.
      - E. Debs
  60. Re:Nearly any language is a starter language by revjtanton · · Score: 1

    It's still important to get a good base going I think. Start with languages that did it first and understand the concepts then you're in a better place when you get to the more complicated functions.
    http://wibit.net/

  61. Small Basic by smitsco · · Score: 1

    There is Small Basic from Microsoft. http://smallbasic.com/

    From the website FAQ:

    Who is Small Basic for?
    Small Basic is intended for beginners that want to learn programming. In our internal trials we've had success with kids between the ages of 10 and 16. However, it's not limited to just kids; even adults that had an inclination to programming have found Small Basic very helpful in taking that first step.

    1. Re:Small Basic by Anonymous Coward · · Score: 0

      Love it!

  62. Scratch -- the latest from MIT for kids... by mengel · · Score: 3, Informative

    You should definitely look at Scratch, 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...

    --
    - "History shows again and again how nature points out the folly of men" -- Blue Oyster Cult, 'Godzilla'
    1. Re:Scratch -- the latest from MIT for kids... by chortick · · Score: 1

      My son's grade 7 class are using Scratch. He's built some cool things with it, but it seemed like everything was wrapped in protective padding to me. From memory, it's a derivative of Squeak, which is a fairly serious Smalltalk implementation. I became interested in the virtual worlds stuff that the Croquet project was doing, but ran out of cycles before I could get too deep.

  63. Re:Nearly any language is a starter language by Anonymous Coward · · Score: 0

    I agree, and starting with a less pleasant language might weed out those who don't really have the aptitude for programming. Personally, I started with a mid-70's programmable calculator, and went from there the Fortran. If I'd started with C# or something easy like that I might not have become the programmer I am today.

  64. What about PowerBASIC? by Jane+Q.+Public · · Score: 1

    Last I heard, PowerBASIC was still going strong.

  65. real students by the_hellspawn · · Score: 0

    a real student will just do everything in assembly to learn about computers and to program. Only the garbage coder will learn using C# or some other BS language.

    --
    "The laws of science be a harsh mistress." --Bender
  66. This again? by ElectricTurtle · · Score: 1

    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 or JavaScript, but the fact that we still ask ourselves the same question, 'is anything as good as BASIC', every few months betrays the fact that many people must not accept that these successors accomplish the same results for whatever reason.

    No other language I know of has the same instant gratification as BASIC. The strength of BASIC for me was if I wanted to draw a box, all I had to do was set the screen resolution and the coords of the box. That was it, two lines. I didn't have to load a bunch of libraries or write a bunch of arrays or design some placeholder interface to put the box into. I don't think any language will be able to take BASIC's mantle until it regains that level of simplicity and the ease of running and testing what would be to most other languages wholly incomplete or broken programs. There's a lot more opportunity in BASIC to just ask oneself 'what would happen if I did this?' without worrying about creating some huge framework just to test one concept.

    From the age of 12 to about 15 I was really into QBASIC, but all the bad habits I learned from not having to structure things made it basically (heh) impossible for me to move into a 'real' language. I don't know that the paradox can be reconciled that BASIC's strengths are its weaknesses and vice versa. With 'successors' like Python there is an intent for the language to be 'valid' as a 'real' programming language, so it has to be structured in a less forgiving way than BASIC which makes it less approachable, but it makes it easier for those who do work with it to transition to other languages.

    Maybe its better to accept the barriers to entry than to try to come up with another language that is a fun dead end. In some ways BASIC is a trap that should be avoided.

    --
    I support the Slashcott and will not be reading or commenting from 2/10/14 to 2/17/14. Beta is steaming pile of dog shit
    1. Re:This again? by dzfoo · · Score: 1

      No other language I know of has the same instant gratification as BASIC. The strength of BASIC for me was if I wanted to draw a box, all I had to do was set the screen resolution and the coords of the box. That was it, two lines. I didn't have to load a bunch of libraries or write a bunch of arrays or design some placeholder interface to put the box into. I don't think any language will be able to take BASIC's mantle until it regains that level of simplicity and the ease of running and testing what would be to most other languages wholly incomplete or broken programs. There's a lot more opportunity in BASIC to just ask oneself 'what would happen if I did this?' without worrying about creating some huge framework just to test one concept.

      Lucky you! I learned BASIC on a C=64. If I wanted to draw a box, all I had to do was... well, I had to break into the ML monitor and poke the graphics RAM by hand.

      Crap. I remember the C=64 very fondly, but to this day I cannot help feel that it must have been somebody's practical joke to include such powerful combination of graphics and sound hardware--unequaled by most of its contemporary peers--yet absolutely no fscking interface to any of it from the BASIC interpreter.

      On the other hand, precisely for this limitation, C=64 was the gateway drug that started many burgeoning game programmers on their path to 8-bit immortality.

              -dZ.

      --
      Carol vs. Ghost
      ...Can you save Christmas?
  67. 3D Modeller & Scripting by 3CheeseMac · · Score: 0

    These days it is free to try 3D Studio, Maya, or Softimage and they all have scripting built in. These packages make it easy to see the results of logic and equations in real time. I started messing about with BASIC on a C64 when I was seven, but never really got into programming until I started working with these type of 3D modeling/animating/rendering packages in university and my early career. This path eventually led to "real" languages (C++ these days) and full application development. As a bonus, these 3D packages will offer people an artistic outlet which might be of more interest to them. Cheers, 3CM

  68. Processing by Anonymous Coward · · Score: 0

    What about Processing?

    From http://processing.org/about/ - "Processing is a programming language, development environment, and online community that since 2001 has promoted software literacy within the visual arts. Initially created to serve as a software sketchbook and to teach fundamentals of computer programming within a visual context, Processing quickly developed into a tool for creating finished professional work as well. "

  69. Python, Ruby, PHP by DaMP12000 · · Score: 1

    These are all languages which can be easily approached. They all can be run from the command line and have a fairly simple syntax for beginners. They allow to start with a simple one liner 'hello world', and can go all the way to OO concepts, database connections, web dev, interaction with other languages/concepts, etc...
    Also, they provide the instant gratification needed for the beginner as it's easy to find simple projects that would satisfy the needs of a newcomer (creating a simple web form, a script to list all their mp3s, an equation solver, a graph plotter, etc... )

    Personally, I started with BASIC (before I had a computer, writing programs on paper...) and if I had to do it all again, I'd probably go with PHP

  70. How I do by kthreadd · · Score: 1

    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.

  71. Python + Pygame by dr_leviathan · · Score: 2

    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.

    --
    Religion is poison to rationality, and we lose sight of that at our own peril. -- Lurker2288
  72. Scratch by Anonymous Coward · · Score: 0

    scratch.mit.edu

    I've got two kids (8 and 11), and I got them started on Scratch recently. They love it, and I've been amazed at what they've accomplished. My 11 year old has come up with some pretty complex programs on his own, and has already figured out that you can learn a lot by looking at other people's code (which is easy and strongly encouraged on the Scratch site). When they get older, I'll move them on to something like Python, Java, or C#; but for now Scratch is a perfect fit.

    Some of the highlights:

    * Graphical (instead of text-based). This was a big plus. My kids are still learning programming concepts (tests, variables, loops, etc.) but not having to struggle with syntax and compilers. Instant gratification is important with younger kids.

    * Sharing. The scratch website and community is based on sharing (remixing). My kids have learned a lot by looking at other people's programs.

    * Fun. Scratch is sprite-based, which makes it easy to make games and movies...which is what kids want to do.

    * Compatibility. Works on Windows, Mac, and Linux. 'Nuff said.

    I could go on and on, but do yourself a favor and go check it out.

  73. Today is better than 30 years ago by zr-rifle · · Score: 1

    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 me, I don't tell them it was Bill Gates or Steve Jobs, but Jack Tramiel. "Jack WHO?" "Never mind..."

    If I had a kid and she told me she was interested in learning to program, I would pick Python. It is easy to learn and very deep, which good support for imperative and functional programming, other than OO. First thing, I would buy her a book. There are plenty around that start from the basics and work their way up to a simple but rewarding game using PyGame or Pyglet.

    Back on the Vic I could only choose between BASIC (mediocre and slow) and Assembly (obscure and arcane). Today beginners can choose from so many options. The important thing is not knowing "where" to start, but "how". Buy a good book, and if you love what you learn, you'll never stop as long as you live.

    --
    Hack your mind out of its sandbox.
  74. Beginner != Interface builders by TBone · · Score: 2

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

    --

    This space for rent. Call 1-800-STEAK4U

    1. Re:Beginner != Interface builders by Bengie · · Score: 1

      When you create a C# console app, here's what you get

      namespace ConsoleApplication1
      {
              class Program
              {
                      static void Main(string[] args)
                      {
                      }
              }
      }

      I'm not sure "Framework Generator" is the correct term. unless declaring Main for you is just too much.

      People should learn in the console first anyway, because the GUI has it's own logic flow that adds to the complexity.

      Personally, I say C is the best language to start with. I found it very natural to pick-up, which is part of the reason why I got an A in C++ and a C+ in Visual Basic .Net. VB is too English like for me, I stick with Algebraic syntax with C style languages.

    2. Re:Beginner != Interface builders by TBone · · Score: 1

      I didn't say a C# console app - I specifically said Visual C#, in response to people discussing having the Visual* IDEs generate the UI for the programmers, then filling in the back end.

      Using the IDE simply as the debugger/programming environment is fine. But building UIs is putting the cart before the horse. Unless a programmer understands what happens inside the app, they'll never really understand how to make those things hook, affect, and respond to a UI that was just dropped on top of some code.

      --

      This space for rent. Call 1-800-STEAK4U

    3. Re:Beginner != Interface builders by euroq · · Score: 1

      Hey listen, you have some good points, but you are obviously WAAAAAY biased. I mean, come on, are you saying you can't teach programming concepts in a .NET language? You seem to be mad that .NET language programs make UI building easy. You just talked about a bunch of languages that make pretty pictures and visual feedback. But the fact that .NET has BETTER interface builders than all of the other languages makes you mad for some reason. You can program lots of stuff in .NET languages without using framework generators. You can still program the Fibonacci sequence function in .NET. You can still program functional programming.

      You are going way overboard in your dislike of interface builders in saying that one can't program and learn input/logic/output with .NET.

      --
      Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
  75. I've Been Teaching Kodu this Week by mscherotter · · Score: 1

    I've been teaching 10 9-year-olds Kodu Game Lab this week in my home and they love it and are understanding the concepts of event oriented programming while creating computer games. We tried Small Basic but they are all just learning typing and that was a bit of a barrier. Kodu is extremely easy to learn and very fun for kids.

    http://charette.com/blog/fairfax-computer-camp-day-1-kodu-game-lab/
    http://charette.com/blog/fairfax-computer-camp-day-2-small-basic-and-turtle-programming/
    http://charette.com/blog/fairfax-computer-camp-day-3-small-basic-and-kodu/
    http://charette.com/blog/fairfax-computer-camp-day-4-building-and-testing-kodu-games/

    Disclaimer - I work for Microsoft, the creator of Kodu Game Lab and Small Basic.

    Michael S. Scherotter

    --
    Work as if you might live forever, Live as if you might die tomorrow.
  76. Etoys and Python by bill_mcgonigle · · Score: 1

    My daughter (8 years old) will be learning Etoys 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.

    --
    My God, it's Full of Source!
    OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
  77. Start with what you find easiest and move to C by ajs · · Score: 3, Interesting

    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.

    1. Re:Start with what you find easiest and move to C by smbarbour · · Score: 1

      ...and then once you have learned what you set out to learn by programming in C, immediately stop programming in it unless you are doing some heavy-duty programming (like writing an OS or bleeding-edge game development) You can write robust apps in nearly any language, but the language you are using when you make a mistake (and you will make mistakes) will determine what happens. Screw up in Python, Perl, BASIC, Java, etc. and your app will crash. Screw up some memory management in C or C++ and your OS will crash.

    2. Re:Start with what you find easiest and move to C by Skuto · · Score: 1

      Screw up some memory management in C or C++ and your OS will crash.

      Unless you're a kernel hacker or running Windows ME, that's just nonsense.

    3. Re:Start with what you find easiest and move to C by Anonymous Coward · · Score: 0

      Agreed. I started with Java, barely understood it, went on to C, suddenly started understanding a lot about how computers and compilers work, went back to Java, breezed through it.

    4. Re:Start with what you find easiest and move to C by Anonymous Coward · · Score: 0

      That is nonsense. First, memory management will not crash your OS. 2nd, if you can't manage memory you need to learn how to do it. EVERY company I've worked for uses JAVA, C , C++ or Objective C. If you're going to use a C based language then you should have a firm foundation in C. Period.

    5. Re:Start with what you find easiest and move to C by purpledinoz · · Score: 1

      I'm on the fence about this. Does anyone besides me think that a strongly-typed language is more appropriate for learning how to program? I started learning with Pascal, if I remember correctly, was strongly typed. On that train of thought, I think that Java or C# would be a good place to start. But on the other hand, maybe it's more important that the kids get a program running as fast as possible, to keep them interested. I remember a lot of my classmates in high-school completely discouraged by the dozens of compiler errors. I would not recommend Perl though... the syntax is too crazy...

    6. Re:Start with what you find easiest and move to C by ajs · · Score: 1

      Screw up some memory management in C or C++ and your OS will crash.

      Unless you're a kernel hacker or running Windows ME, that's just nonsense.

      I think what the GP was thinking of was the consequences of buffer overflow errors, which, while obviously not impacting to OS stability, directly, can have serious consequences outside of your application.

      It's true that there's a time and a place for a low-level language like C and for a high-level language. This is why I suggest programming at both levels. I'd even suggest trying out Java, C++ and something crazily abstract like Haskell if you have a chance. The more languages you know well, the better job you can do determining what the right tool for the job is.

      However, the reason to program in C once you have your bearings on the basics is to allow you to understand the consequences of your actions in those high level languages. You'll think twice about quite a few things in high level languages once you understand what the costs involved are. Sometimes the costs are worth it, but being able to make that assessment is one of the most important skills of an advanced programmer.

    7. Re:Start with what you find easiest and move to C by toddestan · · Score: 1

      I think what the GP was thinking of was the consequences of buffer overflow errors, which, while obviously not impacting to OS stability, directly, can have serious consequences outside of your application.

      Unless you're running the classic Mac OS or something like that, this shouldn't be a concern. Any modern OS won't let you write directly to other's process's memory like that.

  78. POV-Ray by Anonymous Coward · · Score: 0

    Ok it's not a programming language exactly... But you can script a lot in it, and it has the added bonus of making pretty pictures, perfect for beginners I'd say.

    Adam Gibbons

  79. There's nothing interesting and easy left to do by mlwmohawk · · Score: 1

    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.

  80. python by Verunks · · Score: 1

    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# if you use visual studio(all versions) is intellisense, you don't have to waste time looking at the api to find a function

  81. New Instant gratification by jellomizer · · Score: 1

    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
    1040 IF $D = "N" THEN GOTO 3000
    1050 PRINT "I do not understand your request"
    1060 GOTO 1000
    2000 PRINT "You Escape and you win!! Want to play again? (Y,N)"
    2020 INPUT $D
    2030 IF $D = "Y" THEN GOTO 10
    2040 IF $D = "N" THEN GOTO 3000
    2050 PRINT "I do not understand your request"
    2060 GOTO 2000
    3000 PRINT "BYE"

    Today Instant gratification requires cool GUI drop pictures multiple form input and you better be able to use your mouse or no deal.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    1. Re:New Instant gratification by jnaujok · · Score: 1

      Arrgh! You have a hanging GOSUB in line 30. Line 1030 does a "GOTO 10" instead of a RETURN. You're going to overflow the stack!

      --
      Life, the Universe, and Everything... in my image.
    2. Re:New Instant gratification by jellomizer · · Score: 1

      Sorry My Bad...
      I had GoSubs and returns then i thought i got rid of them just because I wanted to make the program easier for beginners.
      I have been doing more proper coding for a while. It actually took me longer to think about the program as I would had written it when I was 9. Where I couldn't quite understand the advantage of GOSUB and return.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  82. Ruby by glwtta · · Score: 2

    Ruby.

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

    (hey, not everyone's into the Python philosophy)

    --
    sic transit gloria mundi
  83. JavaScript by Anonymous Coward · · Score: 0

    I think almost any language will suffice as a starter language. The reason we all learned on BASIC wasn't because it was 'easy.' It was because all those old computers booted into a BASIC interpreter. You could (and had to) write code directly from the command line, and to make your computer do just about anything, you had to code it. That last is the kicker -- it provided a motivation to code. Javascript has several advantages: 1) You don't need to write a whole program; you can embed one or two lines of script in a web page and it'll do something. 2) Adding dynamic elements to a website is something that kids might actually be interested in doing -- it's a motivation to do the coding. 3) Its syntax is both fairly forgiving and similar enough to standard languages to get kids used to some of the conventions. 4) Firebug provides pretty decent debugging and interactive coding capability. and 5) Unlike purely pedagogical languages, knowledge of JavaScript is useful knowledge.

  84. TI calculators by Anonymous Coward · · Score: 0

    There is still a great platform for teaching kids BASIC and ASSEMBLY.

    TI calculators. This is what I first started hacking on and generates a instant feedback loop for kids who use these calculators in class.

    What better way to reinforce a concept than to program something to help them derive answers from their texts.

    and of course an xkcd reference (http://xkcd.com/768/)

  85. Pascal (history, not recommendation) by icensnow · · Score: 4, Insightful

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

    1. Re:Pascal (history, not recommendation) by dzfoo · · Score: 1

      That's because, with products like Delphi, Pascal may seem to some much less an ancient teaching tool as a robust platform for client/server enterprise applications.

              -dZ.

      --
      Carol vs. Ghost
      ...Can you save Christmas?
    2. Re:Pascal (history, not recommendation) by Threni · · Score: 1

      When would you have ever used Pascal, though, and not Basic or C? As you said, Pascal never made it onto any popular home computers. Sure, they taught it in college/university, but that went for prolog and lisp etc! This was probably as good an example as any of the changes since the 1980s'/90's and today - it's all about the money. Nothing gets taught/done unless there's some sort of payoff just around the corner.

    3. Re:Pascal (history, not recommendation) by Apotsy · · Score: 1

      The old "classic" Mac OS used Pascal as a first-class development language for almost its entire existence. Eventually C gained more traction, but even so Apple published "universal headers" which included interfaces for every API in C, Pascal, and asm right up until the OS X conversion.

    4. Re:Pascal (history, not recommendation) by cpm99352 · · Score: 2

      Borland made history by selling their Turbo Pascal compiler for something like $25 or $50 back in the mid 80's. That was a screaming deal. Pascal was taught as CS100/101/etc where I went to school. Lisp & Prolog were just electives, not used by anyone except the AI people.

    5. Re:Pascal (history, not recommendation) by justdave72 · · Score: 1

      All of the things I always saw bandied about as reasons to use Pascal are now frequently tossed around as reasons to use Python. As far as I can tell, within the circles that always promoted it, Python seems to have replaced Pascal. I don't get around a whole lot though, so "as far as I can tell" isn't very far. ;)

    6. Re:Pascal (history, not recommendation) by Anonymous Coward · · Score: 0

      Why not? Free Pascal and the Lazarus IDE and you can write it once and compile it for *NIX, Win or OSX... Not to mention that the language is very easy to teach.

    7. Re:Pascal (history, not recommendation) by Anonymous Coward · · Score: 1

      Pascal is still being used, check out www.freepascal.org (and lazarus.freepascal.org). And, of course Delphi (www.borland.com).

    8. Re:Pascal (history, not recommendation) by Savantissimo · · Score: 1

      Off topic, but that reminds me of how much it pisses me off how Corel has neglected the best desktop and small business database there ever was: Paradox. I still miss ObjectPAL and QBE. By comparison, SQL and its offspring are like going back to stone tools, and Access...Access! bah! [spits].

      --
      "Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
    9. Re:Pascal (history, not recommendation) by Anonymous Coward · · Score: 0

      Its alive in "Delphi" and "Free Pascal" form... and his principles very much inside of popular platforms like java (with modula3 inspired library) or Net (with delphi inspired framework)

      Many Nickaus Wirth students are more or less now redoing oberon_2 style technologies... but just under popular/trendy names (some of the most well know work at microsoft)

      I will not be surpriced if the "next big thing" for dotNet design its component integration by live object model user space extention the way OberonF (or BlackBox Component Pascal) work

    10. Re:Pascal (history, not recommendation) by wwphx · · Score: 1

      Pascal is a wonderful system. I was working for a play-by-mail game company in the early 80's and their new programs were being written on Northstar CP-M machines running the UCSD P system which was both an OS and development language. They're still running the same code on modern hardware. That is absolutely awesome.

      --
      When you sympathize with stupidity, you start thinking like an idiot.
  86. TI-BASIC by Anonymous Coward · · Score: 0

    Still alive and well. Gui implementation is very simple, and it has a lot of features for expanding. Besides, most high school students have a graphing calculator and many are bored in class. That's how I learned basic programming.

  87. Post-BASIC world? by Kaz+Kylheku · · Score: 1

    As in what, 1987 and onward?

  88. LSL - SecondLife, Python by JoeCommodore · · Score: 1

    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.

    --
    "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
  89. Re:Nearly any language is a starter language by Weezul · · Score: 1

    There are a number of universities using Haskell for their intro to computer science courses. Haskell is a lovely language but maybe second only to C++ in complexity. You need not use all that complexity however.

    --
    The Christian religion has been and still is the principal enemy of moral progress in the world. -- Bertrand Russell
  90. The project rather than the language by CrowdedBrainzzzsand9 · · Score: 1

    Think about the project rather than the language. For example, a simple off-the-shelf robot kit with an embedded high-level programming environment may capture a newbie's imagination. Raise/lower the arm once. Then five times. Then with a five-second pause in between. Then when it's sound sensor kicks off...etc.

    A suitable kit would have a fairly abstract library (and likely a language like C or Basic).

    1. Re:The project rather than the language by Vapula · · Score: 1

      Big-trak anyone ? ;-)

  91. Why not use BASIC? by thesandtiger · · Score: 1

    If you liked BASIC for learning why not install an interpreter and use that? It isn't state of the art by any means, but it would be a very simple introduction to the concepts. Once someone has some feel for that then you could move on to something modern if you felt they couldn't handle that right away.

    Alternatively, my university uses Java for our intro to programming classes for people with no programming experience at all. The environment we use for it is DrJava which is free and designed around being a learning tool. Better still, there are tons of CS 101 course syllabi out there that would give you a very good lesson plan to start with in that environment if you wanted to teach with that.

    Personally, I'd say the tool to use depends on the student and the purpose. If it is someone just looking to understand a little bit about programming but won't be doing more, then let them play with BASIC since that is really easy to get into. If it's a child you are introducing to the concept or someone who wants to eventually get to advanced things, go with the DrJava route.

    --
    Since I can't tell them apart, I treat all ACs as the same person.
  92. I do not own an iOS device by tepples · · Score: 1

    I'll even link them since the poster can't do basic research before Apple-bashing

    I do not own an iOS device with which to do research. In what way should I do the appropriate research next time?

    1. Re:I do not own an iOS device by Anonymous Coward · · Score: 1

      Try the Internet? Google, maybe? That's how I found those links. I typed "basic language apps for iphone" into Google. Here, I made a link for you so you don't even have to do that:

      I'll Google That For You

    2. Re:I do not own an iOS device by Anonymous Coward · · Score: 0

      I'll even link them since the poster can't do basic research before Apple-bashing

      I do not own an iOS device with which to do research. In what way should I do the appropriate research next time?

      You can start by not commenting on stuff you do not know about.

    3. Re:I do not own an iOS device by tepples · · Score: 0

      I expected typing "basic language apps for iphone" into Google to return a list of apps for learning spoken languages at a basic level.

    4. Re:I do not own an iOS device by tepples · · Score: 1

      You can start by not commenting on stuff you do not know about.

      I did know about Apple's previous policy of rejecting applications that allow typing in a BASIC program. What I didn't know about was a change in Apple's approval policy since the date of publication of the article that I linked that allowed these applications to be made and released. How do you recommend that I keep up with such changes other than by buying an iPod touch or iPad that I don't plan to otherwise use?

    5. Re:I do not own an iOS device by Anonymous Coward · · Score: 0

      It does. It also returns apps for programming in Basic (the second and third links listed in the results).

      PROTIP: Sometimes when searching on the internet (using the Google or other search engines) you get some results that are not what you are looking for, and some results that you are what you are looking for.

    6. Re:I do not own an iOS device by fscking_coward_2001 · · Score: 1

      How do you recommend that I keep up with such changes other than by buying an iPod touch or iPad that I don't plan to otherwise use?

      Nobody said you had to keep up with the changes. The suggestion was that you do some minimal fact checking before posting. Don't worry, a little googling before posting won't make anyone think you're a "cool kid".

    7. Re:I do not own an iOS device by tepples · · Score: 1

      PROTIP: Sometimes when searching on the internet (using the Google or other search engines) you get some results that are not what you are looking for, and some results that you are what you are looking for.

      And a lot of times, I get pages of results that are not what I'm looking for, and I can't think of any keywords that would give the pages that are what I'm looking for.

    8. Re:I do not own an iOS device by Anonymous Coward · · Score: 0

      That just means you're bad at using search engines. In this case simply adding the word "programmng" increases the relevance of results immensely.

  93. Alice by JoeCommodore · · Score: 1

    As far as non SL virtual world languages - Alice would be another good contender.

    --
    "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
  94. A JavaScript interpreter is an interpreter by tepples · · Score: 1

    All interpreters are banned [...] they run javascript sites just fine

    How do iPod touch, iPhone, and iPad devices run JavaScript sites without a JavaScript interpreter? The answer to this question helps explain why I recommended JavaScript over BASIC in another comment.

    1. Re:A JavaScript interpreter is an interpreter by MightyYar · · Score: 1

      How do iPod touch, iPhone, and iPad devices run JavaScript sites without a JavaScript interpreter?

      Javascript is provided by Apple, so it is obviously allowed.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
  95. Lua by Anonymous Coward · · Score: 0

    Lua. It's C-like, and you can write WoW mods in it.

  96. Assembler by Narishma · · Score: 3, Interesting
    --
    Mada mada dane.
    1. Re:Assembler by dzfoo · · Score: 1

      Thank you for that! A most interesting read, and something I've always recommended, except that in my version kids start with C and move directly to Assembly.

      From there, as they say, the computer world is their oyster.

                  -dZ.

      --
      Carol vs. Ghost
      ...Can you save Christmas?
    2. Re:Assembler by darkwing_bmf · · Score: 1

      That's article is very good. When I first learned assembler I was most reminded of BASIC. The author is correct that they've very similar structurally and both very direct (as opposed to abstract).

    3. Re:Assembler by Kaz+Kylheku · · Score: 1

      I started with machine language and BASIC at the same time. It was beneficial to attack computing from different angles.

      I wrote a routine in machine language and also wrote a BASIC program to do the same thing. I was amazed at how much faster the machine language routine was.

  97. Article author has rose-coloured glasses by msobkow · · Score: 1

    How do you get the instant gratification we oldies got when sitting down in front of the early-80s home computers?"

    Someone forgets trying to do things in BASIC, only to find it's too slow, and being forced to learn assembly/machine language.

    Someone forgets the hours of pouring over hardware manuals trying to figure out the right registers and addresses to do anything so simple as getting keyboard input.

    Someone forgets that in the '80s, computing was about anything but instant gratification.

    --
    I do not fail; I succeed at finding out what does not work.
  98. Winbatch and Webbatch by Anonymous Coward · · Score: 0

    Well, I believe that Wilsonware's Winbatch with compiler is great. It is both basic-like and provides the capabilities of incorporating other languages within its structure. GUI display capabilities are all built in and totally customizable. The compiled code is free to distribute. There is also a non-compiled version, but the code is only distributable within a network.

    I have been using it for about 8 years and i have been able to code and others have been able to code quite complex systems.

    They also offer a product for creating web automation called Webbatch but i have no experience with it. Many seem to love it.

  99. It's a generational thing by mswhippingboy · · Score: 1

    My first exposure to programming was typing in the line PRINT "HELLO" on a Burroughs B6700 terminal and seeing it reply back HELLO. How it could do that intrigued me so much that I HAD to figure out how it worked. Perhaps that triggered some latent OCD I was unaware of at the time, but that was over 35 years ago and I haven't been the same since. The need to understand, all the way down to the level of how the electricity coming out of the wall socket was transformed into what seemed to me at the time, an intelligent machine, has driven me throughout the years. Though I understand much more now, and the "ghost in the machine" gave way to simple logic and algorithms, the curiosity that my first encounter inspired has never left me and I still have the need to understand how every new technology that's been layered on top continues to drive me on.

    I've since tried to instill this same inspiration in other people, including my children and anyone else who will listen, but I've not met with much success. Most people I encounter who've come to programming over the last 25 or so year don't seem as "curious" about the inner workings of the machines. Perhaps it's because they grew up with already sophisticated computers and the "magic" is just taken for granted. Perhaps it just takes a particular form of OCD to appreciate it. I don't know. What I do know is that it's hard to get someone inspired using a language like standard BASIC because they won't get excited about something as simple as PRINT "HELLO". They expect, within a few minutes to be able to create some fantastic, world changing first person shooter, and when they find out how much work is involved they soon lose interest. Try to explain a modern language like Java, C# or even VB to them and they begin fidgeting and looking for the door.

    The bottom line is, I don't think the language is that important - just about any language will do. Instilling the interest and desire to learn is the hard part and frankly, I've haven't figured out how to do that yet.

    --
    Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
  100. VB Script is accesible, but not best by Anonymous Coward · · Score: 0

    Can't claim it's the best way, but I've done several summer youth courses that didn't allow internet access or outside software; I used VBSCRIPT. Starting with "Hello, World", we went to the typical guessing game. Then those that were still interested moved onto games with repeating turns or rounds.

    msgbox “Hello, World”
    - - - - -
    Name=inputbox(“What is your name?”)
    msgbox=”Hello, “ & Name
    if len(Name)>5 then yn = inputbox(“Do you have a nickname? (y/n) >”)
    if yn = “y” then NickName = inputbox(“What is your nickname?”)
    msgbox=”Thanks, ” & NickName
    - - - - -
    sub shownumber
    randomize
    dim max,min
    max=10
    min=1
    rand=(int((max-min+1)*rnd+min))
    msgbox rand,0
    end sub
    do until reply = 7
    reply = msgbox(“show a random number?”,4)
    if reply=6 then
    shownumber()
    else
    exit do
    end if
    loop
    - - - - -
    I've also used Visual Pinball to introduce some of the concepts; adding scoring, extra flippers, and lighting patterns involves some logical thought.

  101. Linux Shell by Richard_J_N · · Score: 1

    Bash isn't an especially pretty language, but it allows huge flexibility, by chaining together all the CLI commands.
    This makes it really easy to program quite advanced behaviour. Things like:
            echo hello | festival --tts
    or
          zenity --info --text "`fortune`"
    or
        cat document.pdf | ssh hostname lpr

    1. Re:Linux Shell by FlyingGuy · · Score: 1

      Uhhg that is a horrible idea.

      This is no denying the utility of the various *nix shells but they are extremely quirky and very fussy. One bit of white space or lack thereof will make them explode as they are very brittle in that way.

      Those are NOT what you use to teach basic concepts. Computers are about looping and branching and that is what they need to learn in a language that is very forgiving.

      Languages that blow up when things are not just perfect will push kids away since the vast majority of 10 year old's don't have the patients for that kind of crap.

      --
      Hey KID! Yeah you, get the fuck off my lawn!
    2. Re:Linux Shell by Richard_J_N · · Score: 1

      Well, you're right that bash is an acquired taste, for example using '$' as an operator to print the value of a variable. But the upside is the enormous number of Linux CLI commands available, all of which can do amazing things. What I'm really arguing for is to teach the use of the CLI, and the tools that are available, with just the merest smattering of shell-scripting to go with it. I speak from some experience - I've written 3000-line monsters in shell, and it's not especially pretty. Incidentally, the quirks of bash are much less severe if one teaches it as bash-scripting, rather than sh-scripting with some bash extensions.

      Lastly, I'd argue that what programming students most want is immediate feedback, at the prompt. Bash is as good as BASIC in that regard. Eg:
        echo -n "What's your name: "; read NAME; echo "HELLO $NAME"
      Admittedly other languages have shells (eg Python), but what Bash suffers in quirkiness, it makes up for by being so tightly integrated with every other command.

  102. 8 bit micro emulator + assembler by Anonymous Coward · · Score: 1

    Nothing better than assembler to teach what is really going on with a computer.

    The old 8 bit micros were easy to come up to speed on (Z80, 6502).

    My first class was assembler on Z80. First assignment was write an editor we were required to use for all our text editing for the rest of the class (you could tell who used theirs, as our editors kept acquiring features as the semester progressed), second assignment, write a dissassembler (also handy), last assignment write a compiler. Very useful class. After that semester, self taught 6502, then 8086 over the summer.

    ARM is supposed to have a pretty clean instruction set, so maybe even use ARM instead of an old 8 bit micro. x86 is ugly-- as a beginner, would stay away from it.

    Assembler leads to understanding at a deeper level, this deep understanding transfers to better use of compiled / interpreted languages too. E.g., on modern CPUs with deep pipelines, branches are very expensive. Most folks who cut there teeth on basic and python type languages are ignorant of this. Once you _see_ this happen, you are motivated to find out, "Is putting the more common code path as the default in a conditional better optimized by this compiler/interpreter?" The result is a lot less of the crappy code that is so common today (regardless of language).

    Now get off my lawn.

    1. Re:8 bit micro emulator + assembler by macs4all · · Score: 2

      ARM is supposed to have a pretty clean instruction set, so maybe even use ARM instead of an old 8 bit micro. x86 is ugly-- as a beginner, would stay away from it.

      Um, ARMs may have a "clean" instruction set; but it is NOT designed for humans to code in!

      I cut my teeth on 6502 assembler and Integer BASIC on the Apple 1 and Apple ][, and I am here to tell you that the 6502 is, hands-down, the easiest CPU to code Assembler in (6800 being a close, and somewhat related, second).

      My suggestion would be to find a good Apple ][ emulator (I think that machine has been emulated on virtually (haha) every single platform). And with the speeds of modern CPUs, it is WAY easy to emulate at, or even well beyond, "bare metal" speeds. Heck, you could probably code an Apple ][ emulation in an INTERPRETED language on today's computers!

      But serously, having coded for a wide variety of 8 bit personal computers, and an even wider variety of 8/16/32 bit microprocessors and microcontrollers, I still enjoyed coding on the 6502 more than any other micro, hands-down.

      I do believe in the basic (haha) premise that you should learn assembler first, otherwise, the CPU is too much of a "black box", and you never develop a true understanding of the low-level stuff that is going on. And BASIC, and particularly a character-based, interpreted BASIC, is the best for learning program flow, logic control, and (yes you CAN do it in BASIC) good program design.

    2. Re:8 bit micro emulator + assembler by mswhippingboy · · Score: 1

      6502 is, hands-down, the easiest CPU to code Assembler in (6800 being a close, and somewhat related, second).

      I disagree. I learned assembler on an IBM 360 before I started developing on microprocessors. With no multiply or divide instructions and no instructions to perform block moves or byte translation, not to mention the lack of powerful macro assembler capabilities, it was hard just to get any meaningful algorithms implemented without writing pages and pages of code. IBM ALC felt like a high level language compared to the 6502, 6800 or (god forbid) the 8080. I remember I missed the more powerful instructions so much, I developed my own 360 instruction set emulator so I could keep programming in ALC on my home machine.

      --
      Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
    3. Re:8 bit micro emulator + assembler by Anonymous Coward · · Score: 0

      Um, ARMs may have a "clean" instruction set; but it is NOT designed for humans to code in!

      Definitely, ARM is not designed for compilers.Maybe it's designed for aliens?

  103. LiveCode by bitshark · · Score: 1

    While I did start with BASIC at age 7, my first foray into computer programming was with Livecode. LiveCode (Formerly Revolution) is a spinoff of Apple's HyperCard that fares incredibly well in commercial and educational markets. www.runrev.com has the details. I used to teach 5th graders programming with it, and it's so simple yet so powerful that we'd build networked starship simulation software for a local space education center (www.spacecamputah.org). It's an incredible platform to build on, and it has all the types of control structures and interactivity you'd hope for (Except objects, kind-of: I would teach OOP on a limited basis, since your GUI elements behave like objects; but there are no real logic-only objects in LiveCode).

    1. Re:LiveCode by boley1 · · Score: 1

      I agree. LiveCode is the closest thing to HyperCard. For a few years I had a series of high school students come through my shop working part time. I would give them some simple programming projects with LiveCode (Revolution then), with minimal instruction, and they would learn it very quickly. One of the students caught the fever and went on get a Computer Science Degree.

      Works on Mac, Win, and Linux

      My second choice would be Javascript, giving care to use progressively interesting examples.

  104. Depend on the age of the beginner by Vapula · · Score: 1

    If it's to teach to young children, I think that good choices could be
    - scratch (scratch.mit.edu) a graphical langage that may help to understand basic algorithmic on a visual interface
    - futurepinball (futurepinball.com) a pinball emulator which uses event-driven basic to manage the controls
    Both have a ludic aspect that may appeal to children

    If they are a little older, HTML then HTML+PHP could be a good choice. Javascript is a pain in the a** when it comes to complex programming (and I don't even talk about the cross browser nightmares). As a bonus, PHP may be used as command-line.

    I'd avoid Python (a missing space may trigger a logic error with no syntax error which could become a pain for debugging), Java, C++ and C# (and other object oriented) as OOP is far from intuitive and C or Pascal (and similar) for the memory allocation problems. PERL seems a little un-intuitive (even if it's a great langage) and Reverse polish (Scheme/Lisp/...) is also a big problem.

    If they are a little hardware oriented, Arduino or plain AVR/PIC microcontroller could be great (and there are good cheap devkits including lots of leds, buttons, an LCD screen, ...)

  105. Starter by fyngyrz · · Score: 1

    Speaking as one of those persons that got started back in the 70's, the best casual starter that I am aware of today is python -- best to work with print statement oriented programming as you get extremely fast feedback on your code. Best also to have a mentor around.

    --
    I've fallen off your lawn, and I can't get up.
    1. Re:Starter by Anonymous Coward · · Score: 0
      Python is a mess. Several versions released quickly one after the other, is it 2.4, 2.5, 2.6 or 2.7? Or 3? Did you install a 32 bit or 64 bit version? How can you tell? Quick, how do you access a serial port? Will it work the same under Windows and Linux? Why is it crashing again? Why didn't the windows installer for that module install itself? It SAID it was for Python 2.7, yet it says it can't find a Python install? How was I supposed to know you have to enter python setup install except when you don't?

      Python is a counter-productive, space-sensitive monster. Kill it quickly, please.

    2. Re:Starter by somersault · · Score: 1

      I doubt the print command has changed much in all those versions.

      I don't know what the submitter means when he says you can't do much with scripting languages though. There are libraries out there for everything these days. You could write a networked OpenGL game in a scripting language if you really wanted to.

      --
      which is totally what she said
    3. Re:Starter by Anonymous Coward · · Score: 0
      "I doubt the print command has changed much in all those versions."

      Then just use ECHO, jackass. Python is sold as this wonderful thing when it's a Babel Tower of mishmashes that just don't work. Indeed, if all you want is print, by all means, go with Python. Why do I need 25 libraries and modules to put a byte in a UART again?

    4. Re:Starter by Anonymous Coward · · Score: 0

      Actually, it has... http://docs.python.org/release/3.0.1/whatsnew/3.0.html Python is a mess.

    5. Re:Starter by Z00L00K · · Score: 1

      And you end up in the modern world version of Basic if you use Python. Repeating the same mistakes, rinse and try again.

      There are other languages around, and compiling languages with strict syntax and data type checking teaches students that there is a difference between two similar objects.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  106. Out of the box support by SQLGuru · · Score: 1

    If you are looking for a language that is supported out of the box on ever major operating system released in the past 10 years, the answer is Javascript. Editor -- the built in text editor; Execution -- browser; Debugging -- well, if it's a modern OS with a modern browser (IE8+, FF+FireBug, Chrome+FireBug) you can debug.

    There are plenty of examples online. It has a visual result that gives instant gratification. It has a syntax that leads towards "real" languages (don't flame, you know what I mean). And, given the future direction of HTML5 + Javascript, it sets you up for future success if you decide to continue.

  107. What's wrong with C? by Anonymous Coward · · Score: 0

    What's so wrong with learning C as a first programming language?. I taught myself C when I was 12 and looking back now it was the perfect choice.
    It's a strictly procedural language without any bells and whistles and the C like syntax is used by a variety of other languages.
    Ok, you won't get impressive results for some time, but with graphics libraries like Allegro or SDL you can produce some nice graphic effects or program simple games while still being platform independent.
    Furthermore I think is important for a novice programmer to get used to resource allocation and deallocation . As even in a garbage collected environment allocation related problems can still occur when the programmer doesn't think about resource management.

    1. Re:What's wrong with C? by jjohnson · · Score: 1

      You're a freak. You probably try to eat a turkey by putting one end in your mouth and pushing really hard.

      Seriously, good on you for picking it up the right way at 12, but you're extremely unique in terms of people, their optimal learning strategies, and what they're likely to keep working at without payoff.

      --
      Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
  108. Re:Different expectations makes gratification hard by itsdapead · · Score: 1

    They'll never get excited by very simple things like I have been.

    Ah, yes, I remember buying* a "professional" game and thinking "Heck, who published this? If they'll sell this crap they'll probably sell something I can knock up in a weekend. I was right, and while I never joined the "whaddya mean you won't insure my Ferrari until I turn 18" club I did buy a Honda 70 (look - I had parents!) and my computer habit was pretty much self-funding from then on.

    However, it would be interesting to put your assertion to the test, and see how satisfied kids would be with simple programming if *they* were in control. After all, some kids still paint pictures, take photos, make videos, form bands and don't seem worried that the output isn't as good as they see on TV. However, even back in the day. making a blob fly around the screen or coaxing a tune out of a Trash-80 clone didn't float everybody's boat.

    (*Memory a bit hazy on the "buying" bit actually :-) )

    --
    In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
  109. Microsoft Small Basic? by pentalive · · Score: 2
    • 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.
  110. Such a strange question.There's plenty for newbies by Anonymous Coward · · Score: 0

    Besides everything I imagine everyone else is throwing out. It's very easy (and free) to pick up unity3d and start doing things. It uses their own version of javascript (or c# or boo). I found it incredibly easy to do simple things with javascript and unity3d. And it's that much more interesting and impressive because it's 3d.

    I would say you should have someone who knows programming sitting close at hand just because it looks so big and complex and the tutorials aren't as good as they could be.

    If you really want to teach them though, don't ruin their lives! (kidding... sorta) If you know C, teach them C. I can only dream how my life might have went if I'd just had the good fortune to know someone who knew C and was willing to teach me.

  111. Perl by TarpaKungs · · Score: 1

    Seriously... If you dispense with use strict/use warnings it handles pretty much like basic with a hint of structure. I was asking exactly the same question the other week with regard to what to start my daughter (aged 7) off on. I went through some mental deliberations and settled on perl. She's taken to it as well as I did Sinclair BASIC at a much older age, She can't write anything from scratch (that would be expecting a LOT of such an age group) but she is happy to type in a short dictated program. She chooses the subject (times tables, Fibbonnaci etc) and I work out a strategy for building the program up a few lines at a time, with it being runnable as often as possible. She's demonstrated that she can modify it for basic parameters, eg which "times table", "max size of Fibbonnaci number). The best one we've done to date is one that picks 2 random numbers and asks a question like "What is X times Y?" It prompts for an answer and checks it with a friendly "yea" or "bad luck" message. It's not pretty, it's not trendy, it's not GUI but in my humble opinion, she is learning what computers can *really* do.

    --
    Why can't women be like Hedy Lamarr - beautiful, talented and inventors of frequency-hopping spread-spectrum techn
    1. Re:Perl by FlyingGuy · · Score: 1

      Perl of any flavor is not a beginners language by any stretch of the imagination.

      --
      Hey KID! Yeah you, get the fuck off my lawn!
  112. Perl, Python, or Javascript by zildgulf · · Score: 1

    I would likely start a beginner not in VB but maybe Perl or Python or VBScript and C. Why not C++? You can program C in C++.

    I think the older BASIC should be taught if the student wants to go into microcontroller technology, which some of it still requires a knowledge of assembler to program.

    I would teach them how to use the goto in a way that does not create spaghetti code (like when exiting a loop or simulating a control structure that doesn't exist in the programming language).

  113. Alice.org, why do people forget about this one? by Anonymous Coward · · Score: 0

    Seriously, today is better than ever for getting non-programmers interested in programming. Alice provides an awesome IDE with the runtime built in. Carnegie Mellon has developed great lesson plans for several educational levels (and most of them are free). The whole thing is free! Students get to actually run the animations they programmed and see immediate results. The IDE prompts them to make choices they wouldn't have thought they needed to ("Oh you mean I have to pick a direction and speed when I issue a 'walk' animation command?").

  114. Emulators by Dr_Barnowl · · Score: 1

    I showed my daughter BBC BASIC in BeebEm, and she predictably, enjoyed the classic

    10 PRINT "DAD SMELLS"
    20 GOTO 10

  115. Small Basic by narcc · · Score: 2

    Microsoft Small Basic

    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.

  116. Compiler + exceptions = win by Mia'cova · · Score: 2

    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.

    1. Re:Compiler + exceptions = win by Kaz+Kylheku · · Score: 1

      Exception handling is only beneficial for learning/debugging if, when an exception is not handled, the run-time will stop at the point where the exception is thrown (without doing any unwinding!)

      The approach implemented in C++ compilers is an epic fail in this regard. The entire call stack is thrown away, and a function called unhandled() is then called which will abort the program. At that point you get a core dump or debugger attach, etc. There is no info!

      A log of the unwinding would be better, but the best is not to do any unwinding at all. The search for the handler should be completely decoupled from the unwinding, which should not proceed until the target is identified. I don't care about a 19 frame backtrace between the top level and where the exception went off.

      One language that gets this right is Common Lisp. A condition handler (if found) is invoked in a new activation frame. Unwinding takes place when a handler performs a dynamic non-local return (usually by invoking a restart). If a condition is not handled, you can break into the debugger.

      This is very similar to how Windows structured exception handling works, which in turn is similar to CPU exception handling or POSIX signal handling. (When your CPU takes an exception, it is in a new frame; everything about the situation is saved to be able to restart the process from that point.)

      Stopping the program exactly at the point where it went wrong is best for newbies, coupled with an environment where you can inspect the neighborhood of where that problem happened (function arguments and other locals, contents of data structures ...).

    2. Re:Compiler + exceptions = win by luis_a_espinal · · Score: 1

      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.

      ^^^ Proficiency projection.

      Exception handling is yet another abstraction layer that a beginner has to get. All you need, when errors come in, is to get a sigfault and a line error. Better, yet an interpreted environment (like the old QuickBasic) that takes to the line where it blows up, or simple IDEs like the old Turbo Pascal that allows you to debug (and as well, take you to the line where it blows up.)

      The less abstractions the better. If it were true that a more complex system with exceptions were better, then we would have much better programmers now, wouldn't? As it is, that is not the fact. And the fact that we have to stop and wonder if our modern tools (all exception-equipped) are good for teaching the basics to beginners indicates that there is something amiss.

    3. Re:Compiler + exceptions = win by Anonymous Coward · · Score: 0

      It depends on the person. To this day I dislike compilers and their pretense of checking all things when in fact they can't.

      Best way to learn programming in my opinion is in a interpreter loop, that is, run python without a source file and try things there, where they are done RIGHT NOW, just like it was on the C64 (with BASIC).

    4. Re:Compiler + exceptions = win by Mia'cova · · Score: 1

      You can do that with many compiled languages as well. That's what the "immediate window" in visual studio is for. It's available when you hit a break point (and have some context to run the commands in). So in c#, if there's a method I want to poke around in and 'explore,' I'll set a break point and poke around the watch and issue some experimental commands from the immediate window.

    5. Re:Compiler + exceptions = win by Mia'cova · · Score: 1

      Well, a segfault and a line number vs. the IDE jumping to the line, highlighting it, and telling you something like "cannot divide by zero" with the entire callstack and locals so you can see exactly where that input came from.. Or say a file stream is only open for reading so you can't write to it, etc. Let me give you an example from school. I can think of one frustrating time where I spent a good 8 hours trying to fix bugs and leaks in a kernel I was writing. I was implementing multitasking. So you have to swap in/out the memory perfectly for it to work. You make a mistake in one place and it blows up somewhere else, or crashes on exit. It's miserable. I was trying to recommend the environment which provides enough help that a new user won't feel stuck. They'll be able to google any exception text and find an explanation. That's pretty useful compared to a segfault and line number, especially for more obscure problems.

      As far as exception handling being too much abstraction. If you don't know about it, you really won't worry a lot about it. It'll just be information you get for free when something bad happens. To me, that seems like a good trade-off for a newbie.

    6. Re:Compiler + exceptions = win by Mia'cova · · Score: 1

      Some good info. I wasn't recommending c++ though. I was recommending c# or java. The IDEs will break on a thrown exception in user code. You'll see pretty well exactly where you screwed and what you're not allowed to do.

  117. Web or physical... by Urza9814 · · Score: 2

    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.

  118. TRS80 CoCo Emulator by Pro923 · · Score: 1

    I thought about this, and decided to set up a TRS-80 Color Computer emulator in the hopes that the kids would take to it and want to learn how to program it. It's as simple as it gets - real-time basic built right into the OS. The only bummer is that i can't find the original books that came with it - there was one for BASIC, one for EXTENDED BASIC and one for DISK BASIC... Alas the kids just aren't interested. They just don't seem to have the attention span or patience.

  119. Get the noise out of the way. by Foxhoundz · · Score: 1

    As a novice programmer, one thing that kept throwing me off was C++, which I chose as my "beginner" language. I'm all for learning the basic foundations of programming, but Jebus, you can learn that through higher level languages as well. I realized that when I took a break from C++ and tried PHP and Python. The difference was astounding. I finally began to comprehend the principles without having to be incumbered by the complexities of the language getting in the way.

  120. Re:Such a strange question.There's plenty for newb by Anonymous Coward · · Score: 0

    I can only dream how my life might have went if I'd just had the good fortune to know someone who knew C and was willing to teach me.

    Most likely you'd have wound up a junkie on skid row. Just sayin'

  121. Instant gratification with lego robotics by Anonymous Coward · · Score: 0

    FIRST has been pushing at this angle for a while. The Lego mindstorm kits require programming (you can use visual languages and c-like languages), and can be done in initially small pieces, and provide instant gratification that's appealing to people, and provides instant, real-feeling impact. Great for youth and people just starting to learn about programming and thinking through solutions to not-purely-abstract problems. Has that quick feedback cycle I used to get with ye olde Vic-20, but is a more engaging manner.

  122. BASIC, then C by Anonymous Coward · · Score: 0

    BASIC is still a good starter language that can be presented to interested people in their early teens. Then C is the logical next step. Once you know C you can pick up pretty much anything else.

  123. Processing: simple and fun by cullenskink · · Score: 2

    My immeadiate reaction to this article was Python. However there is a fun language out there that gives a lot of bang for your typing called "Processing" it's targeted at artists and rank amateurs. It won't get you a cool prgramming job, (maybe I'm wrong), but it will get you programming with a small language and easy to learn libraries. Lots of examples are included in the compiler download. http://processing.org/ [processing.org]

  124. How about QB64 by meloneg · · Score: 2

    A teenager I'm acquainted with has been geeking-out with http://www.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.

  125. basic256 by Anonymous Coward · · Score: 0

    What about basic-256 I have my 11 year old on it she likes it a lot and seem like a very good place to start before me and the wife bumb her to C and perl

  126. My 9 and 12 year have tried some languages by ProfessorDoom · · Score: 2

    My kids don't mind programming. They both used Alice http://alice.org/ and were meh about it and didn't go back (about two years ago).

    They both like Scratch http://scratch.mit.edu and the 12 year old has moved on to building his own blocks in the Squeak interface underneath it -- so as a starter language I think it has done exactly what we'd like it to do. He's now looking forward to learning python, probably using the media computation materials from Guzdial/Ericson.

    The 9 year old actually prefers Microsoft's Kodu http://research.microsoft.com/en-us/projects/kodu/.

    I'm thinking about working them through some of the material at Bootstrap http://www.bootstrapworld.org/ which is teachScheme for kids.

  127. Visual Basic makes you dumb by RackNine · · Score: 1

    You should read this, "Does Visual Studio Rot the Mind? Ruminations on the Psychology and Aesthetics of Coding" By Charles Petzold http://charlespetzold.com/etc/DoesVisualStudioRotTheMind.html

    --
    We put you on the Internet map,
    www.racknine.com
  128. m68hc11 by Anonymous Coward · · Score: 0

    M68HC11 assembly.

    It's simple enough that anyone should be able to quickly pick it up and develop small programs.

  129. Alice by Anonymous Coward · · Score: 0

    How about Alice or Kodu?

  130. Languages that are good for beginners by jd · · Score: 1
    • Tcl/Tk (GUIs without pain, interpreter for nerds)
    • AspectC++
    • D
    • E
    • Occam-Pi
    • Pike
    • Forth
    • Eiffel
    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    1. Re:Languages that are good for beginners by Savantissimo · · Score: 1

      Proce55ing (JVM front-end, so it runs anywhere, easy, clean, concise, designed for beginners but still powerful lots of graphics capabilities, Arduino microcontroller programming is based on it)

      Frink (the ultimate desktop calculator - JVM-based, runs on anything including phones, 1-click install or web interface, terminal or text-editor interface, can write self-modifying code (eval, 1st-class functions), allows converting nearly any combination of physical units that has ever been used, has obsessively exact date/time arithmetic, number theory functions, default rational arithmetic, arbitrary precision arithmetic, symbolic computation, interval arithmetic, physically dimensioned graphics, animation, natural language translation, currency and inflation-adjusted monetary conversions, Java introspection and embeddability in Java programs ...

      And it's really easy to use, for example, type at the command line:
              teaspoon water c^2 -> gallons gasoline
      it returns:
              3164209.862836101
      Which is the mass-energy equivalent of a teaspoon of water expressed as US gallons of gasoline.

      --
      "Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
    2. Re:Languages that are good for beginners by Anonymous Coward · · Score: 0

      Frink really does have nearly every unit ever. Here is the Frink units file It's quite a fun and informative read, and you'll find out things you didn't know that you didn't know.

  131. Blitz/Monkey languages by Anonymous Coward · · Score: 0

    They're commercial, but Blitz Research's Blitz3D and BlitzMax are great if you want instant graphical output (as in games), covering Windows, OS X and Linux in the same purchase.

    Their new Monkey language is a public domain compiler/translator that outputs to HTML5, Flash, Android, IOS, OpenGL and XNA. The Mojo graphics library for Monkey is commercial, though the demo is the full HTML5 version with a non-commercial license, so it's great for instant 2D-in-a-browser satisfaction, and the language is a great Basic/C++/Java crossover.

    (Disclaimer: I was formerly paid by Blitz Research as support for Blitz, now mainly a tester and enthusiast.)

  132. Lua? by julf · · Score: 1

    Lua is simple, straightforward, high-level enough, and has the instant gratification factor of being useable in games and graphics.

  133. Eiffel by hesiod · · Score: 1

    What, no love for Eiffel? I thought it was supposed to be the greatest first-language ever! Can't blame anyone though... I started learning it a few weeks ago, and it's an irritating mess.

  134. Scripting Languages by Anonymous Coward · · Score: 0

    "scripting languages are good, but limited in what you can do"

    They are? Most widespread "scripting languages" have a ridiculous amount of native libraries available for them that allow you to do just about anything. As an example, I can go online, with nothing on the computer, and in about 10 minutes and 5 lines of code in Python, complete most tasks, at least as proof-of-concept, whether its GUI creation, network protocols, binary file manipulation, OS handling, database manipulation, etc.

    Also, the whole "scripting language" thing is a false dichotomy. I think what you really mean is "interpreted language". Maybe back in the mid-90s when computer speeds were low enough that it was readily apparent what the difference was between compiled and interpreted languages, "scripting language" might have meant something, but not today.

    As far as things being too complex these days, I'd tend to agree---it's absurd the amount of crap overhead has to be accomplished in the name of "proper programming". Nix the GUI and all the frameworks. Just forget it. Grab python, a text editor, and a console and start with

    print 'hello world!'

    Doesn't get much simpler than that.

  135. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  136. Every language has quirks by istartedi · · Score: 1

    Maybe someday we'll have the perfect language that satisfies everybody. Right now, every language has quirks. Beginners are going to have to learn that. You are not going to find a language that doesn't have something like this. If it isn't whitespace, it's a missing semicolon. Ruby? How will a beginner grok the idea that 2 has methods? They think numbers are just numbers. You mean all this time 2 has an entire world full of stuff in it? What's in 6? I'll tell you what's in 6. Quirks. And the quirks are based on quirks. After that, it's turtles.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    1. Re:Every language has quirks by Lehk228 · · Score: 1

      After that, it's turtles.

      but enough about Logo

      --
      Snowden and Manning are heroes.
  137. back-story by Sloppy · · Score: 2

    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.

    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  138. Your Future by Anonymous Coward · · Score: 0

    I think it depends on what you want to do with it in the future.

    I'd pick the platform first; web, desktop, mobile, etc... and then pick a fun, simple starter project to build. I always learn best by building something. Seeing something I dream up take shape right before my eyes. Seeing the fruit of what you actually want to create come to life, on the platform you actually want to build for, will motivate you to learn much more than just dinking around in BASIC.

    1. Re:Your Future by pitr99 · · Score: 1

      I agree. I've programmed in more languages than I can remember (or fit on a resume), and I have found that learning a new language is easiest when I do something that does something cool on screen. IMHO.

  139. Python and Pygame by pcraven · · Score: 1

    I like to teach students with Python and Pygame. By the end of the first semester programming class they can create some fairly complex games. I have videos of these games on-line, along with a free draft version of the textbook we use:

    http://cs.simpson.edu/?q=python_pygame_examples

  140. I'm a little surprised no one's mentioned DBP by DancesWithRobots · · Score: 2

    DarkBasic Pro doesn't have line numbers. DOES have functions. Add-on libraries. It's compiled, free, and high on the instant gratification scale. With a bit of work, (less than just about any other language I can think of off hand,) it can be used to create games that contemporary kids would actually recognize as the sort of games they play.

  141. What do you want beginners to learn? by jasenj1 · · Score: 1

    There's a lot of different questions and concepts going on here.

    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?

    No. But that's not learning to be a programmer. Yes, you can point a beginner at any number of languages with a bit of a reference book or online dictionary and they can hack out something that works. But that is only the most rudimentary lesson in programming.

    I find this to be the case now; scripting languages are good, but limited in what you can do...

    Which sounds perfect for a beginner language. You start with basic concepts like flow control, variables, data structures, and other rudimentary things. If they "get it" and are excited by the potential for doing more, then they are on their way to being programmers. If not, they have been exposed some basic computer science concepts which will do them good in today's world.

    Think of English or History or Art or Mathematics. Most people take classes in those subjects, but few are enthralled to the point of making a career out of any of them. An introductory programming course using Python may help someone hack together some tool later in life, but it does not make them a professional programmer.

    and GUI creation requires students to be familiar with a lot of concepts (event handling, etc.) that aren't intuitive for beginners.

    And is there something wrong with that? GUIs are advanced topics. They require understanding of advanced topics.

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

    There are many languages available today that would work fine as introductory languages. And many students will check off the requirement box and move on. A few will "get the instant gratification" regardless of the language used and move on to more advanced learning.

    You seem to have the implied assumption that if you can make the results of coding "exciting" - flashy graphics, sounds, 3D animations, explosions - then students will be more interested in coding. I doubt that is true. At the end of the day you still sit in front of a computer and push buttons over and over.

    - Jasen.

  142. How about an easy graphical language? by jandrese · · Score: 3, Interesting

    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.

    --

    I read the internet for the articles.
    1. Re:How about an easy graphical language? by Anonymous Coward · · Score: 0

      Many people have lamented the demise of Hypercard, myself included.

    2. Re:How about an easy graphical language? by Anonymous Coward · · Score: 0

      LiveCode (formerly Runtime Revolution) is a great and powerful beginning language. It has its roots in Hypercard and you can develop for mobile devices as well as Win, Mac, and Linux.

    3. Re:How about an easy graphical language? by jandrese · · Score: 1

      Yes, it's an excellent product for the kid with the $275 allowance.

      Ok, that's a little unfair. They do have a $99 package now, but that's still well above what most parents are willing to spend on something their kid may or may not have any interest in. The great thing about Hypercard is that the full development environment came with every Mac sold, so all of those kids just stumbled across it and discovered a love of making computers do what they want.

      --

      I read the internet for the articles.
  143. Because Turbo Pascal made programming cheap enough by Marrow · · Score: 2

    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.

  144. It's the best choice - check out DrRacket by SuperKendall · · Score: 0

    Scheme is an excellent starter language, and teaches concepts you can carry to other languages too...

    It can basically be the new Logo with something like DrRacket.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:It's the best choice - check out DrRacket by Anonymous Coward · · Score: 0

      It's great, if you don't mind spending all of your time counting parentheses...

  145. smallbasic by Anonymous Coward · · Score: 0

    I think small basic was released to solve this problem. I think it is similar to the early versions of visual basic but designed to be easier to understand and get simple programs running.

  146. Pascal or Perl by Anonymous Coward · · Score: 0

    Free Pascal: http://www.freepascal.org/ will get you a free version of PASCAL. Runs on nearly OS and cpu architecture out there. Why PASCAL? Because its easy, not a ton of Libraries to memorize for things like file handling, and the like. Teaches structured programming without the overhang of all those libraries. You get compiled code which means the end program is fast!

    PERL is of course super-easy to just start coding in, there's tons of documentation/tutorials, great for text handling, runs nearly everywhere, and again, no massive library memorization just to open and read files.

    I wouldn't do industrial strength jobs with either, but for learning, simple jobs, utilities etc. both are pretty good. PERL is often the glue-code for things like rotating web logs, or other stuff (yes you can do it in shell scripts, but PERL gives you lots of easy to use modules off CPAN.) Screen scraping is fairly easy with PERL's lib-www.

    1. Re:Pascal or Perl by pitr99 · · Score: 1

      Pascal: agree. I learned Turbo Pascal about 100 years ago, the compiler I got (for free, from Borland) came with Turbo Debugger/Assembler. Learned Pascal quik, and learned ASM from Looking at the Turbo Debugger output. Coming directly from COBOL to PC programming, it made the landing a lot softer. With that said, now there are so many alternatives than 20 years ago. What ever became of the idea of looking at compiler output in ASM with the input source code as comments?

  147. Python and PyQt by at_slashdot · · Score: 1

    Python is pretty nice and simple and if you need GUI is not hard to learn PyQt once you know Python.

    --
    "It is our choices, Harry, that show what we truly are, far more than our abilities." -- Prof. Dumbledore
    1. Re:Python and PyQt by FlyingGuy · · Score: 1

      Python is not a good choice when whitespace can yack the program. Sorry it just isn't.

      --
      Hey KID! Yeah you, get the fuck off my lawn!
  148. Go learn Perl 6. by Ant+P. · · Score: 2

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

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

    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.

    1. Re:Go learn Perl 6. by FlyingGuy · · Score: 1

      Gahhh I would rather try and teach someone brain surgery then perl. The syntax is horrid and it allows you to write unreadable code,

      --
      Hey KID! Yeah you, get the fuck off my lawn!
    2. Re:Go learn Perl 6. by Ant+P. · · Score: 1

      Do you actually have a clue what you're talking about, or are you just regurgitating a meme based on code written over a decade ago in a completely different major version number of the language?

      Also, you might want to get a grasp on writing English correctly first before you criticise programming languages,

  149. Perl by mbrod · · Score: 1

    Perl makes the easy things easy and the hard things possible. I hated programming until I was exposed to Perl. Now I have been doing it professionally for 13 years.

  150. Another vote for Python by stalky14 · · Score: 1

    - Interpreted, so you can quickly test things.
    - Structured enough, but isn't all up in your face about it. Based on natural whitespacing instead of annoying brackets/braces, etc.
    - Only as OO as you want it to be.
    - More words and less cryptic symbols. I absolutely despise C and its ilk because of all the asterisk/ampersand/bracket/brace/parenthesis shit I have to keep track of. If x86 assembly wasn't so godawful itself, I'd even opt for that over C. At least it's easier to read what's going on. Some encourage C++ because of a "just throw 'em into the deep end" mentality. I did okay in C++ classes in college, but knowing that this is what the programming world was predominantly built on completely turned me off to it as a career. Oops, digressing...

  151. The Esperanto of Computing by Anonymous Coward · · Score: 0

    Learn the C subset of C++. You will never have to throw any of it away but you can continue building your skills int until you qualify for a pretty neat job.

    1. Re:The Esperanto of Computing by pitr99 · · Score: 1

      I am not a big C++ programmer, but as a C programmer, I remember learning C++ as "a better C" (not all the class library complications). If I recall correctly, C++ was pretty much billed as "a better C" back in the early 90's, but I forget things a lot now... way too old.

  152. Lua by Anonymous Coward · · Score: 0

    There isn't a scripting language around that has cleaner syntax, a more wellthought set of core concepts (http://www.lua.org), and a gem of a Programming-in-Lua book!

    I taught the language with great success to several batches of undergrad students in a CS department in North East Africa - that experience alone convinced me.

    It doesn't hurt that it is the fastest scripting language currently, and has a just-in-time-compiler variant that just beats them all (http://luajit.org).

    And it's wildly popular with game developers, which novices would probably find enticing.

    Just my 2 c.

  153. Crazy I know.. but COBOL is pretty basic... by DarthVain · · Score: 1

    If your looking for a simple language to start kids on, COBOL is pretty simple stuff.

    Though it might give them the wrong idea about programing. It also isn't really fun, nor can you do "cool" thinks with it... so maybe not. You can make constructs and move data around pretty good, and I can make a mean text menu!

  154. The problem ist not only more complex systems... by Tanuki64 · · Score: 1

    ..or languages.

    When I started computing in the early 80th there were plenty of magazines, which 'taught' programming. Small games, which explanations, which one had to type in oneself. This automatically invited to experiment with the code. Change a line here or there and see what happens. Today? Download everything from the internet. Even if the sourcecode is available, there is no real reason even to see it.

  155. Different langs for OOP vs non-OOP by ashtophoenix · · Score: 1

    I would start with PASCAL or similar to teach basics such as for loops, conditional operators, boolean operators. Then to teach OOP I would probably use C++ (although if there was a simpler language available I'd rather not use C++ to teach OOP).

    --
    Life is about being a Phoenix!
    1. Re:Different langs for OOP vs non-OOP by pitr99 · · Score: 1

      I know it's not available, but Delphi (v7 or less) is OOP as hell. There was a open source Object Pascal (or something, I never looked at it because my employers always supplied me with the latest version Delphi Enterprise).

  156. What about VB .NET? by Anonymous Coward · · Score: 0

    Visual Basic Express is free and is easy to learn and powerful enough to do a lot of good things with it. Plus with mono it'll run on Linux as well.

  157. Gonna get flamed for suggesting this but here goes by Anonymous Coward · · Score: 0

    Second Life has a very nice event based scripting language for scripting some life into your creations. The language is called LSL, very similiar to javascript or actionscript (don't really remember which, it's been a while) and very easy to get into as there are lots of tutorials and guides on the wiki which also explain simple programming concepts for people not yet familiar with programming.

    The reason I suggest it here is because it produces enjoyable results really quickly. Most other languages you usually start with echoing 'hello world' and other text to the standard output, which really isn't that interesting. Drawing stuff like GUIs to screen usually gets complex really fast which you don't want in this case. In Second Life you can also start by sending 'hello world' to the chat, but right after that you can start manipulating the object the script is attached to and do some cool things really fast, like changing it's color or position. Making a simple vehicle responding to key presses should be a fun excercise.

    Once you look past the flying dicks and crap spam, it's a really nice sandbox environment for experimenting.

    I've never used Scratch or Scala so I can't really comment on those. FreePascal, Java and C# are all nice general purpose languages which are fine for learning. I wouldn't advise Python or Ruby as those are quite heavy on abstraction and syntactic sugar. (and c-style braces are better anyway, hahaha)

  158. Functions as designed by Zero__Kelvin · · Score: 0

    If your newbie cannot grasp Python syntax, this is a pretty clear indication that the newbie should not continue their pursuit of programming expertise, and should instead "rise" directly to management. If you don't think the actual execution of your code should change based on whitespace how do you propose the compiler or interpreter differentiate between goto12 and goto 12 ?

    Note that I started with BASIC on the Apple II and use C, C++, Python, bash, html, Java, Javascript, et. Al. so I might be biased with actual knowledge of the subject matter.

    --
    Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  159. Concepts are totally different by Anonymous Coward · · Score: 0

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

    Yes.

    I used to program in BASIC as well. It was logical and everything I wanted was on the screen. I was 10.

    Fast forward 15+ years of not programming, and I've struggled over the last few years to understand the new concepts in programming. I have ideas that I want to implement and doing so in a Bash script sometimes works, but anything more complex is horribly difficult. GUIs are totally out of my league. Functions confuse me with their returns; why can't i just program the app as if it were BASIC? I tried taking Java courses and the concepts that were assumed to be known were far over my head; at a self-learning school (TechSkills) this was just a waste of money.

    I think a big part is the difference between OOP and, well, non-OOP. OOP is implemented in Android AppInventor and after hours of following tutorials and *seeing the mysterious 'objects' on the screen*, which never made any sense to me (objects? its words!), I still have no idea why things don't fit together. Variables don't go where they should in my brain's logic. I was even this morning considering shooting a video of my fumbling, to see if people could identify a few places where I am missing basic concepts.

  160. "Different" is too often confused with "harder" by Zero__Kelvin · · Score: 1

    No, he was not incorrect. Your interpretation of what he wrote is in error. His point is that every language has a set of rules used to indicate scope. Indent blocks equally is no more difficult to grasp than wrap blocks of scope with { and } . In both cases it is a matter of what you get used to, and if you are used to one the other seems more difficult. Python indentation is "harder" if you are used to something else in exactly the same way that Linux is "harder to use" than Windows if all you have ever used is Windows.

    Your "good editor" point works against you. A good editor will handle indentation for you in Python as well as it will with any other language.

    --
    Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  161. You don't need basic... by blahplusplus · · Score: 1

    ... there are fantastic 'teach yourself' books now published. There are primers that explain everything step by step. C++ console programming is perfect for beginners once you have c++ primer plus. It is one of the best books I have found for having the most cogent pedagogy. Stephen is really good at explaining everything so that you "Get it", plus it also gives you a language that *has power* so you're not stuck in la-la land.

    http://www.amazon.com/Primer-Plus-5th-Stephen-Prata/dp/0672326973/

  162. My issue with BASIC by ender- · · Score: 1

    I consider BASIC the primary reason why I'm a sysadmin now, instead of a programmer. The problem I had with BASIC is that after years of tinkering with it as a kid [TI 99/4A, C64, GWBASIC on PC], I had a horrible time learning to get away from the 'GOTO' way of thinking.
    In high school, I took the "Computer Math" class, which was basically learning how to do algebra in BASIC. I took that class because I had experience with BASIC at home, and thought it would help bring me to the next level. It was only years later that I realized that I should have taken the "Computer Science" class, which taught Pascal.

    As a result of only being exposed to BASIC, when I tried to learn other languages or do anything more complicated than drawing circles randomly around the screen, I could never get the hang of functions and pointers and passing variables or whatever. So I decided I was too dumb to be a programmer, and wasted all my time playing games instead. I think if I had taken the Pascal class early on, I'd have had a much better foundation on which to build.

    In the years since, I've become somewhat proficient with bash scripting (with functions and everything) as a sysadmin. I can sorta-kinda read some perl if it's not too obfuscated. I keep trying to learn Python, but I don't do it often enough for it to stick in my head.

    While I have no desire to push my daughter to be a programmer [or do anything computer-centric] I do expect to ensure that she's at least exposed to some sort of programming, so that she has at least a reasonable idea of what makes all her computers and gadgets actually work. I have no desire for BASIC to be the thing that I use for showing her programming. Perhaps LOGO [how can you beat moving a turtle around for a kid?], and maybe Python.

    I like the idea of python because, much like BASIC back in the day, you can very easily start a command line interface, and get action immediately.

    BASIC:
    10 print"Hello"
    RUN

    Python

    >>> print "Hello"

    Quick and simple, but without the danger of getting stuck in the rut of GOTOs.

  163. Perl, yes perl. by goombah99 · · Score: 1

    I'm not defending perl as the best language. But were talking about a starter language replacement for basic, and perl is super good for that.

    Of all the O'reily pocket referecne books perl, is the shortest. Moreover the core language is not evolving and it can do an awful lot, very easily before you import any libraries. The same can't be said of any other language I know of.

    It ubiquitously installed, and there is no compilation environment issue, or library linking. It's portable across machines. And it's machine model is pretty rich so you can interact with the OS very well.

    PLus it's very easy to learn.

    So I would say perl is the best BASIC replacement for starting programming.

    Perl also happens to be one of the very best languages to learn HOW object oriented programming works. It's actually very brutal to do object oriented programming but it is the best one I know of to see how objects hold date, resolve inheritance, psedohash, or introspect. Other languages do all that but they hide it so well you don't have a good understanding of how they do it until you

    After that I would reccomend python when it comes time to write re-usuable programms and modules.

    --
    Some drink at the fountain of knowledge. Others just gargle.
  164. PureBasic is great by Anonymous Coward · · Score: 0

    I would highly recommend PureBasic. It is easy to use, cross platform (Windows, Linux, Mac), compiles down to small exes. Once you have mastered the basics, It has easy to make GUIs, Networking, Serial Port control, 2D and 3D graphics, database access.

    I have used it for several small commercial programs and highly recommend it.

    It is free for small programs and cheap ($99 now I believe) for a life time license on all 3 platforms.

  165. OO is a cult by TheSync · · Score: 1

    Object-oriented programming is a cult.

    It exists to make it more difficult for people to learn programming.

    It does not actually provide any of its stated benefits (such as code re-use).

    Yes, it is nice to have big class libraries, but those could also be big function libraries with little change in benefit.

    1. Re:OO is a cult by pitr99 · · Score: 1

      I disagree and agree. OO for the sake of OO does not make sense. Before I did OO built large, reusable code libraries. OO came into it's own with me when I understood the principles enough to write classes pretty much from scratch so I was not trying to work around the limitations of some one else's implementation. It took me years to get competent at writing truly reusable OO code. I can't imagine teaching it from scratch. Start out using a OOP language as a "better" procedural language and OOP stuff comes in gradually, after learning program structure, design, code reuse etc. But then again, hindsight is a handy pair of rose colored glasses.

    2. Re:OO is a cult by pitr99 · · Score: 1

      I've also forgotten how to punctuate when it does'nt create a syntax error.

    3. Re:OO is a cult by chthon · · Score: 1

      +50 Mucho insightful

  166. APL by Anonymous Coward · · Score: 0

    My first language, which I started out with in junior high school in the 1970s, was APL. This language is easy to learn and quite powerful. There is a free version currently available called NARS2000. A successor language called J (which doesn't use a special character set) is available for free download from www.jsoftware.com.

  167. Genie (dialect of the Vala compiler) by Anonymous Coward · · Score: 0

    The gnome project has Genie dialect for the Vala compiler... compiles to old plain C code binded to the gObject library as oop runtime

  168. Too Many Programs by Arch_Android · · Score: 1

    I'm 14, so this comment is obviously a little biased. Anyway, a big problem for me has been that, for almost anything you'd want to do, there's a program that already exists that does it. I mean, back in the BASIC days, if you wanted to do anything useful, you had to do it yourself.

  169. You think you've got it hard... by NewtonsLaw · · Score: 1

    My first "computer" was a hand-built 2650-based system with just 1Kbyte of RAM and the only programming language available was machine code (hand-coded from assembler and) entered through a hex keypad and debug ROM monitor.

    You kids with your BASIC, Ruby, Javascript etc, you don't know how good you've got it :-)

  170. MATLAB by Anonymous Coward · · Score: 0

    I was pleasantly surprised that MATLAB rekindled the same sort of feelings I had when I was growing up coding BASIC on my old TI-99 and Color Computer. It's not terribly complicated because it has a limited-scope purpose, and you can learn it in stages, which lead all the way up to being able to control physical systems with it.

  171. Beginners have trouble with recursion by Greyfox · · Score: 1

    So they'd have to learn LISP before they learned LISP.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    1. Re:Beginners have trouble with recursion by Kaz+Kylheku · · Score: 1

      Lisp doesn't require beginners to know recursion. You are confusing Lisp and Scheme, likely.  Or maybe you learned Lisp using some one-weekend implementation put together by your professor way back when, rather than Common Lisp. Some wrongheaded teachers also use only a subset of the language for teaching that they consider "pure" and require students to use only those features for their assignments.

      Lisp has looping and goto; furthermore, it has no requirement in the standard (unlike Scheme) that compilers must optimize tail calls, so recursion is not guaranteed to yield efficient solutions.

      Find the maximum in a list iteratively:

        (loop for x in '(1 3 2) maximizing x)
        ==> 3

      more "manually":

      (loop for x in '(1 3 2)
        with max = nil
        when (or (null max) (< x max)) do
          (setf max x)
        finally (return max))

      factorial of 7:

      (loop
         for x from 1 to 7
         for f = 1 then (* f x)
         finally (return f))
      ==> 5040

      Using GO, Lisp's goto:

      (prog ((x 1) (f 1))
      again    ;; arbitrary label
        (when (<= x 7)
          (setf f (* f x))
          (incf x)
          (go again))
        (return f))

      ==> 5040

      But there is nothing wrong with introducing programming newbies to recursion too. After all, to iterate may be human, but to recurse is divine.

  172. Almost any game scripting. by Nallep · · Score: 1

    Many games today come with built in scripting engines. You can learn how to program and have instant gratification of seeing your work being rendered in a 3d intractable environment immediately. I remember seeing a friend learn about object oriented programming by scripting for Unreal Tournament. Pick almost any game and you can start to script for it and it's fun. Just let your imagination come up with all sorts of ideas you wanted to do in game, and go program it. There's no real need to go build your own 3d engine or even have to worry about 3d graphics when you start programming, yet you can easily make use of it all.

  173. Turtlegraphics by Greyfox · · Score: 1
    I used turtlegraphics in logo and pascal when I was young, and really liked the immediate feedback you got when you changed something in the system. You'd just tweak a function, rerun and see what effect your change had on the system.

    BASIC, FORTRAN and COBOL were not so helpful, though BASIC wasn't as toxic as people claim it is.

    Batch programming in DCL (The Vax batch language,) DOS Batch files, UNIX Shell Scripts and IBM's REXX (OS/2 and VM/CMS mainfraimes) was also helpful because when I was doing it I was usually trying to accomplish something. REXX actually had useful data structures in it too. Running up against the limitations of these languages and trying to figure out how to work around them was a good way to learn, as well.

    Java might be OK if you implemented a framework to build into. I've been working with Jmeter lately and it's kind of neat in that you can use it for what it's designed for but if you run into something it can't do you can always write your own extension to it, bundle it into a jar file and drop it into a directory in order to extend the functionality of the system. You can shield yourself from complexity of the system that you don't necessarily want to be exposed to and focus on just the bits you want to change. Perhaps a java-based turtlegraphics system that could be extended like this would be in order. It wouldn't be hard to implement in android or on a PC.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  174. LUA by Anonymous Coward · · Score: 0

    I'm surprised no one has suggested it, i found it to be a really easy and well done language.

  175. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  176. BOO is a great starter language by SlashdotsGuest · · Score: 1

    Try out boo... http://boo.codehaus.org/

  177. Re: Object/ISO Pascal by RandCraw · · Score: 1

    If you won't, then let me advocate Pascal. ISO Pascal adopted most of the OOPL extensions added by Borland's Pascal 4 and Apple's Object Pascal. The resulting OOPL retained most of Pascal's simplicity while integrating all the essentials of OOP. And unlike any practical OOPL I know, ISO Pascal is still explicable in a book of less than 200 pages.

    Today's ISO Pascal is that rare example of a language that has escaped the curse that befalls more popular tools -- the accrual of ugly cruft and dross in order to silence too many squeaky wheels.

  178. To all participating (non trolls) by pitr99 · · Score: 1

    This became a very interesting discussion. I don't think I have ever bookmarked more sites in one day than today. And I don't program for a living any more. Always a geek I guess. Nice to know I'm not the only one.

  179. Lisp, hands down. by Kaz+Kylheku · · Score: 1

    Beware of cheap imitations.

  180. Re:Different expectations makes gratification hard by Anonymous Coward · · Score: 0

    You would be surprised. There's still something profoundly and inherently intoxicating about getting a computer to do your bidding for the first time. I was pretty jaded when I taught Scratch to elementary school kids for the first time last spring, but you should have seen how their eyes lit up when I showed them how to put the logic pieces together to trigger a simple, "When I click this button, make the cartoon cat spin around in circles." I guess what I'm trying to say is, be careful not to be so quick in passing off your own jadedness on to little kids who are still amazed by everything.

    My candidate for this generation would be HTML5 and Javascript. Fast, lightweight, instant gratification, and with canvas and audio it's an instant win. Also, everyone has a web browser (with Command-Click and View Source, probably with syntax highlighting) and it's probably the easiest type of programming to find "on accident". I discovered programming when I was poking around on my brother's old 486 that had QBasic on it. I loaded the program up, found nibbles.bas, and my life changed dramatically since then.

  181. Pascal by Anonymous Coward · · Score: 0

    I started using Pascal on a TRS-80 Model III back in 1987 and I still use it today. In fact, it's one of the easiest cross-platform languages to use for me since I use Free Pascal, which has a compiler for a lot of platforms, and Virtual Pascal. Both are free to boot.

    The problem these days are kids have no patience and no attention span. They want to have it their way right damn now and forget actually trying to learn something and appreciate the value of learning and hard work. I get laughed at by my peers when I tell them I still prefer Pascal over any other language I've tried to use yet when pressed, they cannot tell me why Pascal is "dead" and why they wouldn't use it for developing anything. I guess they've never seen Lazarus and FP at work.

    I will admit I also use REXX and I cut my teeth way back when using BASIC on a Coco 2 and a Commodore 64.

    Like I said earlier, kids today are generally too stupid to want to learn and create-they want something given to them so they can sit on their ass and do nothing.

  182. Go with an OO language by hamburgler007 · · Score: 1

    Personally, I think something like basic is one of the worst languages to start with if you are interested in learning how to program. Sure, it is relatively simple, but therein lies the problem. Basic fosters bad programming habits that tend to transfer over to other languages. I would even recommend avoiding C when starting, even though it is pretty much the backbone to everything out there. I know many excellent C programmers who are very intelligent, but found it difficult to transition over to an object oriented language. I would recommend either C++, Java, or C#. Java and C# are pretty much the same and simpler than C++. C++ is more difficult, however it forces you to think about your applications much more carefully, and if you know C++ transitioning to another language is pretty easy. C++ also exposes you to C. Regardless of the language you choose to learn I would highly recommend picking up a book on design patterns and antipatterns.

  183. Opinions by zer01ife · · Score: 1

    Personally, I grew up learning the C-base programming language ( not C++) and, in these days, I'm learning Assembly language programming in x86 and x88 ( because they're identical to each other -- i.e., both is implemented with parallel processing, as far as I know of these two ).

    Others might agree or disagree with me, depending on their experience, and the syntax implemented in each language they feel comfortable with.
    Even though that I know some people will try to coerce me to learn Java ( in universities, especially ), I'm not leaving the C language behind because of it's capabilities that I'm familiar with ( I hate data classes because they're so mind-blowing, in my opinion ).

    Others might even focus about the web developing and leaving the hardware issues we're dealing with under nowadays basis. For example, some told me "hardware programming has no future in it, while web developing has a great deal in the Internet". Well, I have to say that I agree with the deal in the Internet, but I would disagree with the point about the hardware, because the hardware is what eases our nowadays activities like phones, gaming gloves, additional interfaces in the mouse treated as tweaks ( specifically, World of Warcraft gamers demand such tweaks, some, if not all of them ), Network programming ( I recommend people to learn network programming from this book "Linux Network Programming", which is basically limited to Linux and it's done in C programming language ), Linux kernel programming ( Linus Torvalds is a great example here, seach for a book called "advanced Linux programming), and the head-mounted controller. So, there is a lot of hardware programming involved in here which I don't see how it's possible that it has no future.

    I had friends who argued with me for only dealing with C/Assembly, but I'm just saying that I'm fine with those languages. However, if they disrespect my opinion about what language I want to use, then there is no need for me to listen to their opinions. The same issue goes with the BASIC programming language. Some people hate it, some people like it, according to their point of view which might be convincingly reasonable or plain lame. If it's the syntax, I can't see the problem with it, which is so far so good.

  184. You don't know what you're talking about. . . by vaporland · · Score: 1

    Because it's crap. Seriously, it was really poorly designed both as a teaching language and as a software development language.

    You don't know what you're talking about. Its all about context. Where i learned programming in the 70s, there was batch FORTRAN / PL/1 & COBOL, and time-shared BASIC. It was the first time the computer talked back to you in real time.

    Hewlett-Packard made a fortune off of their HP2000 series. Those $250k minicomputers were replacing million dollar mainframes and giving the users power and control. There was a free library with thousands of programs. You could modify them yourself. They were used in research, education and business and everyone was happy. It was fun!

    In my high school, the BASIC programming classes were filled and the terminals were occupied from 7AM until after dark. You could get up to speed quickly and make some really cool stuff. I wrote an instant messaging program in 1975 that was not even supposed to be technically possible. There was an intense sense of competition between the students to learn the entire language, and it gave a focus to kids who weren't playing football or taking drama classes.

    With the HP2000, it wasn't just the BASIC language, it was the operating system. You could do things on your terminal that would goof up the other guy. You could share data between users. You could execute operating system commands form within your programs. You got to learn about security and infrastructure, at a very basic level, which stood you well for future endeavors.

    The HP2000 evolved into the HP3000 which was widely used from the mid-70s until 2000 when HP discontinued support. There were still a lot of BASIC programs being written up until the end.

    Other contemporaries were programming BASIC on DEC PDP hardware. There was another entire infrastructure there that was vibrant and thriving, and BASIC was an integral part of it. Data General was another minicomputer vendor with an entire ecosystem of which BASIC was a part.

    I taught the BASIC class in my senior year. When I went to college, my instructors let me skip introduction to structured programming - I had self-taught myself this concept without even realizing it was the most logical way to write code.

    A lot of us kids went on to very successful careers in DP as it evolved into IT and learned new languages and operating systems and did quite well, thank you. We started with basic and evolved to cross-platform integrated development environments. I was lucky to meet the guy who decommissioned our school's computer and sold it for scrap in the 80's. he had an image of the last backup taken before disassembling the system. Through the use of SIMH, I have that system running in full on my MBP. I can run the Star Trek and Blackjack games from my high school days.

    So it follows that if you start learning to program in BASIC, you will have to at some point ditch it and start using something better.

    BASIC taught you the basics, and laid a basic framework to learn everything else that came after. It was also a useful tool for writing your own programs in an era when most computer users did that instead of buying software. Nobody I know uses the same stuff at work that they learned in high-school/college. Go find something else to rant about.

    It's wasn't crap and you don't know what you're talking about.

    --
    Ask Me About... The 80's!
    1. Re:You don't know what you're talking about. . . by Peter+Harris · · Score: 1
      I do, you know. Although I acknowledge your slightly longer experience, most of what you offer here is nostalgia, not evidence. I contend that you derived considerable satisfaction mastering programming in spite of BASIC's serious flaws. Respect for that, but I disagree with the conclusions you draw from it.

      I think LISP back then was an objectively better language for both learning and development, and the 'basics' that BASIC (especially early BASIC) taught were pretty much wrong-headed. It's not just GOTO: it's the lack of functions and any kind of parameter passing other than global variables.

      Maybe HP2000 BASIC was a structured language like the later BBC BASIC and didn't have those limitations? Whatever. You've since moved onto better things, and I bet you don't really want to go back to it.

      Go find something else to rant about

      Sure will. :-)

      --

      -- What do you need?
      -- Gnus. Lots of Gnus.
  185. Grafics and sound by fkrahe · · Score: 1

    Check out this http://www.squeakland.org/ . It came from Smalltalk, I guess, and has lot's of visual reward for the kids, very educational. And prepares for OO. It has been tested along OLPC project and has had very good results. Worth a try

  186. How about learning about what impacts performance by Anonymous Coward · · Score: 0

    The language you use is not the big issue. Languages are easy to differentiate and easy to learn. Some languages are better than others depending on the environment and application specific requirements. My pet peeve is that most programmers don't understand how to get maximum efficiency out of the HW and OS environment. This translates to poor performance and a frustrated user experience. Developers today seem to settle on iterative releases to iron out performance issues that should have been addressed in testing. Their solution is fix it in the next release and let the users sort out the bugs.

  187. What about "C"?? by VirtualJWN · · Score: 1

    What about "C"?? You can get the Watcom compiler and "code away" in "C" for free. Basic was ok in that it let "non programmers" program, but frankly, in terms of "coding" It really was a rather limited interpreted language.....not unlike (but far inferior to) scripted languages like Javascript and others. IMHO Microsoft "bastardized" the term BASIC as a programming language with its many "kit bashes" of the language and misuse of the name. Same as "C#" just a marketing attempt to hitch your wagon onto a industry standard and give it credibility with the "masses" while hiding the fact it is a Java CLONE. BASIC was written in 1968, and was a "1st / 2nd generation language, any attempts to update have it miming "C" and similar languages, therefore ceasing to be BASIC and becoming something else.

    --
    "Any sufficiently advanced technology is indistinguishable from magic." - Arthur C. Clarke
  188. Actionscript by Anonymous Coward · · Score: 0

    I'm pretty shocked that nobody has mentioned Actionscript. The SDK is open-source and free, there are tons of tools available (also for free), but if one wants the benefit of a GUI to help lure kids in with animation and obvious one-to-one code to graphical object correspondences, there's that option, too, for fairly cheap. Not to mention the enormous industry supporting Flash as a viable career option (HTML5 folks: you can do a hell of a lot more than just program hacky websites in flash; it's a fully interactive development environment for a number of things, the least --at this point in time-- being the web).

    Back in the day I remember picking up as2 in a couple of days having come from a solely design background and now, knowing AS3 and the OOP concepts that it's taught me, I've been able to transition to a number of other programming languages with relative ease.

    Highly recommended for any student.

  189. BASIC is awesome, even in 2011 by Kevin+Fishburne · · Score: 1

    Try GAMBAS on Linux. If you like BASIC, you'll never look back.

    http://gambas.sourceforge.net/

    --
    Buy your next Linux PC at eightvirtues.com
  190. Lua by Anonymous Coward · · Score: 0

    I do not see a recommendation for Lua, which would be useful for an aspiring programmer. Lua is embedded into many video games and tools (WoW, wireshark, and VLC to name a couple), has a stand-alone interpreter, and uses a clear and simple syntax with a mere 17 keywords.
    Primitive types are converted automatically, and the one object, the table, can be used as an array, a map, or both in the same table. The table can be used as a namespace for functions (actually all data, including functions, is stored in the global table, _G), as a prototype for objects, or simply as an array.
    Functions can take and return a variable number of arguments. The language itself is free, as is the book and the reference manual. The website also features a live demo with example code.

  191. Even better by Conrad+Mazian · · Score: 1

    Download a copy of VICE and install it on your Linux/OS X/Windows box, and learn basic properly.