[#18974] Perl/Python/Ruby common backend (Perl6) — ptkwt@...1.aracnet.com (Phil Tomson)

There is a thread about using .NET's CLR as a backend for Ruby, but how

17 messages 2001/08/01

[#19064] ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — David Alan Black <dblack@...>

17 messages 2001/08/03
[#19184] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — John Carter <john.carter@...> 2001/08/06

On Fri, 3 Aug 2001, David Alan Black wrote:

[#19185] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — David Alan Black <dblack@...> 2001/08/06

Hello --

[#19186] Re: ANN: Code Amelioration Contest (presented by Ruby Conference 2001) — John Carter <john.carter@...> 2001/08/06

On Mon, 6 Aug 2001, David Alan Black wrote:

[#19125] My 1st look @ ruby: No prototypes and problem with String#gsub — stesch@... (Stefan Scholl)

My first ruby program:

23 messages 2001/08/04

[#19192] Some remarks from a nembie in Ruby — Renaud HEBERT <renaud.hebert@...>

After having read the book "Programming Ruby: The Pragmatic Programmer's

38 messages 2001/08/06

[#19269] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — ptkwt@...1.aracnet.com (Phil Tomson)

In article <72X97.12093$9i1.972452@e420r-atl1.usenetserver.com>,

50 messages 2001/08/07
[#19349] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — Mathieu Bouchard <matju@...> 2001/08/08

[#19456] Re: Perl/Python/Ruby common backend (Parrot, can Ruby play too?) — Harry Ohlsen <harryo@...> 2001/08/09

Ned Konz wrote:

[#19451] Re: Help! I'm still confused about threadin g in the ML — "Morris, Chris" <chris.morris@...>

> Is there an Outlook option to turn on In-Reply-To or References

14 messages 2001/08/09
[#19453] Re: Help! I'm still confused about threadin g in the ML — Dave Thomas <Dave@...> 2001/08/09

"Morris, Chris" <chris.morris@snelling.com> writes:

[#19506] the way class variables work — David Alan Black <dblack@...>

Hello --

51 messages 2001/08/10
[#19511] Re: the way class variables work — Chris Uzdavinis <chris@...> 2001/08/11

David Alan Black <dblack@candle.superlink.net> writes:

[#19524] order and freedom in Ruby (was: Re: Re: the way class variables work) — David Alan Black <dblack@...> 2001/08/11

Hello --

[#19517] Why not?: Assigning to self — furufuru@... (Ryo Furue)

Hi there,

55 messages 2001/08/11
[#19689] Re: Why not?: Assigning to self — Ron Jeffries <ronjeffries@...> 2001/08/14

On 13 Aug 2001 20:59:54 -0700, furufuru@ccsr.u-tokyo.ac.jp (Ryo Furue)

[#19694] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 05:09 am, Ron Jeffries wrote:

[#19695] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19696] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 07:51 am, you wrote:

[#19697] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19700] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 08:27 am, you wrote:

[#19701] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19703] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:05 am, Guy Decoux wrote:

[#19704] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19708] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:27 am, you wrote:

[#19709] Re: Why not?: Assigning to self — ts <decoux@...> 2001/08/14

>>>>> "N" == Ned Konz <ned@bike-nomad.com> writes:

[#19713] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/14

On Tuesday 14 August 2001 09:45 am, you wrote:

[#19750] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/15

Hi,

[#19819] Re: Why not?: Assigning to self — Ned Konz <ned@...> 2001/08/15

On Tuesday 14 August 2001 08:14 pm, matz wrote:

[#19852] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/16

Hi,

[#19857] Re: Why not?: Assigning to self — "Florian G. Pflug" <fgp@...> 2001/08/16

On Thu, Aug 16, 2001 at 11:05:59AM +0900, Yukihiro Matsumoto wrote:

[#19858] Re: Why not?: Assigning to self — matz@... (Yukihiro Matsumoto) 2001/08/16

Hi,

[#19867] Re: Why not?: Assigning to self — "Pit Capitain" <pit@...> 2001/08/16

Just a followup at (my) current end of the thread:

[#19550] Forced garbage collection — Lars Christensen <larsch@...>

14 messages 2001/08/11
[#19562] Re: Forced garbage collection — "Nat Pryce" <nat.pryce@...13media.com> 2001/08/12

From: "Lars Christensen" <larsch@cs.auc.dk>

[#19551] /.ed again — Tobias Reif <tobiasreif@...>

Ruy gets slasdotted again ;)

19 messages 2001/08/11

[#19650] Ruby Newbie mailing list — Michael Pence <mikepence@...>

Hello all.

14 messages 2001/08/13
[#19656] RE: Ruby Newbie mailing list — "Louis Brothers" <lcb134@...> 2001/08/13

We had a similar discussion on the OmniWeb Objective-C mailing list not to

[#19659] Re: Ruby Newbie mailing list — Michael Pence <mikepence@...> 2001/08/13

I appreciate your references to Objectionable-C ;-)

[#19685] Compiling Ruby with cygwin and Tk support — Manuel Zabelt <ng@...>

Hello!

13 messages 2001/08/14

[#19718] General (GUI/license) questions — Ryan Tarpine <rtarpine@...>

First: Kero commented in the description of his new Ruby Agenda program

18 messages 2001/08/14

[#19755] "new" returning nil: how to report the failure of object creation — furufuru@... (Ryo Furue)

Hi there,

14 messages 2001/08/15

[#19758] The GUI poll is in, and the results are surprising — Dave Thomas <Dave@...>

40 messages 2001/08/15
[#19774] Re: The GUI poll is in, and the results are surprising — Lars Christensen <larsch@...> 2001/08/15

On Wed, 15 Aug 2001, Dave Thomas wrote:

[#19784] Re: The GUI poll is in, and the results aresurprising — "Lyle Johnson" <ljohnson@...> 2001/08/15

> Please don't forget what Ruby is all about in this discussion! I think

[#19824] Ruby GUI — "Hal E. Fulton" <hal9000@...>

The concept of a new GUI is somewhat appealing,

16 messages 2001/08/15

[#20033] Ruby Article — Joshua Drake <jd.nospam@...>

Hello,

38 messages 2001/08/20

[#20127] Another Possible RCR - Wrappers via Mixins — Stephen White <spwhite@...>

The main difference between mix-ins and multiple inheritence is (to my understanding) that parent classes do not call child code, but mix-ins do.

15 messages 2001/08/22

[#20135] Bruce Eckel's criticism of Ruby — Ned Konz <ned@...>

Python.org links to http://www.mindview.net/Etc/notes.html#Ruby , saying

24 messages 2001/08/22

[#20183] ++ Operator — kamphausen@... (SKa)

Dear Community,

35 messages 2001/08/23
[#20234] Re: ++ Operator — Dave Thomas <Dave@...> 2001/08/24

matz@ruby-lang.org (Yukihiro Matsumoto) writes:

[#20236] Re: ++ Operator — matz@... (Yukihiro Matsumoto) 2001/08/24

Hi,

[#20209] In Ruby 0 is true but nil is false.. or how to shoot yourself?.. — Guillaume Cottenceau <gc@...>

I have a simple Audio-CD database (using CSV format). I was writing a

11 messages 2001/08/23

[#20254] File.readline(s) — Michael Husmann <michael.husmann@...>

I am reading a 55MB ASCII file by using File.readline(s) which takes on

14 messages 2001/08/24

[#20303] New Windows InstallShield version of Ruby — Andrew Hunt <andy@...>

19 messages 2001/08/24

[#20307] Backwards language — "Sean Middleditch" <elanthis@...>

Greetings,

30 messages 2001/08/24

[ruby-talk:19565] Re: order and freedom in Ruby (was: Re: Re: the wayclass variables work)

From: "Nat Pryce" <nat.pryce@...13media.com>
Date: 2001-08-12 02:05:02 UTC
List: ruby-talk #19565
From: "Chris Uzdavinis" <chris@atdesk.com>
> "Nat Pryce" <nat.pryce@b13media.com> writes:
> > In Ruby, instead of defining classes or interfaces, you define
> > protocols that objects should speak, and define those protocols
> > outside the language.
>
> This is interesting.  What distinction do you make between protocol
> and interface?  Can the protocol be independent from the interface?

A protocol encompasses (a) more than one interface and (b) how and when
the parties in a protocol can invoke methods on those interfaces, and what
parameters they can pass to those invocations.

> > You can then define useful classes or modules that implement those
> > protocols, but a programmer can just as easily write the protocol
> > from scratch.
>
> Yes, in that regard, every ruby function is like a C++ function
> template.  (Gotta make those C++ comparisons...!)
>
>   template <typename T> void foo(T arg) { /*...*/ }
>
> Rather than an "interface" which is a fixed, hard coded set of
> requirments, of which perhaps only a subset is actually used,
> templates use what they call the "concept" approach.  ANY arg can be
> passed in provided that it supports all the necessary concepts which
> the code places on it.  (The difference is a compile-time check is
> made, rather than runtime.)

It is similar to a C++ template in that C++ templates are turing complete
and dynamically typed.  You can, if perverse enough, write complete
programs in C++ templates and have then interpreted by the C++
compiler!  Similarly, Ruby programs are turing complete and dynamically
typed.  However, Ruby has a human-friendly syntax and a far more
convenient development environment :-)

Just as with C++ templates, violating protocols in a dynamically typed
language can result in obscure error messages. The C++ community is
developing mechanisms to type-check templates as early as possible.
In a dynamically typed language, unit tests fulfill the same role.

> > An simple example of this kind of protocol is the relationship
> > between the methods hash and eql? or the Enumerable mixin requiring
> > the existence of the each method.
>
> These are good examples.  Do you think that when we write Ruby code
> that this type of mindset should be the primary kind of issues we
> think about?

Yes.

This is the fundamental mind-set that I use when desiging OO code, whether
in a dynamically typed language or a statically typed language.  A
statically
typed language lets you define interfaces or abstract classes, but they
don't
actually let you define the *protocols* by which objects interact, and so
are only of limited practical use.

> How would you suggest we recover when an argument does not support the
> protocol?  Since Ruby is dynamic, object x may not support it now, but
> if you try again later it might.  Or vice versa.

You don't recover.  That's a programming error -- a bug.  Programming errors
are the fault of the programmer and should be caught by unit tests.  If an
error occurs at run time you should (a) write a unit test that fails because
of
the error and (b) fix the code so that the unit test passes.  You now have
better code and a more complete suite of tests.

> There certainly is an element of uncertainty introduced along with all
> the dynamic capabilities.

Only if you don't have adequate tests.  Dynamic code is a convenience,
and a great one.  However, the behaviour of a package will not magically
change because it is written in dynamic code.  The behaviour of the package
should be specified both in terms of protocols, and by a good suite of
unit tests.

> The trick is keeping it balanced to where
> you can know what's going on but still have flexibility.
> I still have this uneasy feeling, though, that nothing can ever be
> completely trusted, because perfectly working code can easily be
> broken by other code in another file which is completely unrelated to it.

Again, only if code is not properly specified and tested.  Unit tests are an
executable specification of how code should behave.

> It seems you have to really know everything that is going on in a
> program to know if it's going to work.  Though there are Modules to
> kind of separate things, it's not truly modular since if your code and
> mine are running in the same program, my code can break yours, and
> vice versa.
>
> The risk to me is not all just type, but behavior too.  In a big
> application it's unreasonable to expect everyone to study every line
> of every file that everyone else is working on.
>
> So when someone modifies the behavior of Array class such that []
> becomes 1-based, for example, he breaks MY working code, which hasn't
> changed.

Again, use automatic test suites!  Never do by hand that which a
computer can do automatically :-)

Cheers,
            Nat.


In This Thread