Microsoft Is Indoctrinating Children, Shouldn't We?
wildgift writes: "This is probably not news to some young people, but some of the older people here should be aware that Microsoft runs a wide ranging IT/Programming curriculum project, called Mainfunction, that teaches young people to program using Microsoft tools. The obvious issue is: is anyone leveraging the education-friendly Unix environment to create a similar program? This is a huge opportunity. So far, I've only found this Python article." If Microsoft is getting their tools in the hands of the programmers of the future, what can we do to achieve the same? Wouldn't it be much better if kids could take a look at development on several different platforms so that they can better use the technology when they are professionals rather than settling on "what they know"?
I'm one of those 'Unix/Linux zealots', yet in spite of that, let me tell you a supporting story...
I have owned various computers since the Apple ][ (very late 70's vintage). I've been an x86 box user for some time now. Ever since I got ahold of Linux (early 94) I've managed to install it on every x86 box I've had since then. Compared to Microsoft, and especially Windows 3.x to Windows 95, Linux has been a joy when running on the same minimal hardware platform's I've either every run on, or owned. But a funny thing began to happen about four years ago, and reached it's peak two weeks ago.
Normally, I've built my x86 boxen out of pieces-parts picked up locally or mail-order. But I decided to get a Compaq Desqpro 2000 in 1997 (200MHz Pentium), just because it was getting to be a hassle with my real job to go hunting this stuff down. The deal I got on the box was pretty good. It came with Windows 95 installed, and all was good. As soon as I got it, I attempted to install Linux on it. I ordered a boxed set of RedHat to put on the system. I even purchased (and still keep up) an Infomagic subscription. I got the base Linux installed, but had problems with drivers for the network card, the video card (Cyrix on the motherboard), and the sound card (genuine Creative Awe32). Over the years, I've upgraded hardware (video and modem, new IDE drives) and kept the RedHat distribution up-to-date as well. And every time I've upgraded hardware I've run into compatibility issues. I've never had problems with basic installation on the Compaq, but let me try to run X or some other advanced application (like ppp (ha!)), and I've had hell to pay trying to get it to work reliably.
Two weeks ago I found a very good bargain on another Compaq; this one, a Presario 5000 with an Athlon 900MHz (Socket A), Hercules 3D Prophet II with Nvidia's GeForce2 MX chipset, 30Gig HD, 256MB ram, etc, etc, etc. Came pre-installd with Windows ME. Rather than hassle with re-partitioning the drive to accept Linux, I picked up a second drive (40GB, $159, !damn! this stuff is getting cheap!) and created a 10GB parition for Linux (along with a 10GB partition for Windows 2000 SP1). I will note that this box has USB ports, and I have a USB keyboard.This time, I attempted to install the following free operating systems:
RedHat 6.2
Slackware 7.1
Mandrake 7.1
SuSe 7.0 Professional
Storm Linux 2000 (Hail)
FreeBSD 4.1
OpenBSD 2.7
These were all boxed sets or from subscription services, not downloaded or borrowed (I try to support free software with cold hard cash as best I can). Of all the operating systems listed, only the first two booted all the way to installation, and only Slackware finished the installation and booted cleanly. Every OS listed after Slackware either locked up solid (such as Mandrake 7.1) or panicked (such as FreeBSD 4.1). Yet, Windows ME runs just fine, and Windows 2000, which was not part of the original package, loaded and found all hardware, and runs just fine next to Windows Me on a dual-boot system. The Hercules card has broken X on Linux, and I don't feel like hunting down free drivers or trying to install XFree86 4.x, since Slack now comes with it. I'll give credit to RedHat and Slackware both for working with the USB keyboard, but the drivers seem to have a problem with repeated keys (i.e. hitting the key 'd' pops up two d's, as in 'cdd'). Stability on both versions of Windows has been a joy (compared to Windows 95/98/SE). The installation of applications has been extremely easy. And the interesting thing is that Windows 2000 now sees fat32 volumes, meaning that I can reach everything on the WinMe volume under Win 2K. Getting the Linux totally up and running illustrates the irony of the current Linux situation: I have to boot into WinMe to use the modem to download patches, and when I've tried to test the 2.4.0-test10 kernel, I loose the network card (an Accton EN1207D Series PCI Fast Ethernet adapter, which the stock Slack kernel sees).
So what does this have to do with the current thread? Simply this: if the typical overworked underpaid teacher/professor can't get Linux installed and working out-of-the-box, then they're not going to bother. Today's new hardware is fast and cheap, and will continue this trend. The typical Linux whine that it's Compaq's fault for building 'non-standard' hardware won't fly. I know this, because along with the stack of operating systems I've collected I also have the BeOS 5 Pro that I picked up at BestBuy when it was on sale. Although I haven't installed it on the Athlon system, it has always worked just fine on the Desqpro 2000 that also gave Linux fits. I'll likely continue to use Linux as a server OS, and I'll more than likely go the route of running Linux in VmWare on Windows 2000 for some embedded work I have in mind, but from this point forward I'll not use it as my workstation OS until some major changes take place in the distributions. As for the 'free' apps, I run bash, emacs/xemacs, Python, Perl, gcc, and a whole raft of other GNUish tools via ActiveState, python.org, and Cygwin tools (for which I also purchased the 1.0 CD) just fine under Windows 2000, thank you very much. If today's kids somehow want that type of environment, they sure don't need Linux to get it.
Microsoft really has got nothing to worry about from Linux on the workstation with current hardware. Microsoft has made great strides overall with Windows 2000, and Microsoft can capitalize on this by offering a solid, substantial learning platform. And Microsoft knows what Unix and Apple have known before - if you capture the hearts and minds of the kids in school, there's a pretty good chance you'll keep them as they grow up into professionals. Linux has some serious challenges in front of it.
So mod this down if you like. But I hope somebody reads it, and thinks about it, before it happens.
There are multiple issues I see with teaching C (or any language) using Microsoft stuff. My main two beefs are:
When I attended a Computer Science program at our local University, I was excited when we got to a class on 68000 assembly (this was mid 80s). Since I owned a Mac, I wanted to learn how to program a Mac. Instead, we got a programming environment that when loaded, it turned the mac into some text-based machine with minimal I/O support. I was pissed at first, but understood eventually. The class was there to teach how to code assembly, not how to program a Macintosh. The environment guaranteed we'd concentrate on the language.
There are two ways to learn. Learn how to do something, or learn WHY you are doing it. I guess it falls down to the traditional argument of theory versus practical learning. Yeah, practical learning in a specific area can get you a job real fast. But let me tell you, this world moves real fast and because I understand programming as a concept very well as well as OS theories, I can pick up the latest programming tool on whatever platform and pick it up and become well-versed in very short time.
Still not convinced? I am 41. An old fossil in this industry but I can still quickly adapt to any technology that is current. While interviewing job candidates, I've found many of them have very narrow specific skills. This may be good if that particilar skill is still in demand, but once it's considered old (witness Microsoft dismissing Java for C# and .NET), you need expensive and time-consuming retraining.
To be fair, there are a number of advantages for a graphic-rich development environment, many that have already been mentioned. Editors that highlight or check syntax as you type (well, even emacs does this but...). Graphic debuggers can also be very helpful in showing how code gets executed and what can go wrong (although this should come later. People need to know how to manually walk through code too).
Bottom line, good programming skills can be taught in a Microsoft shop. One must simply know how to teach to ensure the student learns the best short and long-term skills. Oh, and run it all on a Windows Term Server for remote access! :)
If you are programming in a modern programming language like Python or even JavaScript, with a portable GUI framework like Tk, Swing or Mozilla, it really sould not matter what operating system you are using.
Rather than promoting "Unix for schools" we should promote "platform-independent software development for schools." We should stress that if you focus on that which works across platforms you come to understand better the universal themes of computer science rather than the specifics of an OS.
Once the operating system becomes more or less irrelevant, schools will of their own volition choose the operating system that is cheaper, more secure, easier to maintain programatically and so forth.
Paul Prescod
Comment removed based on user account deletion