Hacker News new | past | comments | ask | show | jobs | submit login
Fifty Years of BASIC (time.com)
73 points by srikar on April 29, 2014 | hide | past | favorite | 63 comments



Soapbox time!

Basic has a bad rep almost everywhere in the industry because it is interpreted (yes there are compiled variants), case-insensitive, optional brackets and doesn't lend itself to structured programming very well. But ask any talented developer in his 30-40:s (yes we were almost all men!) how he got started? Basic! QBasic, Commodore Basic, Amiga Basic (and Amos) etc.

Here is how you put a white pixel on the center of the screen in qbasic:

    SCREEN 13h
    PUTPIXEL 160, 100, 15
That's how easy it was and what got me hooked and I still remember it by heart over 20 years later. I feel sorry for the kids starting out today with Java, C# even Python and Ruby requires more knowledge to get stuff done than what qbasic did. And you have to know about them and their packages, while qbasic came with everything you needed preinstalled with the computer. Computer programming is unquestionably much less beginner friendly today than it was two decades ago.

And no, Javascript isn't the answer.


Amiga 500. I really enjoyed PEEK/POKE and the whole experience in general. There hasn't been anything in my life quite like BASIC since.

A friend of mine has been volunteering to teach kids using Javascript. He doesn't have much good to say about it. I think the control constructs and syntax were the hardest part iirc.

   10 PRINT "HELLO"
   20 GOTO 10
Is conceptually easier to understand than:

   for(;;) {
      console.log("HELLO");
   }
Actually don't type that into your Firefox if that's what you use. It'll just crash. I'm not even sure what Javascript does for looping but I'm sure it's weird.

Things have improved since then but the experience of programming has become something programmers do. There was a paucity of software back then and from my rose-tinted, 20-20 hindsight I think I only started programming when I was a kid because that was what you did with a computer. There wasn't a distinction or any special software to install. It's hard to explain.


I started with BASIC, I hated it, It was slow as shit. I wanted to make real graphics video games. 1 month into BASIC and I realized it wasn't the solution. I immediately started searching for alternatives, I found pascal and C. I choose C. I feel envious of kids starting out with Python today, they don't require any more knowledge, they can get more done than we ever could back then. They have endless amounts of libraries. Languages they are more stable than say C and faster than BASIC. They have it really really good. When I found BASIC I was in 11th grade. Now if we are trying to teach programming to 5th graders. Perhaps I will agree with you.


Agree completely... I think _why said it best with his "Little Coder's Predicament": http://viewsourcecode.org/why/hacking/theLittleCodersPredica...


I'm a developer (probably not talented, but whatever :D ) in my 30s-40s and yup, Commodore basic, Logo, then qbasic and others... can you elaborate on why Javascript is not the "answer"?

I know that you don't generally have access to the whole machine like we do with something like Commodore basic, but at the same time it has a very low barrier to doing stuff and has a console in most browsers... at least to me it seems like a reasonable comparison.


Im not a tutor so I don't know. But I wager that Javascript's event-based execution model is very cryptic in comparisons with Basic's simple "do this, then that, then something more." And you need to use lambda functions, need to place semi-colons in the right places etc. And to even put a pixel on the screen (vertically centered!) you need to know a fair bit of both js, css and html.

And that's just the language. QBasic was available pre-installed on all pc:s, came with syntax highlighting, context sensitive editing, and a very good help system. If you pressed F1 on any Basic command it would show you complete help for it along with a full example. The good examples was important because I was using QBasic before I was good at English.


that's something i think about a lot, and would love to find a good solution for. pasting in a post i made to the pyret list once, on the difference between the BASIC model and the current event-loop-based GUI canvas:

From an imperative programming point of view, it does "leak" the fact that the universe is running at toplevel and pulling updates from your program, rather than sitting there passively and being written to. I was thinking of things more in terms of where a canvas lies on gui/output stream split - an imperative program can simply emit text, audio, network packets, etc, and trust that there is a universe out there to act on them, and of course if you have a gui you know that there are reactive components with two-way interactions that you have to monitor in some sort of event loop. But despite being conceptually one-way, a graphics canvas needs to run in an update loop more akin to a gui than to an output stream. I miss the days of single-application computing where the running application could say "print 'hello world'" and hello world would appear at the text cursor, or "line 0, 0, 100, 100" and a line would appear on the display in an entirely analogous manner. It made graphics something you just did, rather than having to structure your program around.

