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.
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.
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.
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.
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.
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.
>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.
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.
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.
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.
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.
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.
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.
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 ..
> 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.
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.
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.
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.
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:
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.