top | item 9981557

Microsoft Small Basic

132 points| Tomte | 10 years ago |smallbasic.com | reply

87 comments

order
[+] _vijaye|10 years ago|reply
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...) 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/)

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

[+] furyofantares|10 years ago|reply
This project makes me really happy. My first programming experience was modifying numbers I found in GORILLAS.BAS to see what would happen. I didn't know I wanted to learn to program or even what that meant. But the only way I knew to play the game was to open the source file and then run it, which made me curious. I couldn't understand it, but it wasn't unintelligible, either. Being a single text file without a lot of programming ceremony was probably a big part of that. You just start reading top to bottom and that's exactly how it's executing at the start of the file (before you get to subroutines of course).
[+] meta0bject|10 years ago|reply
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?
[+] dr_zoidberg|10 years ago|reply
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").
[+] nine_k|10 years ago|reply
I think that to make a kid interested in programming, instant visual feedback is important. That is, writing (simple) games is about the best start.

For little kids, MIT Scratch should be good.

Python + pygame, or Scheme/Racket with its simple game-development features, or even Javascript + any 2D or 3D visualization library should hook an older kid. All of these have simple and compact syntax (JS is worse in this regard, of course).

[+] nly|10 years ago|reply
Hmm... nah, go straight to Haskell ;) Just imagine them in 5th grade trying to explain Monads to their friends.
[+] j_s|10 years ago|reply
There has been a significant investment in creating resources for teaching programming with SmallBasic; these wind up being more important than the tool (or even choice of language) itself!
[+] yoha|10 years ago|reply
Nitpick: *its
[+] Gys|10 years ago|reply
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...

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

[+] maxlybbert|10 years ago|reply
I had the same problem. The site was overloaded.
[+] yoha|10 years ago|reply
Nitpick: *it's
[+] rottyguy|10 years ago|reply
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.)
[+] dhimes|10 years ago|reply
The "about" book implies that you should have some experience in programming language first. However, there still exists something called qbasic, however, to replace the old gwbasic from days of old.

EDIT: passage from book/site: "As far as programming skills, we assume you have had some exposure to computer programming using some language. If that language is Small Basic, great!! We offer two beginning Small Basic tutorials that could help you gain that exposure (see our website for details). But, if you’ve ever programmed in any language (Visual Basic, C, C++, C#, Java, J#, Ada, even FORTRAN), you should be able to follow what’s going on."

Link: http://social.technet.microsoft.com/wiki/contents/articles/1...

[+] tajen|10 years ago|reply
Isn't Javascript already suitable for that?
[+] meta0bject|10 years ago|reply
Smalltalk is that, at least for OO (though it does have lambda objects too).
[+] meta0bject|10 years ago|reply
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|10 years ago|reply
this held my interest until I clicked play on one of the featured games and it wanted me to install silverlight.
[+] ninkendo|10 years ago|reply
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|10 years ago|reply
It's nice Basic is still around. But SmileBasic is far, far more interesting: 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.

[+] moron4hire|10 years ago|reply
Recently ran across this, another MS research project: 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|10 years ago|reply
Is Small Basic a Microsoft Research project?
[+] stephengillie|10 years ago|reply
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|10 years ago|reply
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.

[+] overlord_tm|10 years ago|reply
Am I the only one getting "HTTP Error 503. The service is unavailable." on the link?
[+] Tomte|10 years ago|reply
Maybe HN is too much for MS? :-)

Half an hour ago it was still working fine.

[+] rbanffy|10 years ago|reply
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|10 years ago|reply
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|10 years ago|reply
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!
[+] bargl|10 years ago|reply
Put them in front of windows 10 with Visual Studio 2015 Community Edition installed....

I get the lock it down to command line only so they can learn the way I did mentality. I'm going to do the same thing to my son, but I'd say that Windows 10 is an entertainment device is going a little far.

Windows has long been the enterprise software of choice for buisnises, MS Office? On top of that most of the software you list is all on the web (Netflix, Facebook), so the internet could be said to be all about entertainment. But again that's an oversimplification.

The main contention I can see with windows 8 are apps (which treat it like a phone) windows 10 kinda gets away from that by making all apps windowed (like windows). I find Windows 8 is easier to use with just a keyboard at times. The windows search functionality is great, and they've improved many of the commands.

If your kids can get at the internet they can get at entertainment. But if you cut off the internet then you cut off their ability to research the problem.

[+] untog|10 years ago|reply
That's utter hyperbole. Windows still has a desktop mode that looks very much like Windows XP did, let alone 95 or 3.1, even.
[+] guizzy|10 years ago|reply
It's not the computer that's the issue. It's the internet. Disconnect the internet, and your kid will have to find ways to be creative with the computer itself.
[+] jbb555|10 years ago|reply
From the FAQ "To install Small Basic, you have to be running Windows XP, Windows Vista, or Windows 7."

So it's not a problem then :P

[+] bam365|10 years ago|reply
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.

[+] pmelendez|10 years ago|reply
>"QBASIC was the first language that I learned as a kid, and I regret it to this day"

GWBasic was my first programming language and I don't regret it at all. It enabled 9-years old me to start messing around with programming without too much hassle and honestly using (or abusing) goto then didn't interferred when I have to learn Scheme(my second language) at the university.

For a young kind (<10 years old), sequential unstructure programming is more natural and easier to pickup. I remember having struggled with For statements when I was using basic and I really appreciate them way later in life.

Also, why so much hate to goto? there are not many alternatives if you are programming in assembly anyway.

[+] recursive|10 years ago|reply
You can only blame yourself for overusing goto in qbasic. It had functions, loops, block ifs, and all the other staples of structured programming.
[+] Narishma|10 years ago|reply
You can do structured programming in QBasic just fine. It didn't require line numbers and had all the necessary tools like functions and procedures, for and while loops, blocks, user-defined types, etc...
[+] omgtehlion|10 years ago|reply
Get off my lawn kids!

My first programming language was machine code of kp1816BE35 (I still remember the part name), a soviet clone of some 8-bit processor. It had to be flashed, not flashed, _burned_ into a UV-erasable ROM.

THAT thing had only GOTOs. Yet I don't see a problem with it.