From: bertrand@eiffel.com (Bertrand Meyer)
Newsgroups: comp.lang.eiffel
Subject: Re: Intro. book on Eiffel Programming...?
Date: 28 Jul 92 15:49:25 GMT
Organization: Interactive Software Engineering, Santa Barbara CA

From <pyhmn2d.nagle@netcom.com> by nagle@netcom.com (John Nagle):


>         Remember, programming in Eiffel is supposed to be HARD.  You have
> to SUFFER for your art.  Eiffel is in the grand tradition of the the Hoare
> "programming is not for everyone" school.  The formalism is not to be
> avoided, but studied with dedication until it is mastered.  One can no
> more program properly without mastery of the formal approach than one can
> do physics without calculus.
> 
>         If you want OOP the easy way, use Smalltalk.

Another of Mr. Nagle's provocations. I can appreciate a good joke;
still, it may be useful to mention once again that ease of
learning and ease of use have always been major design goals for Eiffel.

Whether this goal has been reached or not is for others to
judge (for me Eiffel is easy enough, thanks); but every time the
question has come up on the net Eiffel users and teachers have posted
loud and clear messages, especially those who had also used other
object-oriented languages. I can dig up my archives if anyone is
interested.

Mr. Nagle's mention of Hoare is highly unfair.
Anyone familiar with the work of Tony Hoare and Hoare himself
knows his lifelong quest for simplicity. He has an instinctive
repulsion for anything that looks complicated, and will work on a
problem over and again until he can explain the solution clearly
and convincingly to any competent person. (Mr. Nagle would have had more
of a point if he had been referring to E.W. Dijkstra. Although Eiffel,
like all serious modern software engineering, has been heavily influenced
by Dijkstra's work, I do not share EWD's somewhat ascetic view
of software construction.)  

Coming back to Eiffel and the designer's conscious view (whether
or not realized in the language, which is there for everyone
to examine), please allow a self-quotation, from
the book ``Eiffel: The Language'', Prentice Hall, 1991,
page 504 (part of a section called ``Tolerance and discipline''):

    ====================== BEGIN QUOTE ================================

         A somewhat disciplinarian attitude is not  infrequent  in  the
    software community. One commonly hears such phrases as ``preventing
    the programmers from doing their  dirty  tricks''.   It  is  as  if
    language  designers  were invested with a moral duty, and languages
    were a rampart  against  the  threat  of  the  developers'  natural
    uncleanliness.
    
         I disagree with this view.   (This  will  seem  surprising  to
    those  who  have  heard  Eiffel  being categorized, I believe quite
    wrongly, as a language  of  the  restrictive  school.)  Programming
    language  designers  are  not in the chastity belt business.  Their
    role, to repeat a comment which I first heard many years  ago  from
    C.H.A.   Koster,  is  not  to  prevent  developers from writing bad
    software (a hopeless endeavor anyway), but to enable them to  write
    good software; and perhaps to make the task pleasurable as well.
    
         This must be applied together with the Principle of Uniqueness
    stated  above [IN THE BOOK]. If you exclude a certain facility, be
    it the goto or
    function pointers, it is not to save humanity from some abomination
    (although you may also be doing that) but because you are providing
    elsewhere a better way to achieve  the  goals  which  the  excluded
    constructs  purported to address. Loops and conditionals are better
    than gotos, and dynamic binding under the control of static  typing
    is better than function pointers.

    ====================== END   QUOTE ================================
-- 
-- Bertrand Meyer
Interactive Software Engineering Inc., Santa Barbara
bertrand@eiffel.com
Newsgroups: comp.lang.eiffel