munck@linus.UUCP (Robert Munck) (07/28/88)
In article <9763@eddie.MIT.EDU> jbs@fenchurch.MIT.EDU (Jeff Siegal) writes: >In article <37014@linus.UUCP> munck@faron.UUCP (Robert Munck) writes: >>[...]assembly language will "fit" only >>the smallest, most toy-like, never-to-be-used-for-real prototypes. >This just isn't true. There are an aweful lot of real live products, >and BIG ones, that have been built in assembly language. Have you >read _The_Mythical_Man-Month_? 5000 man-years it did take, but OS/360 >was a whole bunch of assembly code (millions of lines, minimum) that >has probably made IBM billions. Nah. Some of you may not have been born yet then, but I was one of the first non-IBMers to sysgen OS/360 rel 1 (PCP) in 1966 or so, and probably as familiar with the source code of OS, releases 1 .. 21, as anyone. Sure, it was assembler in the early days. Remember, OS/360 was written in the early and mid sixties, before the "age of compilers." The OS (not counting linkers, utilities, etc.) was maybe as big as 500K lines of assembler. Pretty soon, however, the source listings in the microfiche started to look a bit strange. Labels like "L000213#", loading a register with the value it already contained, etc. It was, of course, "disassemblies" of the output of the legendary BSL compiler (Basic Systems Language, later PL/0). By Release 14 (that great release; I think Yale is STILL running it), all new modules were BSL. >I write a 25000 line assembly program (for a class) about 4 years ago >that was well organized, documented, etc. I have no doubt that it >could be modified and maintained today (or 10 years from now). How about moved to another CPU? Yeah, sure, it's possible to write organized, maintainable assembly code (though the concepts of "maintenance" and "documentation" at universities are VERY different from the commercial and military worlds.) Real-world schedule and funding pressures make it very unlikely that it would stay organized, documented, and maintainable for very long after release. After that, it's a long, slow slide to certain death (death: the time when fixing one bug introduces, on the average, 1+epsilon new bugs). There are a lot of personal computer products out there written in assembler and doing well; companies dependent on such products have, in effect, taken a very slow-acting poison. -- Bob Munck, MITRE Corporation -- ..!linus!munck.UUCP, munck@mitre-bedford.ARPA
sl144003@silver.bacs.indiana.edu (07/29/88)
/* Written 11:24 am Jul 28, 1988 by munck@linus in silver:comp.software-eng */ /* ---------- "Re: using (ugh! yetch!) assembler" ---------- */ In article <9763@eddie.MIT.EDU> jbs@fenchurch.MIT.EDU (Jeff Siegal) writes: >In article <37014@linus.UUCP> munck@faron.UUCP (Robert Munck) writes: >>[...]assembly language will "fit" only >>the smallest, most toy-like, never-to-be-used-for-real prototypes. >This just isn't true. There are an aweful lot of real live products, >and BIG ones, that have been built in assembly language. Have you >read _The_Mythical_Man-Month_? 5000 man-years it did take, but OS/360 >was a whole bunch of assembly code (millions of lines, minimum) that >has probably made IBM billions. Nah. Some of you may not have been born yet then, but I was one of the first non-IBMers to sysgen OS/360 rel 1 (PCP) in 1966 or so, and probably as familiar with the source code of OS, releases 1 .. 21, as anyone. Sure, it was assembler in the early days. Remember, OS/360 was written in the early and mid sixties, before the "age of compilers." The OS (not counting linkers, utilities, etc.) was maybe as big as 500K lines of assembler. Pretty soon, however, the source listings in the microfiche started to look a bit strange. Labels like "L000213#", loading a register with the value it already contained, etc. It was, of course, "disassemblies" of the output of the legendary BSL compiler (Basic Systems Language, later PL/0). By Release 14 (that great release; I think Yale is STILL running it), all new modules were BSL. >I write a 25000 line assembly program (for a class) about 4 years ago >that was well organized, documented, etc. I have no doubt that it >could be modified and maintained today (or 10 years from now). How about moved to another CPU? Yeah, sure, it's possible to write organized, maintainable assembly code (though the concepts of "maintenance" and "documentation" at universities are VERY different from the commercial and military worlds.) Real-world schedule and funding pressures make it very unlikely that it would stay organized, documented, and maintainable for very long after release. After that, it's a long, slow slide to certain death (death: the time when fixing one bug introduces, on the average, 1+epsilon new bugs). There are a lot of personal computer products out there written in assembler and doing well; companies dependent on such products have, in effect, taken a very slow-acting poison. -- Bob Munck, MITRE Corporation -- ..!linus!munck.UUCP, munck@mitre-bedford.ARPA /* End of text from silver:comp.software-eng */
elg@killer.DALLAS.TX.US (Eric Green) (07/29/88)
In message <37247@linus.UUCP>, munck@linus.UUCP (Robert Munck) says: >from the commercial and military worlds.) Real-world schedule and >funding pressures make it very unlikely that it would stay organized, >documented, and maintainable for very long after release. After that, >it's a long, slow slide to certain death (death: the time when fixing >one bug introduces, on the average, 1+epsilon new bugs). > >There are a lot of personal computer products out there written in >assembler and doing well; companies dependent on such products have, in >effect, taken a very slow-acting poison. Note that, until recently, it was impossible to have a commercial-quality product written in a high-level language on a personal computer. 8-bit microcomputers such as the Z-80, 6502, or 8088 are very difficult to generate reasonable code for. Microsloth(tm) took years to get their "C" compiler generating even reasonably efficient code, and it still could use a lot of improvement. However, from what I hear, Microsoft is saying that further optimization will require AI techniques and a more powerful machine than the 8088 (because of both the speed and memory requirements of such a compiler). It's easy for us, using high-powered minicomputers or 68000-based machines, to say "Using assembler is slow death". Heck, even a simplistic compiler for the 68000 can generate decent code (e.g. the Manx C68K compiler -- very small, very simple, does almost no optimizations, and the code is reasonable, though far from optimal). But the majority of the people in the PC world still are not so lucky.... -- Eric Lee Green ..!{ames,decwrl,mit-eddie,osu-cis}!killer!elg Snail Mail P.O. Box 92191 Lafayette, LA 70509 MISFORTUNE, n. The kind of fortune that never misses.
john@anasaz.UUCP (John Moore) (07/29/88)
In article <37247@linus.UUCP% munck@linus.UUCP (Robert Munck) writes: %In article <9763@eddie.MIT.EDU% jbs@fenchurch.MIT.EDU (Jeff Siegal) writes: % %%In article <37014@linus.UUCP% munck@faron.UUCP (Robert Munck) writes: %%%[...]assembly language will "fit" only %%%the smallest, most toy-like, never-to-be-used-for-real prototypes. If you ever make an airline or hotel reservation, or use a credit card and have an authorization check run on it, you are making use of very large systems written entirely in assembly language! These systems are based on IBM's TPF (previously ACP - Airline Control Program). They may contain millions of lines of applications code. Likewise, if you fly in an airplane at one of the airports with the older ARTS traffic control computers, you are again depending on a large assembly language system. None of this is to imply that assembly language is a good way to do applications! Just to show that some extremely large systems are done that way. -- John Moore (NJ7E) {decvax, ncar, ihnp4}!noao!nud!anasaz!john (602) 861-7607 (day or eve) {gatech, ames, rutgers}!ncar!... The opinions expressed here are obviously not mine, so they must be someone else's.
raveling@vaxb.isi.edu (Paul Raveling) (07/30/88)
In article <37247@linus.UUCP> munck@linus.UUCP (Robert Munck) writes: >In article <9763@eddie.MIT.EDU> jbs@fenchurch.MIT.EDU (Jeff Siegal) writes: > >>This just isn't true. There are an aweful lot of real live products, >>and BIG ones, that have been built in assembly language. Have you >>read _The_Mythical_Man-Month_? 5000 man-years it did take, but OS/360 >>was a whole bunch of assembly code (millions of lines, minimum) that >>has probably made IBM billions. > >Nah. Some of you may not have been born yet then, but I was one of the >first non-IBMers to sysgen OS/360 rel 1 (PCP) in 1966 or so, and Me too. >probably as familiar with the source code of OS, releases 1 .. 21, as anyone Once I was, but I wanted to forget them as fast as possible. > ... It was, of >course, "disassemblies" of the output of the legendary BSL compiler (Basic >Systems Language, later PL/0). By Release 14 (that great release; I >think Yale is STILL running it), all new modules were BSL. I don't recall noticing those features, but maybe that explains why so much of that code was so awful. On the other hand, those comments the code generator stuck on the right side of instructions would be the envy of both our natural language synthesis group and someone else's compiler group. Maybe we tended to work in different parts of OS/360. The first code I can guarantee wasn't hand-coded assembly language was the PL/S that began creeping in around Release 18 (plus or minus epsilon). It was such a curiosity that I immediately looked at some and spotted a bug within 5 minutes. An exception would be compilers such as FORTRAN H, which used a lot of FORTRAN. >>I write a 25000 line assembly program (for a class) about 4 years ago >>that was well organized, documented, etc. I have no doubt that it >>could be modified and maintained today (or 10 years from now). > >How about moved to another CPU? Portability is the biggest argument for avoiding assembly. It IS feasible to write well-documented, easily maintainable assembly code. Anyone with a performance-critical application should consider it; in my experience it takes around 20% more time to write in a decent assembly language than in a decent higher level language, and the code runs about 3 times faster... Unless the high level language is LISP - then the speed ratio is about an order of magnitude. A notable exception is a crummy machine language, such as Intel's 8*86's. Over my 8 years of having to deal with these atrocities, it probably took at least twice as much time to produce "good machine language code" as it did to produce equivalent C. (The 8*86 architecture doesn't really allow producing "good machine language code" by comparison with most other hardware architectures.) >Yeah, sure, it's possible to write >organized, maintainable assembly code (though the concepts of >"maintenance" and "documentation" at universities are VERY different >from the commercial and military worlds.) Real-world schedule and >funding pressures make it very unlikely that it would stay organized, >documented, and maintainable for very long after release. In my experience in all three worlds, the best documentation has tended to be found in the commercial world. The most documentation was in the MIL-spec world, but the requirement was for so much of it that it was a miracle if a substantial part matched the actual system. The university world, or at least the part whose software I've seen lately, produces minimal documentation, and what exists is of little use. --------------------- Paul Raveling Raveling@vaxb.isi.edu
hollombe@ttidca.TTI.COM (The Polymath) (08/03/88)
In article <1148@anasaz.UUCP> john@anasaz.UUCP (John Moore) writes: }None of this is to imply that assembly language is a good way to do }applications! Just to show that some extremely large systems are done }that way. Another example: Most of the code in the Space Shuttle's on board computers is written in assembler. I know because I once had to document a large chunk of it (the Initial Program Load (IPL) module). -- The Polymath (aka: Jerry Hollombe, hollombe@ttidca.tti.com) Illegitimati Nil Citicorp(+)TTI Carborundum 3100 Ocean Park Blvd. (213) 452-9191, x2483 Santa Monica, CA 90405 {csun|philabs|psivax}!ttidca!hollombe
henry@utzoo.uucp (Henry Spencer) (08/03/88)
In article <1148@anasaz.UUCP> john@anasaz.UUCP (John Moore) writes: >If you ever make an airline or hotel reservation, or use a credit card >and have an authorization check run on it, you are making use of very >large systems written entirely in assembly language! ... If I'm not mistaken, Sabre (American Airlines) for one is written in a PL/I variant and has been for many years. They got burned by the conversion to the 360 and swore that they would never again write in assembler. -- MSDOS is not dead, it just | Henry Spencer at U of Toronto Zoology smells that way. | uunet!mnetor!utzoo!henry henry@zoo.toronto.edu
davidsen@steinmetz.ge.com (William E. Davidsen Jr) (08/03/88)
One of the claimed advantages of assembler is that you can't get burned by changes in the compiler causing bad code. Unfortunately assemblers do generate bad code, too, on occasion. One example was the GMAP assembler for the GE600. Certain instructions mush be in odd locations, such as RPD, and in some cases that was not forced. I think it was if the RPD was the result of the expansion of a macro or something, but it was 20+ years ago. The Intel assembler for the 80386 still recognizes several bit load/store instructions which have been removed from the chip. I doubt that anyone outside of Intel ever used them, but unknown instructions really should be flagged. -- bill davidsen (wedu@ge-crd.arpa) {uunet | philabs | seismo}!steinmetz!crdos1!davidsen "Stupidity, like virtue, is its own reward" -me
john@anasaz.UUCP (John Moore) (08/06/88)
In article <11719@steinmetz.ge.com> davidsen@crdos1.UUCP (bill davidsen) writes:
%
% One of the claimed advantages of assembler is that you can't get
%burned by changes in the compiler causing bad code. Unfortunately
%assemblers do generate bad code, too, on occasion. One example was the
%GMAP assembler for the GE600. Certain instructions mush be in odd
%locations, such as RPD, and in some cases that was not forced. I think
%it was if the RPD was the result of the expansion of a macro or
%something, but it was 20+ years ago.
There was some sort of pseudo-op to force that, I think... (been about 17
years for me)
--
John Moore (NJ7E) {decvax, ncar, ihnp4}!noao!nud!anasaz!john
(602) 861-7607 (day or eve) {gatech, ames, rutgers}!ncar!...
The opinions expressed here are obviously not mine, so they must be
someone else's.
leem@jplpro.JPL.NASA.GOV (Lee Mellinger) (08/19/88)
In article <3008@ttidca.TTI.COM> hollombe@ttidcb.tti.com (The Polymath) writes: |In article <1148@anasaz.UUCP> john@anasaz.UUCP (John Moore) writes: |}None of this is to imply that assembly language is a good way to do |}applications! Just to show that some extremely large systems are done |}that way. | |Another example: | |Most of the code in the Space Shuttle's on board computers is written in |assembler. I know because I once had to document a large chunk of it (the |Initial Program Load (IPL) module). | |The Polymath (aka: Jerry Hollombe, hollombe@ttidca.tti.com) Illegitimati Nil Not so according to Barbra Kolkhost, IBM Federal Systems Division. This organization is responsible for writing and maintaining the Space Shuttle onboard software for the four AP-101 computers (not the backup machine), and have been for the life of the project. The shuttle code is written on a mainframe computer in HAL/S and machine code is generated for the target machines (the AP-101's). HAL/S is a realtime high level language that resembles PL-1 and was written by Intermetrics specifically for the shuttle. It evolved from an earlier language that was used on the Apollo spacecraft. Lee -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |Lee F. Mellinger Jet Propulsion Laboratory - NASA| |4800 Oak Grove Drive, Pasadena, CA 91109 818/393-0516 FTS 977-0516 | |-------------------------------------------------------------------------| |UUCP: {ames!cit-vax,psivax}!elroy!jpl-devvax!jplpro!leem | |ARPA: jplpro!leem!@cit-vax.ARPA -or- leem@jplpro.JPL.NASA.GOV | -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
levine@eniac.seas.upenn.edu (Jonathan M. Levine) (08/20/88)
In article <2689@jpl-devvax.JPL.NASA.GOV> leem@jplpro.JPL.NASA.GOV (Lee Mellinger) writes: >In article <3008@ttidca.TTI.COM> hollombe@ttidcb.tti.com (The Polymath) writes: >|In article <1148@anasaz.UUCP> john@anasaz.UUCP (John Moore) writes: >|}None of this is to imply that assembly language is a good way to do >|}applications! Just to show that some extremely large systems are done >|}that way. >| >|Another example: >| >|Most of the code in the Space Shuttle's on board computers is written in >|assembler. I know because I once had to document a large chunk of it (the >|Initial Program Load (IPL) module). >| >Not so according to Barbra Kolkhost, IBM Federal Systems Division. >[...] The shuttle code >is written on a mainframe computer in HAL/S and machine code is >generated for the target machines (the AP-101's). The IPL module is essentially a bootstrap loader, and is probably written directly in assembly language to reduce the size of the generated code. In any case, it would not be out of character for IBM to write code in a high level language, but only distribute the generated assembler code (c.f. VP/SP, MVS, etc.) ------------------------------------------------------------------------------- From the e-desk of: Jonathan Levine "Not necessarily. I COULD University of Pennsylvania be arguing in my spare time." Mostly: levine@eniac.seas.upenn.edu Summer: visres.jlevine@crvax.sri.com
raveling@vaxb.isi.edu (Paul Raveling) (08/23/88)
In article <2689@jpl-devvax.JPL.NASA.GOV> leem@jplpro.JPL.NASA.GOV (Lee Mellinger) writes: > >...Shuttle onboard software for the four AP-101 computers (not the backup >machine), and have been for the life of the project. The shuttle code >is written on a mainframe computer in HAL/S and machine code ... I had an impression, but don't recall with certainty, that the backup computer's software was assembly language. This impression was from a software engineer who worked on it and moved from Rockwell to my group at FutureData late in 1980. Another avionics example is the B1-B Central Air Data Computer, which was about 50% assembly language, 50% PLM/86 when I worked on it. This, along with all the other avionics software I've seen, needed hand-optimized assembly code to meet its real time requirements. --------------------- Paul Raveling Raveling@vaxb.isi.edu