Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!elroy.jpl.nasa.gov!ncar!gatech!udel!haven.umd.edu!socrates.umd.edu!socrates!rockwell From: rockwell@socrates.umd.edu (Raul Rockwell) Newsgroups: comp.object Subject: Re: Readability of C/C++ vs. Readability of Ada Message-ID: Date: 17 May 91 05:03:11 GMT References: <72084@microsoft.UUCP> <1991May16.172129.14877@ap542.uucp> Sender: rockwell@socrates.umd.edu (Raul Rockwell) Organization: Traveller Lines: 43 In-Reply-To: david@ap542.uucp's message of 16 May 91 17: 21:29 GMT David E. Smyth: Software SHOULD be written to be maintained, not simply developed. APL, the best example of a write-only-language I know of, is really a WONDERFUL language for capturing everything you are thinking about right now. But if you are trying to solve a problem which takes many people to think about for a long time, then it is useless - you simply can't tell what the hell you did last week! Interesting idea, but total nonsense. I work in an APL shop -- we've got 6 people presently coding in APL (7 if you include the vp), mega-bytes of code (and gigabytes of data). Some of the code is 10 years old, some of it written by long departed programmers. Some of it is buggy, but mostly it runs fine. We maintain old code and develop new stuff... An interesting point is that everybody has systems-analyst responsibilities. (The coding work is generally so trivial it isn't worth hiring somebody to just crank out code.) The reason APL might be hard to maintain has nothing to do with the language, but the representation. Since the APL character set was not included in ASCII, most programmer tools do not work with APL (can you imagine programming without your favorite editor, without grep, etc.?). Of course, there are ways to work around all these problems (many utilities can be written trivially in APL, there are APL dialects which use ASCII, and X-windows supports the APL character set (and the kitchen sink, but that's another story)). obligatory object oriented stuff: APL (especially the newer dialects) treats encapsulization very nicely, but does not provide a user class structure (you can invent classes, but the primitives will treat them as raw data-structures). Part of the problem is that APL is essentially a functional language -- does anyone know of a way of implementing object classes using a functional notation? (no side effects) It seems like this ought to be possible, but every implementation I think of gets really messy when I get into the details of A f B where f is some function (addition, array declaration, whatever) and A and B are different user defined classes. Raul Rockwell