[#3101] Compile_err — "Fergus Hayman" <shayman@...>
[#3109] Is divmod dangerous? — Dave Thomas <Dave@...>
[#3110] my wish list for Ruby — Mathieu Bouchard <matju@...>
[#3119] Re: Min and max? — ts <decoux@...>
>>>>> "M" == Mathieu Bouchard <matju@CAM.ORG> writes:
[#3149] Retrieving the hostname and port in net/http — Roland Jesse <jesse@...>
Hi,
[#3154] 3-d arrays? — Hugh Sasse Staff Elec Eng <hgs@...>
Is there an idiom for 3-dimensional arrays in Ruby? I see that
[#3167] ruby.h needed to compile Interbase module — Jilani Khaldi <jilanik@...>
Hi all,
[#3189] BUG or something? — "Park Hee Sob" <phasis@...>
Hi,
[#3221] Re: Ruby & Interbase -- Please answer if you know! — ts <decoux@...>
>>>>> "J" == Jilani Khaldi <jilanik@tin.it> writes:
[#3222] Ruby coding standard? — Robert Feldt <feldt@...>
On Fri, 9 Jun 2000, Robert Feldt wrote:
Mathieu Bouchard <matju@cam.org> wrote:
[#3277] Re: BUG or something? — Aleksi Niemel<aleksi.niemela@...>
> |I am new to Ruby and this brings up a question I have had
Aleksi Niemel<aleksi.niemela@cinnober.com> writes:
On 12 Jun 2000, Dave Thomas wrote:
ts <decoux@moulon.inra.fr> writes:
[#3296] RE: about documentation — Aleksi Niemel<aleksi.niemela@...>
> I want to contribute to the ruby project in my spare time.
Aleksi Niemel<aleksi.niemela@cinnober.com> writes:
Hi,
On Tue, 13 Jun 2000, Toshiro Kuwabara wrote:
Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#3331] Selling Rubies by the Carat — Dave Thomas <Dave@...>
[#3338] PID of child processes — Andrew Hunt <Andy@...>
[#3363] chomp! — "David Douthitt" <DDouthitt@...>
I was looking at the documentation for chomp and chomp! - and the results of chomp startled me to say the least.
[#3407] Waffling between Python and Ruby — "Warren Postma" <embed@...>
I was looking at the Ruby editor/IDE for windows and was disappointed with
[#3410] Exercice: Translate into Ruby :-) — Jilani Khaldi <jilanik@...>
Hi All,
Jilani Khaldi <jilanik@tin.it> writes:
Hi,
"NAKAMURA, Hiroshi" <nahi@keynauts.com> writes:
Hi, Dave,
Hello,
[#3453] Re: Static Typing( Was: Waffling between Python and Ruby) — Andrew Hunt <andy@...>
[#3515] Options database (was: Define & Include?) — claird@... (Cameron Laird)
In article <8ikot4$ki$0@216.39.170.247>, Dave LeBlanc <whisper@oz.net> wrote:
[#3516] Deep copy? — Hugh Sasse Staff Elec Eng <hgs@...>
Given that I cannot overload =, how should I go about ensuring a deep
In message "[ruby-talk:03516] Deep copy?"
On Tue, 20 Jun 2000, GOTO Kentaro wrote:
Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#3532] Extension in C++? — Robert Feldt <feldt@...>
[#3541] function objects? — Johann Hibschman <johann@...>
Hi folks,
[#3544] A small quiz — Dave Thomas <Dave@...>
[#3588] Interface polymorphism — hal9000@...
Another question, guys.
[#3607] Is there a statistician in the house? — Dave Thomas <Dave@...>
[#3662] Ruby 1.4.5 install from Mandrake cooker rpms ?problem? — Charles Hixson <charleshixsn@...>
This is the first time that I've installed ruby, so
[#3685] no traffic — matz@... (Yukihiro Matsumoto)
Hi,
[#3694] Why it's quiet — hal9000@...
We are all busy learning the new language
Hi,
Hi,
Hi, matz,
Hi,
Hi,
[#3699] Multithreaded/Embedded Ruby? — "Warren Postma" <embed@...>
Is there any information on Thread safety in ruby. Suppose I embed Ruby in a
Hi,
[ruby-talk:03579] Re: Static Typing( Was: Waffling between Python and Ruby)
"Frank Mitchell" <frankm@bayarea.net> writes: > Hmm ... isn't the whole point of Design By Contract to "fail fast"? > Checking conformance to an interface lazily would lead to failing in > the middle of a method where the reason would be less clear, or, > worse, failing only in a particular branch of an "if" or "case" > statement. I don't believe that's the _emphasis_ of Dbc. My reading of Meyer, and my practical experience, tells me that DbC is a design technique, a means of expressing the specification of a piece of code and of guiding the implementation of that code. It's a way of bringing a design closer to the code, and documenting that design in the code. A side effect is that you can express that specification in executable form. Look at OOSC2 pg 341: "You may decide to treat assertions purely as comments..". "In some circumstances (for example testing and debugging) it will indeed be useful to evaluate assertions; in others (for example production runs of fully validated systems) you can treat them as mere annotations to the software text." (I happen to disagree with that last point as a generalization) In the case of the untyped language, I see no realistic way of testing that the method will succeed with a given set of input parameters unless the precondition effectively executes all the code in that method. Is this a problem? Not in my experience. If it were, I wouldn't be advocating untyped languages now. But the reality is that I can't remember the last time that I personally got caught by passing an incorrect object in to some method. On of the joys of these languages is that you can try out your code as you write it, so these error occur far less frequently than in the more batch-oriented world. > (I also believe not specifying the *contract* of each involved > object's methods is a mistake. On a large-ish Objective-C system I > worked on we had a few bugs caused by passing the wrong object that > just happened to implement the right method in the wrong way. > E.g. "price" as a message to return an attribute vs. "price" as a > command to initiate an involved calculation with numerous side > effects which fails because the object isn't in a consistent state.) So, I'm the routine that writes a value to the database. I'm passed a database object and an integer. (OK, ignore the design issues here) You say I should check the contract of the methods of objects I'm supplied? So every time I write out an integer, I should do a quick database acceptance test? Sounds like a performance problem to me ;-) (not to mention a gross breakdown in encapsulation). This isn't a typed vs. untyped issue. Even in Eiffel, if a method breaks its class' invariant, you don't know until you've called it. So the same thing applies. Unless the precondition has some kind of transactional way of duplicating all the code in a method, it can never be certain, in Eiffel or in Ruby, that routines called from that method will succeed. DbC is not a proof of correctness. It is simply a way of bringing the design closer to the code, and of checking some aspects of the code against that design at runtime. Let's not all get too hung up on trying to push it too far. Regards Dave ___________________________________________________________________________ | The Pragmatic Programmers, LLC | http://www.pragmaticprogrammer.com | | Read "The Pragmatic Programmer" | www.pragmaticprogrammer.com/ppbook/ | ---------------------------------------------------------------------------