Thursday, December 18, 2008

Back to Basics

Like many computer enthusiasts, I started my programming career learning BASIC. I was 11 and my community center offered "programming lessons". I was into electronics at the time, and was well on my way to complete my first radio, when I peeked into the adjacent class one day, and saw a device that had more buttons than the device I was tinkering with.
It was love at first sight.

The first computer I learned to program on was an 8-bit, 32Kb RAM BBC model B. The language was BASIC. My first program was the BASIC version of the quintessential "Hello World" program:
10 PRINT "HELLO"
20 GOTO 10
The program filled the screen with endless lines of text (at least until you hit the "break" button) and my heart with joy.

Fast forward 2 years. My parents get me my first computer, an Apple IIc. All their friends advise against it - they claim it's too much to spend on a toy. I spend years taking AppleSoft BASIC to the limits, breaking some of its rules along the way (if you've ever developed in AppleSoft, I'm sure you're familiar with the peek and poke commands), before graduating to PASCAL. The Apple also introduced me to the mouse (well before a PC had one) and the concept of a mobile computer (while not truly a laptop - it lacked a battery - the IIc had a small, foldable screen, and a laptop factor).

At high school, I dabbled a little in GW-BASIC and MS-BASIC - but the magic was gone. It was time to move on to C.

Years later, a surprise revisit: Visual BASIC. It was the best and easiest way to get into internet programming. With easy-to-design clients, VBScript on the server side, ADO to simplify data access... Until today I use VB 6 to slap together fast mockups that are actually functional.

My language of choice now is C#. Yes, VB.Net is there, but it's not the same anymore. Fully object oriented, and the use of goto is frowned upon (although if you ever developed a compiler, you realize it still has its moments). And then, just the other day, I got a link to a new Microsoft project called Small Basic.

The idea behind the project is to create a language and IDE that would introduce a new generation of kids (and kids at heart) to the joy of programming (and pay attention to the fact I'm not saying "developing": development is work, programming is fun). It's easy and simplified on one hand, actually borrowing turtle graphics from LOGO. On the other hand, it provides a deep set of features, such as multimedia capabilities, graphics, access to Flickr, and other innovative packages.

Most of all, I like the IDE. It's simple, clean, and with the best text completion implementation I've ever seen:
Above you can see my Small BASIC "Hello World", and the text completion "wheel" in action.
The IDE depends on .Net Framework 3.5 and the download is 4MB (in this day and age of bloatware, a miracle in itself). You can find it here. Currently it's at version 0.2.

I really hope that this tool will introduce a new generation to the wonders of programming. As for me, I'm falling in love again...

1 comment:

Doug said...

Thanks for the trip down memory lane Guy. My "sorted" programming timeline:

Similarly, I was into photography from the time I was 8. We had a darkroom and eventually did Cibachrome (color from slides). Then one day in 1977 my dad came home with a VectorGraphic MZ CP/M machine. After spending hours with customer support and engineers to figure out you had to squeeze the drive doors closed (not in the manual) to get the disk to boot! It came with Micropolis basic and a sample moon landing program. Being a much more powerful creativity tool than an enlarger and dangerous chemicals, I never stepped foot in the darkroom again (other than with girlfriends!). After programming gravitational fields of other heavenly bodies and adding additional controls, I started writing my own games, e.g. a get thru the maze while the walls are moving (thanks to Peek and Poke), then programmed every Trig homework assignment in HS and made a Black-Scholes options trading trainer for my Uncle. The financial reports & charts I coded for our Junior Achievement company helped us win company-of-the-year and earn me a small scholarship (along with inspiring the movie Risky Business...but that's another story). Dad and I had to time-share the box. I got the 10pm to 5am window!

By college I was programing in Lotus macros and Dbase. Got my first summer programming job as assistant department programmer for the biometrics division at Abbot Labs...coding statistical analyses of herpes drug trial data in MaxBasic and SAS on a TOPS-10 DEC. Then I coded flight simulators for the airforce for a summer, dabbling of course in Ada. At University of Ilinois I used Turbo Pascal on a IIe w cp/m board to code sorting algorithms for research credit that blew away those in Knuth's landmark text: The Art Computer Programming, Vol 3: Sorting and Searching. (http://www.amazon.com/Art-Computer-Programming-Sorting-Searching/dp/0201896850). But I flunked my class in Lisp/Prolog as an unmotivated, already-hired, lame-duck senior.

After school I got hired by Andersen Consulting and coded mostly in Cobol and an obscure VAX text processing language (TPU). The mortgage title production system we developed is still in use today 20 years later. If you close on a property with Chicago Title, you'll see it. I also coded in Vax Datatrieve (Wombat mating habits anyone?) C came in vogue just as I got promoted to management. I miss programming. (I like your programming vs developing differentiator.) My last programming-ish hoorah was researching and authoring Andersen Consulting's position paper on Windows after it was introduced.

Thanks for the review on Small Basic. Been thinking of teaching it to my son. But also wonder if it's as valuable/marketable a skill today as it was in the 80's. Moreover, I'm not sure I want him geeking-out till 5am like I did. He's got too many other things going for him.

Cheers & Happy Holidays,
Doug