*An excerpt from an EETimes article, titled:* C link remains frayed in hardware design flows *(*http://www.eetimes.com/news/latest/showArticle.jhtml?articleID=172300899* ) * The first question to ask is why C should be such a ubiquitous tool in hardware design in the first place. It is certainly not suited to the task, either by history or by nature. Originally, as any septuagenarian programmer knows, C came from the same Bell Labs culture that produced, more or less concurrently, Unix. The hardware available to engineers at Bell Labs in those days was primarily PDP-11s. And in fact, C was originally conceived as a means of generating PDP-11 assembly code quickly. This is not to confuse C with high-level languages (HLLs), which were actually quite advanced by that time. The direction of HLL work in those days was to find formalisms in which algorithms could be expressed precisely and concisely, eliminating by grammatical rules and by construction the most common errors in computer programming. The result of this work ranged from languages that emphasized elegance and concision at the expense of all else, such as APL, to those that emphasized clarity and correctness at the expense of elegance. Among the latter category were Algol, Pascal and PL-1. *In a hurry* |C attempted nothing of the sort. It was intended as a compromise-an attempt to sharply reduce coding time while maintaining, as much as possible, the clever tricks that a generation of assembly language PDP-11 programmers had learned. Time proved that approach to be a brilliant compromise. The point that the Bell Labs folks understood, but that mainstream language developers missed, was that programmers didn't really care about clarity, correctness or even, in most cases, elegance. They wanted to be cute, and they were in a hurry. So what does this have to do with hardware? Two coincidences. First, a coincidence of birth: In an abstract sense, both modern RTL design and PDP-11 assembly language are register-transfer languages. There are huge differences-one describing how data is transformed as it flows between registers under the control of state machines, and the other describing how data is taken from registers, transformed and replaced under control of a sequential program. But fundamentally the two are describing similar formalisms. The second coincidence involved the decision of Bell Labs to grant to the academic community very easy license access to Unix. At a time when PDP-11s were inexpensive platforms but DOS-11 and VAX VMS were expensive production operating systems, this caused Unix-and with it, C-to spread like an airborne virus throughout the academic community in the United States. The result: Fortran and Basic died, and every engineering student in North America learned C. -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist