Path: utzoo!attcan!uunet!wuarchive!zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!aplcen!haven!mimsy!mimsy.umd.edu!pjn From: pjn@brillig.umd.edu (P. J. Narayanan) Newsgroups: comp.arch Subject: Re: It looks like he's at it again! Message-ID: Date: 13 Jul 90 11:42:50 GMT References: <1990Jul12.012730.4248@Stardent.COM> <64044@sgi.sgi.com> Sender: news@mimsy.umd.edu Organization: U of Maryland, Dept. of Computer Science, Coll. Pk., MD 20742 Lines: 42 In-reply-to: karsh@trifolium.esd.sgi.com's message of 13 Jul 90 05:26:27 GMT I don't think your criticism of CS practices is completely fair. I agree with you that one doesn't have to make religions out of style that some of the computer scientists may preach. Surely we shouldn't get bogged down by cosmetics and matters of style (and think that the number of columns of indentation and the placement of the comment lines are the most important aspects of CS). But, modularity and functional decomposition have their own merits and should be emphasised even more, in my opinion (of course, one has to be certain that the definition of modularity doesn't include the number of columns of indentation as an integral part of it). However high level a programming language may be, one is still dealing with primitive concepts when dealing with variables (not to mention assembly language). Extreme indulgence with such low level structures is not likely to take you anywhere. By analogy, have you ever seen an electrical engineer starting a design off with transistors and FETs when asked to design an interface for a graphic device? In hardware design, lot of modularity is enforced by the necessity to use chips, which correspond to primitive subroutines to achieve common tasks. Have you also seen any chip manufacturer marketing a NAND gate chip with some weird pin assignments (and survived too :-) ? The point is that modularity, whether explicit or implicit, is essential to complex system design, as one would like to build on simpler and reliable systems designed earlier. The analogy of using assembly language when designing a missile tracking program in VLSI is to start the next 80x86 or 680x0 chip by drawing lines on a sheet of width lambda and so on. That is not to say that we should have any intellectual blockade against the use of low level structures when efficiency is important. If the program market gets as highly competitive as microprocessor market or TV market, we will start seeing machine or microcode level optimizations to save milliseconds of running time (like getting a 24 MHz chip as opposed to a 20 MHz one!). But, just as a microprocessor designed in such a manner will be (have to be) tested and well documented (and presented as a package that cannot be tampered with inside), such efficient programs will have to be tested and documented well enough to serve as a convenient building block to other programs. P J Narayanan