On the positive side, the big bang model works out a lot better for games, sprite-based stuff, and anything that wants live objects on a vector canvas. The microcomputer model was nice in its day but I guess it doesn't really reflect the way computers work any more :)


Isn't a big reason why so many people your age got started with BASIC that there were relatively widely available devices and programs that you could program in BASIC on? I first saw BASIC used on a graphing calculator, and it was something you could mess with in class when bored. Now that laptops are reasonably ubiquitous, it will be interesting to see how early those who would have started with BASIC get into higher level languages.


Does QBASIC really have a putpixel command or the pset and preset ones? You're right about everything else.


Nope I goofed. It should be PSET not PUTPIXEL. And SCREEN 13 or SCREEN 10h, not SCREEN 13h.


Im of that age, and basic was a bane to my early development. It gives a simplistic, underwhelming view of computing to early users; I walked away from my c64 after going through all the examples wondering why grownups were making such a big deal about a weak, simple tool.


>>And no, Javascript isn't the answer.

You're right! Lua is the answer. And so is LuaJIT! :)


What's your opinion on Scratch or similar kid-friendly languages?


They take kid friendly too far. I was maybe 6-7 when I first encountered QBasic. The key thing was that the documentation could be accessed from the editor. It was comprehensive enough, with plenty of examples, that I could write simple silly graphical and midi audio programs with ease, in addition to text based adventures. I think the closest spiritual successor would be Python.

I still remember it as one of the most user friendly environments by far.


No full screen - full resolution applications. As if MIT never thought beyond 320x200.


Ok, but I didn't mean Scratch per se, rather the style of Scratch, and if it's useful for learning. MIT has taken over Google's App Inventor for example, and there are others like that.

http://appinventor.mit.edu/explore/


>BASIC was first successfully used to run programs on the school’s General Electric computer system 50 years ago this week–at 4 a.m. on May 1, 1964, to be precise.

Sounds like the project deadline was May 1st. Glad software engineering hasn't changed much in 50 years.


The developers actually called it "April 31" because they were supposed to ship in April.


Shit. It's bad enough that I turn 50 this week, but I was born on BASIC day?!? Sigh.


My favourite language. Started with a ZX Spectrum, then did GW BASIC at school. My first job (1990) was maintaining Thoroughbred BASIC apps. Now using Visual Basic for the biggest project I've ever worked on (https://www.wittenburg.co.uk/Entry.aspx?id=0a505400-5bf6-4a6... ). In the years this project has been going I've written over 500 KLOC of VB.NET code. The current desktop app (third re-write, only about halfway done) clocks in at 40 KLOC of VB.NET code. No libraries. Just Visual Basic and the .NET framework.


REPLs are great way to teach kids about coding. For me:

Applesoft BASIC (Apple ][e) -> Level I BASIC on TRS-80 -> FutureBASIC (Mac 68k)

Those are the BASICs I learned before moving on to Java, C#, then JavaScript.

FutureBASIC was really ahead of its time. You could drop into assembly, make direct system calls, didn't need line numbers, it supported proper functions, and it was event-based and somewhat asynchronous. For ~$300 it was a pretty big deal for Mac users at the time. I think MPW was still several thousand dollars and open source compilers were largely unavailable.


Dropping into assembly and making direct system calls were exactly the sort of things that were of BASIC's time. These are operations oriented downward toward the layer of Von Neumann architecture.

It's virtual machines and garbage collection that are the stuff of today...and of course yesterday as well. But the reason for their popularity is that a quest for 7ever more sophisticated abstractions is the impetus behind most programming languages. It's

    39 -> JMP -> GOTO
that gets us multiple dispatch. None of which is to say that languages with REPL's or even only with REPL's [aka interpreters] aren't a great tool for learning...better than IDE's in my opinion...then again so are text editors, but that's a story for another day.


> Applesoft BASIC (Apple ][e) -> Level I BASIC on TRS-80 -> FutureBASIC (Mac 68k)

Are you me?

I loved FutureBASIC. It could actually access GWorlds and QuickDraw so I could write games that had fast double-buffered graphics. I eventually switched to C for performance, but I got a ton of mileage out of FutureBASIC (and PGPro!) before I did.


BBC Basic (from 1981) let you mix 6502 assembly in your code.

But you had to have line numbers and this caused me a bit of a headache when I got to learn Pascal. Things just seemed to be floating around. Which is funny, because Perl is now my weapon of choice.


Ha! I'm glad I'm not the only one that found the lack of line numbers disturbing (I also went from BASIC to Pascal). It just felt weird - mostly because I hadn't yet got my head around not using GOTOs. Once I got how functions worked though, there was no looking back.

There's a very good emulator of my original computer available online: http://compucolor.org/emu/ccemu.html

It boots you straight into the BASIC REPL. There are still games that I can write from memory for that thing :D


On a slight side tangent a discussion of related old fads in IT might be interesting. Some eternally reoccur like a wheel, some haven't returned... yet.

Whats changed since then, is more than just the syntax of if/then statements.

GOTO

automatic / implicit strong typing of variables (and believe it or not, a FORTRAN "feature" to change how the automatic name based typing operated resulting in eternal confusion from that day onward)

Intermediate code (tokenized basic, pascal P-system, JVM). And unlike the p-system or JVM, virtually every tokenized basic was incompatible with every other tokenized basic.

Line oriented program editing and its companion, the line number. I think the concept of a line number might freak out modern noobs more than the concept of line oriented editing, hard to say.

To some extent, backward compatibility is seen less and less as a feature as time goes on.

Your computer powers up and boots in less than a second to a REPL for BASIC.

Numeric / non-humane usernames

Direct access to hardware with no "OS" in the way


Learned to program in Dartmouth Basic on a teletype in 1974 in school. Teletype = clanky uppercase only terminal that printed on paper at 110 baud and saved to paper tape. The world sure has changed since then.


Pretty much my story as well. A teacher at my High School in 1972 had an account on a local time sharing service. He sponsored a computer club, probably unusual for the time in a High School. We dialed up the service with an acoustic modem connected to an ASR 33 teletype. I still have some sheets of the old yellow roll paper with my first BASIC programs on them.


One of the best things about BASIC in the 80s was the immediate and interesting results.

Just a couple of lines and I could get colourful graphics, and interesting sounds. It grabbed my attention very easily as a kid.

If I had to jump through all the hoops you have to today, there's a good chance I wouldn't have got into programming.


My first programming language!

ZX Spectrum 48K BASIC back in 1986.


First language here, as well. AMOS BASIC on an Amiga 500 (https://en.wikipedia.org/wiki/AMOS_(programming_language). Despite the naysayers who'd claim I permanently broke my programming ability, the excitement of getting things working right away - of writing actual games with pretty damn good graphical effects despite knowing virtually nothing - was a huge catalyst in getting me over the early humps in learning to program. I doubt writing my 50th Fibonacci generator (this time, use tail-recursion!) would've kept my interest long enough to see the beauty in real engineering.


48K eh? Ahh rich kids... :)

What blew my mind shortly after getting my hands on a ZX Spectrum was to find out that most computers of the time (Dragon, Oric, Apple, Commodore, etc) had significantly different versions of BASIC.

The next thing that blew my mind was to learn that editing computer programs could be done full screen instead of line by line and that, in fact, most programming environments did not use line numbers except as visual aids.


Most of the 6502 Microsoft basic varieties can be built from the same source code

http://www.pagetable.com/?p=46 has lots of the gory details


Dragon 32, with the basic interpreter written by Microsoft. Helped me a lot when I had my final year university project in VB 1.0.


First basic used was on the oric-1 http://en.wikipedia.org/wiki/Oric#Oric-1

Also had the joy of VB 1.0 for work http://en.wikipedia.org/wiki/Visual_Basic#History


Great to hear of another Oric-1 user! :) Did you know its still getting software written for it? (Please tell me you didn't already know about http://forum.defence-force.org and http://oric.org .. in case you didn't, and you loved your Oric-1 like many of us do, then you're in for a great surprise..)


Radio Shack Color Computer on 16k back in 1981. My parents let me have the manuals well before the Christmas gift of the computer itself. So my first programming was at age 13, handwritten in notebooks during my middle school classes.

Me and my dad soldered RAM piggyback to make the computer 64k.

And I almost immediately moved to hand-assembling 6809 code via BASIC pokes. Wrote a whole music synthesizer that way. I still miss those days.


As for many of us I'm sure.

For me, it was GW-BASIC on an XT clone around 1986 as well.


gw-basic on xt clone for me too, albeit in 1987 :) the computer came with 256kb ram and propmtly upgraded to a whooping 512kb!


Same here. GW-BASIC on MS-DOS 3.30


Same here, and that's why I still use "n" as for loop variable. http://en.wikipedia.org/wiki/File:ZX_Spectrum%2B.jpg


CASIO Basic for me.

Solving physics problems while my colleagues were still writing the problem.


At university, the Casio FX-850P and FX-880P (I got the 880P one) were still quite trendy in Portugal.

