Yup, I remember how easy it was to just get started on programming with BASIC. Just fire up the computer and start typing. Learn as you go. Few years later, programming in C for DOS was also much easier than nowadays. I could make simple graphical games in C in a couple of days as a kid, and nowadays I'm not even sure where to start. Just setting up the environment in most languages requires a CS degree. Kids have it hard these days.
Really? Because I remember typing hundreds of lines into terrible keyboards for not much more result than this, and then hoping, hoping, hoping that nothing went wrong when saving it to cassette tape, or I'd have to type it all in again.
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.
Oh, sure. Things used to take a lot of code back then and heck, I've written hundreds, if not thousands of lines of crappy beginner's code while learning, be it BASIC, Turbo Pascal or later VB¹. The point you make about so many things competing for at-the-computer time may be valid, indeed.
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.
I don't think so. BASIC has much simpler syntax than Javascript. It's got clearly defined and easy to understand rules. It typically runs in a "pure" environment that you won't have to fight with (as compared to "the browsers").
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.
And that is why I fear the Raspberry Pi chaps missed the whole point, if they expect the Pi to be the next BBC Micro. Programming back in the day was simple. From that simple beginning you could easily and naturally progress. The problem now is that the entry bar is so damned high.
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.
In theory Raspberry PI solves some of the problems that youngsters face.
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.
We all miss BASIC until we actually go back and use it, at which point it starts to hurt us. This usually happens the moment we want an array and have to frig around with DIM.
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.
Even though the first language I learned back in 1986 was Logo (BASIC was the second), and since then have delivered production code in assembler, Pascal, COBOL, C, C++, JavaScript, Java and C#. Today Visual Basic.NET is my favourite language, and I program in it every day. Other than REDIM and REDIM PRESERVE, how do you need to "frig around with DIM"?
It seems to me, from my admittedly limited perspective, that there aren’t many tools for just messing around on the computer.
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.
Indeed. Everyone who owned a particular model of computer had the same BASIC and could swap programs/listings.
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.
I learned programming in TI-BASIC for the TI-83+ graphing calculator. I did like how it made it easy to asking the user for input and displaying output on the next line, but it also let you display text anywhere on the screen, or draw points on a graph to show the user pictures.
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.
BASIC was the first comp sci language that I had to learn in school.
I don't remember much of it, but all I remember was that I hated it, was frightened of it and in corollary ended up being frightened of coding in general.
This was until I discovered Python a couple of years back. Now every problem that gets thrown at me, I end up thinking in terms of code. I admit to not being good at coding but now I really enjoy it.
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)
Python, Ruby and perhaps even PHP are the true modern heirs of BASIC. They have a rock bottom barrier to entry, yet the power they give you, compared the the BASIC of old is off the scale.
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 first computer was a shoulder-busting Compaq Deskpro Portable running Windows 3.1 (64KB RAM, 40MB hard drive, 5.25" floppy drive). I cut my teeth on GW-BASIC after a family friend gave me a programming book.
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.)
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.
This isn't a longing for BASIC, it's a longing for a time when the entire display could be addressed using simple x,y coordinates. Maybe more accurately, it's a longing for BASIC as a metaphor; longing for the simplicity of the past.
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 don't miss BASIC as a simple production language, I miss it as a simple first language. (Sorry if I didn't make that clear in my earlier post.) We often create sandboxes with most of the complexity abstracted away for people to get their first introduction to a complex system, and BASIC filled this role nicely 30 years ago.
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.
BASIC has some deeply aggravating misfeatures and missing features that would be easy to fix without significantly expanding the scope of the language, e.g. better data types like native lists and dicts, and easier support for functions and procedure calls (fixed IIRC in QBASIC).
I made a simple D-A convertor out of resistors and a D25 plug. You could squirt bits out of the parallel port and get sound. It was brilliant for gameboy emulators. The No$ emulator supported this.
Making it harder to do this kind of thing is probably a good idea, but it's a shame.
"it's a longing for BASIC as a metaphor; longing for the simplicity of the past."
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 !!!!!!!!
As petercooper has already mentioned there at things like Scratch and something why released for Ruby (Hackety Hack?) that are just as simple yet better. I still have no nostalgia for basic whatsoever.
"If you needed to evaluate a slightly complex math expression, a few lines of code would give you an answer."
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.
Freebasic [1] is a modern cross-platform BASIC compiler and it's really rather good with lots of ported libraries. I often use it when I need to knock up a little graphics demo or something really quickly. I'm starting to use Python more for that sort of thing now, but you can't beat BASIC's lack of overhead, especially for graphics.
Took BASIC in high school and used it on a co-op assignment during college. I was at a company called New Venture Gear that manufactured 4 wheel drive systems for Chrysler and GM.
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.
There are so many programming languages and scripting languages to choose as well as calculation packages (matrix like ocateve and matlab or symbolic packages or symbolic packages and I do not even know what others there are). The only problem nowadays is finding the best for you at a given time, but this is actually just plenty of choice and having choices has always been considered a Good Thing.
I feel it is just nostalgia that is the writer's problem, not that there are no good packages/languages any more.
I'm introducing my niece to programming using Computercraft; a plugin for Minecraft that provides programmable blocks in the Minecraft world. Lua is the language used to program the blocks, and it works wonderfully.
I'm writing a REPL-based IDE for Gambit Scheme called Glass Table[0]. One of my inspirations was how easy it was to type in -- and change -- BASIC programs right inside the interpreter. And our fancy, advanced Lisp environments can't even give us this much? Even a SLIME-based workflow consists of typing a program into an editor and then submitting it to the REPL; why can't the REPL simply remember your program instead and save it out when instructed to?
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.
47 comments
[ 0.20 ms ] story [ 99.9 ms ] threadGoogle text cache: http://webcache.googleusercontent.com/search?q=cache:wu2ErRW...
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.
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.
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.
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.
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.
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.
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?
Making it harder to do this kind of thing is probably a good idea, but it's a shame.
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 !!!!!!!!
You can then write code anywhere you want -- and you can play with more advanced tricks than you could on the old computers.
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.
[1] http://www.freebasic.net/
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.
I feel it is just nostalgia that is the writer's problem, not that there are no good packages/languages any more.
Recently started doing some Lua after 20+ years of C based languages and I'm really enjoying it.
http://www.computercraft.info
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.
[0] http://github.com/bitwize/glasstable
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.