Thursday, September 14, 2006

Blog don't always work...(surprise!)

Okay, something went wrong down at the comment level of my last posting. I am forced to create a new Post-level entry in order to continue discussions.

Especially discussions of my by-now infamous (and by-now an instant classic?) article on Salon Magazine (currently their lead) about "Why Johnny Can't Code." That one sure ignited a firestorm! Mostly from people who (clearly) did not even bother to actually read the article, skimming and leaping to a false conclusion that Old Fart David Brin Loves Basic.

When, in fact, that has nothing whatsoever to do with the (apparently) difficult real point of the essay... that we are devouring the seed corn of years past and denying kids the simplest thing their uncles and aunts once had... the chance to use computers to... compute.

I was posting a reply when the boys at Blogger let me down (coincidence? ;-) I will enter it again below, under comments. But feel free to discuss other things too!

Like SF in China! (Or how to encourage the Chinese govt to declare a "Year of SF and the Future in Asia!) Or Subscribing to Baen's Universe to see my serialized comedy!

Oh, even though this is an emergency posting, let me add some new stuff!

-----

All right, I admit it. Sometimes I simply pass on stuff collected and distributed by Ray Kurzweil. This time these goodies have in many cases cvome from FUTUREdition - from the Arlington Institute. All of them are way cool or at least way interesting...

Back From the Dead -- September, 2006) A new theory claims that direct electrical stimulation can effectively 'reboot' the brain of comatose or otherwise severely brain-damaged individuals - possibly allowing their brains to regain some normal functionality.

Gene Found to Switch Off Stem Cells During Aging -- (NY Times -- September 6, 2006) Biologists have uncovered a deep link between lifespan and cancer in the form of a gene that switches off stem cells as a person ages. To offset the increasing risk of cancer as a person ages, the gene gradually reduces the ability of stem cells to proliferate. The finding indicates that many of the degenerative diseases of aging are caused, in some part, by an active shutting down of the stem cells that renew the body’s various tissues.

Cure for Cancer, Age-Related Diseases Coming Into View -- (LEF -- August 22, 2006) When a cell divides, the DNA in its chromosomes is replicated and passed on to the new cell. Telomeres keep the replication process on track. With each replication, the telomeres shorten, becoming exhausted as a person or organism ages, resulting in cell deterioration - i.e., ageing, cancer and other age-related diseases. Nanocircles (a new nanotechnology) and vTert (a new synthetic enzyme) are now capable of repairing damaged telomeres.

India has long been noted for 'stealing' U.S. jobs, particularly in the field of I.T. However, as the Indian economy continues to expand, it has been attracting Westerners in all fields and has come full circle: Westerners are now beginning to come to India for I.T. jobs.

Risky Business: US Insurers Adapting to Climate Change -- (Fortune -- August 24, 2006) In 18 states, from southern Texas to the northern tip of Maine, insurance companies are scrambling to reduce the risk of major hurricane-related payouts. The upshot: For the 43% of the U.S. population who live and do business in these states, rates are likely to rise between 20% and 100% over the next year. In the rest of the country, premiums are expected to rise about 4%. Publicly, insurers have not accepted the theory of global warming. What the industry does believe is that, for whatever reason, weather isn't what it used to be.

...plus ca change....

67 comments:

David Brin said...

Here's that comment reply that never made it completely aboard. It is a test run of what I'll use to reply on Salon Letters. Folks can also offer it to those sharks ;-) on Slashdot.

---


Naum, your letter is cogent and intelligent and vastly entertaining! Many good points...

...that had almost nothing to do with the core point of my article.

Indeed, from the letters on SALON, it seems very few actually READ the article, instead of skimming quickly and then leaping to the conclusion that "David Brin (the old fart) loves BASIC"

(I do not! In fact, I rather dislike the ugly old thing!)

Those few who did not skim, leap to a conclusion and howl... those few who actually read the essay... realize that my complaint is actually about something else entirely -- the lack of a pervasively accessible "lingua franca" language, included in all computers, that would let publishers assign those little exercises at the end of chapters in math and science textbooks. Exercises that allow (encourage, require) kids to do those first primitive experiments before moving on to something better.

Something universal enough that millions could compare notes and gripe and learn something about the guts of the machines they (and their civilization) rely upon.

Something to let millions (not a few elite thousands) see that the screen in front of them is composed of dots, and each of those dots is moved and changed by genies called algorithms. And, once-upon-a-time, those genies were under direct human control. Indeed, if you really WANTED to...

Hey, look people. You can preach till the cows come home about which language kids “ought” to start off learning. By all means innovate and push your favorites! Let the really motivated ones take classes in Python, Java, Perl... or even SELF-teach, the way my son is learning C++. Terrific.

And yet, underlying all of this is a level of towering and outrageous arrogance. An implicit assumption that programming is only for the self motivated alphas out there. And all the rest of the kids can go to hell.

Oh, a zillion letter-writers have indignantly stepped forward, dissing old Basic in favor of their fave compilers. Alas, I've heard it all before. Countless exchanges and fascinating blog entries about Python and Perl and QBasic and etc, ad nauseam. Everybody has an opinion. Everbyody's an expert. And very few see the forest for the trees. None of these rants reveal even a scintilla of insight to the basic point of my essay, which is that kids who sat down before older computers used to be encouraged to use them to COMPUTE.

Today, you have to be an alpha... and a determined one... just to find a way to do that with one of the super-sophisticated machines sitting on a hundred million desktops. (Go experiment. Find an HONORS 9th grade math class and challenge the kids to go find a programming language and learn to move a pixel for themselves. Offer five crisp $10 bills as a reward. Come back later and see how many have actually done it. All of your strongly held opinions are nothing against the fact that fewer kids are actively programming today than ten years ago!)

My complaint is about the lack of a pervasively accessible "lingua franca" language, included in all computers, that would let textbook publishers assign those little exercises... that would let kids do those first primitive experiments before moving on to something better. Something universal enough that millions could compare notes and gripe and learn something about the guts of the machines they rely upon. BEFORE MOVING ON.

And -- sighing -- let me reiterate IT DOES NOT HAVE TO BE BASIC! (I despair, of course. Repeating that over and over again simply will not work. I guarantee it. A majority will still screech at me about Basic.)

Let there be no mistake. Only one institution is to blame for this situation. And the same one could fix it, overnight.

If Microsoft included a simple (updated) version of Basic... or Python or whatever... in a turn-key kit along with tutorial... in every Windows machine, that language would overnight become the new locus of kid-experimentation. Once again, millions would share the amazement, moving dots and going “wow” over the way math can control a pixel. And soon, textbooks publishers would have little exercises in that language, forcing millions of students to at least try it out, once or twice.

It would cost Microsoft next to nothing, use up almost no disk space, and do a world of good. (My druthers? Include samplers for DOZENS of other programming languages, as well!)

One of you cynically wrote a theory as to why this will never happen: “...it's in Microsoft's interest to keep people from trying to understand computers, and to perpetuate the meme that computers are not to be understood. It's not in their interest to empower their (average home) user in any way until competing software starts winning users over anyway thanks to its features.”

I have to disagree. I don’t see a conspiracy. After answering several hundred of these letters, I nowrealize that 99% of very smart, computer savvy guys are actually and sincerely unable to “get” what this is all about!

Perhaps the phrase “lingua franca” is too arcane and foreign. In any event, the guys at M$ are probably much the same. Their answer to the textbook problem is “There are still computer code snippets in textbooks? Don’t worry. They’ll go away soon.”

(Try complaining about electoral cheating. Soon we’ll hear: “There are still elections...?”)

The thing that I am simply unable to get across is that whole “forest for the trees” thing. Yes! Your favorite introductory language is probably marvelous and delightful and troglodyte author David Brin doesn’t appreciate its beauty... and thousands of bright young people are using it to great effect today! (Hey, David Brin’s son is one of them!)

But until you can substitute the word “thousands” with “tens of millions”, consider my case proved. You guys just...don’t... get it.

Anonymous said...

David:

JavaScript.

Check it out, mon! ;)

Anonymous said...

There's no way Microsoft would want to help popularize (further) a free/open source programming language, and that's what we really need. I'd rather not have kids getting turned on to something proprietary. I think I understand what you're saying about a lingua franca -- although I just ran in to this post here and haven't read the Salon article yet -- but I can't see it coming from Microsoft. Not in a good way.

Anonymous said...

I and Naum among others responded in the comment thread of the original blog post, where David also posted his response.

David, the gist of my response there can be summarized as: I and many others understand the problem but can't influence MS policy. What would you have us do that we're not alreayd doing? (But please read my full reply if you have the time :-)

Anonymous said...

BTW, the Salon article doesn't seem to want to work. I don't see a "sponsor logo" I'm supposed to click to read it.

If you really are interested in languages that work with simple tools available on pretty much every system, you really should look into JavaScript.

You won't get pixel-pushing -- but then, that simply isn't relevant to today's computing experience, and I think is putting the emphasis on the wrong thing.

Do you expect your kids to have a degree in electrical engineering -- or at least have assembled a few electronics project kits -- before you let them use the DVD player?

Naum said...

The comment thread in followup of "Johnny can't read" seems to be formatting OK now... ...I won't repeat my posts there except to summarize by stating that (a) more kids are programming today, (b) entry level barrier is even less that it was then when such tinkering was limited to a privliged set of financially endowed nerds, and (c) a "lingua franca" is not a desireable thing, that algorithmic thinking is preferential to archaic language constructs

David Brin said...

Sorry Naum, but

1) I agree about algorithmic thinking. In fact that is my POINT!

2) None of your other statements above are even remotlely true. Diametrically opposite, in fact. Especially on a percapita basis.

Naum, please consider this obscure and uncomfortable possibility. The corelation (on this topic) between intelligence and ABILITY TO GET THE POINT) appears to be an almost perfect inverse.

A VERY puzzling phenomenon. But the crux is you really don't get it. Not at all.

As for the person from Microsoft, it is blatantly obvious what you could do.

You could package a compact and simple and efficient programming language, with tutorials, that would fit well on Negreponte's famous $100 computer. Something tuned to work will with little exercises at the end of chapters in math & science books.

Ideally, this sampler could be multiple, showing off several approaches, e.g. object oriented, even grab-and-plug as in LEGO Mindstorms (yes, I know that one too, duh, I have boys.)

I do not care if these samplers lead eventually to sales pitches for "more advanced" versions. So long as the kernel version is open and the Linux guys can at least fulfill the same pedagogical service on their machines.

Anonymous said...

David Brin said:
As for the person from Microsoft, it is blatantly obvious what you could do.

David, I hope you didn't mean me. I can see that my brief reply above could be read as saying I work for MS but can't influence their policy. But that's not what I meant. I'm from the Linux side of the map. I'm the same guy you quoted as cynically describing MS "conspiracies".

A more complete rephrasing of my question: the people at MS could fix this situation by bundling a compiler, etc. as you say. But what can the rest of the world's programmers, who don't work for MS, do about this issue?

Please read my longer comment, which explains why I don't expect MS to help and describes what other people are doing already. I really feel you don't understand what I'm saying; I do agree with the original point of your article...

Anonymous said...

And re: 100$ laptop, assuming you mean the OLPC, it runs Linux and so, I assume, includes e.g. Python. But since I can't imagine MS packaging anything for a Linux-based system, I confes I don't fully understand your comment. Were you really asking MS to package stuff for the linux-based OLPC?

David Brin said...

Dan, the alternative to a simple Microsoft endeavor would be to persuade some zillionaire to fund a meeting of textbook publishers and Negreponte/Project Inkwell do-gooders and the zealous enthusiasts for every "educational programming language" and get them all together to agree on a project to create a cool, turnkey lingo that is portable and universal and does all the cool stuff while also showing the origins of programming in math and algorithmic logic.

And the chances of getting such a meeting organized are.... nil?

Hell, I've been pushing for my EON meeting for nigh on 20 years, and it could save the #%#$! world!

No, just look at the letter writers on Salon. Even the friendly ones genuinely think they know the topic... yet they genuinely do NOT have a clue... and there is nothing on God's green Earth that can be done about it.

Naum said...

1) I agree about algorithmic thinking. In fact that is my POINT!

Your (a) insistence on a "lingua franca" and (b) example of BASIC programs illustrate the contrary.

None of your other statements above are even remotlely true. Diametrically opposite, in fact. Especially on a percapita basis.

By what metrics? By what gauge? Please show me the empirical data.

Meanwhile, millions of kids create home pages, are writing web applications, plugging in scripts, authoring Flash appications, write VB like scripts to process Access DB or provide interface between Windows apps or download Linux and other F/OSS...

You totally miss the mark on not recognizing that the comptuers today bear little resemblence to the machines 20+ years ago and are more similar to the old school mainframes. Creating databases, configuring web server, installing & upgrading software... ...instead you keep dialing back into a monopolistic realm to attempt to solve a problem that doesn't exist....

A layperson wrote MySpace...

This age of the internet is a golden age of programming, yet you are stuck in a bygone era, wishing for a nostalgia that was limited to a small set of financially endowed nerds... ...now anybody with a <10 year old computer and internet connection has all the tools at their disposal...

David Brin said...

Ah mutual contempt is such a joyful thing! ;-)

Naum, I shall not pursue this beyond the simple.

YOU could examine our tiff and try to paraphrase, and you would soon see my point, even while maintaining yours. And yet, you do not. Why is that?

Faced with an accusation of obduracy, your response is to dig in. This is not right. Moreover, deep down, you know it.

In fact (for you others) it is very clear that web authoring, using higher level "tools" is a realm with many excellent values. And yet, it entrenches such young people in a magical realm of call-upon services, detached forever from the algorithm.

Do not pay any attention to that man behind the curtain! Shouts the wizard, and with good reason. Because if you could see the code, like Neo, like the User in TRON, you might be able to hack the wizard, and we can't have that.

The computers are more advanced now... and instead of empowering, that very sophistication is used to separate a bright generation from awareness where it all comes from.

I do not need to argue with you. I can see this whole story in the practical example of my son. It took YEARS to get him empowered to watch the algorithm move a pixel... a frustrating travail across an expanse of emulators and simulators and incomprehensible QBasic "Tutorials"... until his solved it himself.

Ben says that few weeks with the Commodore EMPOWERED HIM! He can now do C++ and Java and all the others - anchored by a knowledge of what's going on behind the curtain. The higher level tools are more his now, than they will ever belong to those who lack his experience about what lies below.

David Brin said...

Utterly bizarre that N8o says this. Utterly.

It was plain throughout the article that it was not about Basic. I said so relentlessly, repeatedly.

Moreover, the obtuseness was not mine. Gadzooks, what does it TAKE!

When I talk about the joys of making a dot move by an algorithm, and I say there's no simple way for a kid to do it now, DO YOU HONESTLY HAVE TO INTERPRET THAT AS MEANING IT CAN ONLY BE BASIC?

My gawd. Get this I HAVE NEVER EVER WRITTEN A PROGRAM IN BASIC!

I did lots in Fortran, yet I do not yearn for that old crock. I yearn for kids to have some easy way to do the obvious!

Anonymous said...

David, even if Microsoft were to help you, how would you get all the textbook authors to work in concert? I don't expect too many randomly selected elementary school textbook authors know how to write code samples to begin with.

On the other hand, if you can control the textbook authors, you don't need anyone else: just have the textbooks include a page of instructions on downloading and using e.g. python from python.org. You wouldn't need the language people to participate, because (a subset of) Python (or any other of a number of languages) is already good enough and quite suitable for demoing algorithms and so on. And you wouldn't need Negreponte because this would run on any Windows or Linux or other reasonable modern OS, including the $100 PC (which includes Python).

On the other hand, if you think the only ones who can save the situation are MS or a billionaire philanthropist with amazong political influence, why bother writing about it to begin with? Do you expect people working for MS to be moved by your articles? Not the programmers, but the high-level managers who could decide something like this?

Anonymous said...

As regards bundling a suitable programming environment with every computer, the only hope I see is making serious progress with Linux (or OSX) on the mainstream desktop. We're working on this and, believe me, if I knew how to speed it up I would... Anyway, results will probably be felt in the developing world first.

For short-term results we need to encourage the development of communities, most especially offline ones, that would introduce and guide people to computers and programming and, incidentally, to FOSS. I wish I had a magic way of doing this, but I don't, either.

Naum said...

YOU could examine our tiff and try to paraphrase, and you would soon see my point, even while maintaining yours. And yet, you do not. Why is that?

Faced with an accusation of obduracy, your response is to dig in. This is not right. Moreover, deep down, you know it.


David, I respect you greatly, I repeated your words so you could perhaps clarify the meaning that you tell of my "not getting"...

n fact (for you others) it is very clear that web authoring, using higher level "tools" is a realm with many excellent values. And yet, it entrenches such young people in a magical realm of call-upon services, detached forever from the algorithm.

Do not pay any attention to that man behind the curtain! Shouts the wizard, and with good reason. Because if you could see the code, like Neo, like the User in TRON, you might be able to hack the wizard, and we can't have that.


The tools used for "web authoring" are at the same level as the BASIC programs you extol. BASIC is no different than Perl or Python or any other scripted interpreted language that sits atop a modern OS. The sophistication of web authoring tools consists of a text editor (same as you use for typing a BASIC program or "lingua franca" program in). No internet connection is really needed to see the results.

I do not need to argue with you. I can see this whole story in the practical example of my son. It took YEARS to get him empowered to watch the algorithm move a pixel... a frustrating travail across an expanse of emulators and simulators and incomprehensible QBasic "Tutorials"... until his solved it himself.

Ben says that few weeks with the Commodore EMPOWERED HIM! He can now do C++ and Java and all the others - anchored by a knowledge of what's going on behind the curtain. The higher level tools are more his now, than they will ever belong to those who lack his experience about what lies below.


Geez David, way to take an anecdotal tale and extrapolate it out to a cogent telling of a discipline where when challenged, you offer no evidence to support your argument.

Your "Why Johnny Can't Code" makes a case that there's "no way for kids to get hooked on programming" and in return, you cite an anecdotal tale with your son and a whiff on boneheaded textbooks are stuck in horse & buggy time, running BASIC code.

Meanwhile, you (a) totally ignore and discount decades of research (see "J.C.R. Licklider and the Dream Revolution" for early research into programmer aptitude studies...) that some folks simply gravitate toward algorithmic prowess and it has nothing to with math, chess, etc.., (b) eschew a large F/OSS movement that's ushered in a golden age of programming, and the principle players are youth, energized and empowered, (c) entry barrier is so much lower today with lower cost of hardware and instant availability of help, resources and brilliant examples and the key to those examples if one is so motivated to find out "how"...

There is no contempt here, I believe you've venured into a realm where your experitise is not all you believe... and when queried on it, you don't have facts and empirical data to back it up, or at least to stir the debate and have us looking at something other than anecdotal evidence or a MS conspiracy theory,

God bless...

David Brin said...

Go find it, Mr. Smug.

Find where I said:"no way for kids to get hooked on programming"

Please. No, I double dare you!

You are a prime example of the effect at:
http://www.davidbrin.com/addiction.html

It would have been trivial for you to actually attempt to paraphrase what the other guy is saying and see if maybe you could bridge the gap. An honest adult does that, contemplating that it is possible NOT to understand. To mistakenly interpret what the other person is saying.

Adversarial to the last, you cannot even paraphrase my point, so instead you state outright lies.

Enjoy your strawman because it ain't me. Moreover, all of the good people here know it.

Naum said...

Find where I said:"no way for kids to get hooked on programming"

Please. No, I double dare you!


David, it's the tagline on your article, smack right undeneath the heading on the Salon article page....

BASIC used to be on every computer a child touched -- but today there's no easy way for kids to get hooked on programming.


Right between the title and By David Brin

Naum said...

http://www.davidbrin.com/addiction.htm

LOL... ...Thanks, David... ... ...way to turn it around and not answer the counterpoints...

I will check out the link! :)

Anonymous said...

Well, you gotta understand something about the way newspapers and magazines work. That's called the headline, and David didn't write it; someone at Salon did.

That said, if Mr. Brin wants to enable a simple, easy to learn programming language for his son, he could do a lot worse than to go to http://www.oorexx.org and download the now open source rexx interpreter. It's a turing complete language, and can be used to solve any problem amenable to computing... but its syntax is very easy to learn whilst offering the interested a lot of depth of capability.

You could also download any one of the several free assemblers out there and get Ben a copy of The Art of Computer Programming by Donald Knuth, who steps through the classic algorithms and offers solutions in assembler language, because, as he puts it, "you can learn how to program without learning assembler, but your programs will look pretty funny." The nice thing about assembler is that you work very directly with the hardware available on the CPU and therefore gain insight into how the computer actually does things. This bears fruit when working with higher level languages like C, Java, and Python (or any one of the constellation of languages out there) because you will understand how the computer does things and will code those languages to tell the computer those things you want it to do efficiently.

I'd also recommend sending Ben into a course and/or program where he learns about compilers; when I took my compilers course the things I learned about both computers and computer languages completely tranformed the way I write software.

Anyhoo, just my $0.02.

Jack
Kingston, Ontario

Anonymous said...

It would be nice if there was a standard distribution of Python or whatever on every windows computer. Even Visual Basic. Visual Studio express is free and they could package that with windows, but it's probably too abstracted and windows-gui-centric to be a good tool for kids.

MS just released the XNA game studio which will eventually allow amateur and indy devs to install things on an Xbox. It's a general purpose toolkit, you could use it to ship a windows game if you wanted to. In terms of low level algorithmic stuff it's actually pretty decent. And right now there are a few tutorials which go over collision detection and other basic algorithms. It hits the pixel pushing part. Syntactially c# is probably too complicated. A wrapper over this with a nice scripting though, packaged with a bunch of nice tutorials and open-source demos -- that might be the ticket.

Don Quijote said...

One Word

NetBeans.org

J2EE Server, IDE, JDK all combined in one well designed package.

Free & Runs on all Platforms.

David Brin said...

Notice the essence of a lie. By leaving out the word "easy", Naum utterly shits on my meaning. Then proudly proclaims a gotcha.

When that word "easy" encapsulates the entire meaning of my message. A message that he could have attempted to paraphrase.

I began replying to him with jocular respect, recognizing a smart fellow. Indeed, I called him that very recently. But he is also an offensive fool and a very bad guest.

And he is not welcome here anymore.

David Brin said...

Worldmaker, I courteously disagree. The essential point of my essay is that having SOMETHING as lingua franca common ground would let a very primitive and fundamental common introductory pathway be guaranteed available to all.

I wish people would at least TRY to paraphrase and show that they understand why someone would perceive that as valuable... before then going on to disagree! Is it really that hard to even picture why I put forward the proposition?

Dig it. If there's a lingua franca, then textbooks that contain a little 12-line illustration aren't biased for some students and against others. Instead, in an era when almost everybody HAS a computer, you have a homework assignment that EVERYBODY CAN DO.

An assignment that BOTH illustrates a point of math... maybe statistics... or physics... maybe Galilean mechanics... AND gives a taste of how an algorithm moves a pixel across a screen.

Please, is this so hard? What would it take, a megabyte and maybe one man-year from M$?

AND if M$? did the BEST thing... doing this with short samplers of a DOZEN different languages? Do you think that would upset me? Then you really never grasped my point at all.

The simple fact is that anyone who calls HTML or DreamMaker or any of the high level languages a substitute DOES NOT GET IT.

Moreover, decent people, when told "you don't get it," do not reply with Nyah Nyah! They reply by being concerned that it might be true! The try paraphrasing, to prove that they DID get it, before going back to politely disagree.

Thanks, and you are welcvome here.

Anonymous said...

The following is an email I sent personally to David earlier today. Having noticed the contrarian attitude of many of the comments here, I thought I'd post my message here, if only because I feel his article is worth defending:

I just read your article on Salon.com and I had to tell you how much I agree with you. Although kids today are exposed to computers practically from birth, I can say I was very fortunate to have taken my first BASIC class back in 1982 at the age of five. It was this early experience more than anything else, I think, that led me to earn an electrical engineering degree nearly twenty years down the road. It’s funny - I grew up in a tiny town in Iowa where schools didn’t really have the resources for high-powered computing. As a junior in high school I took a calculus class in which all problems were solved through programming. No FORTRAN or C++ was taught, it was all done in BASIC under the glow of green screens. We all mocked the class then, to an extent rightfully so - BASIC isn’t very powerful and it can teach some bad habits if you’re not careful. Looking back now, though, the most important thing I learned in the class was that It’s All About The Algorithms. BASIC is valuable because it strips a problem down to the most (ahem) basic question: How do you make it work? I think that, in order to engage kids in the world of programming, you need to present them with a means to fast, lucid results and not force them to worry about things like which libraries they need to load. Anyway, great article – you nailed it.

Anonymous said...

I not sure I understand why American kids need to learn how to program these days...unless their dream is to move to China or India and earn $5 an hour.

Anonymous said...

I just wrote an e-mail to David because I wasn't aware of this blog. I had just read the article and was in too much of a hurry to share my enthusiasm and agreement with his frustration.

I cut my teeth on a Commodore 64. I did stuff that "wasn't possible" on a Commodore 64 regularly. My friends did too. But something happened in high school and I got away from programming. Part of it was girls, but I can't say that was the only issue. Something about DOS and later Windows.. I just never did anything beyond writing giant batch files for JP Software's 4DOS. By the time I decided to get back into "real" programming a decade later Visual BASIC confused me. I didn't have the free time I once had and I walked away from it. Now I've got a kiddo of my own that wants to learn and I've been at a loss for how to do it. I can't teach what I don't know and due to circumstances he doesn't have tons of free time here to just hack away in a big fancy Visual Studio IDE. Putting an old Commodore 64 before him is the perfect idea. If it wasn't for the keyboards not matching up an emulator would do.

I'm also finally trying again at learning something new myself because I've got too many ideas I want to pursue for OS X. I may not have the free time I had twenty years ago but I'm gonna learn Objective-C. Some how, some way I'm going to do it.

Anonymous said...

I've seen this discussion play out the same way, over and over again, in various forums.

Almost every thread has a few people pointing out the timid, unadvertised, utilitarian little nub of BASIC that is still included with Windows.

