
Microsoft Small Basic - Tomte
http://smallbasic.com/
======
_vijaye
Author here. I made Small Basic when I was in MS in 2008. My goal then was to
remove programming language ceremony (imports, defs, etc.) and get to instant
gratification.

There are several others that are keeping it alive with a well maintained blog
([https://social.msdn.microsoft.com/Forums/en-
US/home?forum=sm...](https://social.msdn.microsoft.com/Forums/en-
US/home?forum=smallbasic)) and a friendly forum that welcomes programmers of
all age and expertise.

There's even a strong community in a Facebook group
([https://www.facebook.com/groups/smallbasic/](https://www.facebook.com/groups/smallbasic/))

PS: I need to find a better host for the website.

~~~
meta0bject
Since you're the creator, I'd like to ask you, why BASIC and not Smalltalk?
You mention a desire to eschew boilerplate and provide instant gratification--
doesn't Smalltalk provide that as well if not better than BASIC?

~~~
_vijaye
This was a subjective decision. While I agree it's less succinct,
syntactically, I feel Basic reads easier than Smalltalk - especially to
someone with no programming exposure.

~~~
clouddrover
But that being the case, wouldn't Pascal have been even friendly to someone
with no programming exposure? Of all the languages I've used, I think Pascal
reads the easiest.

------
dr_zoidberg
Well, if my nephews ever want to take on programming this might be a good
place to start. Simple syntax, simple concepts, even the posibility of third-
party libraries? Sounds interesting for teaching the young (and not so young
too, but at that I'd prefer Python because of it's easier "real world usage"
\-- this does seem a bit too oriented at "toy programming").

~~~
nly
Hmm... nah, go straight to Haskell ;) Just imagine them in 5th grade trying to
explain Monads to their friends.

~~~
BFay
Yeah, it would be interesting to learn about pure functions and referential
transparency before basic algebra.

~~~
JadeNB
I'm not sure if this is sarcasm, but it's not clear to me that it's not
actually a potentially good idea, in two ways.

The first, important, way is that a tool that _offers_ solid theoretical
foundations does not (necessarily) _require_ those foundations. You mention
algebra, for example, and it's fair to assume that most school students (and
probably their teachers!) don't really appreciate the theoretical grounding of
algebra—but they can still hopefully _use_ it with proficiency. In the same
way, pure functions and referential transparency need only be difficult to
apprehend if you insist on investigating their theoretical foundations; they
can just be the way things work, and, if this is a first programming language,
then there are no habits regarding mutable state to unlearn before being able
to handle immutability.

The second is that, as nine_k
([https://news.ycombinator.com/item?id=9982600](https://news.ycombinator.com/item?id=9982600))
points out, learning these concepts before algebra could make understanding
algebra itself easier. There are deeply mathematical ideas in the foundations
of most programming, even if they are (and even when they should be) hidden,
and learning these ideas can help one to come to grips with abstraction in a
context that encourages play and experimentation, unlike (unfortunately) the
usual mathematics classroom.

~~~
BFay
Was it the "Yeah" that made the tone seem sarcastic? I didn't really mean it
that way, I genuinely do think it would be interesting to see what happens.
Sometimes I wish I had been taught math from a more theoretical perspective.
When I was younger, math seemed really boring, just problems to solve; how
much money is left after this series of transactions, what is the area of this
shape, etc. When I did learn simple algebra, it only seemed useful for those
kinds of problems.

I've only found mathematics really interesting within the past few years,
realizing how useful it is for creative things, like making music and art, or
understanding programming at a higher level. If I had learned about functions
in a more interactive way, maybe being able to create art on a computer
screen, or write up physics systems in games, I think I would have been
fascinated, and maybe the concepts would have stuck.

~~~
JadeNB
> Was it the "Yeah" that made the tone seem sarcastic?

I honestly wasn't sure, so I tried not to assume. Subtleties of tone are
easily lost on the Internet; thank you for taking the time to clarify.

> I've only found mathematics really interesting within the past few years,
> realizing how useful it is for creative things, like making music and art,
> or understanding programming at a higher level.

While I am deeply in sympathy with this point of view, and agree with it to
some extent, I think that it comes dangerously close to the monad-tutorial
fallacy ([https://byorgey.wordpress.com/2009/01/12/abstraction-
intuiti...](https://byorgey.wordpress.com/2009/01/12/abstraction-intuition-
and-the-monad-tutorial-fallacy)). As a teacher, I have four reactions to "why
couldn't I have been taught this way?":

1\. First and foremost, this is true. Course structure is often not set up to
reward creativity and exploration, and that is a real shame. However …

2\. I have heard students complain about not being taught in a way that I know
is common pedagogical practice. That does not prove (they could just have been
taught by bad teachers), but leads me to suspect, that sometimes students
don't _recognise_ (or don't want to see: "just show me the formulas!")
alternate approaches when they are presented with them.

3\. In many cases, the 'aha!' moment now _couldn 't_ have been an 'aha!'
moment then; it is only _because_ of the long struggle, and the additional
learning and maturity, necessarily beginning with the confusion and
uncertainty of yesterday, that everything can suddenly click today.

4\. Even if I knew today the exact thing that would cause that 'aha!' moment
for you, it is almost guaranteed that it wouldn't cause the same reaction for
(many) others. The mission of a teacher is to serve the class as a whole; it
is simply impossible, in terms of time and (let's be frank!) the teacher's
knowledge, to explore for each student the application that will serve him or
her best. This is not to say that _some_ more applications and creative
exploration wouldn't be welcome—they absolutely would—but more that, often,
the best that can be done is to provide you with the _basic_ tools that will
allow you to explore and find the 'aha!' moment on your own, probably outside
of the classroom.

~~~
BFay
It seems very difficult to come up with aath curriculum that works for
everyone. I agree that a creative approach might not be as practical as I
imagine it, I've definitely suffered from the "aha, monads are burritos, why
hasn't anybody told me this" fallacy before.

I keep hearing (mostly negative) things about the Common Core program in the
US, I wonder what it's really like. Creative new ways of teaching always sound
good on paper, but I hear so many parents complain about the way their kids
are being taught. I wonder if most of those complaints are warranted, or if
the new style of questions just take getting used to.

------
Gys
I get a 503 Service Unavailable ?!

Anyways, it probably did not change much in the last few days:

[https://web.archive.org/web/20150727212504/http://smallbasic...](https://web.archive.org/web/20150727212504/http://smallbasic.com/)

Its good this is (still ?) available. But I would prefer my friends or kids to
learn in a more platform independent way. Like Python.

~~~
yoha
Nitpick: *it's

~~~
kbenson
Have you ever looked up the definition of nitpick? I just did on a few
different services. It's not flattering, and provides a good narrative for the
downvotes.

~~~
yoha
Thanks for the explanation, I am not a native English speaker. According to
[https://en.wiktionary.org/wiki/nitpick](https://en.wiktionary.org/wiki/nitpick),
the literal meaning is exactly what I meant: I was doing a small correction
without much importance. I did not know it was negatively connoted.

~~~
kbenson
How negative it's interpreted is likely related to view relevant it is and how
much it detracts from the discussion. If that nitpick was a rider on a salient
point, I doubt people would have downvoted.

~~~
yoha
That's why I wanted to keep it short, but still commented: it's a typo that is
quite disturbing to the reader, especially non-native English speakers.

------
rottyguy
I like the idea of a lightweight programming language/environment dedicated to
entry level learners. Perhaps what would also be interesting is having a
basic-esq L/E for whatever programming paradigm that is useful (procedural,
oop, functional, etc.)

~~~
tajen
Isn't Javascript already suitable for that?

~~~
dr_zoidberg
Javascript is a mess even programmers don't seem to understand at times, I
never understood why people would want to teach it to people without any
programming knowledge.

~~~
Turing_Machine
1) No installation, compilation, or packaging required

2) Runs essentially everywhere

3) Practical (lots of jobs, syntax is close to that of other important
languages)

4) Easy to share your creations with friends (see 1 above)

