
Why I Miss BASIC - youngerdryas
http://citizenscientistsleague.com/2013/01/21/citizen-science-musings-why-i-miss-basic/
======
petercooper
_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.

~~~
chimpinee
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_.

------
RyanMcGreal
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.)

~~~
chaostheory
Isn't Ruby and Python just as easy for simple programs?

I don't remember Basic or even Pascal being great aside from being easy to
learn and very simple.

~~~
RyanMcGreal
Python is my day-to-day programming language and I love writing in it, but out
of the box there's no comparison to:

    
    
        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.

~~~
bradleyland
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.

~~~
RyanMcGreal
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.

~~~
joezydeco
And I'm saying bring it back.

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?

~~~
RyanMcGreal
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).

~~~
joezydeco
Do we really need lists, dicts, and funcs to let a 10 year-old kid do this?

    
    
        50 PRINT "Ryan McGreal"
        80 PRINT "is Awesome"

~~~
RyanMcGreal
No, but BASIC would make a better gateway drug to more powerful languages if
it allowed kids to get exposed to those things.

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

------
gamache
The website seems pretty well boned at the moment.

Google text cache:
[http://webcache.googleusercontent.com/search?q=cache:wu2ErRW...](http://webcache.googleusercontent.com/search?q=cache:wu2ErRWpBl8J:citizenscientistsleague.com/2013/01/21/citizen-
science-musings-why-i-miss-basic/&hl=en&tbo=d&gl=us&strip=1)

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

~~~
FourthProtocol
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"?

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

~~~
Jare
HTML5 is a beginner programmer's best friend! Nest a html, body and script
tags, slap something like this inside, and off you go:

    
    
      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);

~~~
ygra
The beginning programmer me from more than a decade ago would have run away,
screaming.

~~~
randallsquared
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.

~~~
ygra
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.

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

------
VLM
"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.

------
RaSoJo
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)

~~~
simonh
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.

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

[0] <http://github.com/bitwize/glasstable>

------
youngtaff
There's something very BASIC like about Lua without it seeming to have the
rough edges of BASIC.

Recently started doing some Lua after 20+ years of C based languages and I'm
really enjoying it.

~~~
bradleyland
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.

<http://www.computercraft.info>

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

[1] <http://www.freebasic.net/>

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

------
teeja
_Why I Miss BASIC_

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.

------
jasonkostempski
BASIC still exists.

------
tbatterii
At one time, I was paid to maintain code like this...

    
    
        1 on error goto 700
    

never again.

~~~
bitwize
On Error Resume Next is your friend! Makes all those pesky errors go away!

~~~
tbatterii
I don't think BBX had that in 1996.

------
visualR
You can always download AutoIT

