Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!husc6!linus!raybed2!rayssd!brunix!nancy!kbb From: kbb@nancy (Karl Berry.) Newsgroups: comp.lang.misc Subject: Software reuse and WEB. Message-ID: <16556@brunix.UUCP> Date: Mon, 22-Jun-87 18:14:47 EDT Article-I.D.: brunix.16556 Posted: Mon Jun 22 18:14:47 1987 Date-Received: Thu, 25-Jun-87 04:44:14 EDT Sender: root@brunix.UUCP Lines: 35 The recent note on reuse of software made me think of the recent columns in Communications of ACM on WEB. (The column was Jon Bentley's Programming Pearls. WEB is a language invented by Don Knuth.) In my own programming, I try to write using abstract data types and all that. Although my interface designs always seem reasonable at the time, and always work fine for that program, when I try to use it in a new program, I seem to have always left something out (because it wasn't needed in the first program) or have the wrong functionality, or something. The article posted here (sorry, I forget the author) said, among other things, that maybe abstract data types are too low a level to aim for in reuse, and that we should try to reuse even higher level chunks of code. Maybe we should be trying to reuse lower level chunks of code. TeX and Metafont (Knuth's program, written in WEB) aren't written in the abstract data type style (as David Gries suggested, primarily because Gries thought such typles make it easy to build up libraries) in one of those Programming Pearls columns) but that didn't hinder Knuth from re-using large amounts code from TeX (the current version of which was written in 1982) to Metafont (in 1985). My own experiences with WEB code, on a smaller scale, are similar: it's easier to copy not abstract data types, but just pieces of code. I know people do have libraries of abstract data types that get used by lots of people. The Eiffel implementors (Bertrand Meyer, et. al.) claim they have one. The Ada people claim they have one. The C people claim they have one. And on and on. But maybe we should look at both higher AND lower levels than abstract data types for reusing code. Or maybe we should just always write from scratch. Duncan Hines and homemade don't compare in the kitchen. Karl. kbb@cs.brown.edu {decvax,ihnp4,allegra,...}!brunix!kbb