Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!dali.cs.montana.edu!milton!uw-beaver!fluke!ssc-vax!dmg From: dmg@ssc-vax (David M Geary) Newsgroups: comp.software-eng Subject: Re: bridge building (was Re: Documenting OO Systems) Message-ID: <3991@ssc-bee.ssc-vax.UUCP> Date: 16 May 91 20:23:35 GMT References: <1991May3.234349.14026@auto-trol.com> <1311@grapevine.EBay.Sun.COM> Sender: news@ssc-vax.UUCP Reply-To: dmg@ssc-vax.UUCP (David M Geary) Distribution: na Organization: Boeing Aerospace & Electronics Lines: 67 Chris Prael writes: ]]From article <1991May3.234349.14026@auto-trol.com], by alesha@auto-trol.com (Alec Sharp): ]] ]] argument - guns aren't dangerous, people are dangerous. Sure, you can ]] do software engineering in C, but most people don't. Maybe the people ]] defending C as a software engineering tool force themselves to abide ]] by various conventions but most people I've worked with don't. In my ]] experience there are too many hackers out there, and they love C ]] because it let's them hack. ]The point that you seem to me to be missing is that the languages that ]attempt to force the programmer into "good" practices do no better than ]C. I'm not sure what this means - no better than C *at what*. If Chris means that other languages' attempts to force (or help) programmers to write better code are all failures, that is certainly arguable. ]No one has built a compiler that can force you to get or develop a clear ]statement of requirements. No one has built a compiler that can force ]you to completely design the functionality of a program (or even ]partially, for that matter). No one has built a compiler that can force ]you to have peers and/or users review your design. No one has built a ]compiler that will force you to design how the program will implement the ]functionality you have arrived at. No one has built a compiler that washes dishes either. *Compilers* are not meant to help you one bit with requirements, or force humans to perform certain actions, such as reviewing a design. Compilers are meant to produce executables from code, and help the programmer by pointing out errors and warnings found in the code. There are *environments* available that can assist in the things mentioned above. Note too that IMHO, compilers have been written that do a better job of *helping* the programmer write correct code than C compilers. C's lax type checking of function calls is not a problem with many other languages (although that has been alieviated with ANSI C). Eiffel for example, has assertions and exceptions - two important tools not supported by C compilers that allow programmers to produce better code. ]These are the processes that an "engineer" goes through, whether s/he is ]building software, a disk drive, a car engine, or a bridge. If you are ]not going through these processes, you are not an engineer and no ]compiler yet imagined can help or force you to be one. Well, I'm not so sure. The field of software engineering is very young. Like other "sciences", (please - no thread on whether sw engr is science and/or engineering) I am sure that some of the things that we think are gospel today will prove to be folly tomorrow. One example would be structured (top-down) design, which, when used to specify a *system* is at odds with the current methods of object-oriented programming. Thus, structured programming, previously thought to be one of the processes that a "software engineer" must go through to properly construct software, may turn out to be a methodology best avoided. ]If you just sit down and start bashing out code, you are hacking, no ]matter how "clean" the code is. I can agree with this. There is a difference between software engineering and hacking. C has a reputation (well-deserved or not) of being used mainly by hackers who know nothing of "software engineering principles". Like all sterotypes this perception is to some degree true. However, it does not automatically follow that noone can "software engineer" if they are using C. ]Chris Prael