[comp.software-eng] Programming languages

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