Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!bbn!rochester!crowl From: crowl@cs.rochester.edu (Lawrence Crowl) Newsgroups: comp.lang.misc,comp.software-eng Subject: Software Technology is NOT Primitive Message-ID: <3471@sol.ARPA> Date: Wed, 21-Oct-87 21:01:55 EDT Article-I.D.: sol.3471 Posted: Wed Oct 21 21:01:55 1987 Date-Received: Sat, 24-Oct-87 08:20:40 EDT References: <3405@ece-csc.UUCP> <638@its63b.ed.ac.uk> Reply-To: crowl@cs.rochester.edu (Lawrence Crowl) Organization: U of Rochester, CS Dept, Rochester, NY Lines: 54 Xref: mnetor comp.lang.misc:766 comp.software-eng:1 Software technology is not in the primitive state that people so constantly moan about. First, software has a much more difficult task than hardware. We have more expectations from software than hardware, so the perceived state of the technology is less than the actual state. Consider the "great advance" in memory chip size. Most of the impressiveness of the advance comes from replication of design effort. Is a software engineer given accolades when he calls a subroutine a million times instead of a thousand? Hardly. Much of hardware design is replication, but very little of software design is replication. In 1950, a processor had hundreds to thousands of gates and a large program had a hundred to a thousand lines. Today, a processor has (say) a hundred thousand to a million gates, while a large program has a hundred thousand to a million lines of code. The track well don't they? But let's look closer. In 1950, a processor had a control unit, a few registers and an ALU while a program had a simple routine to read cards, a simple routine to drive the printer, and a simple core algorithm. Today, a processor had a control unit, a few registers and an ALU (note the less than radical change), while a program has a graphics interface, a file manager, a recovery scheme and a performance monitor in addition to the core algorithm. There has been quite a deal of change in the tools and _functional_ capabilities of software systems. "But hardware systems have improved performance by four orders of magnitude since 1950!" True, but for many problems, you are better off running today's algorithms on 1950's hardware than 1950's algorithms on today's hardware. Do not deny software its contribution to performance. (Although to be fair, we have already reached the theoretical maximum performance for many algorithms.) In article <3349@uw-june.UUCP> bnfb@uw-june.UUCP (Bjorn Freeman-Benson) writes: >However, one must consider that current software technology is at the level of >individual transistors and resistors, and that we could use the step up to >"7000 series ICs". After that, custom and semi-custom would be great. Well, I apply different analogies. I think you will find these better related to the actual scale of work. transistors == machine language 7400 series == assembly language msi == higher level languages lsi == libraries vlsi == utility programs (ala Unix) custom ICs == inheritance and generics (needs more experience to say for sure) It looks to me like software and hardware technology have tracked fairly well. The cause for the difference in perception is that hardware has done the same task cheaper and faster while software has performed an ever more difficult task. Because hardware has simpler measures, it has more apparent progress. The actual progress is roughly equivalent. -- Lawrence Crowl 716-275-9499 University of Rochester crowl@cs.rochester.edu Computer Science Department ...!{allegra,decvax,rutgers}!rochester!crowl Rochester, New York, 14627