Still remember seeing the 16KB upgrade cartridge for what would be 100€ nowadays!!


I remember my father with one of the FX-850P, that layout is just great.

I'm have a FX-9850. They launched a similar version to those old ones, clamshell style [1].

[1] http://www.amazon.com/Casio-fx-9860G-Slim-Graphing-Calculato...


Me: Oric-1 (also 48K) with a better BASIC than the ZX Spectrum!

I still have this machine, and its still being used (by my kids).


Xerox 8086 with QBasic for me. 640k RAM!


QBasic on a 386/25MHz!


I'm still using BASIC. I use it to teach my 6 year old son (and his 3 year old brother) to use computers. We have many, many solid quality hours as a team, huddled around my still-working old 8-bit machine, typing in programs, playing existing games, and so on.

The old 8-bit machine is the only system in the house that I can reliably leave my two boys with, knowing they won't get up to any mischief (no Internet!) and which they can fully control, themselves.

I'm constantly having the thought that its sort of a travesty that 8-bit, low-power machines like this are out of style - they're still highly useful machines. And I'm pretty sure my kids will know how to push pixels before most of the other kids in their social group even get their first XBox ..


I've mentioned it a few times before but here's a project where a simple computer (using VGA and a PC keyboard) runs BASIC.

http://geoffg.net/maximite.html

> The Colour Maximite is a small and versatile single chip computer running a full featured BASIC interpreter with 128K of working memory and eight colours on a VGA monitor. It will work with a standard PC keyboard and because the Maximite has its own built in SD memory card and BASIC language you need nothing more to start writing and running BASIC programs.


In the same spirit, you should check out LOAD81 (from antirez, the redis guy):

http://github.com/antirez/load81

Really wonderful toy!


BASIC was my own personal intro to programming. First on an HP3000 mainframe while in high school in the seventies, and later GWBASIC on a Columbia luggable in the 80's. Someone... I think it may have been David Brin, wrote a great article a few years back about the lack of an ubiquitous, easy to access interpreted language that any kid with a computer could discover and begin using. I think it's a valid complaint, but probably not addressable given all the platform and library dependencies these days. Python comes close.


BaCon is a nice BASIC to C converter: http://www.basic-converter.org.


A tool to convert BASIC to C seems more niche than 'nice'. I mean, I'm not normally one to criticise other peoples choice of languages, but I can't think of many occasions when I'd find such a tool useful. And if I was forced to recommend a simple language with C-like performance, I certainly wouldn't suggest BASIC even with this converter. But each to their own I guess.


Not to mention that back in the day we had real BASIC compilers.


You still do today. There's a modern version of Qbasic (QB64) which compiles to standalone executables.


Yes, but it does not offer the features we are used to in modern environments.


Such as?


Something like Real Basic (now Xojo it seems) provides a much better developer experience, while offering native compilers.

If I am not mistaken, QB64 is just a plain command line compiler, from what I could find.


As long as it can call external DLLs it's OK. It would not be hard work to use IUP or GTK+ with QB64 if one wanted to. QB64 offers a better environment than python so it's not that plain - one does not need to look for an external library to make games for example. It's a compiler that can compile to Windows and Linux too, as well as Android. A very versatile tool.


No, I don't work for them but, has no one here heard of PowerBasic?

it started out as BASIC/Z, the first interactive compiler for CP/M and MDOS. It was then extended MS-DOS/PC-DOS and was then published in 1987 as Turbo BASIC by Borland. When Borland discontinued it - the Author, Bob Zale, re-released it as PowerBasic.

A very modern compiler with extremely similar syntax to QB (at least in the text-mode version). Comes in a Windows version as well.

Both compilers are written in assembly. No runtime. Extremely small, fast executables. Supports inline assembly (mix BASIC and assembler in the same procedure). Windows version creates stand-alone executables or DLLs. Supports user-defined marcros. Regular Expressions. Supports both OOP and procedural style programming. Too many features to list here. Complete manuals available for free on their site (powerbasic.com)

This would be a good BASIC to start a kid off with.

Check out the forums. Especially the source code forum. There are some very talented people there.

Not free but very reasonably priced compared to MS products.


The thing is that while I learned BASIC in a ZX Spectrum back in 1986, I came to appreciate the Xerox PARC ideas of live coding, some of them present in current IDE environments and environments like IPython and Mathematica.

Hence my remark.


No, it's an IDE as well


Not a single mention of BBC Basic. I get that Time's US-centric but it still leaves me a bit sad.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: