MDAY@XX.LCS.MIT.EDU.UUCP (11/02/87)
Soft-Eng Digest Sun, 1 Nov 87 Volume 3 : Issue 15 Today's Topics: Usenet Discussions (Overview) Software Technology is NOT Primitive (14 msgs) ---------------------------------------------------------------------- Date: 01 Nov 87 18:12:32 EST From: Mark S. Day <MDAY@XX.LCS.MIT.EDU> Subject: Usenet Discussions (Overview) I have attempted to summarize for the digest a number of messages that fell out of a discussion of software technology's apparent failings compared to hardware technology. The last issue of the digest dealt with a series of complaints about current languages and their failings. This issue returns to the subject of whether software technology is "primitive." As before, there are two phenomena of Usenet discussions that I have tried to edit out. One is the "me too" message where someone adds a small delta to the discussion without really making any significant point. The other is the "interruption" style of arguing a case, where a previous message is dissected sentence-by-sentence, with various comments as interruptions of the original text. --Mark ------------------------------ Date: 25 Oct 87 18:55:02 GMT From: cunyvm!orion.bitnet!ken%psuvm.bitnet@ucbvax.Berkeley.EDU (Kenneth Ng) Subject: Software Technology is NOT Primitive Shouldn't you be taking the software program as a whole and the hardware as a whole? Saying the hardware today is just an ALU, registers and memory is like saying all of today's software is an assignment, compare and branch statement. To compare your description of software today to hardware today, try adding LRU caching, address lookaside buffers, I/O processors, massive error detection and correction logic, ethernet and other communication technology, paging, the entire virtual memory schemes on a lot of machines, etc., etc, etc. Kenneth Ng: ken@orion.bitnet ------------------------------ Date: 26 Oct 87 15:27:02 GMT From: decvax!ima!haddock!stevel@ucbvax.Berkeley.EDU (Steve Ludlum) Subject: Software Technology is NOT Primitive Hardware doing the same thing faster? Parallel processors are not just faster they are different. Symbolic machines use different hardware techniques, i.e. tags. Laser disk do simply store more information but the difference means much more than just being able to do more of the same thing. Specialized hardware designs such as DSPs are opening up new areas such as speech and vision automation, oh and don't forget those little network controllers on a chip. Anyway all of the progress in software has just been taking care of a few more special cases :-) ima!stevel ------------------------------ Date: 27 Oct 87 04:22:44 GMT From: pyramid!weitek!rober@hplabs.hp.com (Don Rober) Subject: Software Technology is NOT Primitive When was the last time you wrote a Data Management System; or a spreadsheet program; or a transcendental package; or a compiler, linker, etc? When was the last time you wrote a mail package from scratch, a grep program and all of the other UNIX utilities? WHile there is a long way to go, I think if you look at it, we've done okay. Don Rober UUCP: {pyramid, cae780}!weitek!rober Weitek Corporation 1060 East Arques Sunnyvale, CA 94086 ------------------------------ Date: 27 Oct 87 13:17:12 GMT From: cbosgd!osu-cis!tut!tut.cis.ohio-state.edu!mumble%karl@ucbvax.Berkeley.EDU (Karl Kleinpaste) Subject: Software Technology is NOT Primitive crds@ncoast.UUCP writes: We have processors today which can out-run the processors of 1978 (10 years ago) by 20 to 1. We have software today which can probably be out-run by the software of 1978, even when we use it on that powerful processor. Sure, it's USER FRIENDLY, ERGONOMIC, etc., but does it keep pace with the advances in the industry? Why don't I see ANY software advances that are even an order of magnitude above 1978? This would give me 200 times the power, considering the advances in hardware!! In watching this discussion, it seems the only metric which people want to apply to software is performance. Raw performance, how many widgets can you prefrobnicate in minimal picoseconds. It seems to me that this is not the right way to view software. Aside from the fundamental problems of P?=?NP and similar questions, I tend not to like looking at software from the sole standpoint of how fast it goes. Yes, speed is important - anything written by a programmer should be designed to be fast, as fast as possible. I think I do much more than an adequate job of that in the code I write. But I am not looking for pure speed in what I design; I am also looking for new functions, new capabilities, a different way of doing something, a different way of looking at an old problem. Consider the case of bit-mapped window displays. The hardware to implement them is relatively simple. A largish memory, an ability to move large bit patterns fast, possibly a dedicated co-processor for managing the whole beast. The rest is software. I think this is an excellent example of a wonderful marriage between advances in hardware and software. Hardware provided the ability to do something in new software. The new software provides new capabilities and new power for the user of the whole package. Now consider the resulting power of that package. I'm sitting in front of a Sun3 using X. The hardware provided here is exactly what is needed to support the software concepts required. But to me, the resulting power of this box is really embodied in what the software is doing. On my screen right now, there are 10 windows. All of them are doing useful things. Granted, some of them are not doing very interesting things; I have an analog clock in one corner, and two load meters in another. But that still leaves 7 other windows doing real, vital, practical work. Even those two load meters are vital to my work, because it's those meters that I will be watching to see if something causes a performance spike, and that will cue me to go look at the indicated system to see what's going wrong. So in practical terms, I have 9 simultaneous activities going on which are of value to me. That's roughly an order of magnitude improvement over the days of 1978, when I sat in front of a dumb CRT, connected to exactly one system, doing exactly one thing. The parallelism inherent in my brain is being put to positive use. I didn't even need parallel hardware to do it. An approximation of parallelism through timesharing is sufficient for my mind to fill in the remaining gap. I am not attacking or denigrating the advances in hardware in any way whatever. (My graduate work was in software performance increases, after all, trying to take better advantage of existing recent hardware improvements.) But I think that software has come rather a long way in the last 10 years. It just hasn't come to us in terms of raw performance. It's exactly those areas of user-friendliness, ergonomics, and expanded user capability that provide the final improvement in the real power of the machine. -=- Karl ------------------------------ Date: 26 Oct 87 12:19:34 GMT From: cbosgd!mandrill!hal!ncoast!crds%ncoast.UUCP@ucbvax.Berkeley.EDU (Glenn A. Emelko) Subject: Software Technology is NOT Primitive I have been involved at an engineering level in both hardware and software design for about 10 years. Across these years I have seen advances in both industries, but I must say that I am more impressed with what I see in the way of hardware technology. In some ways, it seems, software has degraded somewhat because of hardware progress. This has been, and most likely shall continue to be one of my pet peeves of the whole industry. First of all, I can remember (as many of you can too) machines which had 4K of memory, or 16K, and still had to have a rudimentary OS running which could perform some tasks and still allow the user to load a program. In those rough times, people were very concerned and concious about storage, both on disk, as well as memory usage. This forced software engineers to think creatively, to tighten code, and to produce very powerful LITTLE algorithms that could do many things and could be called from many other parts of the code. Code was many times designed to be recursive, if not reentrant, and it was expected that the software engineer knew alot about the machine and environment (in terms of the hardware) that was hosting the program, which allowed for tricks and little magical wonders to happen (laughing, in other words, the designer took advantage of what was available). In contrast, today, many designers know nothing about the destination machine (it's a UNIX box?), and most are not very concerned about how much memory, disk space, or anything else that they use, and really could care less if there are four subroutines in their code which could be combined into one general purpose all encompasing sub. Further more, it seems, now that we have 3-MIPS and 5-MIPS and higher-MIPS machines being sold over the counter at reasonable prices, very little time is spent by the software engineer to really PUSH that machine to it's gills. In fact, I have noted many specific cases of generally sloppy, slow, and out-and-out crude coding techniques passing as "state of the art," simply because it is running on a machine that is so blindingly fast that it does make that code seem reasonable. Case and point: I can recall designing a sorting algorithm for a data management system which was very popular in the early '80s for a specific Z80 based computer, and then one day pulling out a copy of the "state of the art" data management/spread sheet program of '84, which ran on a 8088 based system, and benchmarking them against each other for about 20 different test cases (already sorted, sorted reverse, alpha only, numeric only, fractional numbers, alpha numerics, and numerous data sets), and watching the Z80 based computer beat the 8088 based system 10 to 1 at WORST! And as an added note, the sort on the Z80 was stable, and the one on the 8088 was not!!! Yes, I am talking about the "most popular" spreadsheet of 1984, and a lowly Z80 machine ripping it to shreads! Is this the current state of software technology? Yes, I believe so. At the same time that I have shared these "beefs" about software development, I have mentioned advances in hardware which allows the software guru to get lazy and still be considered current. We have processors today which can out-run the processors of 1978 (10 years ago) by 20 to 1. We have software today which can probably be out-run by the software of 1978, even when we use it on that powerful processor. Sure, it's USER FRIENDLY, ERGONOMIC, etc., but does it keep pace with the advances in the industry? Why don't I see ANY software advances that are even an order of magnitude above 1978? This would give me 200 times the power, considering the advances in hardware!! I would like to get my hands on a copy of "current software" which shows me this capability, please email me info, or respond on the net. Yes, these opinions are specifically mine, and reflect upon nothing other than my own personal experiences, pet peeves, and general bullheadedness. Feel free to differ with any or all of the above, but at least get a laugh out of it. I find it funny myself. Glenn A. Emelko ...cbosgd!hal!ncoast!crds Somehow, this borrowed caption seems appropriate: "When I want your opinion, I'll give it to you." ------------------------------ Date: 28 Oct 87 17:54:16 GMT From: sunybcs!sher@ames.arpa (David Sher) Subject: Software Technology is NOT Primitive (Followup's to comp.lang.misc) Time for a stupid analogy: Someone gives me a 2 watt power line and asks me to build a toaster: So using my electronics ability and ingenuity I build a toaster that toasts a piece of bread that was very carefully placed in it in about 15minutes. However things advance and he now hands me a 2 Megawatt power line and says ok buid me a toaster, and I throw together a toaster that toasts bread in about 1 minute. (The most work going into making sure the user does not electrocute himself.) He then comes back and complains, I gave you a million times as much power and you only give me a factor of 20 speedup! Power engineering sure advances faster than electrical! Disclamer: As should be obvious by now, I know nothing about constructing appliances. This story is not true, and the names have been changed to protect the innocent and all that stuff. -David Sher ARPA: sher@cs.buffalo.edu BITNET: sher@sunybcs UUCP: {rutgers,ames,boulder,decvax}!sunybcs!sher ------------------------------ Date: 27 Oct 87 16:54:08 GMT From: uplherc!esunix!bpendlet@gr.utah.edu (Bob Pendleton) Subject: Software Technology is NOT Primitive Why compare hardware and software at all? Its like comparing roads and cars. Cars even run on roads, much like software runs on hardware. ( Forgive the awful analogy. It is deliberately obsurd. ) Even though they affect each others development, the technologies are very different. Look at LRU caching and paging. This technique depends on a statistical property of programs in general, but to get maximum performance from a given machine a programmer needs detailed knowledge of its implementation on that specific machine. Two very different technologies. Two very different points of view. Two different cultural heritages. Bob P. -- Bob Pendleton @ Evans & Sutherland UUCP Address: {decvax,ucbvax,ihnp4,allegra}!decwrl!esunix!bpendlet Alternate: {ihnp4,seismo}!utah-cs!utah-gr!uplherc!esunix!bpendlet I am solely responsible for what I say. ------------------------------ Date: 29 Oct 87 04:59:41 GMT From: ken@cs.rochester.edu (Ken Yap) Subject: Software Technology is NOT Primitive Let us not forget that the computer is a tool and that raw computing speed is but one measure of the effectiveness of the hardware. If that computing power has to "go to waste" in a spreadsheet program, I don't care, as long I get *my* job more effectively. All those cycles going into painting a bitmap window, think it's a waste? Fine, want to design METAFONT characters with punch cards, or even a glass TTY? I used to wonder what we would do with all those MIPS of computing power hardware would give us. Now I realize that there is at least one application that can soak up any amount of CPU power you can get - advanced interfaces. Have a look at the October SciAm issue. Take the Wired Glove. Imagine a biochemist being able to experiment with molecules by "handling" them. Would you begrudge all those cycles required to support this mode of interaction? I certainly wouldn't. Ken ------------------------------ Date: 29 Oct 87 20:56:15 GMT From: ihnp4!ihlpf!joelynn@ucbvax.Berkeley.EDU (Lynn) Subject: Software Technology is NOT Primitive Having programmed on the old Z80 based TRS80 with 4k and then 16k to work on, I have just gotten tired of trying to keep up with the hardware. It seems the more I learned about the machine's capabilities, the faster the machine changed. The sooner my programs became obsolete. I just got tired of relearning a new operating system to find it out of date in a couple short months. For this reason, I welcome UNIX. BUT... I have been handicapped by UNIX simply because it cannot use the total environment available to it. This, i think is due to the inability of the current generation of programmers to look at the whole picture of what is to be done, and what may be requested of the routine. ------------------------------ Date: 29 Oct 87 12:23:18 GMT From: pur-phy!hal@ee.ecn.purdue.edu (Hal Chambers) Subject: Software Technology is NOT Primitive In article <4943@ncoast.UUCP> crds@ncoast.UUCP (Glenn A. Emelko) writes: >... I can recall designing a >sorting algorithm for a data management system which was very popular in the >early '80s for a specific Z80 based computer, and then one day pulling out >a copy of the "state of the art" data management/spread sheet program of '84, >which ran on a 8088 based system, and benchmarking them against each other >for about 20 different test cases >and watching the Z80 based computer beat the 8088 based system 10 to 1 at >WORST!... This reminds me of a time about 10-12 years ago when I was using a program which looked for new energy levels in an atom given a list of known levels and a list of currently unclassified spectrum lines for that element. This program generated huge lists of numbers which then had to be sorted and then examined for matches. The program ran the the CDC6600 here at Purdue and took large amounts of time which meant: submit job wait till next day for results. I examined the sort routine which was written in COMPASS (the CDC assembly language) for "speed". What a revelation when I realized the algorithm used was a Bubble sort!! I wrote a modified Shell-Metzner sort in FORTRAN and got a 30-fold improvement. Then I hand-compiled that subroutine into COMPASS and got another factor of 3 improvement. Those jobs now run in less than 8 sec. of processor time and turn around is essential immediate. Hal Chambers ------------------------------ Date: 29 Oct 87 11:51:56 GMT From: mcvax!ukc!stc!praxis!gauss!mct@uunet.uu.net (Martyn Thomas) Subject: Software Technology is NOT Primitive I don't understand the comparisons which are being made between hardware and software technology - they seem to be comparing the wrong things. The advances in hardware technology are advances in *fabrication* technology mostly. The feature sizes get smaller, the substrates can be grown with fewer impurities, the masks can be drawn more accurately. There are few useful analogues of this in software. Software is design, in a pure form. The *design* technology of hardware, at the logical, behavioral level rather than the physical place-and-route, is a long way behind software - mostly because the complexity of most hardware designs is relatively low. (This is changing rapidly, as 100K+ gate-equivalent ASICs become more common). Surely a reasonable comparison would be: HARDWARE SOFTWARE Schematic capture Flowcharting Gate-level design Assembly-language programming Most HDLs FORTRAN ELLA/VHDL Modula 2 / ADA (Don't take this too seriously - these are not really close enough to compare). LCF/LSM VDM or Z or CSP ie formal methods. The main weakness of this sort of comparison is that the design problems are different, and that there is no agreed taxonomy of software design techniques. The table above is *not* a linear progression from less-advanced to more-advanced, it is rather an unstructured, pairwise comparison of different aspects of hardware design technology with rough software equivalents. In general, hardware designers are using only limited "structured methods" (to use a software phrase) and almost no (mathematically) "formal methods". There are notable exceptions: in the UK, Inmos are using CSP and OCCAM to prove the correctness of transputer components; RSRE (UK MoD) are using LCF/LSM to prove the correctness of VIPER, their formally-verified 32-bit microprocessor; and increasingly other companies are learning the benefits of a (more) formal approach to design. Such methods are in much more widespread use for software development, and the corresponding research papers were published about ten years earlier for software. The hardware designers are catching up fast, though, just in time to merge their skills with the software engineers' to make a new breed of systems engineer. Martyn Thomas, Praxis plc, 20 Manvers Street, Bath BA1 1PX UK. +44-225-444700. ...!mcvax!ukc!praxis!mct OR mct%praxis.uucp@ukc.ac.uk ------------------------------ Date: 30 Oct 87 21:13:41 GMT From: uh2%psuvm.bitnet@ucbvax.Berkeley.EDU (Lee Sailer) Subject: Software Technology is NOT Primitive Twenty years ago, writing a Pascal compiler, a Basic interpreter, a screen editor, a mail package, a text formatter, etc etc etc, was considered a MAJOR project. Today, any of these would be considered a stiff challenge for a talanted college senior. Why? Because techniques and strategies in Software engineering have changed, changed a lot, and changed for the better. I agree. We've done OK. ------------------------------ Date: 31 Oct 87 16:58:41 GMT From: tektronix!reed!bart@ucbvax.Berkeley.EDU (Bart Massey) Subject: Software Technology is NOT Primitive Probably I shouldn't add to this discussion, since it seems to be basically going nowhere. But I couldn't resist putting in my 2-cents-worth... The arguments being presented for primitive software technology, as I have interpreted them, are these: Hardware designs have gotten more general-purpose and reusable in the past 20 years. Software designs haven't. Hardware has gotten more much more efficient wrt speed and size in the past 20 years. Software has gotten less efficient in that time. Seems to me that the most reasonable lines of counter-argument runs like this: Hardware costs money to manufacture. If a sufficient number of copies of a design are sold (as with ICs) the manufacturing costs swamp the design and distribution costs. This isn't true of software. An infinite number of copies may be manufactured for free, and design costs are generally the constraining factor. Thus, much more design effort is put into a typical hardware project. On the other hand, many more software designs are actually implemented. This is why hardware is used for general-purpose tasks, and software for specific problems. The major task of the hardware designer has been to do general-purpose tasks faster and smaller, at which s/he has succeeded admirably. The major task of the software designer has been to do a wide variety of specific tasks, at which s/he has also suceeded admirably. It just isn't true that our knowledge about how to do small, fast software has *decreased*. Anyone who believes this should look at the original 64K Apple Macintosh ROMs. Certainly, the coding there was in the same range of size/speed efficiency as the 4K Tiny Basic I used 10 years ago. And yet there was 16 times as much of it. What has happened is that run-time efficiency has been traded for design-time efficiency. At Reed College, there is an abundance of machines, and a major shortage of programmers. Thus, we try to use the programmers efficiently, not the machines. Contrary to some people's claims, we believe that there's no way to optimize both simultaneously. Always choosing the people optimization makes good economic sense for us. And for most people. In summary, 20 years ago, you couldn't do a lot of things, period. The things you did do, you did almost solely in hardware. Today, a mixture of general-purpose hardware and specific-purpose software is being used to do a lot of new things more cheaply and easily. My personal opinion based on the above evaluation is that name-calling software technology "primitive" or "20 years out of date" is a little silly. Suggesting specific ways that either sofware or hardware technology could be improved is not. The recent discussions in this group about the extent to which compiler syntax can reasonably be modified at run time, about the ways in which languages can be optimized to make code-sharing easier without significantly increasing design expense, about the costs and benefits of OO programming, seem much more relevant and useful. Let's take up those topics and drop this one. Bart ------------------------------ Date: 29 Oct 87 01:33:36 GMT From: pyramid!prls!philabs!pwa-b!mmintl!franka@decwrl.dec.com (Frank Adams) Subject: Software Technology is NOT Primitive Another point worth making: if hardware design is advancing so much faster than software design, why does the latest trend in hardware design (RISC) involve putting more of the burden on software? -- Frank Adams ihnp4!philabs!pwa-b!mmintl!franka Ashton-Tate 52 Oakland Ave North E. Hartford, CT 06108 ------------------------------ End of Soft-Eng Digest ****************************** -------