Visual Studio .Net BASIC - The Nightmare and the Shame
One of my teenage sons recently decided to try his hand at programming. I think he might even have a knack for it. Of course, I was delighted, and being a into programming a bit myself, I decided to see what I could do to help him get a good grounding in the main concepts and practices.
Several years ago my son wrote a few small REBOL games... with a little help from dad (about 50/50). More recently, I noticed that he had gotten into Flash programming. I think that got started when his cousin visited over the holidays and showed off some interesting demos from a website. My son also explained to me that there are more people who can view Flash demos than REBOL demos, and there are a good number of Flash tutorials as well as script-snippet sites on the web. In addition, the IDE for Flash is not all that bad, once you get the general idea of it. (And young programmers can really benefit from an IDE, unlike us old gurus who are satisfied with just a text editor.)
In order to encourage him to do less hacking and learn more of the concepts behind programming, I thought I would buy him a copy of Visual Studio .Net. I figured he could learn some concepts from a few simple BASIC tutorials. Boy, I was so very wrong. That decision ended up a huge disappointment. Here is the story...
The whole project started down a slippery slope from the moment we inserted the Visual Studio.net CDROM. The installation process was confusing from the start (and being in the operating system and language business, we we are not exactly amateurs when it comes to installing software.)
When we finally got the proper installation sequence started, we were amazed to watch it take nearly an hour to install (on a 2.4 GHz custom-built system with a fast HD) and suck up 2 GB of our hard drive. I thought to myself, "this better really be worth it". Although we did not like it, we accepted it as the "cost of writing modern software" in the year 2005. (Indeed, I had not realized how bad the situation had become in recent years.)
Finally, we were ready to begin trying-out a little BASIC. We typed in a few simple statements to start, like the classic print out of "hello world" in the console window. Back in 1977 I was the ultimate expert in BASIC, and I've used Visual Studio (older versions and with C) almost daily for a decade so I figured how hard could it be?
Our little BASIC program failed to run. We tried a few more statements and many variations. Failed. We messed with the build configuration (eg. target file types) and looked at the online documentation and tried some other ideas. Failed. We opened some examples and cut-n-pasted them. They failed. We searched the web, found a couple nice BASIC tutorial web sites, copied various examples as is. They failed.
It was pretty frustrating, and I was getting really worried about the affect this whole experience might have on my son's interest in programming. Granted, I don't highly revere Microsoft tools, but I figured they would be decent enough to let us get some beginner programming satisfaction without too much effort.
Finally, we opened the GUI builder portion of BASIC, dragged a few gadgets around, and built a few simple graphical programs. They worked fine, although they didn't do anything that was useful, let alone inspiring. And, the final results didn't look anywhere near as nice as results done using Flash. My son was quick to point that out.
My son then suggested that maybe we should uninstall Visual Studio .net, and he could just go back to what he had been doing. How could I argue? Over several hours we had given the project a decent try, and the results were not the least bit motivating or inspiring - in fact, quite the opposite.
So, my son went back to his Flash scripting... and I walked back to my desk, saddened, and I think a bit in shock. I sat at my desk and stared at my screen for a good while. I thought back on the dozens of computer languages I had learned over the years, and some of the powerful IDEs, most of which are now long gone. I thought of systems like Smalltalk, Lisp (including so many nice environments like the MIT/Symbolics Lisp Machine, TI Lisp Explorer, Expertelligence, and others), Scheme, Logo, Self, Clu, and even Forth, BASIC, Java, Python, C, C++, and so many others. I wondered how the world of teaching programming and computer science had come to what we had just experienced.
And, perhaps more than anything else, I was thankful for REBOL.