Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Why Johnny can't code (salon.com)
57 points by someperson on June 21, 2010 | hide | past | favorite | 77 comments


Other articles in this series:

  Why Johnny can't repair a carburetor.
  Why Johnny can't stack his vinyl records properly.
  Why Johnny can't ride a horse.
  Why Johnny can't prepare a basic white sauce.
  Why Johnny can't find the outhouse.
</JustKidding>

I've been around long enough to understand OP's argument and sympathize with him. I've also been around long enough to appreciate that there has never been a better time to learn programming.

Why? Two words: "View Source".

I've been through many modes of programming (all the way back to punch cards and once a day compiling) and I am nostalgic for none of it. I can't imagine going back.

Today, anyone can learn HTML, CSS, and Javascript. Resources are everywhere. Results are instant. And best of all, examples are everywhere. How many times have you been to a webpage and wondered, "How'd they do that?" "View Source" is often your window into so many other worlds. It's hard to believe that there was a time when you couldn't do this.

Like OP, I get nostalgic, too. I miss a lot of things about the good old days, like Willie Stargell hitting 500 foot home runs without steroids, 35 cent Stroh's drafts, and hot Big Macs. But not old technology, even BASIC.

OP, turn your kid on to the "basics" of web programming and let him find his way with his generation's technology, not yours. You'll think he's missing something because his experience won't be your experience. You'll be partially right, but don't forget about all the stuff he'll be able to do that we couldn't.


