Path: utzoo!mnetor!uunet!seismo!sundc!pitstop!sun!decwrl!labrea!Shasta!neff From: neff@Shasta.STANFORD.EDU (Randy Neff) Newsgroups: comp.software-eng Subject: Cynic's Guide to Software Engineering, part 3 Message-ID: <2636@Shasta.STANFORD.EDU> Date: 5 Apr 88 19:19:25 GMT Reply-To: neff@Shasta.stanford.edu (Randall Neff) Distribution: na Organization: Stanford University Lines: 63 ------ The Cynic's Guide to Software Engineering ------ ------ an invitation to dialogue, starting with the personal view of ------ ------ Randall Neff @ sierra.stanford.edu ------ ------ April 5, 1988 part 3 ------ ------------------------------------------------------------------------------ Monolingualism: the Religion and Curse of Software Engineering [Note: A, U, E are free variables and not meant to be any specific program] Joe Programmer learned one programming language, A, and one operating system, U, and one text editor, E, while earning his CS degree. He found a job that used the same A,U,E triple. As the years went by, he gained more experience and learned all of the magic hacks (heuristics) for the A,U,E triple. Joe also gained in hubris; he knows that he can solve any problem with A,U,E. Joe's group/company prides itself on the latest hardware; more mips and megabytes every year. Joe's group/company prides itself on using programming language A, whose design is about twenty years old and has never been standardized; operating system U, whose design is about twenty years old, never standardized and locally hacked; and text editor E, whose design is about twenty years old. In fact, next year Joe's group will be hiring new programmers who are younger than A, U, and E. Now Joe's company only hires programmers with training and experience in A,U,E, so they only get programmers that like A,U,E. Any individuals that suggest that maybe, perhaps, possibly, that there might be something better than A,U,E are carefully pushed out. The programmers are happy with isolating themselves from new ideas in operating systems, programming languages, and text editors. The programmers have thousands of excuses for their deliberate ossification. Now the management is very unhappy with the state of software in the company: late schedules, cost overruns, buggy products, expensive maintenance, the standard list of S.E. woes. Management starts running around looking for the silver bullet. Is there a correlation? Is the state of the software related to the choice and continued use of A,U,E? ----------------------------------------------------------------------------- One of the more educational CS courses at Stanford is just called Progamming Languages. It uses a textbook similar to Terrance W. Pratt: Progamming Languages, Design and Implementation. Basically the course is a survey of a number of different programming languages such as Fortran, APL, Pascal, Snobol, PL/I, Ada, Lisp, Smalltalk, C, and Prolog. Typically each biweekly programming assignment is in a different language. The point of all of this is that there are a lot more concepts and features in the study of programming languages than are available in any single language. Declarative vs Procedural or type polymorphism or tasking or garbage collection or exceptions or storage models or object oriented/inheritance are important topics. A follow on course, Designing Programming Languages, is offered when someone with enough experience can be found. The basic conclusion is that a specific programming language is, at best, a tool; imperfect, containing some subset of possible features. There are experimental tools, toy tools, personal tools, group tools, and industrial strength tools. A programming language is a tool to solve a problem, it is not a religion nor a religious experience. Unfortunately, monolinguists get confused and seem to think that their language is the only true light. Similar comments can be made about mono-operating-system types and the great religious flame wars about text editors. Mono-anything enthusiasts are responsible for braking the flow of new software engineering concepts and tools. Mono's like to freeze progress and stagnate in their Mono religions. This sort of explains why a programming language designed in 1954-57 is the language of choice on the world's fastest computers.