Others mention the free downloads available of modern BASICS. (I'm usually one of those.)

Others pipe up to champion Perl, or Python, or Ruby, or MiddleSchmertz, or FlippeeDoodleDee (available at gopher://loordosis.toothdecay.urri.edu/~cblint/ projects/code/downloads/flippedoodledee.tar.gz.sit.PAK, go, go, go! Download it now! What you're not running the CharredPigeon Linux distro? Get with the program!!!!), or some other tool they've just discovered, as the perfect solution for a young man aiming to be a computer scientist. Why, a person can in short order be implementing saleable code!

Very few catch on to the core idea of the rant.

* * *

Sadly, I think it is BASICally too late:

Even if Microsoft brought back BASIC (or made official, through its powers, some other language), there is something that won't ever return:

The umwelt, the zeitgeist, of the BASIC era, as defined by home computing magazines!

There Was a Time when there were a dozen or more colorful magazines -- some dedicated to a particular machines, some more catholic -- full of reviews, articles about home families and schools were using computers, and CODE!

I entered dozens of programs from Creative Computing and Compute! and other zines, and more from books. One zine, whose title I forget, had a dead-simple adventure program listing that I tore apart and used to write a haunted house adventure game. Even if the old progs were text-mode, they were fun and understandable.

It's all gone now. I don't think it will ever come back. Computers are no longer nerd toys. They're polished business and entertainment machines.

The magazines were a sort of canary in the coal mine. I remember seeing the listings disappear, to be replaced by more and more reviews. Selling product, not encouraging learning and play, became their business.

Before I moved to California to get on the Dot Com Boom gravy train, I tossed most of my collection of old computer mags. I still have a few, including some old newsprint B&W Creative Computing zines. I wish I'd saved more, and hadn't given away my copies of old books like "101 Computer Games."

Rob Perkins said...

David, I have to say, bully for your son, working his way through self-taught C++ manuals etc etc.

Do let him know sometime, though, that it's the barest beginning of programming to know how to express an algorithm or a data structure in C++.

C++ is a travesty of a language, with its basis founded in the expediencies of "system coding", with object oriented features tacked on in order to permit the use of more abstract computing ideas. In support of that notion I can only offer arcana interesting mainly only to computer language enthusasts.

Perl is also a travesty of a language. By claiming and then permitting "More Than One Way To Do It", it permits the disasterous mixing of object-oriented and non-object oriented concepts, declared variables or undeclared variables, obfuscated code or code which is utterly crystal clear to another human. Sure you can make a 10-liner in Perl in minutes, but noone else can follow its logic unless you've been very good with comments.

Every language, including Basic, has flaws like that. The market won't permit the establishment of *any* language, the way it used to when there were only four types of home computers and Microsoft sold BASIC to every one of them.

So what you're asking for is something of a pipe dream. As soon as PC's became popular, and disk space still relatively limited, Microsoft had to drop stuff to include other stuff more people wanted.

But they still had QuickBasic all the way through DOS 6, as far as I know it.

Another point. Back then, when BASIC was tailored for each computer which had it in its ROMs, it was brutally easy to write and implement a PIXEL(x,y) type of command.

Today, there are easily fifteen manufacturers of motherboards, four of CPU's, more than 20 of video cards, the list goes on. And that's JUST FOR PCs/Macs!

Saying PIXEL(x,y) is still just as easy. But, the *setup code* to get to that point is just as complex as the number of permutations possible in variant combinations of hardware!

(I discovered *that* just this summer with a certain Microsoft API, trying just to make a WMV file out of several identically sized bitmap frames...)

Nowadays, though, the market is just too large. Other posters have pointed out the MS now includes, for free, both their Basic and C# compilers with any computer that has downloaded the .NET Framework. (Either would be *far better choices* for your son than C++, incidentally.)

They, at least, are still on your side, as they've been for years now, always practically giving away the basic dev tools, to anyone who shows interest.

There will be no lingua franca. The permutations are too complex, and the number of starting points a learner can choose is also much larger than back in the hobby home computer days.

It's *better that way*, I say. It means that my artist-oriented child can get into computing just as easily as my algorithm-oriented child.

Now, working toward such a lingua franca is not ignoble. It's a marvelous idea. A basic package of programming tools, like XCode or the .NET stuff, on the $100 laptop, would turn all the proprietary tools into shadows of the publicly available one.

It won't happen, of course, since the people who love Ruby, like the people who love Python, and those who love Perl, and those who love C++, all love them like Fundamentalists love thier religion.

Because that's what you've unleashed by complaining, is a bunch of people who were unaware that their loyalties were just as deeply held as a religious belief.

Good job stirring up the hive, though! :-)

Anonymous said...

*Sigh*.

Let me try again.

From the Salon piece:

Typing in a simple algorithm yourself, seeing exactly how the computer calculates and iterates in a manner you could duplicate with pencil and paper -- say, running an experiment in coin flipping, or making a dot change its position on a screen, propelled by math and logic, and only by math and logic: All of this is priceless. As it was priceless 20 years ago. Only 20 years ago, it was physically possible for millions of kids to do it. Today it is not.

Sorry, but that simply is not true.

Here's a link to an extremely literal coin flipper done in a language that can run on essentially any computer.

Here is a link to animation by shifting pixels that can also run on essentially any computer.

If by "algorithm" you mean linear programming, please understand that OOP code can be cudgeled into linear programming any time; and any simple algorithm/program is almost always going to be expresssed as linear code anyway.

Just because languages like JavaScript do not contain line numbers doesn't mean they can't be used to provide instructional algorithms.

Repeating this point for emphasis: You could even do it all yourself, following along on paper, for a few iterations, verifying that the dot on the screen was moving by the sheer power of mathematics, alone. Wow!

Repeating my point for emphasis: Here is a link to animation by shifting pixels that can also run on essentially any computer.

...hold a big meeting and choose another lingua franca, so long as it can be universal enough to use in texts, the way that BASIC was.

There is one. There is one! Try it, for Pete's sake.

I think there might be an issue of outlook here -- you seem so committed to obtaining a specific type of experience that you're overlooking another type of experience that is very, very close to what you're seeking.

Why?

David Brin said...

Um... Warren... why do you simply assume that you DO get it, when you so blatantly and obviously Don't?

Is fallibility even remotely conceivable to you? Yes, human instinct (and male) is confrontational. But does even the possibility compute?

I thank you for these links, and I respond (devastatingly) that this is the first I have heard of either of them, after FIVE years posting and inciting and asking ....

So exactly how widely useful/available are they? Socially, demographically, do they have any even remote bearing on my case?

I will try them out and perhaps I'll be grateful, personally... tho at a glance they do NOT seem to be even remotely useful direct translateors of algorithm to reperesentation. However, as an adult, I am willing to contemplate being wrong. So I'll try em out. Maybe I will be personally grateful.

But again, they are utterly, utterly irrelevant.

Rob, your posting was much better. And yes, humbling. Same with you Stefan.

Yes, I know the zeitgeist of those days is over. And I do not lament. The kids who grew up on those nerdy things went on to invent at a furious pace that is certainly much lower now. (Unless you call "invention" creating buxom avatars and MySpace variants.)

I do not expect a universal lingua franca. Not generating that kind of excitement.

But I do feel that very small measures, by very powerful people, could make a huge difference.

A few of you grasp that those textbook exercises are a perfect place to put tiny, compulsory and easy exercises that expose millions (millions!) of students to concepts like ITERATION. Like approximation. Like algorithmic convergence.

Like the beauty of an artillery shell in its arc. You can type this in twelve or so lines. and follow along on paper.

I agree Stefan, the bilious rage that I have incited, by even ASKING for this simple capability, is very strange. As strange as the inability of the enraged to even notice THAT they are so angry, so indignant, so furious and adamant about misdirecting that anger.

Insisting (despite my repeated (TWENTY TIMES!) denials) that I really meant "I love Basic!" Unable to even notice that it is absurd to yell at somebody "I know what you meant better than you do!"

Enough. Out of the 10% who "get it" there may be a few who let the idea germinate. Maybe it will be somebody in China. Or India.

I know THEY will understand. They still remember that computers, deep down, compute.

Anonymous said...

Dr. Brin,

I think you just pegged the irony meter.

You write another verbose and cryptic post that you figure only 10% of the people who read it got...

...calling for a simple, widespread, easy to understand computer language.

Hehe.

David Brin said...

Monkyboy...

that's a fair cop.

Got me!

;-)

Anonymous said...

David,

I would have to say that if you are looking for a coding language that is easily available on pretty much every new computer then you really should look again at Javascript.

The reqiurements to begin programming with javascript are pretty much the simplest you can get 1 Web Browser and 1 text editor. In fact I would advise anyone wanting to acutally learn how to use it to eschew any more complex Web Development environments for these simple tools.

With them you can do a number of things including working through algorithmns easily. In fact a tool to convert a standard BASIC program to a javascript program wouldn't be too hard.... (now if only I could remeber any BASIC I might even try writing it).

Javascript gets a bad rap because of the heady days of rollover and DHTML but at core it's a very impressive language.

Anonymous said...

Oh and can I also recommend http://www.squarefree.com/shell/ the javascript shell? Allows commandline interaction with javascript.

NoOne said...

I haven't gone through all the postings to see if this had already been addressed, so please be gentle.

There might be a fundamental problem with David's request. I have a nine year old. When I try to encourage him to learn a scripting language - Ruby - in this case, he balks. The reason. The line by line programming of Ruby runs counter to the dazzling rendered graphics he sees all the time on his computer. And the event model of Qt (used to generate widgets) is rather complex as most current event models are. To achieve what David wants, I think we should invent an easy to use and widley publicized visual programming language and deliberately hide its event model for generating widgets, so that young programmers can get going quickly. Oh, don't get me wrong. A more advanced programmer will find the event model (when he/she's 15) and will experience a quantum leap in understanding. But it is beyond the range of a preteen programmer (for now).

Anonymous said...

David

I think your call for this kind of universal language, while laudable, has many parallels to the attempt to introduce Esperanto, the Dvorak keyboard or the (varied) attempts at the simplification of English spellings. Or even the metric system in the USA. They all make sense and (could) work better than anything else out there already, but they refuse to happen.

These days computers are information access and communication machines more than 'processing' machines, and I agree with many of the sentiments expressed here that children are writing websites. HTML is incredibly enterable as a means to an end. What starts with blogs can very easily evolve into self-written homepages with code controlling content.

Pascal, as I understand it, was the last successful effort at producing a language specifically to be a teaching tool. It was so 'good' that it was even used commercially for a while. Now no-one really writes anything in Pascal. It's still a good language, but it's all but disappeared (before I take flack for this from Pascal fans, yes, it is still used, but it's not as popular as it was 15 years ago). Why? Because programming principles have moved on.

As mentioned before, modern architectures are far more complex than they used to be. They are also far more varied. It is very dangerous to just 'write a pixel to the screen'. First you have to create a window of some kind for your program so it doesn't interfere with anything else you might be running.

With the various GUIs out there (windows, MACOS, linux front-ends (GNOME, KDE, etc), there is no one standard to controlling the behaviour of windows. Before it was just 'a spot on the screen'. That's a universal concept. It doesn't really exist any more at the level you want it to.

There are huge challenges to creating something like this, and I don't see there being a lucrative market for it. The kind of kids that hacked away in machine code in the early years are the same kind of kids that could pick up C, C++, Java, Perl (etc.) these days. BASIC was just the middle step.

My opinion is that coding is like drawing. Give a kid who can draw a few classes and it doesn't really matter what you put in their hand (a pencil, crayon, paint-brush, piece of chalk, charcoal) and they'll draw you a picture. Give me any of those and the best I'll ever come up with is a doodle. Give a talented kid a computer and show them the fundamentals of HTML. Then, when they've mastered that, show them php. When they're done with that, show them java. Unfortunately, computers are like Shrek: they have layers. There didn't used to be so many.

Part of your problem may also be that you are trying to find the right tool for the right job in a big disorganised sack that spans the globe and contains the sum total knowledge of all mankind. And no-one can agree on which tool is right. And (as you're seeing) no-one can agree on what the job is. It entirely credible that your perfect language exists out there and has been knocked together by a talented high-school computing teacher. Good luck getting something like that globally recognised and installed on every computer.

But ask me again in a dozen years time. My first child is coming up to one year old. We'll see how I, who programs for a living, fare with this issue.

--
Adam

Steve Gilham said...

Setting aside issues like whether there was ever a real unified portable dialect of Basic, is the real bone of contention here purely the fact that because of windowing OSs on high-resolution screens, we no longer have simple VGA graphics?

Lo, these many years ago, there was a language called Logo, a Lisp-like thing with turtle graphics intended for exactly such didactic purposes. As you may be aware, it rose without a trace.

Yes, Basic (especially on the BBC micro) led in the 1980s to a lot of teens grinding out cutting edge games in their bedrooms (though, now writing any such thing requires movie-like budgets and slave labour). How many people there were who were just all-round mediocre and felt that computing offered better salaries than other office work and got into the industry as a result is hard to say.

Me? I started with a 12-key card punch, Fortran IV and line-printer output, and yes, my first program was a line-printer graph of a sine-wave - the sort of thing that with an output to console would show the "*" or whatever bouncing from side to side in real-time, rather than frozen on the page.

Anonymous said...

Facing widespread misunderstanding of an article that screams "BASIC BASIC BASIC!" you respond that it wasn't about BASIC. Ok. Let's talk about what it was about then.

You say you want a "lingua franca". Science fiction writers often overestimate the utility of a "galactic common" or simply presuppose that in the future everyone will speak Amglish.

In truth there is far more to be gained than lost by having many languages; modes of expression; and if you accept the Sapir-Whorf hypothesis, the concomitant ways of thinking.

All that's analogous to computer languages. The multiplicity of options for a beginner programmer these days is not a bad thing, but rather an indicator of a healthy industry in its prime, and a sign that "Johnny" will be able to code rings around the likes of you and me.

If only we'll stop hamstringing the poor kid with our nostalgia for the bad old days.

But, of course, as many people have already pointed out, if you really must have a lingua franca there are several already available on every computer in the world right now, and tens that will run on every computer just a google/click away.

To your interesting "tens of millions" claim:

When I was a kid coding away in BASIC on my TRS-80, I was one of two kids in my class of 28 that had access to a home computer. Of course this is just an anecdote -- like yours about your son -- so let's not confuse it with evidence.

In a few years when my son goes to school, it would greatly surprise me if there was a single child in his class who didn't have a computer at home.

Arguments along the lines of "but everyone had access to BASIC that grand old lingua franca" are just plain wrong. Computers were available to a lucky few -- and look what those few have wrought. The Internet. GUIs. Etc. But let's not be too quick to say cause->effect.

Now computers are available to everyone, and what are teenagers doing with them?

Things like coding Napster, coding breathtakingly complex Flash games, building 3D engines to power the next generation of games/online wordls, and coming up with _whole new programming languages_ because they've rapidly flipped through the rather poor legacy we've given them, and decided to roll their own.

You must see, now, that any call for a "lingua franca" alongside a rosy extended anecdote about buying a vintage computer on eBay would almost guarantee the responses that you have, in fact, gotten. You're too good a writer not to see that, and I notice that in your Salon "redux" you basically admit the "rant" nature of your initial essay.

"Logical, well argued rant" being an oxymoron up there with "fresh frozen" or "military intelligence". :)

If you were saying something else, then I'm sorry, but after reading your article, and following every subsequent posting including yours, I just don't follow you.

Anonymous said...

David:

I thank you for these links, and I respond (devastatingly) that this is the first I have heard of either of them, after FIVE years posting and inciting and asking ....

The first time I ever saw you looking for some kind of low--level compiler tech was about six months ago on Brin-L. At the time you were alluding to BASIC.

Actually, as is clearly the case here -- and has been elsewhere -- since you keep mentioning BASIC, I think most of the people trying to help (myself included) have misunderstood what it is you're looking for.

Only after you were able to produce enough of a description of what you sought did it become clearer (to me, at least) what it is you were trying to do. I take it LOGO/Turtle type programs aren't really hat you want, since you're talking about algorithmic stepping to follow the logic of code iterations, which -- in combination with your call for a universal and simple compiler, was what got me thinking in terms of JavaScript.

I'm trying to help. A little less heat would be appreciated.

So exactly how widely useful/available are they? Socially, demographically, do they have any even remote bearing on my case?

JavaScript runs in every browser. Pretty much any web page that includes interactivity that isn't done via CGI or Flash is using JavaScript. (And actually, Flash's scripting engine core uses JavaScript as well.)

It's probably the most pervasive scripting technology in use today, employed primarily to enhance interactivity on web sites without requiring the creation of executables, and without requiring a compiler. The script is interpreted live by the browser.

JavaScript code is generally embedded in HTML files, inside the head tags, enclosed within special script tags.

This link points to a simple example of JS in action, a more or less standard "hello world". (Source.)

The operative lines are this:

function Hello ()
{
alert("Hello World!");
}

You could bypass the alert dialog if you wanted to and try something like this instead:

function Hello ()
{
document.write("Hello World!");
}

Which would, instead of kicking up an alert box, print the text into the browser window.

I think part of the problem here is that you're seeking a very specific solution, rather than being willing to adapt just a little and accept a solution that, I thin, might well be useful. I find it ironic that you're so willing to assume I don't get it, when you don't seem to be willing to do the minimal research required to see if, in fact, I do.

In addition to teaching web design, Java and JavaScript to college students, I've written an intro to OOP design in a rich-media development environment (Director), and, if I understand correctly what it is you're looking for in a more or less universal coding language, I think JS might be what you're seeking.

But the only way we'll ever know is if you decide you're willing to try it, if you decide that maybe I do have a clue what I'm talking about after all.

David Brin said...

I am shutting down here. I have never seen a topic raise such bilious, livid and unreasoning rage - on this blog at least - as this one.

Look at the somewhat rude but within-acceptable-range postings that I left standing here. They make good points, but step back and look also at the emotion! The adversarial and judgmental tone.

And these are the ones that fit inside my broad and tolerant ground rules! I had to delete whole bunches... something that I almost never do here.

(And let there be no mistake, blogs are like a home where there is an open-house party. Both the host and the guest must compromise... but it's MY home. I believe in citokate. But I will not abide outright jerks.)

In fact, I ask that firends occasionally keep an eye out for "late-stabbing". That's the trick where assholes wait till the blog or zine has moved on to other topics, then they slip into an old thread and post scandalous rants. True, it's an imbecillic thing to do. Who's listening?

ANd yet, it is a nasty type of "spoor-laying"... what animals do to mark their territory or invade another's. After all, Google is storing everything and someday aliens or singularity gods will read it all! ;-)

People, I ask you to contemplate why the intensity of emotion?

I am going back to where it's safe.

Politics.

Anonymous said...

I forgot the most obvious ref in the universe, BTW. Wikipedia!

http://en.wikipedia.org/wiki/JavaScript

Notes on the language, syntax, examples, all manner of interesting stuff.

Anonymous said...

I started programming on a C64, passed from the Amiga then windows and nowaday linux. Among that career I also taught programming for a private school where i was exposed to all kind, from the 7 y.o. unwillingly subscribed by the mother to the septuagenarian in search of some new challenges for their retirement.
I think "I've got it", what Dr. Brin mean.
I'm seeing the tree he's pointing to.
I simply do not agree with his lamentations.
Dr Brin, the instruments to do part of what you wants (i.e. teaching in an easy way algorithmic thinking) *do* exists, the only problem for what you want to do is that there're SO many of them, all of them doing it in a slightly different way, and so none of them get the exclusive focus that would avoid you having to make a choices and consequently finding informations pertaining your choices.
I understand why you hope that MS would do such a thing... MS would be the *only one* that could do such a thing, leveraging their monopoly to impose a default system to the world, and, expecially, advertising it untill everybody and their dog would know about it. Only, I do not think it would be all that helpfull in long term, because they, being who they're, would do this only to further promote their agenda of entrenching their de-facto monopoly of the desktop os. I personally find this higly undersiderable and damaging in the long term, and so should you if you really believe in modernistic ideals. Open source diffusion would be a much better long ter success, only, unluckily for this idea, OS believe in multiplying choices as much as they can, faithfull that with so much food available the really hungry *will* have te chance to eat, and eat well...
Really, the javascript thing that have been signalled to you is proof that your problem is with advertising and social acceptance, not technology... Really, with the most common tools that every computer with a graphical interface have already installed by default, you can do whatever you want.
As probably the links that have been given to you, being examples, can be a bit obscure in what it does mean to work in such a way... with a simple text editor like notepad you can wirte the program. opening it with explorer (or firefox or any other modern browser.. "file"-> "open file"-> choose it -> "open") you execute your program. Really, it would be difficult making it more easy. Sure, there's not much "official" documentation about using it this way, and examples are more oriented to web design than to algorthm thinking, but for example even you, with your son, could start a website where you write down some examples of this kind of use etc. etc... being part of the solution without waiting for a megacorporation doing something good, thing that have shown in the past to be a rare and unreliable thing.
As an intermediate step, I can point you to w3schools
where there're a lot of informations about it.

A note: in the C64 era almost half of my friend had one, and who did not have it had a ZX spectrum or some other toy of the kind... only, 90% of them ever only learned the basic commands to load a game from a tape... only the very dedicated tried using it to program some lines. i myself, if it was only for the C64, would have probably not cared that much about programming... where I learned to think as a programmer was at school. Now, I'm not american and I do not know how it is in the USA, but of the 7 weekly hours of math we had, 2 were of computer programming, where the teacher teached us how to do a flowchart, hot to decompose a math procedure in logical steps, gave us some example of basic algorithms, and then teached us pascal and how to use it. Some learned it well, and some not, like all other subjects... Now, my math teacher was young and well informed on modern things, not all teachers have the formation for doing such a thing, expecially old ones... for this reason they can and do take external experts... I know, I've been one of them... my last course was to a class of 14 year old girls, in a professional school for fashion design...and i tought them python :P i set up all the machines for them, i taught how to install it in their home computers giving them cd burned by me with all the software, and took away all the distraction to the actual *programming*. Actually, i had less troubles than in the scientific licaeum where they insisted that i taught VisualBasic... granted, not everybody profited from it, but this is in the nature of students...:P
In sum, my point is: there're plenty of tools, easy to use, there's plenty of documentation, easy to reach, the willing will benefit enormously from it as it is now, the not willing will have anyway to be teached at school, where the tool choice is of the teacher, that nowadays have *plenty* of choice, and everything else do not matter too much.
Hey, when I was at school we used turbo pascal, and to learn as nobody had money enough to buy it, we had actually to make pirate copies of it (the teacher itself gave them out... oh well.. :P), documentation was scarce and precious, and examples where those the teacher gave to us... nowaday I was able to *legally* give out to my students cds with all the development environment and manuals and documentations and examples one could ever desire... For my next course, that will be in a scientific licaeum where I expect to meet an even more interested audience, I'm planning to give them a complete vmware image of a stripped down linux environment, to teach them something about the innards of an OS...
So, in this case Dr Brin i think you're auspicating the wrong thing... it's not the problem of having one easy to access universally widespread developing environment... they've it already... and "mandating" one would only in the long term help propagating the kind of monopolistic centralistic and anti-modernist enviroment that you say you despise so much in other fields..
the important things are to provide freedom to fly to those that are really interested in their own (thing that's helped by the spreading of choices, instead than by reducing them), and to empower those that have the role to teach to the new generations.

P.S. to Stefan jones:
as i said I'm not american, so i do not know how are things there, but in my country, small and not with a special computer culture, last time i checked in a newstand there where no less than 10 different programming magazines, and i'm telling programming, not hardware/fotware/games reviews, moreover, 2 where "serial" encyclopedias oriented to teaching programming to younger readers.. there where at least 3 similar educational projects involving electronics, one where they tought you how to build a small robot and control it from pc (always for young readers) but in a more "dirty hands" approach than mindstorms, i.e. with soldering irons and so on. Had these things being available when i was a child i think I would have sent my parents filing bankruptcy...

Anonymous said...

Fascinating stuff, fetzig!

That sounds like the old days.

I should probably reality check myself my looking at newsstands again, but last I checked things were pretty grim on the home PC magazine front. You could buy a beautifully produced magazine about Neopets, but nothing about programming.

MAKE magazine is trying to revive the techie "do it yourself" movement:

Make

David Brin said...

This was a truly excellent posting.

Unlike so many others, you actually PARAPHRASED to show that you grasped my meaning, before launching your rebutal. Thus you proved that the person you were refuting was actually me... and my argument... and not a ridiculous strawman of your own manufacture.

(That despicable tendency is the very essence of romantic rage, and I was stunned to see it displayed so much in a little public discussion about PROGRAMMING LANGUAGES, of all things!)

So yes, thanks for cogent citokate.

I still deeply disagree with you about the value of having a simple lingua franca that is so widely owned and available that the textbooks can use it.

Yes, I now am convinced that Java sounds like it lurks, in the background everywhere, as a possible solution.

But in that case, what would it take to bring it closer to the "surface" so that maybe three dozen cool litle exercises... half of them useful in classes (statistics, dynamics) and half games like pong that illustrate that "math-moved pixel" I rant about... could be clear and available to all?

Show me (and the textbook makers) that this has happened and we might have that universal entry portal. (And this one would drive Microsoft NUTS!)

In any event, I am also grateful to you for showing the difference. I can take criticism, even kinda rough. Citokate.

But unfair jerks who scream at a strawman aren't welcome here. They can go spread slander (and it is) elsewhere.

Anonymous said...

Maybe I'm just hardened from years of internet usage, but the comments in this post seem civil enough. It's not a flamewar by any stretch of the imagination.

I agree with David in that it would be wonderful if there were an actual programming environment that was distributed and easily found with every Windows computer. Not buried in some directory, but right there on the start menu, as visible as Minesweeper and Paint.

I know it's been plugged before, but I'd just like to plug it again: http://www.kidsprogramminglanguage.com/

It's really great at just the sort of learning David is yearning for.

Anonymous said...

fetzig, very nice post!

I never really considered of javascript as a learning programming language, but it makes sense. It's on every computer and every platform, there's plenty of documentation and examples, and all you need is a text editor.

Anonymous said...

Dr. Brin. I'm a fan of your writing in this blog and elsewhere. I very much appreciate the alternative positions you hold. Maybe I missed some very nasty posts that you've deleted that would explain your responses better in this thread, but the ones that remain and your responses to them have caused me to lose some respect for you today. You appear quite intolerant to the good points offered by Naum and Warren, at least. Your reactions seem to me to be extremely arrogant and dismissive. Again, I haven't seen all the posts and it's clear you've been provoked more than I've seen previously in this blog. I certainly don't want to provoke you further. It is your home and we are the guests, but I do hope you keep having the kinds of parties that good people want to attend and engage in thoughtful and enlightening discussion, even if not everyone is in agreement.

Anonymous said...

Thanks Dr Brin,
about the exercises and the portal, I'm a professional programmer and a part-time teacher, as i said to you... In my courses i never teached directly javascript (p.s. just to avoid you some troubles... javascript is *not* java, it was all a terrible marketing mix-up... java is a nice language for some things, but it's quite complicated to start using, and feeding it to young tender minds could produce terrible consequences... :-P) as i preferred other environments, but I guess that I could make the effort for one of my next courses to try it... in this case i would be glad to send you back some of my notes. Unluckily 1) I'm not english speaker (so I would have to translate them before) and 2) my time resources are limited and near exhaustion, so I'll do what I can.
It would be helpfull, if somebody is interested in contributing, maybe starting using the site as an aggregation point for starting it, in the classical OS spirit.. everybody could send their pet examples, to be then selected and polished and streamlined, while a nice communicator like you could provide a good polish to the instruction notes.
If you like this idea, I could appreciate some suggestions of possible educational programs, then i'll see what I can find the time to do...

Anonymous said...

I never really considered of javascript as a learning programming language, but it makes sense. It's on every computer and every platform, there's plenty of documentation and examples, and all you need is a text editor.

Which is why I was recommending it. I'm unsure where the assumption came from that I wasn't getting what Dr. Brin was asking for -- it seems perhaps he just wasn't getting what I was suggesting, or why I was suggesting it.

About eight years ago I was getting ready to teach an intro to programming course at a Boys & Girls club using JavaScript, for pretty much every reason I and others -- and Dr. Brin -- have indicated. It's safe, reliable, a good learning tool and extraordinarily easy to start with. The tools for using it exist on any computer manufactured since 1995 and, unlike BASIC, the options for progressing beyond JS without having to substantially re-learn are very broad.

It's possible Dr. Brin has felt so antagonized that he saw my suggestions as further attempts to spark ire -- I can be brusque onscreen, I know -- but thanks for the support, Scott. I did feel a little surprised by the (I thought) undeserved heat.

Anonymous said...

As I wanted to start giving Dr Brin some other examples of what's doable with javascript:
a navigable maze

the requested pong clone
Triangle solver
a math function plotter
some calculators


warren: lot of credit to you for the javascript idea... I already used it a lot for many of my programs, but for me it was always only half of a client-server solution, i never truly tought about using it for standalone programming... it would probably not be suited for really complex ones as it's not particularly performing, but for educational purposes it's a good choice. Even if to my more advanced students i'll go on teaching python (the command line btw in my opinion is good for the soul of the youg learner.. :-P).

Anonymous said...

Fetzig: I started out on a VIC-20 and then moved to a C-64. Creating the little program that would make the screen fill up with random colors was quite a thrill, and I tried my hand at a few other programs also. I remember with a friend ambitiously trying to write a program that emulated some popular arcade video game of the time, and even now wish I would have tried my hand at more programs that were better suited to its limitations. And of course I used it for all the great games as well.

If it hasn't been mentioned already, there are C-64 emulators out there that let you play some of those old games on a PC. Great for nostalgia value. I'm sure they can also be used for playing around with the old C-64 Basic. I think I used this one: http://www.computerbrains.com/ccs64/

Anonymous said...

Hey All,

Two more "kid friendly" language:

http://www.simplecodeworks.com/website.html
http://www.kidsprogramminglanguage.com/

from people who also recognized the same problem as David Brin.

cheers,
Robert

David Brin said...

Scott, I appreciate your earnest criticism and eagerness to straighten me out. But you must understand. Everybody has particular buttons. Mine is to be accused of acts and/or assertions that are in no way related to things I actually did or said.

Thus, someone may cuss me out, after making a fair attempt to paraphrase me, and I will chortle and say “good one!”

But when a jerk tells me, repeatedly, what I MEANT to say. Or calls me a liar for denying it. Or uses semantic tricks to attempt GOTCHAs. Or tries to cram words in my mouth or accuses me of things I did not do... well, that twerp can go to hell.

It is called strawmanning, and I will not allow it to be done to me here in my home. I am quite certain these #%$##! infants will go crying off to their own corners and slander me there.

BTW, I haven’t banned Warren. But I did snap at him. The “heat” was not undeserved. He was strawmanning. But he’s also clearly on this side of the reasonable divide and remains quite welcome here.

For those who would like to learn more about Paraphrasing... the one thing that honest adults do in order to elevate the level of debate, do go see:
http://www.davidbrin.com/disputationarticle1.html

Let me point to Worldmaker’s post, (just above this one), as a GREAT example of the power of this technique.

Nevertheless, Scott, I will humbly consider what you said.

-----A quasi-canned response about Java----

Yes, I got a LOT of mail about the Salon article. and that doesn’t count the letters to both my blog and Salon itself! What shocked me was the degree of passion... no, bilious RAGE that my effrontery provoked. In comparison, mere politics and religion seem to have mild effects!

Only a small minority seemed at all interested in even looking at my core idea, which was how to create a nice, comfortable starting point for millions of kids, so they could use their computers to do a little COMPUTING for mild classroom assignments, and so get a taste of this way of looking at the world.

The best of the letters pointed out that JAVA is the one language so ubiquitous that maybe it might do. Only, alas, the syntax is so difficult and unfriendly to beginners that it’s just not help, after all. Unless... a coterie of Java guys created some plug-ins and maybe a few dozen sample programs that would accomplish dual goals (1) illustrate something cool from math/physics curricula or a classic game or moving pixels with math and (2) enticed with software elegance.

(And yes, I admit TOTAL ignorance about both Java and Javascript... which shows how long this road may be.)

Such a set of small programs might entice textbook publishers and teachers, in turn, to go along. And Java’s universal distribution could then do the trick.

Alas, it won’t happen. But at least this worthy suggestion floated up from the dross.

Anonymous said...

BTW, I haven’t banned Warren. But I did snap at him. The “heat” was not undeserved. He was strawmanning.

Would you mind pointing me to the place where I did so? If I owe an apology, I'll certainly offer one, but I wasn't consciously offering straw men anywhere.

But he’s also clearly on this side of the reasonable divide and remains quite welcome here.

’Preciate that.

Your critique of Java is valid. It's ubiquitous and free, and nearly impossible to bootstrap oneself into. The language can be astonishingly opaque and cantankerous -- exactly the kind of thing a kid does not need to get started with.

JavaScript isn't the same as Java, but it's also a little weird because it, like Java, is a C-flavored language, which means curly braces and semicolons everywhere. That means a novice programmer can too easily get lost in the details of syntactic bugaboos and lose sight of the larger picture, which could easily derail an introduction-to-algorithm approach.

If you look over the WikiPedia link I posted earlier you'll find, among other things, a link to a "Wiki book", which purports to be an open-source textbook that introduces JavaScript. It may or may not possess anything of pedagogical value.

Straight-up linear programming is rarely used professionally any longer. That might be one reason that compilers for things like BASIC and PASCAL have essentially vanished. Since apps are written in OOPish code now with C++, instruction in programming -- not algorithms, but programming -- necessarily has to take place in OOP environments as well, warts and all.

That's what I meant when I was saying, earlier, that BASIC is irrelevant. It is, to anyone wanting to have a future in programming.

However, to someone looking at the possibilities of engineering, or wanting to know the nuts and bolts of computers, linear programming might in fact be quite valuable. From that point of view your concern about the unavailability of simple and direct options for showing the merits of algorithmic thinking is quite legitimate.

I'm not sure how to address that, unfortunately. While JavaScript in a browser is fine for simple coding purposes, as I mentioned it has syntactic requirements that are offputting, and worse, debugging scripts, when they fail, is an exercise in intense frustration.

David Brin said...

This was excellent. A guy who writes like this cannot have been a jerk. Well, not for extended periods. So let's just shake hands, eh?

If you'd care to write a two paragraph explanation of the exact diff tween Java and javascript, it'd be welcome. I am very frustrated.

What about a SHELL to let students type in algorithms and translate those down to java? This is absurd. Why can't a kid, learning galileo's laws, have on any computer a simple way to plug them in and watch a pixelated cannonball arc?!!!!!

It is utterly qwazy!

Anonymous said...

The short answer is that JavaScript and Java are two completely different languages. They share a similiar syntax at the surface level, but that's it.

For those interested in checking out KPL with the minimum amount of effort, check out this video:

http://channel9.msdn.com/Showpost.aspx?postid=166995

Steve Gilham said...

Javascript is another sprout of the 'C' family tree, named to try and cash in on the hype around the Java language. Formally, these days, it should be called ECMAscript.

Java is a purely object-based language, with strong typing (you have to say what type a variable respresents when you create the name), and a vast and still growing set of standard libraries to abstract operating system capabilities; Javascript supports more old-fashioned procedural programming and is weakly typed (the type of a variable is dependent on what is assigned to it), but within a browser it is rather sandboxed off from the operating system, and suffers in its interaction with browsers from a lack of standardisation (what works on IE may not work on Mozilla).

Anonymous said...

This was excellent. A guy who writes like this cannot have been a jerk. Well, not for extended periods. So let's just shake hands, eh?

Done. :)

If you'd care to write a two paragraph explanation of the exact diff tween Java and javascript, it'd be welcome. I am very frustrated.

It's been glossed by now by a couple other posters, and I can't really add anything to it, though there might be some tech depth to be covered.

Java and JavaScript are actually discrete, but they weren't really intended to be at first. Java was envisioned as being a server-side technology, possibly with some scripted application deployment, while JavaScript was meant to be browser-site support for the Java stuff running off the server.

Java is used largely for deployment of executable programs; for instance the notorious LimeWire filesharing client is written entirely in Java. Such Java applications have the advantage of theoretically being able to run anywhere, but they tend to be slow due to runtime compiling (that is, the Java Virtual Machine on a given computer translates the Java source code into machine instructions on the fly, essentially requiring the PC to recompile the program every time you try to run it), and since there isn't any real "native" compile version of a Java program, many of the controls, nterface elements and whatnot lack a standard system look and feel.

Java applets have also been deployed in web pages as animation, multimedia or engineering tools (among many other things). The one I've always liked most showed a rotating hypercube wireframe ... with the option to see it in 3-D. That's extremely cool.

JavaScript, by comparison, can be thought of as a fairly simple engine for displaying things within a browser window. Many of the things that browsers do are actually accomplished through JavaScript. As with Java, the script is "compiled" on the fly in the browser. This generally takes less time than a Java program mostly because JavaScript code tends to be many orders of magnitude less complex.

The most basic Java file would be something like this:

class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}

The first thing you run into here is the term "class", which immediately opens a massive can of worms to a kid wanting to get stuff to happen onscreen. If you enter the above in a text editor and run it through your Java compiler, you'll get the phrase "Hello world" in the console window -- but then you have to explain the brackets, braces, parens, semicolons and what the hell a class actually is to begin with.

For this reason I don't believe you'll find that Java, C++ or C are at all acceptable for simply exploring algorithms. There's too much overhead for it to work, too much pre-instruction that must take place to make the language accessible to a student in the first place. The question "Why do I have to go through all this shi'ite just to get some text on the screen?" is a perfectly valid one.

JavaScript isn't a lot simpler, but it is somewhat simpler, which might make it more accessible to a newcomer to programing and object-oriented languages. There aren't explicit class declarations required, for instance, and the number of bizarre punctuation marks is reduced. The examples I posted earlier, in order to work, would just have to be placed inside an HTML file, in the script headers.

I can't do that here, because it would break the blog page. But the basics are fairly straightforward and fairly standard, and require only a minimal amount of overhead in irrelevant technologies (HTML) to get started.

What about a SHELL to let students type in algorithms and translate those down to java? This is absurd. Why can't a kid, learning galileo's laws, have on any computer a simple way to plug them in and watch a pixelated cannonball arc?!!!!!