5) Has REPL, garbage collection, closures, objects, recursion, anonymous
functions... soon to have TCO.

6) Can be a compilation target for other languages

7) Good libraries for media, 3D graphics

8) Hard for a beginner to trash the machine (at least with browser-based JS,
Node of course is a different story)

Yeah, it's pretty ugly in spots (it's certainly not as aesthetically pleasing
as Scheme), but there are some real advantages there.

~~~
ams6110
Not sure about the jobs (3) thing. It's a bad idea to focus on language
popularity when starting out programming, because that changes rapidly.
Javascript has only been really popular in the last few years. Who knows what
will be popular five years from now.

Learn to program. Don't worry so much about the language.

------
meta0bject
I understand that a lot of programmers started with BASIC at a time when
Smalltalk was out of reach, but now that we have free, open source
distributions like Squeak and Pharo, what possible advantage could BASIC still
offer, other than nostalgia?

------
ErikRogneby
this held my interest until I clicked play on one of the featured games and it
wanted me to install silverlight.

~~~
ninkendo
The most useful thing about this site was that it reminded me I needed to
uninstall Silverlight (dodged a bullet there!)

Edit: that came out wrong... I'm sure the site serves a legitimate purpose in
education about programming, which is certainly useful. I guess I meant "the
most useful thing for me".

------
byron_fast
It's nice Basic is still around. But SmileBasic is far, far more interesting:
[http://www.smileboom.com/product_nintendo3ds.php#01](http://www.smileboom.com/product_nintendo3ds.php#01)

Basic should be fun to learn, and being able to program the 3DS - with a nice
library of game-ish sprites and sounds - gets you to fun a lot faster.

~~~
donut
That does look pretty interesting. Here's the english-language page with
examples: [http://smilebasic.com/en/](http://smilebasic.com/en/)

Wish I had this when I learned to program :-)

Edit: and this hilarious video with english subtitles!
[https://www.youtube.com/watch?v=IgnAmLwtP6Q](https://www.youtube.com/watch?v=IgnAmLwtP6Q)

------
moron4hire
Recently ran across this, another MS research project:
[https://www.touchdevelop.com/](https://www.touchdevelop.com/)

It runs completely in the browser. There are some interesting things in the
interface, stuff I had even been considering adding to my project, like a full
on-screen keyboard with special keys.

~~~
lloydde
Is Small Basic a Microsoft Research project?

~~~
moron4hire
Well, it's an MS project. It was early, I didn't really think through my
typing well.

------
stephengillie
QBasic was the first programming language I learned, so I was curious:

> _How is it different from QBASIC?_

> _Unlike QBASIC, Small Basic is based on .Net and can consume (not produce)
> "Objects"._

> _It supports distinct Operations, Properties and Events._

> _It doesn 't have GOSUB :)_

So this looks like an Object-Oriented QBasic. Awesome!

~~~
curiousjorge
same here. My first run into with Basic was when I was 6 with an MSX. I was
captivated by it but didn't understand what the white letters against the blue
background meant. (MSX was ironically more popular in Asia than America where
it was built by Microsoft). Pretty soon I got my own but it was a Korean
version of MSX with only games on it. My friend had the MSX with keyboard and
he showed me how to type stuff on it but we played games. It was interesting
since I began to wonder how these games were made. Then later, I had an old
intel 286 with monochrome monitor during the mid to late 90s. No internet,
just a thick book about Qbasic from the public library, and me trying to
create games on it. The thought of making my own video game was more than
enough of an incentive to learn yet to this day I have not achieved it as I
keep telling myself it's too hard, too much time.

Then came DarkBasic when I was reading PC Gamer in the late 90s and I got so
excited about it. Downloaded it over the 56k modem (couple hundred megabytes)
and fiddled around with 3d stuff. I learned how to make 3d models with
animation in TrueSpace. But never got to make a complete game, just lot of new
projects that never went anywhere. The most I got was creating a FPS level
using sphere as the 'skybox'. It was so exciting to create my own world using
photo textures and add lighting which gave it pretty good look. Gives me a
huge shot of nostalgia just thinking about it and other early demos in
DarkBasic. The UI was literally had a dark feel to it and that made it even
cooler.

I've always thought that BASIC had a lot of things right in terms of being
newbie friendly, I mean it was easy enough for a 10 year old so. It's what
sparked my early interest in programming.

Even in the early 2000s we were using Visual Basic in high school, we could
create a lot of neat things with it. Gui apps that just sorta worked. Anybody
could pick it up and yes, students of all shapes and sizes were able to follow
along and create things on their own. _Everyone was coding_.

Compare that with today with the myriad of frameworks and hundreds of
different opinions happy to rip each other apart for the sake of ideology. A
much less inviting community core (ex. stackoverflow) to new comers asking
"dumb" questions and being punished. We seem to be going through a very
chaotic period in the development world where Javascript is suddenly king and
simplicity and user friendliness is shunned.

~~~
stephengillie
Wow I really wish I had gone to your high school. The late 1990s at my high
school were just like the late 1980s - each classroom had a computer but we
were all too busy doing assignments on paper to ever use it. I didn't get to
see VB until college.

I used to write games and utilities on my TI-83. It was generally frowned
upon, because teachers were afraid they would be used for cheating. Even
writing your own program that would compute the Quadratic Equation was banned
because it was unfair to students who couldn't.

~~~
curiousjorge
I'm really just tripping on nostalgia right now but fuck it someone might
appreciate these details so I'm going to continue. I also remember playing so
many good stuff on the Ti-83. We used to download Bubble bobble and even 3d
wolfenstein and just slack off. Students did cheat using the Ti-83 by putting
formulas and cheat notes. I'm not sure why they didn't ban it. It was
expensive at the time too and I lost or broke mine twice.

I'm not sure if all Canadian high schools were like ours but we had dedicated
courses for learning everything from Qbasic to Maya. I was mad jealous of kids
that were creating crazy 3d animations with 3ds max but the class was always
filled very fast :(. Had I learned the stuff I might have become a computer
graphics artist or something in that area. The course I took taught Visual
Basic and then QBasic towards the end (I was like dayum I already know this at
age 10, let me play web games while teacher is not looking). At lunch time
computer graphics lab hosted Counter Strike (1.3 back then) where you paid a
dollar to play for 45 minutes and sometimes after school it would go until for
several hours. Like jam packed with 20 people screaming and shouting when
somebody got knifed. You couldn't curse tho because the instructor was a hard
ass and kicked people out for typing swear words in the chat. Damn, we even
had Battlefield 1942 tournaments.

Ironically, being in a poorer school meant ton of corporate endorsements and
goodies (free Vancouver Grizzlies tickets & free lunch). During the mid 90s
when I was in elementary school, our school had everything from Apple II to
Imac. Like almost every Mac from different timeline. One of my favorite was a
black & white tiny monitor Apple that had Hypercard on it and I used to create
something like dragonball Z stick figure animation (obviously inspired by
stickdeath.com) on it. Fuck those were good times especially since I didn't
have a computer back then and the school provided all these things.

In grade 6, our teacher was super supportive of us using technology (he was
into tech, even bought a monochrome projector off ebay so he could teach
material from the computer). Looking back I can see how fortunate it was to
have experienced all these things. I was especially fond of playing games like
Lode Runner and Lemonade Stand on the Apple II. Pretty much all of my recess
and lunchtime was spent on figuring out 1) find games in dusty bins in school
gym 2) figure out how to run it. Our school used to host Zip Zap Map Canada
(tetris meets geography) tournaments. At home my dad taught me how to create
my own website (so 1997 or 1998) using Netscape Composer (on win 95 or 98) and
uploading it to a free host. Used to brag about it and impressed my teacher a
lot. I picked up a book on HTML for dummies from the library and started
reading about Javascript and Java but these books were in Korean and I had a
tough time. Eventually geocities came along and it was day dreaming about
making a popular website ( never happened :( ).

During this time, we got fresh new iMacs and it was off to the races to find
games to run on it, Bugdom, Nanosaur, Sim City Classic & 2000, weird game
where you walk around a dungeon and kill monsters and level up. We were also
trying to run some weird emulation that supposedly allowed us to play windows
games but at super low fps.

Everything was going good until one day thieves came in stole all 6~10 iMacs
from our classroom. It was shitty but it was also a shitty neighborhood (think
Compton without any rap song about it). My grade 6 teacher was really crushed.
We got another batch of iMacs and this time we had cables to hold down the
iMacs in case someone tried to jack it again and they came in with cable
cutters and made off with it AGAIN. Finally they created a dedicated iMac lab
on the second floor classroom where thieves couldn't break into.

Quite a long thread stemming from BASIC lol.

------
overlord_tm
Am I the only one getting "HTTP Error 503. The service is unavailable." on the
link?

~~~
Tomte
Maybe HN is too much for MS? :-)

Half an hour ago it was still working fine.

------
__sbrk__
Open-source and, best of all, not polluted by M$:

[http://smallbasic.sourceforge.net/](http://smallbasic.sourceforge.net/)

------
rbanffy
Learning BASIC made sense in the days of the Apple II or the Atari 800. It
provided a nice-ish low-level abstraction of the computer, with PEEKs, POKEs
and GOTOs to numbered lines. Today, with Ruby, Python and so many others
providing simple ways to write simple programs, as much as it served us well
in the 80s, we should let BASIC die rather than trying to mutate it into
something that has no longer a place in this world.

------
euroclydon
If I put my kid in front of a modern Windows PC, leave them alone for a few
hours, and hope they learn something, I'm not very optimistic.

Let's say I install Small Basic on Windows 8.1 or 10. So now I've put my kid
in front of an operating system that has such a high-level UI that it doesn't
even have a proper list of programs. The media consuming portion of the OS is
so heavily emphasized over the creative portion of it. You can see this
because the OS is designed to be used without a keyboard!!

PCs are entertainment devices. Designed for watching Netflix, visiting
Facebook and listening to music. This is like putting a small piece of
Broccoli in the middle of a bowl of ice cream.

No thanks!!

I'll find a minimal windows manager for linux. Something that can be invoked
just to get the window for the game they're writing up and running.

~~~
the_af
I don't get your argument. I wrote my first programs using the very limited
BASIC that came with my Commodore 64. Now _that_ was primarily an
entertainment device, and I still managed to learn interesting things with it!

~~~
pokpokpok
the internet is an infinite amusement park, desperately plying you for
pageviews

------
bam365
I'd like to be positive about this especially considering the thought behind
it, but...this is bad. I read the tutorial PDF hoping not to find BASIC-style
unstructured programming. I was disappointed. QBASIC was the first language
that I learned as a kid, and I regret it to this day. Learning to solve all my
programming problems using GOTO in such a formative time set me back months
when I finally moved to structured programming languages. In addition to that,
the syntax of this language is so inexplicably heavyweight that I feel like
"SmallBasic" is an intentionally ironic name.

I'm assuming that this article is apropos of the article posted on HN earlier
today about how Python is the new BASIC, as far as educational languages are
concerned. I agree with the sentiment. These days, we can and should do a lot
better than BASIC as a first language for kids.

~~~
recursive
You can only blame yourself for overusing goto in qbasic. It had functions,
loops, block ifs, and all the other staples of structured programming.

~~~
JadeNB
> You can only blame yourself for overusing goto in qbasic. It had functions,
> loops, block ifs, and all the other staples of structured programming.

When talking explicitly about _children_ beginning programming, I think "you
can only blame yourself" is overly harsh. I would certainly say this of a
seasoned developer; but a child just starting will—and, I think, _should_!—do
whatever the language allows him or her to do, and it is too much to expect
such a child to see, before the bad habit is ingrained, the price that he or
she is paying for the apparently wonderful freedom of navigation that GOTO
affords. An _introductory_ language should, I think, be very opinionated in
matters of underlying structure; just having good options is not enough, if
they are not forced (or at least strongly impressed) on the novice who doesn't
yet know to use them.

