comp.lang.ada
 help / color / mirror / Atom feed
From: gedb@rushcoding.co.uk (Ged)
Subject: Re: OOP Language for OS Development
Date: 5 May 2004 04:58:34 -0700
Date: 2004-05-05T04:58:34-07:00	[thread overview]
Message-ID: <1a81ad90.0405050358.b1115f6@posting.google.com> (raw)
In-Reply-To: 3AFic.17011$eK3.5247@nwrdny01.gnilink.net

Hyman Rosen <hyrosen@mail.com> wrote in message news:<3AFic.17011$eK3.5247@nwrdny01.gnilink.net>...
> [...]
> If the template happens to work for
> some class that doesn't conform to T, why should it be prevented from doing
> so?
> 
Because in Eiffel its all about the contract.

When the interface accepts paramaters to conform to T the objects
author is taking on a responsibility to ensure that the feature will
always accept a paramater that conforms to T.  The compiler will do
everything it can to help the author meet that commitment.

This means that when the author of another objects uses this object,
he can make sure that he meets the type requirements expressed in the
interface and then move on.

The contract works for both the programmers.  The client programmer
can be confident that future updates to the library are not going to
break his code.  The library programmer can be update code confident
that he will not cause any damage to his clients.

This extra effort helps to avoid situations like this one,
http://www.kuro5hin.org/story/2004/2/15/11942/2702, where Microsoft
developers are forced to code around the dependancy that Borland had
upon a bug.

In summary, you have at least 3 levels:

- Should always work. 
- Happens to works now, but may change. 
- Does not work. 

The middle grey area can be a source of future problems, and should be
avoided.  This is why somebody should be prevented from doing
something that happens to work.

Of course, how much benefit you attach to this all depends upon the
domain you work within.  For some it is essential, for others it is
nuisance.



  parent reply	other threads:[~2004-05-05 11:58 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-15  5:53 OOP Language for OS Development KingIshu
2004-04-15  8:02 ` Martin Krischik
2004-04-15 12:25 ` Ioannis Vranos
2004-04-15 12:49   ` Ioannis Vranos
2004-04-15 12:39 ` Thomas Gagné
2004-04-15 14:32 ` jeffc
2004-04-15 14:45 ` Luke Guest
2004-04-17 16:30 ` Ender Everett
2004-04-19  1:53 ` EventHelix.com
2004-04-19  7:25   ` Martin Krischik
2004-04-19  8:35   ` Jean-Pierre Rosen
2004-04-19  9:16     ` Ioannis Vranos
2004-04-19 11:15       ` Jean-Pierre Rosen
2004-04-19 11:32       ` Martin Krischik
2004-04-19 17:36       ` Christopher Benson-Manica
2004-04-19 11:09   ` Philippe Ribet
2004-04-22  7:34     ` Calum
2004-04-22 10:48       ` John English
2004-04-23  8:36       ` Philippe Ribet
2004-04-23  9:55         ` Calum
2004-04-23 14:30           ` Steven Wurster
2004-04-23 15:04             ` Hyman Rosen
2004-04-23 22:08               ` Brian_Heilig
2004-04-23 22:33                 ` Hyman Rosen
2004-04-24 12:53                   ` Robert C. Martin
2004-04-25  1:25                     ` Steven Wurster
2004-04-25 12:30                       ` Robert C. Martin
2004-04-24 19:58                   ` Anthony Weissenberger
2004-04-25  2:24                     ` Hyman Rosen
2004-04-24  0:01               ` Steven Wurster
2004-04-24 15:27             ` JKop
2004-04-24 21:41               ` Greg C
2004-04-24 22:17               ` Steven Wurster
2004-04-29 17:43               ` Brian_Heilig
2004-04-23 16:22           ` Georg Bauhaus
2004-04-23 16:45             ` Hyman Rosen
2004-04-23 20:13               ` Georg Bauhaus
2004-04-23 21:18                 ` Hyman Rosen
2004-04-24 10:33                   ` Georg Bauhaus
2004-04-25  2:27                     ` Hyman Rosen
2004-04-23 23:03               ` Brian_Heilig
2004-04-25  2:42                 ` Hyman Rosen
2004-05-04 18:37                   ` Dr Chaos
2004-05-05 11:58                   ` Ged [this message]
2004-05-05 12:28                     ` Thomas Gagné
2004-05-06  9:35                       ` Ged
2004-04-24  0:10               ` Steven Wurster
2004-04-25  2:37                 ` Hyman Rosen
2004-04-24  1:00 ` Brian_Heilig
2004-04-26  3:43   ` Berend de Boer
2004-04-26  4:17     ` Christopher Browne
2004-04-26 21:52       ` Berend de Boer
2004-05-04  4:14     ` Richard  Riehle
2004-05-04 21:15       ` Berend de Boer
2004-04-28 19:53   ` Philippe Ribet
2004-04-29  8:32     ` Georg Bauhaus
2004-04-30 17:48       ` Philippe Ribet
2004-04-29 17:39     ` Brian_Heilig
     [not found]       ` <1402879.WneVss6BD6@linux1.krischik.com>
     [not found]         ` <ba03b545.0404300503.376243c8@posting.google.com>
     [not found]           ` <c6tk6v$amm$1@news.BelWue.DE>
2004-04-30 13:46             ` Preben Randhol
2004-04-30 19:30             ` Steven Wurster
2004-04-24 22:09 ` Thomas Gagné
2004-04-25  2:17   ` Hyman Rosen
2004-04-25 16:31     ` Alexander E. Kopilovich
2004-04-25 16:58     ` Isaac Gouy
2004-04-26  0:01       ` Cesar Rabak
2004-04-26  6:14         ` Isaac Gouy
2004-04-26  2:06       ` Thomas Gagné
2004-04-25 16:29   ` Alexander E. Kopilovich
2004-04-26  4:17   ` Christopher Browne
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox