Letters posted here are associated with the following article:
The letters thread is now closed.
Just read this thread that spoke to not being able to do Basic programming on a PC. I've been doing it for years. What am I missing here? -AW
I wholeheartedly enjoyed reading this article.
I have numerous times discussed the problem (of easy access to programming tools) with friends over the last decade, but it seems a futile fight. The complexity of modern systems seems to force the tools to become more and more complex and abstract. Today universities produce hordes of candidates proficient in Java, but when something below goes wrong they're dumbfounded. I believe Joel Spolsky called this "The Law of Leaky Abstractions".
I recall the halcyon days of programming on my Amstrad in BASIC, which, as on the C64, was available from the moment you turned on the machine. As a child this was heaven.
But children today are, as you point out, met with an wall of complexity if they want to create or develop anything on their computers outside the confines of pre-engineered world (be it a game or online community). Consider the effort required to do a Hello World in C# or Java: "Please dad, explain what the meaning of 'public static void Main()' is once again".
I must say I think people pointing out where you can download a BASIC interpreter is missing the point. The problem is not that one cannot find a BASIC interpreter nowadays. The problem is that it isn't as ubiquitous as in the past, where one could assume virtually everybody to be familiar with "AUTO 10" on their home computer.
Another problem today is that a teacher teaching BASIC to his pupils/students will be met with scorn from his peers. Most will tell him "It's not a real programming language" or they will say "GOTO where?" and then laugh maniacally.
I believe most teachers would decide to go with the current fad in programming languages, as to be considered "up-to-date" and "progressive".
Should kids still want to toy around with BASIC programming, they're "forced" to surf the web to find the "best interpreter", which is unnecessary complexity for kids nowadays, when, after all, Microsoft and Apple could include it virtually for free. But with the short-sightedness of the modern enterprise, I assume the two companies have decided that catering to the kids of today (engineers of tomorrow!) is not a profitable business practice.
I you, David Brin, would like to entertain your son on the C64, there's a lot of good games scanned from old "programming books" here:
http://www.atariarchives.org/basicgames/
http://www.atariarchives.org/morebasicgames/
I thank David Brin for bringing this topic to the fore, and am excited to see it generate some good dialogue. I view the obscurity of programming as a social mobility issue that is part of the bigger issue called the technology gap or digital divide. The Technology Gap is people, largely in chronically disadvantaged segments of society who are loosing ground everyday simply due to lack of connectivity to the Information Super Highway.
I was a software engineer and BASIC was crucial to my digital maturation. And as it has eroded I have been looking for a plausible replacement, and I believe I have found it.
I am trying to do it with things that are native to a typical, contemporary personal computer. In particular, most computers have web access through a browser, and most browsers understand HTML, CSS, and JavaScript. Together these can enable anyone to create satisfying programs. Technically, we will be creating dynamic web pages (i.e. DHTML), but you won't need a server or any file transferance. You need a web browser, but you don't need to be hooked-up to the web.
Bob Albrecht, a pioneer in computer education, wrote, "the most personal way to use a computer is to learn how to program it, applying it to interesting problems, and producing useful solutions—your solutions." Following Mr. Albrecht's lead, my project will enable people learn how a web page works, how to express themselves with web programming, and learn how to write dynamic web pages that say what they want them to say, the way they want them to say it, and be able to do the things they want them to do.
http://blassic.org/
is a Linux Basic interpreter. Under Gentoo Linux, you can even:
emerge blassic
I'm learning QBASIC this winter. I've been coding HTML for years but it's as far from programming as microwaving dinner is from Southern cooking. Eventually I'd like to get to new pursuits, like Thai cooking and Objects, but I'm also conducting an experiment. I'm 58 years old, an English major and grandma. If I can't learn basic programming, then I'll drop my harangue about bringing teachers into this century.
The first thing that's needed is qualified technical writers who know how to write for the age of their audience. Then some of today's popular languages wouldn't be so bad.
As of now, Perl documentation is a mess. Much of it was written by various people of unknown qualifications.
I think Python's documentation was written by Python's developer who, as far as I know, isn't a qualified technical writer and his work wasn't professionally edited.
I remember not even being able to find online Javascript documentation a couple of years ago that didn't have glaring omissions or wasn't self-admittedly out of date. I challenge anyone to find any Javascript documentation, tutorial, etc. on the internet that mentions that setTimeout starts a new thread, much less something that explains what that is and how to work around it to implement a time delay. I was eventually pointed to something that mentions the threading, but it wasn't documentation or a tutorial and therefore wasn't in the proper place. The fact that there's no "sleep" is another issue. The reasoning for having no sleep is bogus.
The technical writers of beginner's material should be instructed to mention "best practices" such as avoiding goto, declaring variables, turning on warnings, etc., only at the end of the book. With simple programs, memorizing and using that stuff just makes things harder.
Line numbers are good because they make it easier use goto. No need for a beginner to learn label syntax or what can and can't be labeled. That's one thing that documentation can't provide.
There's a similar discussion at http://www.aota.net/forums/showthread.php?t=22202
Python is easier and better than Perl. See http://www.polisource.com/PublicMisc/Benchmarks_Perl.html