I hit "view source" on google. Here is some of the javascript:

    ar _IG_MD = _IG_MD_Generate({ct:0,t:[{i:0,n:"Home"},{i:1,n:"arxiv.org"}],dt:[0,1],m:[{i:2,mt:25,u:"http://www.quotationspage.com/data/qotd.rss",ti:"Quotes of the Day",sn:"A3",t:0,dd:["ed","del","ming","shg","rg","ag"]},{i:139,mt:25,u:"http://lwn.net/headlines/newrss",ti:"LWN.net",sn:"Ne",t:0,dd:["ed","del","ming","shg","rg","ag"]},{i:137,mt:25,u:"http://blog.jgc.org/feeds/posts/default",ti:"",sn:"",t:0,dd:["ed", [...Lots more snipped...]
This will help Johnny learn to code how?


Straw man. 1 counterexample != refutation

"View Source" doesn't help on every web page.

But it does expose more examples of code than ever before. That's all.


I don't think you're using the word strawman correctly. I believe it means that you create an easily refutable argument and pretend your opponent used it when he really didn't. You then knock the argument down and proclaim victory.

Also, the example given above is an excellent example of the fact that Javascript has become the assembly of the web and that there are a large number of tools that are going to spit out code like that.


I'm not exactly sure you got the point of the article here. One of the nice things about BASIC to which the author alludes is that it's a quick and dirty language. The implication is that, by being a quick and dirty language, it is well-suited for these educational ventures. I tend to agree. (I say this as someone who learned how to program using MIT Scheme!)

This isn't an issue of generations at all; it's an issue of accessibility. Doing the same educational tasks in a Web development environment that you would also do on a household microcomputer like the Commodore 64 is comparatively much more difficult. On the Web, you're learning HTML, Javascript, and potentially something like PHP. That's two or three different languages just to get out the door! On the other hand, on the C=64, you're learning only Microsoft BASIC. The barrier to entry is lower.

Face it. He's a kid. If he's enough of a nerd, he's invariably going to want to write cute little games to show off to his friends (I know I did when I was the tender age of nine, which was in 1996), so if you really want to make it a generational gap issue, give him a TI graphing calculator and tell him to have a ball. He'll thank you for it later.


"cute little games to show off to his friends"

Just you, javascript, and a canvas tag. No CSS, PHP, or further HTML required.

The biggest impetus to my programming excitement as a kid was how hard it was to share what I'd done with my friends. A website is the easiest way to share a program I've ever known.

Javascript is a very simple and forgiving language. Basic might be easier to learn, but I've never seen any evidence for this. I know I found it incredibly tricky, in hindsight largely due to limitations and design errors in the language.


The important difference is that with A CBM64 or BBC micro, you turned it on and typed.

10 print "I am great"

20 goto 10

Now after it has booted and you have logged on and started the visual blah IDE you start programming with

from microsoft.java.net.jrhvbieurbv import sun.microsoft.jobs security model com.apartment.nice_view

#include <stdio>

public virtual void extern _main():

And tell little jonnie that he isn't supposed to understand any of those words - they are grown up computer stuff, he should just type in whats in the book.


I wish I could have learned programming with Javascript.

Imagine all those kids learning JS/jQuery first, and having an implicit understanding of callbacks/evented programming from the beginning. <sigh>. Some of those kids have a massive advantage which I admit I find a bit intimidating at times. They certainly don't seem to be suffering from a lack of BASIC.

I would also like to point out: http://www.u.arizona.edu/~rubinson/copyright_violations/Go_T...

Basic only really forms a decent introduction to assembly.


I would suggest starting with language such as MIT Media Labs Scratch. Which is a great resource, it is also an active project with web based ide. http://scratch.mit.edu/ He is complete ass when he talks bullshit about MIT Media Lab without knowing about their current efforts. The OP is an complete idiot lost in nostalgia, is he nicholas carr??


The world is a circle.

I figured, maybe I'll port some basic program for linux, so I did a search of basic in debian and found:

http://packages.debian.org/lenny/basic256

Click on the homepage link and:

http://www.basic256.org/

Perfect! I'm about to write to the author of the post and then I notice:

Check out "Why Johnny Can't Code," the article that inspired BASIC-256.

LOL

Someone should update the title to point out that the article is from 2006, and the link above is the answer.

(The actual link on debian is http://kidbasic.sourceforge.net/en/index.html but that no longer works, so I adjusted it.)


I'm the original author of Basic-256, if you have any suggestions, please let me know.

Most people seem to be pleased with it, but I'm starting to wonder if it's the right approach; maybe it's the C64 and not BASIC that's the key. I recently downloaded a C64 emulator and the "Programmer's Reference Guide" that I had as a kid; you almost have to try NOT to understand how a computer works in order to not get something out of a C64 and that guide.

Right away they delve into changing bytes in memory to draw on the screen, and I remembered drawing sprites on graph paper and figuring out what the binary representation would be. I was in second and third grade at the time, figuring this out on my own.

There is something about the C64. It's at the perfect spot of advanced and simple that makes learning easy.


I don't think it's the C64 - I started on a Laser-128 (an apple clone). I didn't start with graphics though, I started with a guess the number game (computer picks, and you guess and it tells you higher or lower).

I still remember the day I learned about strings in variables - that simplified my program quite a bit from a mass of hard coded strings combined with gosub.

If I have just one suggestion it's to increase your visibility. About a year ago I actually searched quite a bit for program exactly like yours. And didn't find it. I eventually found an online BASIC emulator in a browser.


> maybe it's the C64 and not BASIC that's the key.

_why would have kind of agreed. It's not about BAISC, it's that everything was really accessable.

http://wiki.github.com/steveklabnik/hacketyhack/the-little-c... http://wiki.github.com/steveklabnik/hacketyhack/the-hackety-...


Oops, nevermind, silly suggestion. It's already been done, you just have to Google "basic interpreter javascript" to find it.

http://www.calormen.com/Applesoft/ - Starts right at the interpeter

http://www.ngbasic.com/ - Has more of the classic BASIC feel, opening a window that looks like ye olde BASIC interpreter, but requires two clicks before you can find it.

http://www.quitebasic.com/ - Also starts at the interpreter, but with a more complicated example program.


I have 2 suggestions:

1) How hard would it to write a JavaScript/HTML port of it? I don't see why anyone in the modern day and age should need to download and install a program to play with BASIC. It should be possible to interpret BASIC directly in JavaScript, all within the browser. I don't believe any server round trips should even be necessary.

2) Have you let David Brin know about your effort? He seems to be doing talks on the subject still as recently as '09, so he might be able to at least mention it to people.


Unfortunately it's a GUI application. I have a very strong feeling that if you can't force your kids out of the windowed OS environment, the temptation to just go fritter away their time on some Flash game will be too strong. Who's young children haven't already been introduced to online gaming before BASIC or Python or Bash?


Like many people here, I learned to program in a windowed OS environment. I learned to write windowed applications because I wanted to write real programs. I never had an interest in doing anything with Flash or the like.

I think all it takes is the right personality and the right inclination. The idea that you have to subvert modern technology to teach kids how to program is ludicrous; the kids who actually want to learn this stuff are going to learn it.


As a 19 year old kid thats trying to learn web programming right now (After becoming reasonably proficient in java first), I can tell you first hand that there is a pretty big barrier to entry. It's frankly just hard to know what all the moving parts that you are supposed to include as padding actually do.

And it goes without saying that the "black boxes" or function calls that make OO programming or functional programming so efficient to do in groups are hell on someone learning to code.

In order to get people involved, its much better to make it easier instead of telling people to try harder.


The best way to learn web programming is to start with the fundamentals. I would recommend to pick a technology stack, like RoR or whatever, and start reading the basic tutorials, but as soon as you get to a part which references HTML DOM, HTTP, CSS, or Javascript, diverge into those subjects, learning all you can about them, until you are either satisfied or bewildered, then come back to the original tutorial. The key is to not let all the time-saving effort that has gone into the frameworks prevent you from learning the fundamentals, otherwise they'll always seem like black boxes.


I agree, but it wouldn't be a bad thing to make it more accessible to them. I started with mIRC scripts myself, and that was because it was just so easy to get to it.


This is so close to my heart. I first wrote programs in BASIC on a TRS-80 at the local Tandy store in 1978. I bought my own in 1979, then got frustrated with how slow it was. I hacked the machine, smashed the stack, wrote a Z80 command line interface, and then wrote a compiler for a limited subset of BASIC. (Hand-built recursive descent. I was planning to write a peep-hole optimiser (it desperately needed one) but never got the time).

Then I got my first "freelance" programming "contract" to write some stock prediction code. I still didn't have a clue, but my second project - still in 1979 - was a restaurant layout and waiter allocation program. It used what I now know to be simulated annealing to find good (not optimal) layouts for the restaurant given the sizes of parties that were book.

All in 16K RAM on a 1.77 MHz Z80 processor.

Why not write a simulator for a simple machine that goes into a full-screen window and emulate the simplistic language and graphics of the time? Most kids would blow it off with scorn and go back to their play-stations or whatever, but some would love it.

Which ones would become programmers? Shouldn't we encourage them?

Kids need sandboxes in which to build sand-castles and let their imaginations run wild. Can we build one for them?


have a look at scratch programming language by MIT Media Lab, Which is an active and ongoing effort. This article is written by a complete idiot!


I'm not sure if you noticed, but Scratch was started in 2007, and this was written in 2006.


WOW I USED TO THINK HN WAS ABOUT NEWS. GOOD LORD YOU PPL SRSLY NEED SOME HELP


> On-Topic: Anything that good hackers would find interesting. That includes more than hacking and startups. If you had to reduce it to a sentence, the answer might be: anything that gratifies one's intellectual curiosity.

http://ycombinator.com/newsguidelines.html


Article written by a complete idiot, agreed. Just because your computer doesn't air-drop you in a hostile land of command lines and forces you to program or be left watching a blinking cursor slowly burn in your screen doesn't mean "Johnny" is unable to program.

In 2006 Johnny could download Visual Studio Express on his Dell. In 1976 Johnny would be typing in programs from magazines and hoping the power wouldn't glitch out before he could save to tape.


My first thought was "PYTHON!"

But then, we have an ongoing transition to 3.0, and it turns out the turtle module from 2.6 is "an extended reimplementation" that is "(nearly) 100% compatible" with the prior version included in 2.5. This is probably not a problem for textbooks being written today, but it does make me wonder how durable an actual source code listing in any 'modern' language would be. How long would the average code listing remain usable?


It'll remain usable as long as previous distributions of python are available for download.

PyGame is quite a fun resource for learning programming, there's something there about pressing play and seeing your code changes translated into direct visual feedback which is particularly appealing.


The previous distribution of python will only remain usable as long as it installs and runs on whatever machine you're using.

PyGame might be fun, but I don't really see it as a true beginner's environment. It's a serious library, so it takes a lot of initialization, requires flip() calls, and runs in event-oriented style. It's also not included in the standard library.

In fact, for graphics, anything that doesn't create its own window and give you calls like drawPoly/drawEllipse is probably not simple enough to approach AmigaBASIC or QBASIC.


I started on BASIC, too, when I was 9.

I think the sandbox of today would need to run inside the browser to achieve the instant gratification of BASIC back in the day. I wonder if JavaScript could be the new BASIC - I find it hard to judge how hard it would have been to learn for my 9-year-old self. The barrier to entry for JS programming is probably a little too high (you need to know HTML, need to host your code, etc.) but a simple web based JavaScript environment with a REPL and some wrapper functions for a Canvas element and keyboard & mouse input might just do the trick.

A technical problem I can see with that is the event-based model of the browser, which is probably harder to understand than the explicit event loop. You'd need a blocking waitForNextFrame() of some kind. I guess you'd have to precompile and transform the code into continuation-style closures. Or just call their code periodically with setInterval(). Either way, the framework could gather up relevant events between frames to make them available more easily.

Damn, I really want to make this now.


Chrome and Safari have a REPL console - you can type JavaScript and get immediate feedback.

Great idea for a library that builds on what modern browsers can do to provide an environment that is similar to the old micros (I started programming on a Apple II).


Chrome and Safari have a REPL console - you can type JavaScript and get immediate feedback.

As do Firefox (with Firebug) and Opera (Dragonfly). The mental model of raw client side JS, along with actually saving your code isn't exactly "instant gratification" though. This should be a web service that lets you easily save your code, and gets rid of most of the accidental browser complexity. And while we're at it, you should be able to embed the stuff you made elsewhere, hosted or not. (though IE throws a spanner in the works if you're using Canvas and want to embed it to show others)

This is sounding better and better the more I think about it.


You could use the client side database support in Chrome/Safari to save local copies of code and allow stuff to be loaded back into the environment of the current page.


You should check out http://tryruby.org, http://tryhaskell.org, and http://tryerlang.org.

If you'd like to see the source, http://github.com/Sophrinix/TryRuby


Those run server side though, right? And I don't see any obvious way of displaying graphics, which is probably the closest you'll get to "tactile" feedback when programming.


It's true, it's all server side.

TryRuby's history (if I remember right) is that it comes straight from Hackety, so I don't think graphics displaying was really a consideration...


Best word processor I had in high school was typed in line-by-line from Compute magazine (better than the ones I would've had to spend $$$ on).

That said, why didn't he install a C-64 emulator or an Apple II emulator - no need to buy the box. Also, Logo, another good starter language has implementations, including 3D extensions. Processing + JavaScript is another decent alternative, or Canvas if that's your cup-of-(tea|joe).

It's a nice rememberence of a language many of us started with, but it's okay to let it go and move on to other things.


My path to programming, as a product of the internet generation:

As a child, I loved the idea of computer programming. I got books at the library that told you how, but they always needed equipment I didn't have. I actually wrote fake programs in Ami Pro because of sample code I found in books! My parents were cutting-edge with computer purchases, but were otherwise nontechnical. They didn't know that toy programming languages existed, and probably didn't care. They just wanted me outside!

Time passed, and in 8th grade I needed to sign up for high school classes. I saw "Computer programming" in the class listing and I registered immediately. I didn't want to enter the class knowing nothing, so I researched C++ (the language taught by the class) and came across DJGPP. I spent a lot of nights that summer careening through internet tutorials and wrote a mountain of crap, but it was fun!

The first day of school was very disappointing - I got the syllabus, and saw that I'd already learned everything on the sheet. I was equally disappointed 2 years later when I signed up for the AB C++ exam and realized I knew nothing on the sheet. The next year was the worst yet - I knew everything on the AB Java exam, but I had to spend the year relearning it all in Java! Yuck!


He'd been on that quixotic quest for three years? For some reason, I have a hard time believing it.

When the first sentence is not credible, what does that say about the rest?


I learned to program in BASIC on an Apple II, and although it was my entry language, I don't see it as necessary now. The school I work at uses MIT Scratch with the 5th graders, and they love it. I'm teaching Java in a high school computer science elective because that's what is used on the AP Exam, and they're likely to start with in college. I think Python, Ruby, or Lua would be better choices, but Java is good enough.

However, I'm also exposing them to logic circuits, machine language, and assembly so that they have a better understanding of how the computer actually works. I want them to understand the basics of what the compiler and VM are doing so that Java is not completely abstract to them. As experienced developers know, these abstractions have leaks so it's helpful to know what's going on underneath. I see BASIC as a dead-end abstraction. I would rather use assembly to teach a low-level understanding, and then use modern languages at the higher level.


This article, poetic as it is, is very wrong, imo.

I got my start in programming working with qbasic as a 12 year old, then graduating to some VB programming. I loved being able to go to any house, quickly type up a program I knew by heart, then mess around with new ideas I had. So I'm pretty nostalgic towards basic as well.

Having said that, today's situation is better. Anyone who wants to can get started on any computer with some simple HTML. In fact, people can come very close to replicating the look of their favorite sites, without needing anything but their computer and access to a few tutorials. Not to mention the fact that the other languages (Python, Ruby) are much better. Better for working, but also better for learning. I don't understand what his problem with Python as a beginner language is: it lets you do actual stuff you want to do much more easily, which is especially important when learning.


> Anyone who wants to can get started on any computer with some simple HTML.

"Lots of people wrote in to say that HTML and JavaScript are the new BASIC. NO!!! You can’t be serious!!! So people have to write two languages now, which are intertwined in an almost inexplicable and unfathomable way? This doesn’t do it.

Hello world should be one line." - _why, "The Hackety Manifesto" http://wiki.github.com/steveklabnik/hacketyhack/the-hackety-...

I'm inclined to agree with him. (Surprise!) Don't get me wrong, I love HTML/CSS, but I think it's far too much to get started with.


Thanks for the link.

I disagree with that though. Especially the sentence "Hello World should be one line". In html, it is. You create a new text file, put the line "Hello World" in it, then you can open it up in your browser and voila. You've got something everyone recognizes: a website.

Of course the more you code, the harder it gets, and eventually you have to add CSS, then JS, and then all hell breaks loose. But you can coast pretty far on basic HTML, with either no CSS, or inline CSS. And I'd argue that that's the direction we should be sending people just getting started in programming.


> I disagree with that though. Especially the sentence "Hello World should be one line". In html, it is. You create a new text file, put the line "Hello World" in it, then you can open it up in your browser and voila.

It depends. It's one line in the sense that 'it works.' It's not one line in the sense that "it works but enables quirks mode and it won't necessarily work right equally in all browsers unless you do all this stuff ..." and that's why I dislike HTML/CSS for learning. Yeah, in the simplest cases, it's kind of easy, but it can get really complex really quickly.

That's not even counting the fact that markup is not really programming, and if you'd like to add some, you've now got TWO languages to learn, HTML + Javascript. And then you might want to do something server side, so now you've got three.

The complexity explodes really quickly.


Yeah, but as a beginner, you don't need to see the complexity.

Mind you, I'm not comparing HTML to other languages for learning, I'm comparing it to QBasic as a "first try at programming" language. The basics had their own problems.


You do end up seeing the complexity. What can you do without Javascript and/or a server side language? Not too much, really.


I started out programming using Sinclair BASIC on my ZX Spectrum +2A purely because I wondered what the menu was for, other than loading games off a tape. It wasn't really "programming" though, so much as typing in the Breakout clone listed in the manual. Once in school we learned programming using MacBASIC on a Macintosh 128K, doing basic trigonometry formulas and answer/response programs.

Now that I've experienced everything from PL/SQL to PHP, I would agree to a certain extent that beginning your programming experience with the language supplied with your machine has its advantages, but I would question the long term benefits - there's no harm in learning how to set up a new programming environment in order to be taught the rudiments behind how a computer works, and arguably having that base level knowledge is more advantageous.


There is absolutely no reason at all you can't do all of the math shown in the 1980's text books in python and have it be just as simple.

Because python can do much more complicated things doesn't mean you can do basic code in it either.

Author is stuck whining rather than finding real world solutions to this problem.


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

Wow, and here I thought I was using conditions in P&P all these years--I'll have to run a "grep if *p[ly]" when I get back to the office. Though I do agree that there is a certain satisfaction in coding at a lower level, if the level is assembler.

I don't know what the story is in the Mac world, but as far as I can tell most of the Windows boxes out there will let you code and run VBScript if you have a passion for that sort of thing.


I can't agree more with the author. I'm 20 now, and for a non CS major, have a very deep interest in programming that I can only attribute to BASIC programming.

If you calculate the years, I wasn't even born in the days of the commodore 64, the earliest OS I remember is Windows 3.1. But even then I was too young to comprehend what a computer was. What truly got me started was Texas Instruments.

7th grade: I was a TI-BASIC pro. Wielding my TI-89, I learned more about graphing calculators than any kid should have, ported existing games from TI-83 to '89s and '82s, and instead of solving tedious math problems by hand, I would write FOR loops in BASIC to do my work for me.

There is something truly simple and zen-like about BASIC on a calculator that makes it (imho) one of the best languages to learn "programming" on. In that sense I mean learning all the basics of what variables, functions, if/else statements, loops, ... etc.

By the time I made it to my intro to programming (Java) course in college, I barely had to go to lecture and easily pulled an A.

So for parents/teachers trying to get young kids into programming, get them a calculator with TI-BASIC for the following reasons:

* fixed screen size -- you can easily make visual ascii games and use each character as a "pixel"

* full documentation = right in the back of the instruction manual!

* do maths! -- if nothing else, learning how to program functions to do often used math functions is reason enough

* community -- when I was at that age, everyone had a graphing calculator, and everyone would transfer games and programs with those little transfer cables. I became (in)famous as the kid with all the games and programs and kids would even ask me to write and port games for them. There was also a decent community online full of other people trying to program in TI-BASIC as well. I could easily program a few helpful math functions and share with my friends to help them and get that sense of instant gratification that I created something to help the world around me.

Hopefully the era of TI-BASIC isn't over, anyone know of the current status of graphing calculators in middle/high schools?


It's a different world that the one we grew up in. My son showed no interest in understanding the CLI or programming, but he loved scratch: http://scratch.mit.edu/


I've actually got GW-BASIC running on DOSBOX on my home computer. Every now and again I get nostalgic and fire up one of the ASCII graphics video games or text adventures I wrote when I was a teenager.


I'm glad you mentioned it. I'm not certain if Atari Logo at school, or GW-BASIC at home was my first encounter with programming.

My dad was a EE, and he set me up with GW-BASIC after I checked a book out from the library that had each chapter ending with a "Try it in BASIC!" section. I figured that there would be no problem getting GW-BASIC up and running under dosbox.


This is where I mention that I just put up links to Hackety Hack 0.9 for Snow Leopard and Windows... http://hacketyhack.heroku.com/


I just don't buy the premise. Kids get interested in programming by being able to create things. Back in the day creating things meant getting any kind of text/ascii on the screen was an achievement.

Now, kids want to learn how to do things that look as nice or do as much as the rest of the computer (or web) features they are used to.

For those that get interested some will go back to the roots and become hackers, some will continue to work in higher level languages. I don't see the problem.


> we bought a Commodore 64 (in original box) for $25. It

> arrived in good shape. It took us maybe three minutes to

> attach an old TV. We flicked the power switch ... and up

> came a command line. In BASIC.

And the cheaper and easier solution would be type three words into google: basic interpreter javascript

Low and behold: http://www.ngbasic.com/ngbasic/


I'm going to set up a PC for my five year old son, and have it boot into the shell only, no GUI. I know he'll love having it do addition and subtraction for him, but I bet he might want to start asking it questions, like "how many legs does a spider have?"

Is there a CLI program out there which does text-only Q&A via some web service?


>Is there a CLI program out there which does text-only Q&A via some web service?

You could probably whip something up in Python, httplib2 and BeautifulSoup in a couple of hours. If I can't sleep tonight, I might play around with this.


Sure, my question isn't about how to do it technically though, instead I want to know if there is a Q&A website out there which will return either, clear legible answers or null.


Wolfram Alpha


_why penned an article titled "The Little Coder's Predicament" that echoes similar sentiments and proposes a couple solutions. I found it an interesting read.

http://viewsourcecode.org/why/hacking/theLittleCodersPredica...


C is as close to machine as any other language can get. Why not new Johnny learn programming in C?


JavaScript and a web browser. The parallel is obvious to me, I'm not sure why it's not to him.


I still remember typing in pages of A4 sheets of code for a football management simulator on my commodore 16, reading every line to try and figure out where I could alter a line or two to give me an edge in the game over my brother :-) good times!


Here's an interactive book on learning to program using javascript and jQuery: http://davidbau.com/javascript/learn/00-preface.html


Johnny should try Ruby, now to write some intro-text interactive


You might be interested in http://tryruby.org, then. ;) Or Hackety Hack, which contains it.


Has this guy simply never heard of Python and Ruby?


Those were very different in 2006.


How?


The community and support was not nearly as developed as it is now, for one. Both languages have seen an explosion in usage. And community support is a big part of getting help when you're starting out.

Also, he explicitly mentions why he doesn't like Python in the article.


I responded to this back in 2006 - http://archive.azplace.net/index.php?itemid=861&catid=14

Whoa, an "epic problem" because of the absence of "line-by-line" programming language?

Brin harkens back to an earlier time, when tinkering with line-by-line programming was a large part of the reason why a computer was purchased. That the buyer was a financially endowed nerd already passionately motivated and inclined to what was, for that time, a solely hobbyist pursuit. Today, the price of computer hardware has plummeted, making a PC purchase within reach of nearly all. And the entry level barrier for youth to enter into the discipline of programming computing machines has never been lower.

* As stated, the cost of machines that 20+ years ago would preclude ownership for many kids, is now, in most all cases, a total non factor.

* In the good old days of BASIC PEEK and POKE, your only link to programming prowess was a geeky magazine article, or provided by a fellow nerd friend. There were a few books, but rare. No googling for help, no vast internet repostiory of tutorials and how-to guides that exist in 2006, however.

* The machines of yester-lore were no more than glorified calculators. In fact, the machines that sit on our desktop (and in our laps) have much more in common with old school mainframe computers than the early IBM/PC and Apple computers. Point is, running a comptuer today, in many ways requires a whole heap more of

* Apple Macs and Linux machines all come with all the programming tools a budding programmer could wish for. Even Windows machines, though less endowed, come packaged with C# programming environment.

* But all that really is needed to write programs and see the output of basic algorithms is a web browser and a text editor. Both of these come standard with any machine today. There are still BASIC programs in textbooks? Brin is dismayed over his the internet choir's emphasis on his repeated references to BASIC, but there are at least 30+ mentions of BASIC in his article.

Yes, and the problem, according to Brin, isn't the textbook publishers who add program exercises in an archaic language that some computer science luminaries consider to be "life corrupting". it's Microsoft's fault for not maintaining lingua franca on its machines!

Not all of Brin's missive is misguided. I understand his sentiment, but he laments for an age that has come pass, and because of his own nostalgic remembrance, distorts reality. The computing landscape has indeed changed, but you don't have to run BASIC programs to gain an understanding of how a computer works. BASIC is no different than any of the newfangled scripting languages. Furthermore, the fundamental model of "how a computer works" is radically different today — the simplistic model Brin details is less instructive than the state of the computer circa 2006.

But while Brin bemoans the current status of programming tools for aspiring programmers, here is what is happening in the golden age of programming.

* Millions are busy creating home pages, scripting game macros, writing Microsoft Office VB scripts to access databases and perform Excel functions.

* Others are creating web applications or writing social networking applications such as MySpace.

* Millions are downloading and installing free and open source (F/OSS) software, including the various Linux and FreeBSD distributions. And by doing so, are receiving far greater instructive benefit by learning how a modern day computer works, encountering firsthand, the challenging experience of installing, configuring, maintaining and even scripting/programming in nearly all the layers of software and services that make up a contemporary computer system. Even if Brin's claims have merit, the contention that its a "problem for our nation and civilization" is unbelievably far fetched. The discipline of computer programming differs from other fields of science — most programmers are, in large part, self taught, and gravitate to the field, based on their inkling and proficiency in being able to tell the computer what to do. Years ago, when the government went recruting programmers, they attempted over and over, to discover who would make a good programmer. Chess wizards, mathmeticians, bookkeepers, etc... were all once viewed as being optimal programmer candidates. But it was discovered that there was no common theme, and good to great programmers came from all walks of life, that a small segment of folks just had a knack for it. Even back when I went to school (I changed majors halfway through), it was expressed by professors that they viewed their job as weeding out those who won't cut it, who are pursuing the field for the money or because they think they'll dig it. And just examine the successful programmers — it's quite evident formal schooling and/or training is not necessary to ordain a great programmer. Therefore, even if all of the other points Brin contain some merit, that "computing is not as easy" without a "lingua franca", there are those that still will be drawn to the field. Incidentally, Steve Jobs and Bill Gates are both college dropouts.


Also WTF about BASIC with GOTO? You should teach your kid nothing but Python, which helps him understand the functional and OO aspects of programming.


In looking for a first programming language for a grade school kid, I'm not particularly sure that needing to learn how to write functional or object-oriented code is particularly high on the list of priorities.


AutoIt


I am sorry but the author of this article hasnt even performed basic research. He is completely bullshitting about Media Lab. Media Lab has created Scratch programming language which is actively being used by many kids in large number of schools around world.

Sad to see such as stupid article.

http://scratch.mit.edu/


The article is from 2006; Scratch was released in 2007.

It's hard to fault him because his time machine wasn't working.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: