billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu (William Thomas Wolfe, 2847 ) (03/05/90)
From mjl@cs.rit.edu: > The problem with overloading is that it provides ad-hoc polymorphism: > it's pure syntactic sugar, with no semantic relationship (other than > convention) among the various uses of same symbol. Thus if you decide > to make "+" mean something radically different from addition, you set > up strong cognitive dissonance for the poor programmers (oops! software > engineers!) trying to use your package. While you may argue that no > one would do this, my experience is that a non-transitive relation > "sorta-like" soon takes hold: My experience is that it doesn't. And even if this were the case, one can simply use the "rename" facility to call "+" whatever is, in your view, a more appropriate and descriptive name. > SIDE NOTE: > > In his self-appointed role as apologist for Ada and defender of the > Faith, Bill Wolfe has repeatedly demonstrated his inability to > recognize, much less acknowledge, that any facility is Ada is less than > perfect, or that any facility in a competing language might have > something to offer. Gee, I thought I had posted numerous articles over the last six months regarding how object-oriented concepts might be integrated into the upcoming Ada 9X language revision... and I also thought I had mentioned the problem of "priority inversion" in Ada tasking. Ah, but this would interfere with your grandiose claims, right? > The tendency to mono-lingualism in software development is as > inhibiting and confining as it is in natural languages; the only hope > for a "cure" is a good, broad course in programming language concepts. > I hope Bill and adherents to other One True Languages take such a > course and gain some perspective and balance. Regrettably for this argument, the first edition of Terrence W. Pratt's book, "Programming Languages - Design and Implementation" was a book that I read with great interest back in early 1981. It strongly impressed upon me the impact that the choice of programming language can have upon reliability, readability, etc., and was largely responsible for my strong dissatisfaction with the languages which I had to use at that time. The surveying of other languages has simply strengthened my preference for Ada. Unlike other languages, Ada is subject to controlled and systematic revision. Therefore, if new concepts arise which are of practical significance to the production programmer, or if experience shows that existing facilities need to be modified, the necessary revisions will be accomplished in an orderly fashion. As pointed out by Fairley (Software Engineering Concepts, page 229), "Critics of Ada have the responsibility to study the characteristics of the intended application area and propose alternatives that account for those characteristics. In this manner, the technology of software engineering will evolve." And of course, other languages do not enforce portability by having a "no subsets, no supersets" policy or by having a compiler validation process which ensures that Ada compilers all perform according to exactly the same specifications (again ensuring portability). When this is combined with the extensive support for abstraction and for error prevention, Ada would seem to be the obvious choice. Bill Wolfe, wtwolfe@hubcap.clemson.edu