While this country has done rather well with a single spoken and written language, English, the most powerful and useful tool ever created by humanity, it remains convinced that it cannot do without a vast array of programming languages. Invoking the image of Babel seems too obvious to belabor, but, as this is our reality, we must select from this cacophony of alternatives a language that satisfies several critical criteria:
First — It must be easy to learn. It cannot rely upon excessively cryptic expression and should be at least moderately readable. Forget Lisp...or, for the truly demented, Malbolge.
Second — It must be usable as a general-purpose tool. For sheer power, you cannot beat machine code. It enables the programmer to bring into play every single feature designed into the CPU. Machine code programmers are rare; they can be recognized by the fact that their feet do not touch the floor when they walk across the room. Assembly language has almost the same power and is far more human-friendly, but not quite enough. Worse, it is CPU-specific and the very epitome of non-portability. Forget that. We need a language with sufficient abstraction to insulate the novice programmer from the vicissitudes of coding close to the metal while not boxing her into a narrow range of capabilities. A database language such as SQL, for instance, would have great power but only within its specialty. Not for us.
Third — It must be popular enough to be both well-supported and in demand commercially. A language used by a large percentage of active programmers will benefit from ample resources readily available via the ubiquity of the Internet. This seemingly modest characteristic can easily spell the difference between success and failure for the new programmer.
Fourth — Our choice must be up-to-date. The computer science student at university has no choice but to learn OOP. The casual amateur can easily choose to avoid OOP complexity and remain comfortably within the arms of conventional procedural coding. Would this be wise? We think not. Thus, our chosen language requires OOP capability designed into it and not bolted on as an afterthought.
Fifth — Some of our audience will go on to serious, full-time, formal education in programming. For them, what they learn in their introduction to software developing in “The Art of Programming” must be fully compatible with their future studies. This means encouraging such habits as useful and informative code commenting, thinking the application domain through before coding, and implementing code reusability when and as optimal.
Sixth — A very low price of admission matters greatly. The need to install complex toolsets won’t dissuade a full-time programmer from considering a language to work with, any more than a carpenter refusing to build a house because it means buying a hammer and saw. For our audience, however, the game must be played under very different rules. Ideally, the student should be able to follow the course without buying or installing anything that she does not already have. A computer and an Internet connection will suffice. Although some languages have first-class toolsets available at no cost, these resources carry a hidden price: they introduce very significant additional learning-curve burdens that can easily defeat the average student’s desire to master the language. Have you ever tried to figure out Eclipse on your own?
Seventh — Interoperability with a reasonable subset of the software biosphere always defines the scope and usefulness of every programming language. It’s a given that low-level or system languages, such as C and C++, can do anything and connect with anything. High-level toy languages have only those capabilities designed into them, and these languages are by their very nature limited to narrower ranges of capability. In selecting a language, the programmer must know clearly which functionalities her application will need and ensure that the language she uses will be able to provide them. One major case is database manipulation. For our circumstances, it will suffice to interact with a single selected relational database, PostgreSQL, and a single nonrelational database, MongoDB.
What, then, is our choice of language?
Java will feature as the language in the next series in “The Art of Programming” but doesn’t quite match our requirements for the initial introduction to programming.
As every university knows but never acknowledges, you can push students around at will after extracting from them the vast amounts of money required for admission. You cannot do that to a television audience, who must be wooed and caressed and treated with great respect for their dignity and freedom of choice.
Abandoning a four-year degree program is a massively serious step. Turning off the telly is not.
Web-site by Dreadnaught Steam Traction & Electric Broadcasting Works, Ltd