Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!sdd.hp.com!spool.mu.edu!uunet!visix!news From: amanda@visix.com (Amanda Walker) Newsgroups: comp.object Subject: Re: Software Engineering (was Re: Documenting OO Message-ID: <1991Apr17.172806.23036@visix.com> Date: 17 Apr 91 17:28:06 GMT Article-I.D.: visix.1991Apr17.172806.23036 References: <3201:Apr705:40:4591@kramden.acf.nyu.edu> <1991Apr16.133304@ece.arizona.edu> Sender: news@visix.com Distribution: world,local Organization: Visix Software Inc., Reston, VA Lines: 121 In article <1991Apr16.133304@ece.arizona.edu> dan@ece.arizona.edu (Dan Filiberti) writes in annoyingly poorly word-wrapped fashion: Wrong. I have a problem with people not interacting with a user interface, since that is the sole purpose of a user interface. You are missing my point. I am distinguishing between a physical construct and a symbolic one. What I think of as "engineering" is the application of the physical sciences (principally physics and chemistry, but not exclusively) to the construction of physical devices (or "engines," hence the term "engineer"). This interpretation is supported by the dictionary definition you yourself cited. By this definition, designing and building a computer is engineering. Writing a program is not; it does not involve the application of the physical sciences, although it may sometimes involve application of mathematics. A user interface is not a physical device, like an automobile is. It is a symbolic construct that has no meaning beyond that assigned to it by a person observing or interacting with it. Think about it. Have you ever microcoded? Yup. Hands-on experience with AMD 2901 and 2903 bit slice machines, as well as familiarity with other microcoded architectures. Microcode essentialy describes hardware connections (registers to bus, bus to memory, etc...), this is not virtual reality, unless hardware is virtual reality. Microcode is nothing *but* the creation of virtual reality. The whole idea of it is that you can build a processor with a specific virtual architecture without having to design and build it in hardware. A microcoded control unit lets you act as if you had a hardwired control unit without incurring some of the costs of building one. Look at a 68000 and a 68040. The 68000 is mostly done in microcode, which lets the hardware be a lot simpler. That hardware can instatiate many other virtual architectures, depending on the microcode. It can be a 68000, or part of an IBM 370, or whatever. A 68040 is mostly hardwired. It's faster, but the hardware is a lot more complex and a lot more dedicated to a particular architecture. Software conveys a virtual reality in terms of physical reality. I view this as directly analogous to the way a novel, or a play, or a movie implements a virtual experience in terms of an actual experience. When I went to see "She Stoops To Conquer" last week, I didn't *actually* visit the 18th century British Isles, but I nonetheless had some of the experience of them. Likewise, my screen doesn't *actually* have a sheet of paper upon which I am typing this article, but I nonetheless have some of the experience of it. At its lowest level, a file system at some point writes its data to hardware, is that virtual reality, no. Yes. Do you tell your computer how to orient the magnetic domains in the media on your disk? No. You interact with a symbolic construct called a "file system" which creates a virtual reality in terms of those magnetic domains. Please, give me an example of one computer system that didn't benefit in some way from a software generated user interface...just one. An analog guidance system. A step-by-step telephone switch. I could go on... Computer hardware has no concrete existence, boy you really don't understand, do you? Nope, you don't understand. I've tried to ex Is a computer system special purpose? Some, yes. Please, show me a computer that was designed without the aid of software along the way... Any analog or pre-Von Neumann computer. I gave a couple of examples above. An old-fashioned electronic calculator chip. However, how it was designed is immaterial--very few things are designed without the aid of software these days :). At the expense of a reduced instruction set, meaning more software to make it do anything. OK, take a non-microcoded processor, like the Z80 or the 6502. My point stands. You can always trade off special-purpose hardware for software. Since when is data not physical. Have you ever heard of RAM? How about registers? Since when are RAM and registers data? Sigh. I`d really like to see you swap hardware while using exactly the same software on the new machine, and get anything to run. I did it Monday. Same Emacs, same window manager, same Usenet, ... Software engineering - the application of knowledge obtained through study and practice of writing software. How's that? Not bad, but it violates your own definition of engineering. It is, however, what I use as a colloquial definition, and why my business card says "software engineer." Actually, my colloquial definition is closer to: Software engineering - the application of formalized knowledge obtained through study and practice of writing software. I still think it's a misnomer. -- Amanda Walker amanda@visix.com Visix Software Inc. ...!uunet!visix!amanda -- "There are two ways to write bug-free code; only the third way works." --unknown consultant