That's a damned good question. The closest I came to that was a graphing program that plotted lines on x/y axes.

GUIs on computes and OOP code have made the front and back ends of the tech much more accessible -- but there are some applications, such as the one you're seeking, which have undeniably fallen through the cracks.

Rob Perkins said...

David, that's a really good point.

Getting a chance to plot in a cartesian plane in .NET requires first that you access the System.Graphics libraries, second, that you initialize a Graphics object for drawing, and third...

and third...

and THIRD, that you POSSESS A KNOWLEDGE OF MATRIX ARITHMETIC IN THE FIRST PLACE in order to set up the transforms which lay out the cartesian plane!

Java, I've heard, is no better. I've had the self-bootstrapping problem with that one; you have to be really, really interested in OOP techniques just to get started.

That's the basis of your case, isn't it? That the simple is hidden behind that sort of stuff? That computers are apparantly no longer basic (ahem) tools to study math?

That *is* a shame.

Something happened to me today, though. My 6th grade daughter brought home a math textbook, focused on basic geometry concepts, which included one of the addenda you talk about in your son's old textbooks. The language was LOGO, and the examples were all Macintosh based.

Now, she's enrolled in the TAG/Gifted program in our schools, so I have no idea if the material is identical elsewhere, but the book itself is relatively (I think) new.

