Letters to the Editor
-
Modern learning methods
Yeah, I learned on a TRS-80, a C-128D, and finally a PC. But, times have changed and they've done so in many marvelous ways I'll cover in a second.
But first, remember what BASIC is: Beginners All purpose Symbolic Instruction Code. Comparing it to an expert's language like C++ is at the very least foolishness. It was designed to teach programming.
And back to modern programming. Most new students learn from something like Visual Basic (GUI-based high-level application development), or by 'modding' their video games (these all run high-level scripting languages, usually imperative and object-oriented), or by acting as a sysadmin for their Linux box, eventually hacking the scripts enough to get the idea. Sadly, that usually ends down a dirty road of Perl and PHP...
BASIC did let you hack away at a terminal and get output. But that entire model, however simple we may fondly remember it to be, is fairly worthless now. Object Oriented Programming's here for good reason, and students learn programming easer in this way.
Considering that almost all the apps we run today are event-driven and object oriented, from the desktop to the web, it makes sense to start there. Writing an event handler for a button on a VB form or creating new instances of health kits or weapons in a video game make great entry points into programming --- without the implicit masochism of terminal hacking.
But if you really want to do it old-school, get Spirit or ANTLR and write your own interpreter.
-
Nostalgia and the Job Market
"According to the masters of IT, line coding is not a deep-fabric topic worth studying. Not a layer that lies beneath, holding up the world of object-oriented programming. Rather, it is obsolete!"
In 2000, I wrote an assembler in a Comp. Sci. class at Berkeley. By the end of it, I could code in MIPS. At the end of my last semester, in spring of 2002, I wrote a C++ compiler. After I graduated with a Bachelor's in Computer Engineering, I got a part-time job as a valet.
It's easy to get nostalgic about obsolete langauges when you can pay the rent.
-
Read Carefully
I suspect the number of commentors who missed the author's point serve as examples to reinforce the author's point. But in case you missed it, the author is not trying to teach his son to be a programmer. He is trying to teach his son a more basic understanding of logic, algortihms, and computer hardware.
-
Scheme is a fine recommendation!
Mitch, if you are puzzled why Brin is hunting down 1982 BASIC like he was coming to get his love, consider this first google of the Scheme language I pulled up:
***
Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics and few different ways to form expressions. A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme.
Scheme was one of the first programming languages to incorporate first class procedures as in the lambda calculus, thereby proving the usefulness of static scope rules and block structure in a dynamically typed language. Scheme was the first major dialect of Lisp to distinguish procedures from lambda expressions and symbols, to use a single lexical environment for all variables, and to evaluate the operator position of a procedure call in the same way as an operand position. By relying entirely on procedure calls to express iteration, Scheme emphasized the fact that tail-recursive procedure calls are essentially goto's that pass arguments. Scheme was the first widely used programming language to embrace first class escape procedures, from which all previously known sequential control structures can be synthesized. More recently, building upon the design of generic arithmetic in Common Lisp, Scheme introduced the concept of exact and inexact numbers. Scheme is also the first programming language to support hygienic macros, which permit the syntax of a block-structured language to be extended reliably.
***
This is what is written on the doorstep of Scheme, at MIT.
The writing above is unintelligible, Mitch. Leaving shit like this on the doorstep is tantamount to driving away acolytles with two by fours with nails in the ends. No wonder Brin is buying Commodores for his kid.
-
BASIC *is* part of Windows -- it's called VBScript!
I can't say I agree that modern systems don't come with BASIC. Windows machines (the vast majority of machines for home users) since Windows 2000 have all come with the modern version of BASIC, VBScript. If you don't believe me, just create a vbscript file and run it:
1. Launch cmd.exe from the start menu (start / run)
2. execute notepad.exe from the cmd
3. In notepad, type the following BASIC code:
for i=0 to 10
wscript.echo i
next
4. Save the file through save as, name it something like forloop.vbs
5. In the cmd, type
cscript forloop.vbs
Result: the BASIC code (actually vbscript, but very similar) will print out the same results a 1980's BASIC programmer would expect -- all the integers from 0 to 10 inclusive will be displayed.
I agree that the friendly environment of qbasic that used to exist in win9x / nt4 is gone, but the halcyon days of TRS-80's recalled by the article did not include such a supportive environment either.
Otherwise, the status quo is much better than before. Consider:
1. Vbscript supports not just the command line, but can be used from within a web browser to do much more interesting things such as accessing more complex controls / graphics / web sites.
2. Vbscript supports object-oriented features -- good for teaching people more productive ways to create useful software.
3. The docs for vbscript far surpass what was available for old BASICs -- that's because the entire Internet is at your disposal, starting with www.msdn.microsoft.com and continuing on to countless reference / informational sites. Vbscript is used in web pages as well, so someone can get sample code from working live web sites.
4. Once you learn vbscript, you can learn jscript, a somewhat better language that is a good stepping stone to "real" languages like C++, C#, Java.
Is there a reason the article omits this? Does the article assume some substantial difference between the old BASICs and the much more powerful VBScript and its related languages?
In my opinion the presence of vbscript and other scripting languages in the default installation of the most popular operating system invalidates the premise of the article, but maybe I'm missing something. :)
And btw, I didn't mention the fact that the powerful standard Unix shell is installed on all versions of Mac OS X for the remainder of folks who use a Mac at home.
