Slashdot Mirror


Why Johnny Can't Code

GoCanes writes "Salon has an article named 'Why Johnny Can't Code,' an interesting examination of the dearth of line programming languages available today. At first I wanted to read this and say aha, here's a simple line oriented language that's available through open source, but after reading the article I couldn't find any. And being an old fart, I remember the days spent with edlin and basic."

111 of 686 comments (clear)

  1. Kids today...... :-) by BWJones · · Score: 4, Interesting

    I have been thinking it is due to a few reasons. First off, it seems that math education is sorely lacking in many college students. We are waaaay off the mark here with lots of remedial work being necessary for entering college students and this is having a major effect on peoples ability to develop algorithms. The next major reason is lack of communication skills and writing skills. When I was a grade school kid learning BASIC, we had it drilled into our heads that we had to comment our code and explain exactly what it is that we were planning. This was done to help us learn how to think through a problem, but also to get us to help communicate what it is that we were trying to do with our code. Finally, it seems that many students have gotten lazy and are simply looking for an easy way out and not wanting to code line by line.

    --
    Visit Jonesblog and say hello.
  2. passworded article by muftak · · Score: 4, Insightful

    Please provide a URL that does not require signing up to crap.

    1. Re:passworded article by remembertomorrow · · Score: 4, Funny

      This article should be called "Why Johnny Can't Read Online Articles". :|

      --
      Registered Linux user #421033
    2. Re:passworded article by GreyPoopon · · Score: 2, Informative
      Please provide a URL that does not require signing up to crap.
      It doesn't. It just requires watching an advertisement for access for the day. You don't have to provide any information about yourself.
      --

      GreyPoopon
      --
      Why is it I can write insightful comments but can't come up with a clever signature?

    3. Re:passworded article by Mprx · · Score: 5, Informative

      Visit http://www.salon.com/news/cookie756.html to get the cookie first.

  3. Desktop Applets by RAMMS+EIN · · Score: 5, Interesting

    I submitted the same story, and also made the following comment elsewhere:

    It is worth noting that Microsoft ships Visual Basic for Applications
    with most of their software (at least they did when last I checked), and
    OS X and many Linux distros ship Python.

    Having said that, I agree that the world has changed and getting started
    with programming isn't as natural as it used to be. Part of the reason
    for that is that our expectations have changed, but languages haven't
    really caught up. Nowadays, we expect programs to present us with fancy
    GUI widgets. If all a program does is print some text to the terminal
    and read some input from it, we don't feel we've written a real program.
    However, in the majority of programming language, creating these fancy
    GUI widgets is much more difficult than doing terminal I/O. Thus, either
    the rewards are less, or the barrier to entry is higher.

    On the other hand, there is HTML, which makes it very easy to create
    user interfaces, but the user interfaces are somewhat limited and adding
    in program logic can be very tedious.

    Fortunately, software vendors are not sitting still. Konfabulator, Apple
    Dashboard, gDesklets, Oprera Widgets, KDE's Dashboard, and Mozilla's XUL
    (which is supported natively in Mozilla browsers, in Opera and MSIE
    through plugins, while native support is being added to Konqueror and
    Safari) are all ways to make it easy to create visually appealing
    programs and add functionality to them. They are all based around the
    concept of creating the user interface in XML, then using a scripting
    language to implement the behavior. Indeed, this makes creating GUI
    software easy enough that beginning computer users can do it.

    I think these widgets are the future, especially once they will be
    treated like full applications that live on the same desktop (last time
    I checked, Apple Dashboard actually was a separate desktop from the one
    that contains the "real" programs).

    --
    Please correct me if I got my facts wrong.
    1. Re:Desktop Applets by Shaper_pmp · · Score: 4, Insightful

      Don't forget Javascript. Javascript is the new BASIC.

      Back in the day we'd write BASIC, then graduate to C/C++ for the "proper" coding.

      These days kids learn HTML, then Javascript to make the HTML do interesting things. Then they pick up PHP or Java (or VB if they're unlucky) and from there Perl, Ruby, Python, whatever.

      The most popular "beginners" language is always the most powerful one with the lowest barrier to entry. Anything that you can pick up quickly and do cool stuff with provides the essential satisfaction feedback that keeps you progressing and getting better.

      HTML provides the "oooh, pretties" before you even learn do any actual programming, and Javascript introduces you to loops/conditionals and even OOP if you want. PHP/VB then add in database integration and stricter efficiency requirements (not to mention often the added complication of stateless programming), and by the time you can program competently in them you're well on the way to becoming a full-fledged Developer.

      I have a great hope for dashboard widgets - it's exactly the kind of low-barrier-to-entry, high-return-on-time-invested platform that makes it interesting to learners, and because it's Javascript it's even starting them off on the kind of language that's the most useful to learn[1].

      [1] Not to knock VB, but if you learn BASIC or VB you can basically program in... BASIC or VB. Learn Javascript and you've got a leg-up on the syntax of C, C++, Java, Perl, PHP, Ruby, etc, etc, etc, etc, etc.

      --
      Everything in moderation, including moderation itself
  4. Absolute nonsense by realnowhereman · · Score: 4, Informative

    What a load of rubbish.

    apt-get install \
          bash \
          python \
          gambas2 \
          kturtle \
          fp-compiler fp-units-base \
          php5-cli


    The reason children don't code (if that is even true, as it's a completely unsubstantiated assertion) is because they don't want to.

    I started programming when I was ten, and I did it by hand-converting Z80 assembly language to machine code and then used BASIC poke commands to write them into memory. I had to work hard to scrape a C compiler from somewhere and that was heaven.

    Today it is a million times easier to write a program if you wanted to. Blame ease-of-use culture; blame video games; blame stupid parents; but blaming the lack of access to programming languages is ridiculous to say the least.

    --
    Carpe Daemon
    1. Re:Absolute nonsense by whyloginwhysubscribe · · Score: 2, Interesting

      Exactly - and it's 100 times easier to do lots of other things as well - make music, videos, web pages... There will always be kids programming in their bedrooms - and good luck to them, they keep me on my toes because I know they're going to be fighting me for my job in a few years to come!

    2. Re:Absolute nonsense by cruachan · · Score: 5, Insightful

      I don't think it's because the barrier to entry is too high, rather the barrier to do something cool is in the stratosphere. Think about it - back in the 80's when you first started playing around with code creating your own version of pong was pretty dam cool. Actually even getting the machine to draw a few boxes on the screen in different colours was cool. True there was a learning curve and it was quite steep if you'd never coded before, but it wasn't that far from bottom to top.

      Nowdays cool is Half-Life 2 type graphics. And I suppose the nearest to drawing a few boxes on the screen is coding DirectX/OpenGL shaders to do cool things on a few objects. The learning curve is still as steep, but think of all the stuff you need to know before getting something interesting done - it's a much longer way from bottom to top and you consequently need more determination to get there.

      I think you'll now find many of the kids who would have previously cut code now working on mods for games. Maybe that will sprout creativity in a way that the article suggests, but it is difficult to see what.

    3. Re:Absolute nonsense by DeeDob · · Score: 3, Insightful

      None of the language you listed is as easy as the old BASIC, which you could access directly from the command line on most computers.

      Nowadays most languages requires downloads (java, php), installation procedures (java, php, visual basic), having to learn development tools as well as the language itself (visual basic), a compiler (C, visual basic, java) and whatnots...

      Those that don't require complex set-ups require the knowledge of another language to work properly (vbscript, javascript require HTML/CSS knowledge).

      Other even need a server set-up properly before you can use them (PHP, ASP).

      Even something like Python needs additional package set-up. Python documentation is also not the easiest to find (beginner books and easy tutorials are rare).

    4. Re:Absolute nonsense by nwbvt · · Score: 2, Insightful

      He did mention other languages like Python or C++, and discards them. I'm not sure why exactly, but apparently he doesn't think they are any good for beginners (I think he is mostly just nostalgic for his programming days in which he used BASIC).

      I would actually say there are plenty of kids who learn programming these days. Yes, they are doing it using more modern languages that have not been rendered obsolete, but that doesn't mean they are not learning valuable skills.

      And I call bullshit on his assertion that learning BASIC is the CS equivalent to a med student learning chemistry. Those basic fundemental skills are learned when the student takes a computer engineering course (which I believe most universities require) and learns how logic gates work and writes programs in assembly. Those are the fundemental building blocks of our modern computers. Learning BASIC is closer to a med student learning outdated theories on medicine. Interesting from the historical perspective, but not essential for their education.

      Lets please institute a rule and stop posting articles from Salon. Whenever someone does, the article is nothing but elitist bullshit with a lot of ads.

      --
      Mathematics is made of 50 percent formulas, 50 percent proofs, and 50 percent imagination.
    5. Re:Absolute nonsense by NorthWestFLNative · · Score: 2, Informative

      Have you looked at http://www.kidsprogramminglanguage.com/? It has a simple syntax along with advanced graphics. It was designed to be used in classrooms to teach kids how to program.

    6. Re:Absolute nonsense by helifex · · Score: 4, Informative

      On Windows... Right click on the desktop and create a new text file. Rename the text file to hello.vbs, then right click and choose edit. Enter the text 'msgbox "Hello world!"' and save it. Double click on the icon. The only thing that could make it easier was if they had added "vbs file" as a new document template. I don't think it's lack of availability that's the problem...

    7. Re:Absolute nonsense by njh · · Score: 2, Insightful

      I think the truth is simpler than this. I think there are roughly the same number of new programmers born now, per capita, as were born 20 years ago. It's just that 20 years ago, only the programming types would have had a computer.

    8. Re:Absolute nonsense by Chelloveck · · Score: 3, Interesting
      I don't think it's because the barrier to entry is too high, rather the barrier to do something cool is in the stratosphere. Think about it - back in the 80's when you first started playing around with code creating your own version of pong was pretty dam cool. Actually even getting the machine to draw a few boxes on the screen in different colours was cool. True there was a learning curve and it was quite steep if you'd never coded before, but it wasn't that far from bottom to top.

      The same is true of electronics. In my college days (mid-80s) it was cool to wire up a circuit to make and LED blink, or a flash bulb fire. If you were really into it you could scrounge a HeNe laser tube and build yourself something really cool. These days, all that stuff is available for cheap. Blinking LEDs are literally given away free with breakfast cereal. Laser pointers are less than $10 and come with a variety of lenses to make images on the wall. The cool stuff is no longer easy, and the easy stuff is no longer cool.

      I think it's just a sign of the technology maturing. The technology for its own sake is no longer interesting. Both programming and electronics are just means to an end. Now the cool stuff is making that technology do something. Yeah, there's a higher barrier to entry, but it's not insurmountable. Back then you had to program a game from scratch; now you can take an existing game and mod it. Back then getting a motor to turn was neat; now, you can build robots without worrying about the piddly stuff. I think there's still plenty of room for exploration and creativity, but it won't be the same as when my generation were kids. My kids' generation will take the basics that we laid down and build upon them, making whole new cool things. No, it's not the same as it was. It's better.

      --
      Chelloveck
      I give up on debugging. From now on, SIGSEGV is a feature.
    9. Re:Absolute nonsense by c · · Score: 2, Insightful

      the barrier to do something cool is in the stratosphere

      I was thinking that, myself, but I'm actually convinced otherwise. The barrier is quite high, if by "something cool" you mean games and graphics.

      However, there's still an obscenely huge amount of useful, interesting things which can be accomplished by small amounts of little scripts... All these internet-based APIs out there (Google, Flickr, etc) provide a low barrier of entry for some degree of "cool".

      I think the real problem is a lack of motivation. In the good old days, you hacked on computers because, quite frankly, there probably wasn't that much else to do. Now, computers do (WAG) 99% of what the average kid expects/wants/needs.

      c.

      --
      Log in or piss off.
    10. Re:Absolute nonsense by eraserewind · · Score: 2, Insightful
      You can't change (or see) a file extension with the standard Windows install options. You have to change some options in windows explorer.

      It's even tricky to change it by doing "file-save as..." unless you know what you are doing, most likely you will end up with hello.vbs.txt

      So it's not as straightforward as you make out. In fact they have made it deliberately difficult to do what you describe. They seem to want to preserve some sort of idea of the intrinsic nature of different types of files for users.

      The only thing that could make it easier was if they had added "vbs file" as a new document template. I don't think it's lack of availability that's the problem...

      Given that it's one of the standard ways to create a new file of the type you want, it's exactly what they should have done if they wanted average people to program. It's precicely lack of availability that's the problem. You could hunt using the standard windows interface and never discover that there was a way to do what you describe (trivial though it is).
    11. Re:Absolute nonsense by Bozdune · · Score: 2, Interesting

      This is probably pointless, but I'll answer you anyway. With regard to skills:

      o I started programming in 1969, in PDP-8 assembler, well before my voice changed.
      o Then I wrote a bunch of games and utilities in high school, many of which were widely distributed (pre-Internet).
      o Then I went to MIT for six years, and wrote a parallelizing C compiler for my Master's thesis.
      o At that point I had already used a dozen programming languages and assembler languages, most of which I've forgotten.
      o Since then, I've written operating systems, compilers, linkers, editors, CSMA networks, real-time apps, financial services apps, web-based transaction apps.
      o I've shipped product to over 20,000 customers -- built it, supported it, enhanced it, managed a development group, managed whole development organizations (teams as large as 100, and as small as 3). You name it, I've probably written it.
      o I regularly use "latest rage" programming languages and environments.
      o I've started three companies and made significant money with two of them.

      I used to be contemptuous of application productivity enhancers. Then, one day, I had to figure out why our clock was being cleaned, feature-wise and development-time-wise, by one random nut in a garage using PowerBuilder, who was somehow able to turn out GUI-based application software 10x faster than our whole team could.

      I learned an important lesson from that. Success is all about how much you can accomplish given limited quantities of time. Any tool that gets you there faster should be embraced. At one of my start-ups, I made tons of money using VB, but we wouldn't have made a plugged nickel if we had used C++. Our development time would have tripled, and we'd have missed the market window completely.

      I'll close with this thought: I really *HATE* VB. I hate the syntax, the stupid conventions, the limitations, the bugs, the bad behaviors, the limitations on the controls, etc., etc. OK? There, I've said it. But, having said that, VB is an important tool in my quiver, and I know exactly how and when to use that tool to clean the clocks of arrogant techno-nerds when we run into them competitively. Fortunately for me, the world is full of them, and they just don't seem to catch on. I hope they are all resonating strongly to your posts.

  5. Why Line-Oriented? by RAMMS+EIN · · Score: 2, Insightful

    ``At first I wanted to read this and say aha, here's a simple line oriented language''

    Why line-oriented?

    --
    Please correct me if I got my facts wrong.
    1. Re:Why Line-Oriented? by will_die · · Score: 2, Informative

      a line oriented language is one where all the parts of the command have to be on a single line. some newer ones allow a line seperator so that you can make it easier to read.
      this is opposed to statement oriented where all parts have to be part of the single statment, usally multiple lines but with a statement ender, or a block oriented language that has begining and ending tags for the block.

    2. Re:Why Line-Oriented? by kfg · · Score: 5, Insightful

      Why line-oriented?

      Because Djkstra was right. With whatever apologies might be due to the author, his early exposure to BASIC has damaged his mind so beyond repair that he cannot concieve of a good learning language as being anything other than line oriented.

      Python and Squeek, each in their own way, are probably the best learning languages ever devised. They are both "real" languages that can be used for "real" work after you learn them, but also serve as good stepping stones to other languages, without instilling you with a line oriented mind.

      Programming students don't need to learn line numbers, they need to learn number; mathematics; and logical structure. Line numbers do nothing other than give the illusion that a program has structure, whether it actually has any or not.

      KFG

    3. Re:Why Line-Oriented? by Gnostic+Ronin · · Score: 2, Insightful
      Line oriented is probably most basic part of coding. There isn't a program out there that doesn't have an if-then statement or basic arithmetic.

      But I think a huge problem with students not knowing how to program is the lack of training in Logic. I remember learning geometry in HS, long before I started hobby programming. You had to know how to prove that one angle was exactly equal to another and show every step. Being able to do things like that is essential in learning to write a program, because you often need to test for a condition that you can't directly measure.

    4. Re:Why Line-Oriented? by stephenbooth · · Score: 2, Insightful

      With GUI based languages it's very easy to get hung up on the look of the interface, with a line oriented language it's not there so there's less distraction from learning the fundementals of the language and, more importantly, of programming. What the article seems to be mourning is the loss of languages without all the added trimmings that distract from the underlying principles.

      Consider 'Hello World'. In BASIC that would be:
      10 print "Hello world!"
      In C it would be something like:
      #include <stdio.h>
      void main ()
      {
      printf("Hello World!\n");
      }
      in C++ you're looking at
      #include <iostream.h>
      void main ()
      {
      cout << "Hello World!\n";
      }
      And in Java you use something like
      /* Main.java */
      package hellowworld;
      public class Main {
      public Main()
      }
      public static void main(String[] args) {
      System.out.println("Hello, World!");
      }
      }
      or even (this is from a Java tutorial book set for a Java course one of my collegues was doing a couple of years ago) be told to create two files, the first being
      /** Main.java
      */
      package greeter2;
      public class Main {
      public Main() {
      public static void main(String[] args) {

      String greeting = sayHello.sayHello();
      System.out.println(greeting) ;
      }

      }
      and the second being
      /*
      * sayHello.java
      */
      package greeter2;
      public class sayHello {

      public static String sayHello()
      {
      String message = "Hello, World!";
      return message;
      }
      }
      then use command line switches to compile both files to a single application. Which of these do you think will be least intimidating to someone just starting out and will give the clearest example to the learner on how to put a line of text on the screen. Also, note that all of these examples are line based, imagine if they also had to learn how to draw a window, and you also need to take into account that the BASIC program can be run directly from the commnd line, in most implementations, where as the rest all require a compilation step.

      The languages the author is harking back to aren't languages you're going to write the next competitor to Office with or the next killer console game, they are the languages that will teach you the fundementals that will make it easier for you to write those programs in other languages more suited to the purpose. Shell scripting could ber used to teach the the basics like putting a line of text on the screen) but tend to lack the variable handling and typing of a programming language. Sure, once someone knows the basics of programming and is ready to start writing real world applications, they will need the more advanced features and complexities of modern languages but by that stage they shouldn't be worrying about how to put some text on the screen or add two numbers together. Although, I recall writing some pretty complex apps in BASIC when I was at school (mostly for stats number crunching but I also wrote a simple word processor in Comodore basic on the CBM PET when I was 12).

      Stephen

      PS Perhaps someone could explain to the lameness filter the concept of source code examples? It doesn't seem to appreciate that they often contain lots of 'junk characters' and short lines.

      --
      "Don't write down to your readers, the only people less intelligent than you can't read" - Sign on Newspaper Office Wall
    5. Re:Why Line-Oriented? by RAMMS+EIN · · Score: 2, Interesting

      Although BASIC is line based, allows you to write programs without boilerplate, and can be interpreted, these are all orthogonal properties.

      Line based means that you enter your program is based on lines, as opposed to, say blocks of code. It means you get code like

      10 CLS
      20 I = 1
      30 PRINT I
      40 I = I + 1
      50 IF I = 10 GOTO 30
      60 END

      and you could insert a piece of code by writing, e.g.

      55 PRINT "DONE"

      In a block based language, you would get code like

      CLS
      I = 1
      DO
            PRINT I
            I = I + 1
      WHILE I = 10
      END

      and insert code by going to the right position in the code and writing there whatever you want inserted.

      And yes, that does mean that modern BASICs aren't really line oriented.

      As for boilerplate and interpretation, observe that Common Lisp and Scheme both allow you to write programs without boilerplate, but they're not line oriented. E.g, in Scheme, Hello World could be rendered as

      (display "Hello, World!")
      (newline)

      or

      (display
              "Hello, World!") (newline)

      Also, Common Lisp and Scheme can be interpreted or compiled, just like BASIC.

      --
      Please correct me if I got my facts wrong.
    6. Re:Why Line-Oriented? by Abcd1234 · · Score: 2, Informative

      I'm particularly glad you mentioned Squeak. For a kid who's very curious, Squeak is the ultimate learning environment. Not only can you write very interesting programs very easily using the powerful tools it provides, but you can also dig around in the system internals themselves! Just fire up the class browser, and voila, everything is laid bare before you. And if you bugger something up, you just terminate the VM and reload the image! Truly a *fantastic* system, one I wish I had access to when I was first dipping my feet into programming.

    7. Re:Why Line-Oriented? by maxwell+demon · · Score: 2, Insightful

      10 Maybe he also advocates beginners to write English exactly one sentence a line.
      20 Because, after all, it's much easier to understand this way.
      30 You don't have to look out for those small, easy to overlook dots.
      40 Instead you know exactly where your sentence ends.
      50 Because it always ends at the end of the line.
      60 Of the current line, that is.
      70 Only in advanced English you should go to the trouble of sentences continuing on the next line.
      15 Of course with line numbers.
      16 That also makes it easier to later insert something in the middle of the text.
      16 That also makes it easier to later insert or change something in the middle of the text.
      80 Because beginners will only be confused by those multi-line sentences.
      75 Or sentences beginning and ending in the middle of a line.

      --
      The Tao of math: The numbers you can count are not the real numbers.
  6. Re:Kids today...... :-) by BWJones · · Score: 4, Interesting

    So, just in case some of our students read this (its always weird when your students say "I saw your comment on Slashdot yesterday"), I should have mentioned that there are exceptions to the rule (obviously) like the developers who are developing some of our image processing code right now here at the Univ. of Utah Scientific Computing Institute and our collaborators at the UCSB Center for Bio-Image Informatics. These folks are doing amazing things as is the neuroscience grad student in our lab who routinely amazes me with his ability to code. But these folks are in these graduate programs and environments because they are interested in solving innovative and new problems and they enjoy a challenge. The vast majority of students who are learning to code are not interested in asking questions or doing hard things. Interestingly, a large number of students it seems coming into CS programs at the undergraduate level want to program games, but have no idea how much math and algorithm development goes on when one is crafting new material. It's easy to use someone else's engine or physics models, but coming up with your own is harder and requires some talent and dedication to learning your craft.

    --
    Visit Jonesblog and say hello.
  7. Easy solution... by GreyPoopon · · Score: 3, Insightful

    There's a very easy solution to this. Install a classic machine emulator on your PC. Something like a C64 emulator would work fine.

    --

    GreyPoopon
    --
    Why is it I can write insightful comments but can't come up with a clever signature?

  8. Languages by RAMMS+EIN · · Score: 2, Interesting

    What about languages like Ruby, Python, Bourne shell, etc? Easy to pick up (the barrier of entry to shell scripting is especially low), and you can take them all the way up to complex programs with GUIs (whether you should want to is another matter, especially for shell scripts).

    --
    Please correct me if I got my facts wrong.
  9. here is command line basic by enrevanche · · Score: 2, Informative
  10. BWBasic? by Intosi · · Score: 2, Informative

    How about bwbasic (https://sourceforge.net/projects/bwbasic/)? It's available for my FreeBSD system, my Ubuntu system, even MS-DOS... Sure, it might not be as über-sexy as buying a second-hand C64, but it's there for you to try BASIC programs..

    --

    Intosi

  11. FreeBASIC... by kerashi · · Score: 5, Informative

    If you really want to play with BASIC, you still can. There is Freebasic, at http://www.freebasic.net/, a GPL'ed open source BASIC compiler.

  12. Ruby could be this language by ForeverFaithless · · Score: 2, Insightful

    Check out this interesting blog by Peter Cooper, where he suggests a Ruby environment fors kids:

    Taking Ruby to the kids

    --
    Mark Kretschmann - Amarok Developer, KDE Member
  13. Re:Kids today...... :-) by dc29A · · Score: 4, Insightful

    When I was in college, we started off learning different assemblers (PC and Mainframe), then we moved to C and C++. The same college, now starts teaching kids some RAD languages, Java, C# and whatnot. IMO, new students no longer learn the basis of the computer, how the CPU works, how compilers work and how interpreted code works.

    One of my most memorable classes was the C++ class when the teacher started off by teaching how compilers actually compile your code. Directly from this you could easy see what code to write and what not to write. Those classes have been replaced by Java, where you don't even worry about resource leaks. Hey, garbage collector takes care of it!

    To make good programmers, one has to understand the basis of it. Compilers, C and Assembler. If all they learn today, well mostly OOP stuff, they won't learn the basis well. And they will end up writing bloated code left and right.

  14. Python?! by smithwis · · Score: 5, Interesting

    Am I missing something here? Why doesn't python count? It's easy, has a nice "line enter mode", embraces many advance programming concepts from various programming paradigms(OP, Functional, Procedural, etc). And has a bunch of nice Graphical hooks for the eventual game programming your little one will end up doing.

    Disregarding Python, what's wrong with Emac's elisp or a nice session with tcsh. You'd be hard pressed to find a computer that you couldn't run one of these languages on and I've just barely scratched the surface of possibilities

    No I'd have to say that today's children are given an even richer programing environment to grow with than we were.

    --Steve

    1. Re:Python?! by Coward+Anonymous · · Score: 3, Insightful

      Well, according to TFA how would you "make a dot change its position on a screen, propelled by math and logic, and only by math and logic" in python?
      For kids, simple graphics are far more persuasive than watching text scroll down. If your answer for doing this in python is longer than 1 line or involves compiling packages, you've lost. Basic commands I remember were as simple as "gr", "hgr", "hgr2", "screen" and you were ready to go.

  15. As the world changes... by Fearless+Freep · · Score: 3, Interesting

    As coding goes from being an elite craft that few can do into a blue color job that few bother to want to do

    As hand made articles become assembly-line products

    we wonder why the world has changed and our tools with it

    1. Re:As the world changes... by arevos · · Score: 3, Insightful
      As coding goes from being an elite craft that few can do into a blue color job that few bother to want to do

      If you're suggesting that programming is no longer as difficult as it was, then this would rather imply, a) programming viable applications is easier now than it was, or b) people are far more intelligent than they were. Neither explanation seems very likely. As far as I can see, programming is still a craft that very few people are capable of doing with any competance.

      However, if you are suggesting that it has lost some of its 'elite' image, then perhaps you are right.

  16. BTW: The article is by SF writer David Brin by haplo21112 · · Score: 3, Informative

    The Original Post didn't mention that I thought it might be of interest to some people to know that ahead of time. Perhaps influencing the descion about reading it or not.

    --
    Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.
  17. bah simple by tomstdenis · · Score: 3, Insightful

    "you wanna play with computers? program them first sonny."

    Kids are fundamentally spoiled nowadays. They got a high speed computer, high speed net, digital cable, cell phones, spending money, etc.

    When I was a kid [and damn I was a kid of the 80s/90s] I sure as hell didn't have half of that. My computer was a XT up until I was 11 or so then it was a 386/25 we scraped together from spare parts. We didn't have net access only local BBS stuff so for the most part we had to INVENT our own fun. That is, code stuff up, mess around with the box, etc.

    If you want your kids to have similar adventures to what you had as a kid just don't spoil them rotten. Why on earth would your kid at age 10 want to sit through and learn themselves BASIC or C or Pascal or ... if you're handing them a new Dell box with a Cable modem and a XBOX360 or something.

    You can save money and your children themselves if you just learn to say "No."

    That and your kids will appreciate earning money later on in life so they CAN buy themselves toys and shit. Teach them the value of work [or at least looking like working...]

    Tom

    --
    Someday, I'll have a real sig.
  18. Get off my lawn! by MirrororriM · · Score: 3, Funny

    Why, when I was a young programmer we had to write the code in the snow with our pee, and a compiler was just a word for the pilot of the hovering dirigible that read the instructions and passed them to the ALU, which was another fellow with an abacus. They would wrap the results around a rock, and drop it on my house when the program would exit. We had to walk uphill...

    --
    Content Management System: A pretentious way of saying "text editor."
  19. The REAL reason Sally can't code by smilindog2000 · · Score: 2, Insightful

    Games.

    I didn't get hooked because I wanted to hack computers. I got hooked on old games (like Colossal Caves). When I finished all the games, I decided to write one, and learned BASIC. Today, you never finish the games. They just get better and better. There's no way I would have spent all that time hacking if the games available today were around back then.

    --
    Beer is proof that God loves us, and wants us to be happy.
  20. Wait... by Aladrin · · Score: 2, Informative

    Are you seriously telling me that with languages like VB.net, C#, Ruby, javascript and other 'easy' languages, kids can't learn to code these days? I call BS on this. Sure, I started on an Apple IIe in 4th grade, and gradually moved up to real languages (C, PHP, etc etc) eventually, but that doesn't mean the 'lack' of BASIC stops kids from coding.

    There are even languages developed solely to interest kids in programming.

    http://www.kidsprogramminglanguage.com/
    http://en.wikipedia.org/wiki/Alice_(software)

    I'm sure there's more out there, but Alice was the one I remembered, and found KPL on the way.

    No, there are no more barriers to programming than any other science.

    --
    "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
  21. Re:Kids today...... :-) by tomhudson · · Score: 3, Insightful

    Not just kids - article writers too.

    "Dearth of line programming languages" my arse. Last I looked, almost every programming language is composed of lines of source code that you can write in a plain ascii editor. What the author is complaining about (without understanding it) is CODING IDEs replacing typing in your complete file as plain source code.

    c, c++, java, perl, python, php, pascal, javascript, whatever - you can write all your source the old way - line-by-line, and most of us do. Heck, even Delphi, one of the better IDEs, doesn't require the IDE environment if you really want to go the type-in-all-the-source route. Last I looked, both c/c++ and java were available for free for all the major platforms.

    In other words, the original article itself was a "nothing to see here" filler by someone who needed to write *something* before deadline. Sheesh!

  22. Re:Kids today...... :-) by tkavanaugh · · Score: 2, Insightful

    This is due to industry pressure, companies don't want to hire people who understand the compilers, they want people who know C++, C, Java, SQL, PHP... so colleges to keep their job placement numbers have decided to modify curiculums to match... so very sad, I wish i had learned about compiler design and cool stuff like that in college...

  23. Scripts? by evilviper · · Score: 3, Insightful

    How about scripting? It isn't as powerful as the current popular languages, but perhaps nearly as powerful as BASIC. You can certainly get a hell of a lot done that way, and it's trivially easy to get started. Anything you can type on the command-line, you can put into a simple text file, and run it.

    DOS batch files are pretty limited, but there have always been DOS programs to help extend them, and now that Windows is all NT-based, .cmd files run everywhere, which include many of the features BAT files lack...

    Once you're pretty advanced with such shell scripting, it's not a hard transition to interpreted programming languages like PERL, and then to compiled languages.

    I have a feeling the lack of kids programming has more to do with the fact that it's "unwashed masses" time, with the advanced still programming, but being hidden by the larger numbers of point-and-click users.

    --
    Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
  24. Re:Kids today...... :-) by popeyethesailor · · Score: 5, Insightful

    Devil's advocate time: Remember Computer science isnt about the plumbing; its about abstraction, algorithms and problem solving ability. Modern platforms allow modeling and thinking at a much higher level - instead of focussing on low-level arcana.

    For example, lets take the author's wishlist - creating Pong. I'd wager that the game can be written in a lot more expressive manner in any higher-level language, compared to basic. Poking different screen locations arent a lot of fun; gorilla.bas gets old very soon. Kids like instant gratification(adults too!)- higher level languages are ideal for this.

  25. Oh, please.... by John+Murdoch · · Score: 5, Interesting

    From TFA:

    Am I being overly dramatic?

    Yes.
    The writer of TFA is whining that computers no longer ship with a BASIC interpreter. That's been true since Microsoft shipped Windows 95--and at the time (which, er, was 1995) a number of columnists (including me) noted the loss, and wondered what impact it would have.

    Eleven years later....
    The earth still continues to revolve around the sun, and kids are still learning to write code. They're not learning to write code by typing in exercises from a math book--they're learning to write code to develop macros in Excel (or OpenOffice Calc); they're learning to write JavaScript to enable custom functionality in Adobe Acrobat files; they're learning to write HTML.

    Not to get all pedagogical on you, or anything...
    But this may be a circumstance where the Education Establishment is doing something right. Typing code into GW-BASIC produces...what? Typically, an output value. Read these input values, produce that output value. That's a CRT-based emulation of a deck of punch cards--and while I believe I benefited enormously from learning to code on punch cards, very very few people in the programming world agree with me. Think about what the newbie programmer's early coding experiences are like:

    • Open DOS window
    • Launch interpreter
    • Persuade interpreter to load your file
    • Start the program
    • Enter two or three input values
    • See the resulting output value

    That experience--being able to compile and run a program in something like real time, was HUGE--in 1974. Nowadays it is so outdated that I'd bet most kids would not see any correlation between that and a computer program that they are familiar with. How do you explain to a ten-year-old that the BASIC exercise from the math book is essentially identical to the internal processes of a video game, a web server, or the embedded micro-processor that drives your microwave oven?

    By contrast, a web page is a terrific introduction. Open a simple web page with "View Source", modify the text, and display the new page--it has changed. Iterate several times--add paragraphs, change colors, play with fonts--and the kid gets it. Playing with a text editor (which, incidentally, still does come for free) the student can go a long, long way in HTML. Depending upon his or her interests the student can pursue graphic design, animation, AJAX programming--all sorts of stuff. Key point: the difference between a "Hello World" HTML page and EBay is only a matter of degree--and that is immediately obvious to the student. Making the mental link between an ancient BASIC program and--for instance--a Windows application developed in Visual Basic.Net is not obvious at all.

    A case in point...
    I have three daughters. Growing up in a house with more computers than people--and a T1 connection to the Internet--they have had more exposure to computers than most kids. The oldest two are in college, and both had summer jobs this year at the electronics company where I work. Daughter #1 worked in customer service role--spending a lot of time with Excel spreadsheets. Somebody asked if she could program--she replied that her dad was a programmer, but she didn't really know how to. As she said this, she was writing Visual Basic macro scripts to automate a lot of manual key-entry for the customer service staff. What she was doing was very similar to the old-fashioned "get input, produce output" coding that punch card decks and BASIC programs performed. But the IDE (in this case, Microsoft Visual Basic for Applications) and the paradigm (a GUI) made it extremely easy to understand and do. So easy, in fact, that she didn't really equate it with programming.

    In other words,
    Don't mourn for GW-BASIC. Spend time with your kids writing HTML, JavaScript, and Excel macros.

    1. Re:Oh, please.... by Smallest · · Score: 2, Insightful

      >How do you explain to a ten-year-old that the BASIC exercise from the math book is
      >essentially identical to the internal processes of a video game, a web server, or
      >the embedded micro-processor that drives your microwave oven?

      the same way you would've done it back in 1982: "when you write a program, you tell the computer what to do. these are simple programs; games are complex programs. but they are both programs."

      believe it or not, professional games back then were amazing and awe-inspiring to people like me who were just learning how to make a computer do *anything*. while i was puzzling out BASIC's GOSUB and C64 assembly, i was also playing stuff like Zork, Zaxxon and Ultima III. yes, those games seem primitive today, but they were far beyond what your typical programmer could accomplish with BASIC. i knew they were programs, and that they were probably beyond my skill to create at the time (even now, too). it didn't take long to figure out that BASIC gave me control of the computer, and that making a game like Jumpman was just like writing any other program, but bigger, better planned, and probably in a langauge like Assembly. but that didn't stop me, or confuse me, it made me want to learn more.

      i think the loss of easily-accessible and very simple programming tools is a tragedy. yes, you can install Python or whatever (just like i could've installed C on my C64). but that's still too big, IMO. computers should come with *simple* scripting languages built-in (no, bash, ksh, etc. are not simple). the goal should be to teach people that programming gives you control of the computer - even if it's an illusion because it's really an interpreted language running in a sandbox in a user process on a multi-process computer. that's the big leap - don't give them Python because it's "more powerful than BASIC" - power isn't the problem - an easy way to get comfortable with basic programming concepts (sequential execution, variables, input, output, etc) is more important than power.

      --
      I have discovered a truly remarkable proof which this margin is too small to contain.
  26. Re:Kids today...... :-) by BWJones · · Score: 4, Interesting

    You should know that the University of Utah has a long history of academic excellence in computer science. People like John Warnock (founder of Adobe), David Evans and Ivan Sutherland (founders of Evans and Sutherland), Robert Barton (principal architect of all Burroughs computers), Tom Stockham (created digital recording among many other things), Alan Kay (GUI guy at Xerox PARC, developed Smalltalk and is a fellow at Apple), Chuck Seitz (pioneer in asynchronous circuits), Ronald Resch (pioneer in computer art), Alan Ashton (founder of WordPerfect), Tony Hearn (developed the oldest algebraic math package, REDUCE), Duane Call (designer of the FPS-120 supercomputer and vector calculation specialist), Henri Gouraud (developed the Gouraud shading methods so important for all your games), Elliott Organick (Founder of SIGSCE and author of many FORTRAN and CS textbooks), Buit Tuong-Phong (invented the Phong shading method), Ed Catmull (computer animation pioneer and co founder of Pixar), Jim Clark (founder of Silicon Graphics, Netscape and Heatheon/WebMD), Henry Fuchs (founder of Pixel Planes and researchers in high performance graphics software), Martin Newell (object rendering and founder of Ashlar and co developed the Painter's algorithm for surface rendering), Frank Crow (famous for his anti-aliasing methods for edge smooting), Martin Griss (developed Portable Standard LISP), Suhas Patil (founder of CIRRUS Logic), James Blinn (Invented the first method for representing surface textures in graphical images. Scientist at JPL, where he worked on computer animation of the Voyager fly-bys), Jim Kajiya (Developed the frame buffer concept for storing and displaying single-raster images), Robert Johnson (Invented the magnetic ink printing technology used on virtually every check we write), Brian Barsky (Developed beta splines and methods to link computer graphics, geometric modeling, vision science, and optometry) and so on and so one are all graduates of our program.

    --
    Visit Jonesblog and say hello.
  27. Debuggers by James+McGuigan · · Score: 2, Insightful

    One very useful tool when learning to program, at least for me, was an intergrated debugger. The ability to step through the code line by line, looking the values of variables at each stage and see how the code branches is a great for internalizing the logic of how a language or algorithm works, and learn to run through the code in your head just like a debugger.

  28. Comment removed by account_deleted · · Score: 4, Interesting

    Comment removed based on user account deletion

  29. Re:Kids today...... :-) by hey! · · Score: 5, Interesting

    first off, it seems that math education is sorely lacking in many college students. ... The next major reason is lack of communication skills and writing skills.

    There's a story about Abraham Lincoln when he was a cogressman. He received a questionnaire sent to new congressman in which they were supposed to give background information about themselves. When he came to the question which asked for a description of his education he filled in a single word: "deficient".

    In fact, Lincoln felt the deficiency of his education so keenly he began an independent study of Euclid's Elements, with the intent of sharpening his thinking. Reportedly he mastered the material through book 6, which means everything relating to plane geometry, but not number theory or solid geometry. I'd argue that Lincoln's formidable intellectual accumen, whether it stemmed from his study of Euclid or from his native faculties, is often missed in the sentimental haze that surrounds the man.

    The point of these anecdotes is this. There are certain areas of knowledge where thoughtful persons would have to label their education "deficient", any accomplishments they may have in them notwithstanding, because they are bottomless sources of utility. You just named two of them: mathematics and communication.

    The need for remedial classes at the university level doesn't come from a degeneration of the educational system. It comes from a social and economic change which makes a bachelor's degree a minimal requirement for decent employment. Fifty years ago, there were two kinds of people who went to college. The socially elite, for whom a "Gentleman D" was perfectly acceptable. Arguably the societies they joined and contacts they made were the most important reasons to go. And the intellectually elite. The middle class, non intellecutally elite student got a job, often in a factory, which maintained him in the middle class and did not require a degree.

    The growing need to have a university degree in the last half of the twentieth century led to the perennial concern of declining college board admission test scores, from which it was concluded that primary and secondary education was deteriorating. However, it's important to remmeber that average scores are average scores of a population sample, and if the population being sampled changes, you can't compare the scores. Adjusted for demographic changes, there was no decline in scores. There literally couldn't be, because of the little known fact that the tests and scoring scales are continually recalibrated by the testing agencies to ensure that students in any given segment of the academic population score the same from year to year.

    However, we have been the beneficiary, first of the Sputnik scare, then the SAT scare. For most students, education is actually much more rigorous today than it was fifty years ago. I went to elementary school almost forty years ago. My school was unusual in putting a great deal more emphasis in critical thinking and reading skills. My children go to an elementary school where the reading curriculum is much more challenging, and the math curriculum requires that students be able to reason mathematically and recognize situations where various mathematical techniques need to be used -- a huge improvement over the education of my era, which graduated countless students who could regugitate the quadratic equation forumula but had no idea when it might be useful.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  30. 3D Engines Game editors by Dareth · · Score: 3, Interesting

    The editors for 3d games are unbelieveably powerful. I remember spending many an hour tinkering with the original Unreal editor. It was easy for even a novice to use a getting started tutorial to build their own map/level/world.

    The editor presented the world as a 3D solid and you would cut away "rooms" and then apply textures. You could easily make an in-door or outdoor scene complete with sky, water, light sources, etc.

    You could put together simple shapes to create complex objects, then script them easily to move around or even react to the player character in the game.

    To really get complex reactions from the environment, or to get the lighting/shadows right required some understanding of basic math/trig, but even that is not that hard and the tutorials pointed you in the right direction.

    This is about as close to the "wow factor" that I got from doing simple shapes on a TRS-80 back in the old days. Coding up your own version of Bezerk was awesome. Creating your own worlds and getting to explore them was almost as thrilling.

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
    1. Re:3D Engines Game editors by monopole · · Score: 3, Interesting

      Hah! Arguably its easier now to do insanely cool stuff in line oriented code.
      I just knocked off the code to import a 3d model of Downtown Berkley and display an interactive stereoscopic model with texture mapping in 267 lines of Python using only the enthought python distribution and the PyXML module. If I wanted to add joystick support that would be 10 more lines and the PyGame module. All the tools are free as in beer and speech. The only development tools I used were a text editor and the interactive command line.

      A few months ago I knocked off a few hundred lines of Python code which logged gps, and processed the logs to provide KML files which came up in google earth with commented 3d paths of the GPS positions. Once again using FOSS with a command line and a text editor.

      Insanely cool code is much simpler these days with high level Python bindings to just about everything.

      As for physics, while there is a lot of very expensive cool stuff (CERN etc.) a lot of very cool physics is going on with dirt cheap tools. Lasers, microprocessor controls, high end optics, computers that make a Cray I look like a calculator etc. are available for next to nothing, allowing the Mac Guyver's of physics to do astounding things in their garage.

  31. Re:Kids today...... :-) by PseudononymousCoward · · Score: 5, Insightful

    I totally and completely disagree. The issue is one of pedagogy--which language can kids learn at an early age? I was coding 1000 line programs in BASIC at age 8, and I wasn't alone in that. BASIC is an easy language to learn. Is it limited? Definitely. Would I prefer today to code in BASIC instead of the Perl, Matlab, and Fortran that I now use? No. But the author's point is about _learning_ to code. Perl isn't terribly easy to 'learn' nor are c or c++ or java, at least not to an 8yo.

  32. CS a branch of mathematics? by David+Off · · Score: 4, Insightful

    I wonder if this CS is a branch of mathematics approach also puts people off. Personally I think there is much less mathematics going on at the programming level than college lecturers like to think. It is like the old saw that a dog that catches a ball is solving a 2nd order differential equation in real time. No its not, it is catching a ball. Similarly a program is more a logical story than some mathematical adventure.

    It may gall college profs who are still trying to foist formal methods on people but setting a high mathematical barrier to entry on CS courses and having a high maths content is a bad thing.

    As an example I have a first in Microelectronics from a British University (a course which had a large syllabus covering 'C' and machine language) but only just scraped the 'C' grade needed in mathematics as an entrance to this course despite having 'A's in Electronics and Computing. I doubt I have used any maths much beyond British 'O' level standard since and certainly the maths knowledge required as entry to a degree level CS course is too wide and deep. It is all geared up to people going onto research rather than the real world. You don't need to be an expert in set theory to write the level of SQL required by most applications.

    1. Re:CS a branch of mathematics? by Mark_Uplanguage · · Score: 2, Insightful

      Isn't it true that you have no idea what you'll be programming in the future. I always thought the point of all the math was to provide a solid background to support you in whatever you do. Your personal experience is insightful, but I wouldn't try to assume it's applicable across the board.

      --
      "The difference between stupidity and genius is that genius has its limits." -- Albert Einstein
    2. Re:CS a branch of mathematics? by IamTheRealMike · · Score: 3, Insightful
      Isn't it true that you have no idea what you'll be programming in the future.

      No, it's not true. 10 years ago most desktop software was written in C++ and Java - a hugely simplified form of it - was the next big thing. Fast forward 10 years and most desktop software is written in C++. Most new languages and tools are pretty similar to old ones. Radically different toolsets like pure functional languages have never taken off, and show no signs of doing so. The best programmers are still the ones with the most experience, not the ones who know the most pure maths.

      I always thought the point of all the math was to provide a solid background to support you in whatever you do.

      The point of all the math is to make the subject sufficiently academic that it is acceptable to universities, who are scared by anything vocational.

      The skills that everyday programmers need to do everyday jobs are more around understanding the tools they'll be working with - how a computer actually works, what version control is, how to architect software to be modular, what regular expressions are, how to work with debuggers etc. These are the skills that university graduates routinely lack, and routinely get nailed in job interviews by.

      Bits of the math are useful - being able to work in base 2 and base 16 for instance, or having a basic understanding of time/space complexity. Unfortunately most courses focus on big O notation to a ridiculous extent, meaning that it's not uncommon to see "data structure abuse", where some extremely fancy and theoretically fast algorithm is used, but due to some awkward practical factor like poor locality or excessive memory usage ends up being slow.

    3. Re:CS a branch of mathematics? by lhbtubajon · · Score: 4, Interesting

      This was EXACTLY my experience at The University of Texas, where CS is really applied mathematics, with a focus on AI. I just wanted to learn to code cool shit. After three years of learning very little I could practically apply, and being bored absolutely stiff (while getting my ass kicked by the maths), I bailed out of CS in favor of an entirely different college (within UT).

      I don't begrudge UT for wanted to offer an applied mathematics program in their CS department, but I didn't want that, and was basically told that if I wanted to have a life where I did cool stuff with computers, I had to learn Diff. EQ, calculus-based engineering physics, and a whole lot of theory and proofs of CS (emphasis on the _Science_) concepts that perhaps .01% of real-world programmers actually give a shit about.

      Another concern I have with university-level CS programs is that not a whole lot of actual TEACHING goes on. Lower-level courses are "taught" in giant halls where ethereal profs tend to cater to students who already knew the material before they got to high school. It just goes downhill from there. I didn't realize how bad it was until I got to another department where they actually started with the basics, _taught_ the fundamentals, and developed students through to competency.

      It's like CS departments got lazy on teaching because they have such a wealth of students who have been dicking around with this stuff since they were 5, just because it was fun.

    4. Re:CS a branch of mathematics? by Doctor+Memory · · Score: 2, Insightful
      The point of all the math is to make the subject sufficiently academic that it is acceptable to universities
      Not at all, the math is there to explain why things work the way they do, and why an O(n log n) routine is better than an O(n^2) one. It's also handy to be able to recognize an NP problem, before you agree to write the solution in two weeks! ;)

      Seriously, I can't imagine developing software without at least a passing familiarity with discrete math. It's not that hard (I found it easier than trig, but then I suxx0r3d at trig), and it teaches you how to think about the kind of problems that are common in programming (e.g., graph traversal).
      --
      Just junk food for thought...
    5. Re:CS a branch of mathematics? by Bender0x7D1 · · Score: 3, Insightful

      I both agree and disagree with you.

      I agree that this applies to programmers.

      I disagree that this applies to software engineers.

      There is a big difference between the two.

      The point of all the math is to make the subject sufficiently academic that it is acceptable to universities, who are scared by anything vocational.

      Universities are not scared by anything vocational. However, it doesn't fit with their role in education. If you want a vocation, go to a community college or something else. They will teach you the "hot" programming language, environment, skills, etc. However, these things are fleeting. What are the hot areas today? Ruby on Rails? Security? LAMP? What was it 5 years ago? Java? .NET? You can't target "hot areas" in a 4 year program. The hot area is over by the time you get finished.

      Now, if you get a solid grounding in theory and skills that apply to different areas, it doesn't matter what the hot area is. You can use your foundation and learn that area quickly. If you have a solid background in programming, including different languages, picking up a new language is easy. If you have a good grounding in networks and OSes, then picking up security is much easier. So, universities don't aim for the hot areas, they aim for giving you the skills and tools to be successful in the long run.

      --
      Reading code is like reading the dictionary - you have to read half of it before you can go back and understand it.
    6. Re:CS a branch of mathematics? by Llywelyn · · Score: 2, Insightful

      The people I've met who have had vocational programming are generally lousy programmers. Training in mathematics and engineering is training in problem solving--an invaluable skill--and the mathematics gives one skills that they may never use or they may need just to get in the door to a place that uses them.

      I cannot emphasize enough the quote from the CAIP quarterly on mathematics, paraphrasing: "I tell my students to listen carefully when they decide to take their last mathematics class. They may be able to hear the sound of closing doors."

      Most everyone in my office wishes they had more mathematics in school, most people who majored in economics say they would kill for the differential equations my school forced econ majors to take, and many professors in Ecology who are doing simulation wished that ecology grad students had a firmer background in mathematics. Its everywhere, but if you lack training in it then of course you will never use it or be required to use it.

      --
      Integrate Keynote and LaTeX
    7. Re:CS a branch of mathematics? by Rimbo · · Score: 2, Interesting

      I had the exact same kind of education from the University of Texas that you had. I graduated, got a Master's degree, and made my way into the work world, where I've been full-time employed for seven years.

      Working on embedded devices right now. Sometimes I'm doing web programming, sometimes I'm writing apps, sometimes I'm writing device driver stuff. We also have a PC app that I've worked on that communicates with the embedded devices -- a rich client. Because of my education, I'm able to move seamlessly from one to the other.

      I never have to say, "I don't know how to do that." New language? No problem. New paradigm? Nothing I haven't seen before.

      I can't understate how vital the education I got from UT's CS department has been. Because of the solid fundamental background I got in those courses, I can learn any language, develop on any system, and do it faster and better than guys who went to other schools.

      If you want to learn programming languages, tools, techniques... that's fine. Like another poster said, go to a vocational school. You can learn these on your own time... and with the background from the CS education I received, it doesn't take that long.

      If you want to be prepared for a long-term career, go get a university education.

  33. Why can't Johnny design circuits? by LaughingCoder · · Score: 5, Insightful

    This is just a natural evolution. The same situation exists in hardware design. Very few young people can whip up a useful circuit with resistors, capacitors, and transistors. At my company we have 1 or 2 "dinosaurs" who invariably get called upon to solve problems in the hardware when it gets down to this level. Everyone is amazed when they throw together a quick little circuit with a breadboard and a few hand-soldered components. The simple fact is, more people don't learn to do this low-level type of work because there is not as much need for it anymore. But, and here is the rub, there will always be someneed. We'll always have to have a few folks around who understand the fundamentals. One could imagine as things continue to evolve, that these "low level specialists" could become quite expensive.

    --
    The more you regulate a company, the worse its products become.
  34. child who codes, another on the way by airuck · · Score: 3, Interesting

    I am a parent of a 10 year old boy and 7 year old girl. My son and I coded our first BASIC stamp robot (Parallax Boe-Bot) last year. He has since taken an interest in his 300-in-1 electronics kit, and modifying the games he plays on his Knoppix for Kids distribution (he often runs that over the Fedora and Ubuntu distros also available in the house). A few days ago he asked me how a web site works, so I am going to teach him a little html this weekend.

    My daughter plays the piano and has access to a MIDI keyboard. She and I have had a couple conversations about MIDI and was fascinated by the paper pipe organ we built. I just started designing a small, networked, pipe organ with the hope of demonstrating some programming and networking concepts to her.

    We have also built rockets, a trebuchet, and even kept bees together. I plan on dusting off my homebrew equipment soon.

    Children are never bored by the possibilities of technology. They need only to be exposed to something more than closed and highly polished consumer products. Even THAT is a wonderful lesson in repurposing if there is a hack around who cares to show them.

    --
    First entomology, then virology, and finally bioinformatics systems. Bugs follow me wherever I go.
  35. Re:Kids today...... :-) by Gr8Apes · · Score: 5, Insightful

    Unfortunately, without understanding the basics, all your higher level abstractions get you is unmaintainable abstractions. Understanding the base concepts is necessary to know when to abstract at higher levels, because then you'll understand what that higher level abstraction does for you.

    Does this mean you need to know about peeks and pokes? In today's world, I no longer think so (and there's that huge collective sigh of relief from students everywhere). But you should definitely understand how your language handles memory, even if you're coding in a language with GC capabilities. It keeps you from churning memory and slowing down your app to a crawl.

    --
    The cesspool just got a check and balance.
  36. Re:Kids today...... :-) by Sir+Runcible+Spoon · · Score: 5, Insightful
    That's right, and the other point made was that BASIC was always there. Your average kid knows how to turn on the machine and insert a game disk to start a game. In the past there was an intermediate step and it looked like this:

    Ready>

    Before they did anything else they were writing programs. Simple ones that started the game. Next they were playing with loops:

    10 PRINT "Big Tits"
    20 GOTO 10

    And er, ... well, ... the rest just followed.
  37. Re:Kids today...... :-) by CastrTroy · · Score: 2, Insightful

    However, there's plenty of time in your 4 years of college to learn Assembly, C,C++,Java, and a plethora of other languages. If you're talking about those 1 year career colleges, well, then that's another story completely. You can't learn how to program in a year, no matter how intensive the program is. I've known quite a few people who went to those one year career oriented schools, and they couldn't program their way out of a paper bag. The simple thing is, is that you need a large basis to really understand how to program.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  38. Re:Kids today...... :-) by CastrTroy · · Score: 5, Insightful

    Do kids today that are interested in soccer not think it's fun because they can't bend it like Beckham the first time they kick the ball? Do people who like woodworking stop because they can't build a perfectly constructed table and chairs, and instead can only build a crappy bird house? I don't think that's really the problem here. Sure there's going to be some kids who are discouraged because they can't program Doom 3 the first time they sit down and code. But those probably aren't the kids who would end up having a career in computers anyway.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  39. mathematics killed hobbyist programming. by Anne+Honime · · Score: 2, Insightful
    I have been thinking it is due to a few reasons. First off, it seems that math education is sorely lacking in many college students.

    Pleeeeeaaase... that's still the mantra I was hearing when I was 13 and happily beginning to code (in 1985). Why would 'we' be prevented from the right to code if 'we', litterature oriented people, despise mathematics ? There is still SO much to do with only 4 operations ! Granted, I won't dwelve into image processing, signal analysis or those fields where a strong math background is required. But I have a thing for databases, and in the 90's I was making nice applications to manage library catalogues. In Clipper, no less.

    Well I'm not a programmer, save some hobbyist gadgets when I need them now, but I still can code some ASM, Basic, and C. When I feel the need, I'm not afraid to alter some parts of a GTK+/C program to better suit my aim. And I've never felt the urge to become a mathematician.

    I think the mathematical mindset requirement is in fact more a deterrent for wannabe young programmers ; nobody knows how much good and creative ideas it cost the world to leave so much brilliant people at the door. Professionaly, I struggle everyday with mathematicaly clean softwares, written by certified engineers, softwares that are blatantly unfit to the mindset of my lawyer job. I have millions of ideas to improve the workflow I'm forced to follow, but when I bring them on the table, I'm sneered at because "I can't possibly understand computers". Stupid assh*les, I've had 3 time more computers in my life than them. But I need to eat, so I back off and go back to my paid work.

    It's not really different than before when I was a teen. We had one of the first computer lab in school, but the management of it was trusted by our mathematics and physics teachers. Access to the lab was granted as a reward for good science pupils, no need to say I've never seen those computers closer than 10 meters away. That's because I strongly felt frustrated at the time that I pressured my parents into buying me a Tangerine Oric 1.

  40. Re:Kids today...... :-) by arivanov · · Score: 3, Insightful
    It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
    -- prof.dr.Edsger W.Dijkstra

    IMHO Dijkstra is right and you are wrong. BASIC is a horrible language for learning to code and it is the wrong language to learn to code. It is not designed as a learning language. It takes the worst out of FORTRAN and mutilates it even further.

    There are languages that are designed for that purpose and allow people to learn to code without mutilating their brain beyond recognition. I learned to code rather late (at the age of 14) and I had the opportunity to chose between Pascal, GraphFort, ASM (6502 and x86), Logo and BASIC. I learned them in exactly this order and used BASIC only in the rare occasions when the school forced us to work with it on 6502 based Apple ][ clones that could not do anything better. Even in that case I had a list of procedures which simulate recursion (and a few other suspects from "adult" languages) memorised so I could code in the horrid presudolanguage puke.

    The problem with "Johnny can't code" is elsewhere. Johny does not have the stimulus to code. At all. In most households he is introduced at an early age to the computer as a toy and treats it as a toy while growing up. He does not look at it as a toolkit to assemble something usefull. He has no incentive to write anything in the first place and is getting less and less incentive as the personal computing continues to devolve to joe sub-average level. If you want Jonnie to code his parents have to provide him with a challenge which can be satisfied only by coding it. We grew up with it, trying to write a few "adult" programs which we (the adults) clearly know to be beyond Jonnie's patience and skill have not killed anyone. If Jonnie's parents have not bothered to provide him with such challenges and the tools to work on them (books on a real programming language), they should not bitch that he has no chance to become a programmer.

    --
    Baker's Law: Misery no longer loves company. Nowadays it insists on it
    http://www.sigsegv.cx/
  41. Re:Kids today...... :-) by Shaper_pmp · · Score: 4, Interesting

    What does learning about the underlying system help with in programming?

    Architecting beautiful code? Nope.
    Learning powerful, high-level abstractions? Nope.

    Programming efficiently to the hardware.

    With computers getting ever-faster and more advanced, coding efficiently is less and less important than it used to be. Efficient algorithms are still pretty important, but that's more about using matrix calculations and streamlining progam flow than about the intricacies of memory-management and choosing where on the hard disk you place your data for minimum retrieval time.

    Witness the rise of interpreted languages like Perl/Ruby/PHP. Look at how semi-compiled bytecode languages like Java and the .NET stable are more mainstream than C/C++/whatever.

    Don't get me wrong - I first learned BASIC, then C, then C++ and a bit of assembler, and I wouldn't trade this knowledge for the world. Nevertheless, now when I write C# code which is compiled to MSIL/.NET bytecode, which is then interpreted by the .NET runtime and turned into CISC instructions which are sometimes even then converted into RISC instructions... what exactly should I be coding to? How can I know what's happening to my code after it's run through 4 or even 5 levels of automatic conversion?

    These days kids are learning how to use high-level tools first, and only learning the lower-level stuff as they get better and better. Sure this means an awful lot of nasty, bloated beginner-level PHP and VB.NET, but by the time they're ready to tackle compiler design they've generally already picked up the important bits as they go.

    When we were learning code we'd write crappy code in BASIC/C, and it'd sit on our home PCs and never go anywhere. Now when a kid writes crappy PHP or VB.NET it's generally posted to a forum or used to run their website, so of course it's more visible.

    We all wrote crappy code when we were learning, irrespective of the language. Certainly, I know I wrote some BASIC/C code that makes me cringe when I think of it now.

    --
    Everything in moderation, including moderation itself
  42. Re:Kids today...... :-) by ultranova · · Score: 2, Informative

    c, c++, java, perl, python, php, pascal, javascript, whatever - you can write all your source the old way - line-by-line, and most of us do. Heck, even Delphi, one of the better IDEs, doesn't require the IDE environment if you really want to go the type-in-all-the-source route. Last I looked, both c/c++ and java were available for free for all the major platforms.

    None of those are line-oriented programming languages. They are block-oriented and some of them are object-oriented programming languages. A line-oriented programming language looks like this:

    10 print "Hello World!"
    20 goto 10

    A block-oriented programming language looks like this:

    int main(void) {
    while(true) {
    fprint("Hello World!\n");
    fflush(NULL);
    }
    return 0;
    }

    And an object-oriented one looks something like this:

    public class HelloWorld extends Object {
    private class NoMessageException extends Exception {
    public NoMessageException(String cause) {
    super(cause);
    }
    }

    private final String message;

    public HelloWorld(String message) throws NoMessageException {
    if (message == null)
    throw new NoMessageException("No message.");
    this.message = message;
    }

    public void printMessageInEndlessLoop() throws IOException {
    /*
    * Some subclass in some distant future might throw IOException,
    * so better make everyone catch it already.
    */
    while(true)
    System.out.println(message);
    }

    public static void main(String args[]) {
    try {
    HelloWorld world = new HelloWorld("Hello World!");
    } catch (NoMessageException e) {
    System.err.println("No message ?!? AARRGGHH!!!");
    }
    try {
    world.printMessageInEndlessLoop();
    } catch (IOException e) {
    System.err.println("Got IOException, exiting...");
    }
    }
    }

    I realize that there's easier ways to do it with Java than the one shown, but as many in Slashdot have said, the guy who doesn't produce code that makes a computer science professor get an orgams by just reading it is not going to get a job - I'm talking to you, whoever it was that said that using a goto results in automatic rejection of the applicant.

    So, anyway: if you were a kid, you might write the two-line Basic script, or even the C one; but would you bother with Java, or would you give up ? And more importantly, since kids mostly learn from other people's code at the beginning: which code is the easiest to reverse engineer ?

    --

    Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  43. Want to get your kids into programming? by Barts_706 · · Score: 2

    Buy them new Lego Mindstorms NXT - with the ease of graphical programming and instant results they may see the results quickly enough not to get discouraged. I think it might be an option.

  44. Re:Kids today...... :-) by WhoBeDaPlaya · · Score: 2, Interesting

    I disagree - turned out alright even after having dabbled in way too much BASIC, FORTRAN and PASCAL :P

  45. Best Java practices by CustomDesigned · · Score: 2, Interesting

    In my Java classes, when a resource is freed by a destructor - as opposed to by a close() method or equivalent - it logs a warning. Optionally, the open() method can capture a stack trace - which can help track down the leak, but eats too much memory to do all the time. Along the same line, the Boehm garbage collector for C/C++ has a mode where it can warn you about memory that has not had free() called as it collects it. This is very helpful for debugging manually collected C/C++ programs.

  46. Re:Kids today...... :-) by Saint+Fnordius · · Score: 5, Insightful

    You managed to get David Brin's point terribly, horribly wrong. It's not that BASIC provided a good basis for future programming, but that BASIC awoke a desire to learn more programming. It was good for non-programers to grasp the concepts behind programming.

    I think the best candidate for a BASIC replacement was HyperCard, but alas, that too is a dead project. It was cool, and its scripting language - HyperTalk - was revolutionary in that it was geared to resemble "natural English". Sure, it was limited in many ways, but the original Myst was made with HyperCard, and those of us that fiddled with it were ready when the Web hit prime time, already armed with the concepts of event-oriented design. HyperTalk scripts were easy to read, so easy that commenting became scarcer.

    I can't find a worthy successor to HyperCard, though. IMHO Apple should release it under some open source agreement, so that it can be ported

  47. The article is only partly right. by Tanuki64 · · Score: 2, Insightful

    Most of it misses the point. As do most of the replys to this article. Many here say, that there is Python, Perl, Ruby. You can even find 1001 flavours of BASIC. So what? What to do with it? When I was young, there were dozends of weekly or monthly journals, which contained game code. Sometimes I took me hours to hack it in. But I had the code. Even more, many magazines explained the code line by line. I was able to change things and see the results immediately. When I had no joystick, I was able to change the game to use keyboard inputs. This was interesting, this was fun. I really doubt I would have invested even half the time I used to hack in those listings, to learn a programming language when all I had where books, which started to explain how to print 'Hello world' on the screen. I think this is the real problem today. There are no materials to interest todays kids. When I go in a bookshop I see dozends of books, which fine if you are an adult who wants or has to learn. When I browse magazines I see game tests, hardware tests, rarely a small project, which is little more interesting than 'Hello world'.

    Does anyone today know a magazine like ANTIC for the Atari? Twenty years ago there were dozends. Today? None.

    So install whatever programming language you want on you childrens computer. It won't change anything.

  48. Re:Kids today...... :-) by LWATCDR · · Score: 2, Interesting

    Dijkstra was right but limited in his thinking.
    It is practically impossible to "TEACH" good programming to a student that teaches themselves basic.
    Basic is not that bad for learning programing. It is terrible for teaching programing.
    When I was in school back in the days when dirt was a new idea and the SuperPet was the best computer for computer teaching programing. Hey it had an interpreted FORTRAN, Pascal, APL, and I think COBOL. I learned Pascal first followed by Basic, I know some very good programmers that taught themselves basic first and then went on to real programming languages.
    You are right in that we don't need basic anymore. Python is just as "easy" as Basic and a lot better thought out.

    I don't think the problem is the languages. The problem is expectations. When I was a kid everyone wanted to learn to program to write games. The games of the day where simple and you could wrap your brain around lunar lander, pacman, break out, or space invaders. A 12 year old could imagine themselves creating a new video game. Now the bar has been raised to Doom 3 and Half-Life2.
    I doubt that betting your name to print across the screen of flying a space ship in 2d on your monitor has the same thrill.
    The same chilling effect has hit model building. Why build a model of a corvette or a P-51 when you can fire up Grand Turismo 4 or FS?

    kind of gives me and idea for a new competive programing toy :)
    Now I just need three web cams two model tanks, some sensors, and some blue tooth interfaces.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  49. What About Lego?!? by lys1123 · · Score: 2

    If you want to talk about amazing incentive for getting children to program, look no further than Lego. I remember loving Lego Bricks as a child when all they did was fit together. Now you can learn to make actual working robots from them, using a programming language which was designed for children!

  50. That's not like any BASIC program *I* ever wrote! by Valdrax · · Score: 4, Funny

    You're missing the ^G to make it beep after every line.
    Amateur.

    --
    If it's for-profit but free, you're not the customer -- you're the product (e.g., the Slashdot Beta's "audience").
  51. Its true! by sobachatina · · Score: 2, Funny
    Its true!

    I have a CS degree and couple years experience and I wouldn't even know where to start to code myself out of a paper bag! :)

  52. What about Squeak? by flimflam · · Score: 2, Interesting

    I've only played with it a bit, but it seems like it could be an ideal learning environment -- the kind of thing that feels like you're playing but are actually learning something.

    --
    -- It only takes 20 minutes for a liberal to become a conservative thanks to our new outpatient surgical procedure!
  53. OOOH, *I'll* tell yuo why Johnny can't code by revlayle · · Score: 4, Funny

    Because Johnny is an idiot:
    * Johnny is the one at your company that has been working there for 10 years
    * No one fires him becuase he "knows a lot of things about the process"
    * Johnny talks about his technological exploits
    * Eveyone else has to debug and fix Johnny's bugs
    * He never asks the other developers any question on how to do something, for fear he will look inferior (too late Johhny!)
    * AND WHEN YOU NEED A FREAKING IP ADDRESS FROM HIS PC???
    You: "Johnny, can you get me your IP Address?"
    Johnny fumbles around his desktop, going through all the Control Panel Options
    You: "'ipconfig' Johnny"
    Johnny: "EYE PEE CONFIG?"
    You: "Yes, you know, the command prompt?"
    Johnny: "What?"
    You: "Never mind... what the status on your code module?"
    Johnny: "Module??"
    You: *head explodes*

  54. Re:Kids today...... :-) by lowrydr310 · · Score: 2, Funny

    When I was 8, the only code that I knew was load "*",8,1

  55. Re:Kids today...... :-) by Tim+C · · Score: 2, Insightful

    In most households he is introduced at an early age to the computer as a toy and treats it as a toy while growing up. He does not look at it as a toolkit to assemble something usefull. He has no incentive to write anything in the first place and is getting less and less incentive as the personal computing continues to devolve to joe sub-average level.

    You could have said exactly that 24 years ago when I got my first computer (a 16K ZX Spectrum). All most people did with those things was play games; the closest they got to programming was typing LOAD "" and hitting enter.

    It was only really those of us that not only did that, but also typed in program listings (in BASIC) from magazines that went on to experiment with writing code ourselves. My parents didn't provide me with programing resources (although from memory, the Spectrum came with a BASIC manual), or particularly encourage me to experiment, I did it all off my own back. Of course, being me, they didn't *need* to encourage me; at times, it was all they could do to stop me taking things apart to see how they worked...

  56. Don't forget "Insightful" by Mateo_LeFou · · Score: 2, Insightful

    Parent is dead on in so many ways. Programming is all process (teh P in CPU). Our societal demand for convenience and instant gratification has many victims, but one of the saddest is the general level of intuitiveness among kids & teenagers. Accomplishing something requires steps (an algorithm, if you will). If you generally have accomplished everything by pushing a single button, your ability to analyze a problem -- viz., break it down into steps -- languishes.

    Later in life (in the unlikely event you actually get a job coding) you become one of those guys that just throws hardware and buzzwords at everything

    --
    My turnips listen for the soft cry of your love
    1. Re:Don't forget "Insightful" by try_anything · · Score: 5, Insightful

      Funny that kids today are pretty good at video games that are longer and more complicated than the ones we played, eh?

      What kids are after is fun. I did a ton of programming when I was a kid, and I never seriously considered doing it for a living until after I graduated from college. It was just fun.

      What's missing is that programming languages used to be built into the computer. For me, BASIC was there when I booted up the computer. Documentation aimed at complete beginners like me was the norm. It would have been hard *not* to program.

      These days the easiest way to start out would be with Python. It seems simple to us, but...

      1 - know it exists
      2 - know how to download the right version for your computer (not a mac or linux version)
      3 - find the installer and know to run it (and know that it's safe)
      4 - figure out how to invoke the installed program (ok, that one's easy)
      5 - find documentation written for beginning programmers
      6 - figure out why python won't run the programs you saved as .doc files

      Can you imagine an eight-year-old Windows user with clueless parents doing all that by himself?

      I didn't have to download anything or know anything about operating systems. I don't remember having to sort through tons of titles like "Advanced BASIC Beowulf Architectures in 2 Minutes for J2EE Certified Hardware Astroengineers" at the bookstore to find one that was right for me. In fact, I'm pretty sure the book I used came in the same box as the computer. Plus, all the computer magazines had program listings in the back that you could type in.

      Microsoft would earn big brownie points with parents if they included an extremely simple IronPython-based (or even Logo-based) "Learn To Program" IDE with every copy of Windows. Twenty years ago, people knew how to write documentation for beginners. (Not children or computerphobes. Not people with congenital learning disabilities. Just beginners, of all kinds and ages.) I'm sure it could be done again.

  57. Re:Kids today...... :-) by Skrynesaver · · Score: 2, Insightful
    Funny and all though your remark is you are entirely correct. Writing a version of blackjack used to be an impresive feat "when I were a lad"(TM). For kids today, if it doesn't render a credible 3D world, play music(not ^G), and generally act as a complete Multimedia experience no one is impressed anymore. The bar has been set higher and klutzes like me who never got into polygon topography maps just wouldn't have the impetus to code themselves as the bar was set to high.


    Of course you could just point and click in an IDE and have a 250M app that provides you with a windowed environment and voila the same functionality but with theme music and a spinning globe in the background. You'll still need the same 30 lines of logic.

    Sorry I had to ...
    When I were a lad we had to buy Spectrum magazine and type in pages of uninteligable register commands, then we'd run the program and we'd discover we mistyped a garachter on the first page and then you'd go to bed and try again tomorrow, but you tell that to young people today, and they won't believe you!

    --
    "Linux is for noobs"-The new MS fud strategy
  58. Why should Johnny... by Organic+Brain+Damage · · Score: 2, Funny

    ... in the USA bother to learn to program? When Johnny grows up and wants a program, he can just hire a Viruru in India to do it for less than he pays Juan at Taco Bell to make his lunch.

  59. Kids don't WANT/NEED to code anymore by Opportunist · · Score: 2, Interesting

    That's my rather annihilating verdict on today's youth. If you WANT to create code, it's still possible, and maybe more possible than ever, given that today you have a lot of different and very interesting languages available to you. Yes, they don't come with your computer (unless you're using Linux, which almost invariably has a set of languages bunched with the Distro), but there's lots available online. For free. And on top of it, you get a ton of very sophisticated libraries too that take away a lot of hassle.

    But why bother? Anything you might want is available already. And better than you could do it. We used to write "simple" games like hangman or (later) space invaders, and it was cool 'cause first of all, those games were popular back then and you could actually BUY them. But hey, I could code them and give them to you FOR FREE (which was something back then, without internet and P2P).

    Why bother coding today? Anything you could come up with is invariably inferior to anything you could download.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  60. Re:Kids today...... :-) by Fordiman · · Score: 2, Interesting

    Using the CScript interpreter (comes with windows):
    while(true) WScript.echo("Big Tits");

    Which is technically one line of code, even though it contains five different fundamentals of the language (looping, boolean values, Object indirection, function calls, string values).

    If the question is "Why are there no line languages", then the question is fallacious. They're all line languages. Some of them have non-line editors, but they're all line languages.

    I like CScript for this purpose for a couple of reasons:
    --It's insanely powerful, so far as Javascript goes.
    --The separation of abilities by objects (fso, WScript, etc) makes it easy to poke around to see what you can do in a particular --javascript environment, so you end up with a tigher curve when moving to, say, ActiveScript.
    --It's complex enough to be useful, but simple enough to learn in your spare time (much like PHP, but without the extra download).
    --With a good instructor, it's an excellent primer in object oriented programming.
    --It doesn't teach bad habits like BASIC did (ie: GOTO and spaghetti code)
    --You can't break your computer with it (remember all the shit you could do with Peek and Poke? I lost a system disk that way.)
    --Ok, well, you can, but it's a pain in the butt (using FSO and WScript.Shell...)

    --
    110100 1101000 1101000 1100110 0 1101111 1101000 1100011 1
  61. Re:Kids today...... :-) by An+Onerous+Coward · · Score: 3, Insightful

    Python is easy enough to learn. Easier than BASIC, and much more powerful to boot.

    python
    Python 2.4.3 (#2, Apr 27 2006, 14:43:58)
    [GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> print "Hello, World"
    Hello, World
    >>> 4 + 4
    8
    >>> while True:
    ... print 'sex'
    ...
    sex
    sex
    sex
    sex
    sex
    [and so on]


    Then, when this gets frustrating, teach the rugrat how to save the program in a file, and run it that way.

    I've been reading over the many, many letters that this article generated at Salon, and I'm blown away by the sheer number of people who claim that BASIC programs are somehow interacting with the computer on a lower level than C++, that BASIC somehow underpins the whole object-oriented system. Can someone explain what they're talking about?

    --

    You want the truthiness? You can't handle the truthiness!

  62. Re:prof.dr.Edsger W.Dijkstra Is An Idiot by Doctor+Faustus · · Score: 2, Informative

    Do you even know who he was (he died a few years ago)?

    Yes, I think he overstated the case against BASIC (although I believe BASIC was much worse when he wrote that than by the time Commodore came along), but he's probably one of the top ten or so computer science figures of all time, along with John Bachus, John McCarthy, Tony Hoare, John Von Neuman, Alan Turing and a few others.

  63. Re:Kids today...... :-) by LiquidCoooled · · Score: 2, Insightful

    The GP was remarking not just on the lack of languages, but the simple fact that right out of the box on day one straight in front of you was a BASIC command prompt.
    You could load a game or write a program.
    Nowadays you have to choose before bootup (consoles) or go out of your way and find the language.

    --
    liqbase :: faster than paper
  64. Perl objects by goombah99 · · Score: 2, Insightful

    perl -we 'print "Big Tits" until 1==0'

    Perl seems to fit the bill, since it can be as simple as you want and doesn't even have the type issues Basic has.

    Object oriented perl is a wonderful was to learn objects. Wait don't scream. I said "learn". I'd been object oriented programming for years in Java and other languages. But I truly did not understand how all the pieces worked till I wrote perl objects. In perl it's like one of those "visible man" models. You learn how inheritance works. You learn how binding of an instance to a class works. You understand closures for the first time. You understand how the namespaces are kept separate and how instance memory is allocated. It's not just some voodoo that simply works, like in JAVA. Moreover all of the voodoo is not out of reach but right there for you to mess with. An instance can change it's own inheritance if you want it to. An instance can create a new method and write it into it's own namespace if it wants to. An instance can trap calls to it's own methods and redirect them or intercept calls to methods that don't exist and respond to them.

    Those features are not unique to perl (for example pyhton implements objects identically to perl). The difference is that All of that object management occurs in perl itself and is not hidden behind syntactic sugar (like python and java). You quickly appreciate what dereferencing costs, etc...

    The other thing that is nice about perl for learning is all of those prefixes like $ @, and so forth. They may make perl look like cursing but they force you to think about what a variable is. When I index out an array, I get what? an array? no I get a scalar, so $X[2] is how I index @X. You can look at someones perl program and if it's written well tell what every word is. You cannot look at a bare name in python or java and tell if it's a method, an array, a hash, a scalar or reference. Perl you can. (Oh and by the way let me explode a perl/pyhton myth. python has more special markup characters in use than perl, the main difference is that in python they are suffixes instead of prefixes and are overloaded with multiple meanings--try counting how many modifiers there are some time (e.g. () , [] ** and so on))

    Now once you learn perl objects. Well it's time to put down the perl and back away slowly. Python, java are much better languages for writing re-usable, easily read, complex object oriented programs. Perl is still a much more powerful language than either. But it's powerful for efficiently creating compact or single use programs quickly. Not for well designed complex systems.

    --
    Some drink at the fountain of knowledge. Others just gargle.
  65. Re:Kids today...... :-) by An+Onerous+Coward · · Score: 2, Insightful

    Okay, what part of x86 assembly coding does not mutilate your brain beyond recognition? :)

    While I'm at a loss to explain Brin's obsession with BASIC, I think that you and Brin are saying the same thing. There isn't much exposure to the inner workings of the computer by default. If you have Linux, the kid might have a chance, but what comes with Windows by default? cmd.exe? Yech. More important, even on Linux, there is no need to touch the command line in order to do all the fun, eye-popping things that computers are already trained to do. You could become quite adept at manipulating your computer without learning anything about how the computer operates.

    Nor do most kids have an adult on hand to guide them, or even get them started. If a kid tells his parents, "I want to learn to program," they might go out and buy him a computer, then scour all over the Start Menu for the programming program. Teachers generally aren't any better when it comes to knowing how to get a kid on the path to 1337-ness.

    I'm trying to think what a simple programming curriculum for grade schoolers would look like. What programming language would I use? What concepts would I try to teach, and how would I make them comprehensible to the rugrats? I think I'd start with Python, teaching them to use it as a calculator, then teaching them to output, then teaching them to get input and use it as output, then basic program flow. Objects would be a whole big ball of wax that I might not want to start them on straight off...

    --

    You want the truthiness? You can't handle the truthiness!

  66. Re:Kids today...... :-) by cant_get_a_good_nick · · Score: 2, Insightful
    It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
    -- prof.dr.Edsger W.Dijkstra


    IMHO Dijkstra is right and you are wrong.

    Hmm, i started on a Timex Sinclair 1000. Ithought for a while i was cool, i had the best alpha geek story around me. Then I moved a couple rows over, and of th3 7 other guys around me, 3 other guys had also started with Timex Sinclair 1000s. Not only did that thing run BASIC, but on a machine so limited it didn't even have a tokenizer, you had to enter your program in a weird pre-tokenized form with BASIC keywords single keys on a keyboard when you were in the right mode. Somehow we were able to get past the mental mutilation and move on to other thngs. I mostly program in C, Shell, and Perl, with some code lying around in C++. The other guys around me program Perl and SQL mostly (i feel sorry for the SQL).
    Most of us MS basic in a variety of forms, on the cheap 650x processor based machines of the 80s (Commodore 64, Apple ][, Atari 800), the age this article is talking about.

    Dijkstra's quote is a fun thing to banter around when you want to stop debate on BASIC, but in my experience is very wrong. Getting your head around how a computer works, there is a CPU coordinating things, what a memory address is how a parser works, getting exposed to these things early and cheaply and fun is the most important. The language has importance yes, but the jump from being a passive user to someone who wishes to control the internals of the machine and able to make an internal model of how it works is a much larger jump than going from BASIC to say, C.
  67. Re:So True!!! by Si · · Score: 2, Funny

    Haha! What country do you live in, pal? because here in the UK there's laws agin that kind of thing! Kids buying knives? AND GLUE??? Are you living on Mars?

    --


    Why is it that many people who claim to support standards have such atrocious spelling and grammar?
  68. Python, Javascript. Less common: Logo, Squeek... by dwheeler · · Score: 2, Insightful

    This is bogus. There are many languages that are "easy to learn and give you a response quickly".

    For example, Python is a very good language for teaching the basics of programming, and it's really simple to learn. Javascript also works.

    The old BASIC that he probably remembers (e.g., what ran on Apple IIs, etc.) was actually pretty nasty; functions didn't have parameters, loops were primitive, you couldn't create your own datatypes. You had to UNLEARN a lot of stuff. Yes, modern BASICs are better, but they're now competing with many other also-good languages.

    --
    - David A. Wheeler (see my Secure Programming HOWTO)
  69. Re:Kids today...... :-) by bladesjester · · Score: 2, Interesting

    I started out programing in BASIC on my CoCo when I was a kid and I had no problem switching to C++ later.

    Maybe I'm just weird, but the point is that using BASIC as a kid doesn't necessarily destroy your brain.

    --
    Everything I need to know I learned by killing smart people and eating their brains.
  70. What happens when complexity gets out of control by poopie · · Score: 3, Interesting

    This is not just programming... it's everything.

    Programs used to be simpler and written by *ONE PERSON* - you could read and learn from someone else's code. Nowadays, most programmers are just a cog in a wheel using an IDE to implement one function in one library, and they rarely grasp the code in it's entirety

    Cars used to be simple, mechanical entities where the underlying workings hadn't changed much in decades. Nowadays, cars are so chock full of electronics and there's hardly anything improvable by a single person these days

    Electronics used to be "simple" - circuit boards were single layer and traces could be easily seen with the naked eye. ICs were standard parts you could by at Radio Shack. Parts could be hand soldered, removed, and replaced. Nowadays, parts are all custom, miniaturized, with 5-layer circuit boards, and they're just too complex for any one person to fully understand.

    Phones and radios were originally very basic and simple and easy to understand / fix. Nowadays, we satellite radio and cellular phones that VERY FEW people understand enough about to actually work on.

    People used to know how to do everything that it took to run a farm. Managing livestock, crops, construction, markets etc. Nowadays, people just vegetate in their condo, drive to work, sit in front of a computer, and drive home. They don't need to know how to SURVIVE.

    I've said this before... if there were a catastrophic event that destroyed most of society, very few people would have enough knowledge to rebuild what we currently have.

    Therefore, I believe that we as a society are getting dumber because we need to know less, and because modern medicine can keep nearly anyone alive long enough to reproduce, I'd say that evolution of the human species has stopped and that as a species, we're getting weaker.

  71. Re:Kids today...... :-) by dslauson · · Score: 3, Insightful

    I'm a software engineer. I love writing code, but I'm afraid I'm not seeing the problem here.

    I look at it like this: being a programmer is to computer literacy what being an expert mechanic is to the ability to drive a car. We don't need a society where everybody knows how to write software, just like we don't need a society where everybody knows how to rebuild a carburator.

    Of course, I think it sucks that Windows doesn't ship with a C++ compiler (or whatever, language is not the issue). The anyone willing to do a little tinkering can have the tools they need to write some code quickly, and for free, on the internet. They just need a little encouragement and mentoring.

    Johnny can't play chess. Johnny can't appreciate Fellini films. Whatever. If Johnny's not into those things, then he can pursue something else. The whole "Johnny Can't Code" thing is just nonsense. So what? As long as a kid learns to effectively use a computer, which in todays society means being able to navigate an OS, use a word processor, and run a browser and email client, they're going to be fine. For those of us who enjoy it, there are great and promising careers out there, but don't try to push it off onto everybody else.

  72. Re:Kids today...... :-) by alexq · · Score: 2, Insightful
    This is true, but there is no reason that the level of abstraction needs to be the same as it was 20 years ago. Once you are a hard-core programmer, you are free to learn the lower or higher level as you see fit/need to.


    The "scripting" languages that serve as entry-level tools for today's aspiring programmers -- like Perl and Python -- don't make this experience accessible to students in the same way. BASIC was close enough to the algorithm that you could actually follow the reasoning of the machine as it made choices and followed logical pathways.


    What the author describes here in the article is just the specific 'sweet-spot' that existed for him and many others 20 years ago, but it wasn't necessary. I'm sure 20 years ago people were complaining that learning this code was not right - you needed to know the actual machine code, or the layout of the processor internally, what registers mean, etc. There are always levels of abstraction, but attaching such and important meaning to "the way I learned things" when there really isn't one is kind of meaningless, I think.

  73. Re:prof.dr.Edsger W.Dijkstra Is An Idiot by Petersko · · Score: 2, Insightful

    "Yes, I think he overstated the case against BASIC (although I believe BASIC was much worse when he wrote that than by the time Commodore came along), but he's probably one of the top ten or so computer science figures of all time, along with John Bachus, John McCarthy, Tony Hoare, John Von Neuman, Alan Turing and a few others."

    I know who he is. But if some guy tells me that the sky is normally a lovely shade of salmon, I don't care if he has a list of credits a mile long. When he says that, he's being an idiot. At least at that point in time.

    I'm a pretty smart guy. My IQ is comfortably nestled around 140. But occasionally I, too, am an idiot.

  74. Re:Kids today...... :-) by Marxist+Hacker+42 · · Score: 2, Insightful

    Not without a jump/goto.

    What do you think a procedure call is, if not a Gosub? What do you think an if statement is, if not a JNE or JEQ?

    --
    SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
  75. Re:What happens when complexity gets out of contro by bnenning · · Score: 2, Insightful

    Division of labor is good. If everybody has to be fully self-sufficient, that greatly reduces the opportunity to focus on a particular area and make advancements that everyone can benefit from.

    if there were a catastrophic event that destroyed most of society, very few people would have enough knowledge to rebuild what we currently have.

    True and unavoidable. Unless we go back to the caves, so "rebuilding" would be easier.

    Therefore, I believe that we as a society are getting dumber because we need to know less

    Collectively we know far more than we did in the past, and thus the percentage of that knowledge that any one individual can have is less.

    because modern medicine can keep nearly anyone alive long enough to reproduce, I'd say that evolution of the human species has stopped

    Give biotech a few decades.

    --
    How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
  76. Re:That's not like any BASIC program *I* ever wrot by Blakey+Rat · · Score: 2, Funny

    If you want to get really advanced, you can make a FOR loop and Poke in a different text color for each one:

    10 FOR X=0 TO 15
    20 POKE 646,X
    30 PRINT "BIG TITS"
    40 NEXT X
    50 GOTO 10

    *NOW* you have a good program. :)

  77. Chris Pine's 'Learn to Program' by jamesmacaulay · · Score: 2, Insightful

    This is mentioned in the article in parent's post:

    http://pine.fm/LearnToProgram/

    I'm going to give this to my niece when she's a bit older.