
BASIC-256: An easy to use BASIC language and IDE for education - vmorgulis
http://basic256.org/index_en
======
drblast
Wow! Funny to see this...I started this project as a hobby in grad school and
never thought it would stick around this long. The current maintainer had been
working on it for years since I couldn't anymore and has done a fantastic job.

The original idea was to mimic the C64 Basic I grew up with. I think with
modern teaching languages the control flow is too abstracted to give you a
good idea of what the machine is actually doing. Early basics really mimicked
machine code quite closely...I think that was important.

My hope was that it would never get advanced features, and that it would be
instructional and then kids would move to Python or Racket, but adults liked
it for generating art because of the simple graphics procedures.

Anyway, it's good to see my baby grown up a bit.

------
jejones3141
Ick. I guess I'm spoiled; back in the early 1980s I had the pleasure of using
BASIC09. It had the grungy control flow if you felt the need, but also had
procedures (with actual local variables), decent control flow (save that you
were stuck with ON <expr> (GOTO|GOSUB) rather than a reasonable switch (wasn't
it called SELECT in other structured BASICs?) ), an integer and a Boolean
type, and the moral equivalent of structures (though you had to redeclare them
in each function they were used in, which was a bit of a pain and a possible
source of error). It compiled to an intermediate code in the manner of Pascal
P-code... and it ran on the 6809. _That_ I'd be willing to consider suggesting
for kids to use, at least when I'm not thinking they should be started on
Haskell before they're corrupted by imperative languages. :)

~~~
tomcam
Wow. I looked it over after reading your comment. Very impressive. Manual
still easy to find in PDF:
[http://www.roug.org/soren/6809/basic09.pdf](http://www.roug.org/soren/6809/basic09.pdf)

------
teddyh
As a motivation for this project, they point to an article in Salon, _Why
Johnny can’t code_ (but they use the wrong URL; it has moved to
[https://www.salon.com/2006/09/14/basic_2/](https://www.salon.com/2006/09/14/basic_2/)).
That article says:

> _The “scripting” languages that serve as entry-level tools for today’s
> aspiring programmers – like Perl and Python – don’t make this experience
> accessible to students in the same way. BASIC was close enough to the
> algorithm that you could actually follow the reasoning of the machine as it
> made choices and followed logical pathways._

I can only assume that the author hasn’t actually _used_ or even _seen_ , say,
Python, which is often referred to as “runnable pseudocode”; meaning “the
notes you wrote on how to implement your algorithm can often be copied and
pasted into a Python program and run as-is”.

From the BASIC-256 page:

> _It uses traditional control structures like gosub, for /next, and goto,
> which helps kids easily see how program flow-control works._

I, myself, originally taught myself to code when I was young, using BASIC on
machines with BASIC in ROM, and have typed in listings from magazines and
bought expensive BASIC reference manuals, read them in detail and used the
language to create many utility programs and games. And _even I_ wouldn’t wish
BASIC on anyone when modern languages with features like ( _gasp_ )
_functions_ are readily available.

Sure, I could understand the wish for BASIC back when the alternatives were C,
Pascal, Perl, LISP, FORTRAN, or Java. But when Python exists, there is no need
for BASIC.

(I should note that Python originally derives from a language explicitly
created for teaching, called ABC.)

~~~
RodgerTheGreat
Python has tremendously more complex syntax and semantics than a classical
BASIC interpreter. Calling python "executable pseudocode" is as disingenuous
as claiming that C has a straightforward translation to machine code (maybe if
you're using C on a PDP-11 in 1972…).

I think Python has an ill-deserved reputation as a simple language for
beginners to pick up because _if you know some other programming language_
Python is mostly familiar. I've spent years teaching hands-on introductory
programming to middle- and high-schoolers, and my experience is emphatically
that if you don't already know how to program, Python is confusing and
difficult to come to grips with.

~~~
teddyh
Even if I would grant this, does this make _BASIC_ better than Python?

~~~
RodgerTheGreat
Your first programming language doesn't have to be a practical language, and
it doesn't have to be powerful. Small languages which allow students to master
the entirety of the language are a better tool for building confidence and
teaching elementary ideas like sequence, variables and iteration. For the
first steps of dipping your toes into programming, BASIC is better than
Python. An ideal curriculum will expose students to a progression of languages
as they outgrow the limits of each environment.

~~~
teddyh
I’ll just briefly say that I disagree. I believe that my development and
education as a programmer was severely hampered by BASIC’s lack of functions,
and I would not wish it on anyone else.

Python has many obvious separate levels of learning it. At first, one could
learn line-by-line coding, as done in the interactive interpreter, gradually
moving into loops. Then, one could spend a long time with functions, dipping
deeper and deeper into data types, sequences, recursion, etc. Only _after_
this could one even _mention_ classes and object oriented programming. There
is _no_ reason to assume that one would need to learn all of Python all at
once.

A good language is also a language which allows its users to _grow_ , not a
toy language which teaches its users the futility of ever trying to accomplish
anything serious, which is precisely the feeling I got from BASIC.

------
BHSPitMonkey
The environment used to teach programming on Khan Academy looks very much like
this, but in the browser and based on JavaScript and Processing.JS:

Screenshot: [http://i.imgur.com/FKX3j2P.png](http://i.imgur.com/FKX3j2P.png)

Source: [https://www.khanacademy.org/computing/computer-
programming/p...](https://www.khanacademy.org/computing/computer-
programming/programming/animation-basics/p/challenge-parting-clouds)

~~~
ycmbntrthrwaway
Tightly integrated and ready to use graphics API that does not require setup
has been used to teach programming for a long time.

In USSR there was a set of programs for education, called KuMir (mentioned in
[https://en.wikipedia.org/wiki/Non-English-
based_programming_...](https://en.wikipedia.org/wiki/Non-English-
based_programming_languages)). There is a GPL version of it for Windows and
Linux at
[https://www.niisi.ru/kumir/index.htm](https://www.niisi.ru/kumir/index.htm)
It provides two environments: one it which you can draw, another in which you
control a robot. The second one is somewhat unique. Robot should bypass walls,
can put and remove flags and can move cargo around. You can see some
"screenshots" in a 1990 book:
[https://www.niisi.ru/kumir/books/1.pdf](https://www.niisi.ru/kumir/books/1.pdf)

What I would really like to see is such a system where language is not BASIC,
but Forth.

~~~
BHSPitMonkey
Very cool. Certainly wasn't trying to suggest that KA invented the idea (the
OP predates it); just wanted to point it out as a great low-barrier resource
that anyone with a browser can jump into.

------
alfanick
Meh, lets use some subset of an useful language (not BASIC) for education - if
so, someone might actually use some programming (or be inspired to learn more)
later in their lives.

I guess, despite many controversions, Python or Ruby are way to go (not really
JS, as JS lacks of any syntax) - syntax is very easy in both languages,
multiple different libraries exists and there are plenty of educational
platforms.

