Why I Miss BASIC
citizenscientistsleague.com
citizenscientistsleague.com
Processing. Scratch. Hackety Hack. KidsRuby. Python. Microsoft Small Basic. Numerous JS tutorial and sandbox sites. There's quite a lot, to be fair.
I think the problem, if any, is there are too many and none is particularly prominent, versus in the 1980s when BASIC was basically the one thing beginners could rally around.
Also, it was immediately available from when the computer was switched on (which took seconds).
Nowadays I think all sorts of packages have to be installed and it's too complicated for beginners. People who write instructions are usually hampered by the curse of knowledge.
What I loved about it - and miss in today's crop of programming languages - was the extremely low barrier to entry.
Creating interactive programs with graphics and sounds was dead-easy. The syntax was extremely simple, and it didn't require yards of boilerplate, importing libraries, switching among DSLs, or learning difficult paradigms to write a working program.
It was at least partially my early and quick success at making the computer do stuff that inspired me eventually to jump to other languages with more complex paradigms and tooling. (Obligatory Dijkstra quote notwithstanding.)
I don't remember Basic or even Pascal being great aside from being easy to learn and very simple.
10 CLS
20 SCREEN 8
30 LOCATE 10,34
40 COLOR 2,3
50 PRINT "Ryan McGreal"
60 LOCATE 11,35
70 COLOR 1,3
80 PRINT "is Awesome"
With Python, you would need to download and install something like PyGame, which means learning how to install and import modules, the basics of OOP, interacting with an API, and so on.Personally, I wouldn't trade today's computing environment for the environment we had in the days of BASIC, even at the expense of a higher barrier of entry.
I'm not saying we need to bring BASIC back, but rather that we need a first language that is as simple to learn and use as BASIC was.
After all, the metaphor of putting things into a rectangle using x and y coordinates is no different from the way we position elements on a web page today.
Perhaps we just need to admit that BASIC is perfect for this task instead of inventing a whole new language.
Are we as a group ashamed to admit that this language, clumsy at it was, was a perfectly usable gateway to bigger things?
50 PRINT "Ryan McGreal"
80 PRINT "is Awesome"Totally spot on. And I feel the same way, but, its never coming back. It was a golden age for us at the time. Heh, its was our version of the 60's !!!!!!!!
Making it harder to do this kind of thing is probably a good idea, but it's a shame.
You can then write code anywhere you want -- and you can play with more advanced tricks than you could on the old computers.
I was given the task of generating graphs of test data for an electronically variable transfer case. I had to use Lotus 123 for this and initially wrote a BASIC program to format the data so it could be imported into 123. Then I wrote these macros to generate 80 line charts, each displaying 8 different variables. Each line had its own color but it wasn't easy to follow the behavior of the system.
Then it occurred to me that I could graphically display the data using BASIC. I created an overhead image of the vehicle with four wheels, an engine and a drive shaft to the front end.
Whenever a rear wheel lost traction, I flashed that wheel. When power was sent to the front end, the front driveshaft lit up. The engine speed was represented with a bar graph.
The overall effect was great. You could see the vehicle turn, the engine rev, a wheel start to slip and power going to the front end. And then the rear wheel would stop slipping.
You could vary the speed and even run it backwards. And it ran in a loop.
When I showed it my bosses, they didn't seem to get it at first, but soon they were having me demo it to GM. And they took it to the test track with them, allowing them to instantly review a test instead of waiting weeks for a graph.
One thing I did not account for was the steering direction. I had data for the steering rack, not the wheels. The rack moves to the left when the wheels are turned to the right. So the replay of each test was turning in the wrong direction!
This also helped me get my first job after college. I devoted the second page of my resume to an "example of innovation" and told this story.
Google text cache: http://webcache.googleusercontent.com/search?q=cache:wu2ErRW...
The notable exception to this is Acorn ARM BBC BASIC which is quite surprisingly awesome compared to most dialects of BASIC and features everything you'd expect in a normal language.
canvas = document.createElement("canvas");
canvas.width = 320;
canvas.height = 480;
canvas.style.background = "#F0F";
context = canvas.getContext("2d");
document.body.appendChild(canvas);
playerX = 100;
playerY = 100;
keyboard = [];
window.onkeydown = function(e) {keyboard[e.keyCode]=true};
window.onkeyup = function(e) {keyboard[e.keyCode]=false};
setInterval(function() {
if (keyboard[37]) playerX--;
if (keyboard[39]) playerX++;
if (keyboard[38]) playerY--;
if (keyboard[40]) playerY++;
context.clearRect(0, 0, canvas.width, canvas.height);
context.fillStyle = "#0F0";
context.fillRect(playerX, playerY, 20, 20);
}, 16);If kids today are not getting sucked into programming, then in my opinion the reason is more to do with all the things online competing with programming for their time.
But still, thinking back I remember disliking Delphi compared to VB because I thought it to be too complicated. “Why do I need a class just to have a window? And what's all that stuff I don't know from Pascal? Eek! Back to VB.”
In retrospect that sounds silly, but when you're a beginner with no formal education in the field the priorities are perhaps different. At least they were for me. I ended up writing Object Pascal code years later and learned a lot more languages, but I guess most of my initial fiddling and writing fun things was with QB and TP. No forced OOP, not too many concepts to learn before starting (I stayed away from PEEK and POKE because I didn't understand what they did). Javascript doesn't really feel like a beginner-friendly language to me, actually. To grasp that snippet above you have to figure out at least parts of the DOM and events. I probably wouldn't have done that back then.
______
¹ Yes, I already had hard drives in my day. The one time I sat at a computer with a cassette tape drive was when I was three and my father never let me use it again afterwards – randomly mashing buttons was not very appreciated, I guess.
Furthermore, if you learn the dirty hack known as HTML/CSS/JS first...you will forever be tainted. Javascript will become "good enough" for every programming task. It's not.
I mean, I'm 40, been in to computing since I was 8 ish. I even built my own from components on bread boards. Yesterday, I looked at the Torque Engine, I gave up. I couldn't even set it up to use. And I've got a damn degree in Computer Science!!!!!
Heh, I almost think any kid who gets in to development of any kind right now deserves some sort of award.
But, I do think that on the other hand, people should lay off this idea that "everyone" should know it all, and stop giving mere users a hard time for not knowing or wanting to know all the insane abstracts we know.
Without RPI:
You don't know anything. You go to a tutorial. You have to download some stuff. There are win32, x64, OS X, linux, etc versions. There's python 2.x, 3.x, etc versions. There is pygame etc. And editors. (All of this is sort of fixed by Learn X the hard way).
With RPI:
Hopefully it's all included in a distro.
You can go to the tutorial and just start.
What would be useful is some python version of the type-it-in and run it listings that appeared in magazines. I found these particularly useful for learning - especially bugfix afterwards. And then tinkering the software to produce different effects. Starting with something and modifying it was a much easier introduction that just creating it all from scratch.
One of my programming project ideas is reproducing the TI-83’s functions (like Output, Menu, and GetKey) in JavaScript, and then making a site where people can write for that simple, familiar platform, but in a modern language like JavaScript (or CoffeeScript). You would be using JavaScript to control a 96x64 virtual black-and-white screen. So you could write your TI-BASIC program in a more powerful language, using a full-size keyboard to type much faster, and afterwards share the program on the web where others can run it in the browser.
Maybe most would-be programmers wouldn’t like TI-BASIC as much as I did for learning programming, and that tool wouldn’t solve the problem in the article. But at least that tool would be a great stepping stone for people who already know TI-BASIC to learn modern programming. I wish that tool had existed when I started learning programming on the desktop.
Folks, he wants "GNU Octave", probably compiled for windows, not Scala. Even if he's literally asking for is "a programming language" what he's trying to do is along the lines of octave / mathematica / wolfram alpha.
Octave has tolerable language/scripting abilities, its not only a mere REPL.
Startup lesson: analyze what the user is actually trying to do, not what the user claims to want. He can claim to want fuzzy bunnies or a punch card deck, but he needs GNU Octave.
The reason for hatred could have been my mindset when I first learnt BASIC, maybe the teacher, maybe the general environment, etc.
But I keep asking myself how would I have perceived things if the first language I had learnt was "something like" Python. (Python wasn't prevalent back then)
As for graphics? There's Pygame and Pyglet on the Python side, and I'm sure there are similar projects for Ruby. Any of those will give you easy access to very powerful capabilities. Then there's RaspberryPi. There has never been a better time to get into programming, or hacking with computers in general, than now. But then, that's always been true.
My belief is that interaction with a computer should be simple, and should take the form of a conversation. Computers are not like other machines because we can converse with them; we can ask questions and get meaningful answers. It was a revelation that came to me when I was five years old, poking at my Commodore VIC-20 -- in BASIC.
Recently started doing some Lua after 20+ years of C based languages and I'm really enjoying it.
I feel it is just nostalgia that is the writer's problem, not that there are no good packages/languages any more.
Might try a Kickstarter. Somebody wants to replace "Run Revolution" with an OS version and is asking 350K pounds. Ha!
Seriously. There is a LOT of demand floating around. KISS. And ask less than 350K.
1 on error goto 700
never again.