David Brin said...

Rob, a perfect ending point. With somebody (finally) getting what I mean!

And then telling us that a new textbook has actually adapted, offering a NEW way to get the old wonder accomplished.

Offering hope.

Anonymous said...

David, I think there just might be a commonly avaliable, widely used tool that does exactly what you want, and that many kids end up using in school whether they like it or not.

It's the TI-8x series of graphing calculator, which are actually general-purpose computers in disguise. They're standard issue in just about any math class that covers topics more advanced than basic algebra. The calculators are programmable, and come with a programming language that is, oddly enough, very much like BASIC! They even have vector graphics capabilities, although the small LCD display really limits what you can do with them. It's about as close to a "turnkey" approach to a device for demonstrating algorithms as you can get.

I've never seen anyone use it in this way, though, and the interface and built-in programming language really aren't suited for anything particularly complicated. At least it's another way people get exposed to basic computing principles other than through Microsoft and computer science degrees!

Anonymous said...

....and another thing. One advantage to BASIC is that it is one farily complete thing. It is both an interpreted language, and limited program editor rolled into one. From the command line you could calculate some math or print something, and also build, run, and execute your program. Python, perl, and other languages rely on external editors and command lines or program invocation. There are languages that are interpreted, (R, Lisp,...) but they are all function-based like the rest of the modern, and don't have well-adopted editing paradigms. With BASIC, you can avoid the editor wars (vi, emacs, Notepad) and use the simple line-based editing scheme that made the GOTO natural. Even filing your program has a low barrier: it saves it in the current directory and loads and runs it from there as well.

Sure there are lots of IDE environments and ways to write and execute programs, but a huge advantage of the old BASIC is that you can make the whole system work in text or over the phone. You could get your grandma started over a cell phone:

Type what I tell you:

basic
10 print "hello world"
20 goto 10
run

Ctrl-C
list
save hello
10 print "Hello david."
save david

quit

-------

Would you want to deal with why the hello_world.py or .bas or .pl made by everyone's favorite MS editor is really hello_world.bas.doc and won't work when you are trying to teach or learn something new? Low barrier to entry and ubiquity is something we've lost.

Rob Perkins said...

A followup:

I found, for free, online, the Berkeley UCB LOGO interpreter.

I showed it to my kids. *Without exception*, they all, from age four to eleven, became very excited about the idea of drawing with that turtle, or making pictures using LOGO, just as soon as I typed in some commands while they watched.

Now, they want it installed on their (communal, downstairs, family room) computer, so they can play too.

Mwahahahahaah! You have to grasp Euclidean Geometry in order to play with LOGO!!!! Hehehehe.

Tony Fisk said...

All of the above and previous postings is an object lesson in why one shouldn't go away for a week!

What can I add at this late stage?

I think fetzig's nomination of javascript as a lingua franca is a good idea. I would like to add the W3C Scalable Vector Graphics standard to that. Yes, those images can be written, and most browsers now support the standard (even if it needs a plugin)

Having a quick browse of the above, I can't resist pointing to this SVG demo: (can you put the moon into orbit?)

David, I approve of Ben's choice of C++, not because it's the way forward (it isn't), but because it's so cussedly complex in its power that, if he can master it, he'll pick up other, more modern languages in no time!

And hopefully, as it appears to be the point of this whole topic, he'll gain an appreciation of the inner workings of some of the more advanced (but most welcome) features of modern languages.

For example, in a little essay I wrote a while ago I commented: "With a better understanding of templates, I realised the joy of shared pointers (*not* those auto_ptr things!), and suddenly, even the memory leaks receded into the background."

Modern languages have shared pointers as a given. If Ben would appreciate a little challenge, can he get a working version in C++?

Anonymous said...

Well, it looks like I'm chiming in kinda late here...

Other people have noted that M$ has free compilers.

Other people have mentioned various "kid friendly" or "easy to learn" programming languages.

I haven't seen anyone addressing the part of the problem that -isn't- working.

That's... advertising. When there were only a few programming languages available -- and magazines to show you how to do it... You didn't need advertising.

I have never before heard of kid-friendly programming languages (at least not the ones mentioned above). We should do something about that.

What springs to my mind, at least, is piggybacking on another concept.

If we can have OpenOffice -- why not OpenSchoolHouse?

Just package together some of these
programming languages... [and find some other useful applications for the school... like punnet square calculators, which can serve as examples of how to code].

See if the OpenOffice people will let us advertise there...

Start small, but -get the word out-.
Send ambassadors to schools -- talk the teachers into trying something different for a change.

Provide workbooks too...

Anonymous said...

The bit about India "stealing" jobs and North Americans now going to India for IT jobs is really interesting. I'm seeing the same trend for China (which shouldn't be surprising I guess, considering their geographical proximity). One point to make here is that, while one may be able to make a comfortable living by working AND spending one's paycheck in India (or China), that same paycheck when brought back to North America to spend, would buy a lot less stuff.