There’s been a highly reported decline in the number of computer science graduates in the US over the past several years. Some attribute the decline to potential students’ concerns about outsourcing and the availability of high-paying computer science jobs. Others say that while few students are majoring in computer science, those who weren’t passionate about programming in the first place are simply being weeded out. It could also be due to the long hours and poor lifestyle of programmers or the perception that programming is an extremely tedious job.
I sometimes wondered whether the lack of enthusiasm for programming is due to (1) the lack of a free programming language (like BASIC) available out of the box of a new computer and (2) increasing complexity of programming languages and libraries. Alan Kay remarked in a recent interview that the original version of Smalltalk was usable by children, but, after Smalltalk-80, it became a professional programmer’s language.
I started out as a hobbyist, programming in BASIC on the Commodore Pet and Commodore 64/128 while in grade school in the early eighties. After a year of BASIC, I moved on and programming exclusively in 6502 assembly for performance. (I still remember many of the under 255 opcodes in the instruction set. LDA was 169, for example.) I built my own assembler/disassembler, wordprocessor, interpreted languages, and games. I disassembled and study the ROMs, added extensions to the BASIC language, wrote my own multitasker for the Commodore 64. I spent some time nearly everyday programming after school.
After Windows came out, the industry lost a lot of hobbyist programmers. Win32, C++, and, especially COM/OLE, were prohibitively difficult to learn and time-consuming to program. Visual Basic did come out, but it wasn’t freely available with Windows. The Macintosh did ship with Hypercard, an easy-to-use and free programming language, until sometime in the nineties when it was apparent killed. For a time, there were more Hypercard applications (“stacks”) than regular applications, but Hypercard was slow and limited in the types of applications it could produce.
The only languages freely available on operating systems now are the scripting languages in browser, the macro languages inside applications (and, on non-Window platform, dynamic languages like Perl and Python.) As a result, a lot of would-be hobbyists went on to produce websites.
With the new Express editions of Visual Studio, some of the new Whidbey ease of use features such as edit-and-continue, and a usable managed object-oriented API in the form of WinForms, I think that we may be able to get the young hobbyist programmers back, which may swell up the ranks of computer science students back to past levels. The upcoming Avalon API set with its declarative XAML will also help that trend.