Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!rutgers!ames!orville!fouts From: fouts@orville (Marty Fouts) Newsgroups: comp.lang.misc Subject: Re: assembly programming prefereable to HLL programming ? Message-ID: <50@ames.UUCP> Date: Thu, 4-Dec-86 17:29:26 EST Article-I.D.: ames.50 Posted: Thu Dec 4 17:29:26 1986 Date-Received: Fri, 5-Dec-86 03:50:11 EST References: <646@instable.UUCP> Sender: usenet@ames.UUCP Reply-To: fouts@orville.UUCP (Marty Fouts) Organization: NASA Ames Research Center, Mountain View, CA Lines: 51 Keywords: programming language comparison I can't speak to the various claims of the author about coding of a single application which only runs on a single processor, but I would like to point out that the issue of moving code from one place to another seems to have been ignored. I don't think that a universal assembler is reasonable or even likely. Machines vary widely, and contain concepts which don't even relate. Some machines (particularly multiprocessors) have a hierarchy of memory requiring different machine instructions to access different classes of memory, while others don't. Some machines have particular register sets, such as vector registers or register windows. Transportable code is important in distributed environments. I regularly write "throwaway" code on a VAX which is routinely executed on Amdahls, 68K workstations and Crays. Most of this code doesn't get executed enough times before it is replaced to justify the tradeoff in development time it would take to implement it in assembler for one machine, let alone for the four that it runs on. I'm not saying that all code is of this nature. Some of the code I've written for the Cray 2 has been profiled, and then had the hot spots reimplemented in tightly crafted assembler code. Other people have handcrafted entire libraries and even complete applications to take advantage of the machine. There are (arguably) somethings for which assembler is better, but there are many distributed, light duty, "throwaway" applications for which assembly language crafting doesn't make sense. Actually, as I write this, I think I would address some of the claims in favor of assembler code. The idea that it takes the same amount of effort to maintain and debug assembler based systems as for HLL systems is not born out in operating system maintenance. We have 4 Vaxen and a Cray 2 running native Un*x implementations, and a dual processor Amdahl running MVS and UTS under VM. We have as many people doing Amdahl software support as we have supporting the rest of the systems combined. Ports of HLL applications are easier, even when the architecture is similar. In one case I am aware of, a vendor chose to port an existing assembly lanaguge Fortran compiler to a new machine and also to implement a new Fortran compiler in Pascal for both the existing and the new machine. They have put less (maybe less than half?) effort into the Pascal implementation then in the assembly language port and have about equal products. I reject any claim that language A or language type X is better than language B or language type Y for all purposes. Somethings make sense to do in assembler and others in HLLs. As HLL implementations get better, machines become more difficult to understand, and distributed applications become more prevalent, the number of things which it makes sense to do in assembler becomes less.