[#8566] Visions for 2001/1.7.x development? — Robert Feldt <feldt@...>

Hi matz and other Ruby developers,

18 messages 2001/01/03
[#8645] Re: Visions for 2001/1.7.x development? — matz@... (Yukihiro Matsumoto) 2001/01/04

Hi,

[#8580] bug?? — jmichel@... (Jean Michel)

I don't understand the following behaviour:

19 messages 2001/01/03

[#8633] Interesting Language performance comparisons - Ruby, OCAML etc — "g forever" <g24ever@...>

13 messages 2001/01/04

[#8774] No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...>

So, why not include Comparable in Array by default? It shouldn't have any

28 messages 2001/01/07
[#8779] Re: No :<, :>, etc. methods for Array — matz@... (Yukihiro Matsumoto) 2001/01/07

Hi,

[#8780] Re: No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...> 2001/01/07

matz@zetabits.com (Yukihiro Matsumoto) wrote:

[#8781] Re: No :<, :>, etc. methods for Array — gotoken@... (GOTO Kentaro) 2001/01/07

In message "[ruby-talk:8780] Re: No :<, :>, etc. methods for Array"

[#8782] Re: No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...> 2001/01/07

gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro) wrote:

[#8829] Sandbox (again) — wys@... (Clemens Wyss)

Hi,

20 messages 2001/01/08
[#8864] Re: Sandbox (again) — Clemens Hintze <c.hintze@...> 2001/01/08

On 8 Jan, Clemens Wyss wrote:

[#8931] String confusion — Anders Bengtsson <ndrsbngtssn@...>

Hello everyone,

21 messages 2001/01/09
[#8937] Re: String confusion — matz@... (Yukihiro Matsumoto) 2001/01/09

Hi,

[#8953] Please remove account from files — "Thomas Daniels" <westernporter@...>

Please take my e-mail address from your files and "CANCEL" my =

14 messages 2001/01/09
[#8983] Re: Please remove account from files — John Rubinubi <rubinubi@...> 2001/01/10

On Wed, 10 Jan 2001, Thomas Daniels wrote:

[#9020] time to divide -talk? (was: Please remove account from files) — Yasushi Shoji <yashi@...> 2001/01/10

At Wed, 10 Jan 2001 14:23:30 +0900,

[#9047] Re: time to divide -talk? (was: Please remov e account from files) — Aleksi Niemel<aleksi.niemela@...>

Yasushi Shoji:

27 messages 2001/01/10
[#9049] Re: time to divide -talk? — Yasushi Shoji <yashi@...> 2001/01/10

At Thu, 11 Jan 2001 00:20:45 +0900,

[#9153] what about this begin? — Anders Strandl Elkj誡 <ase@...> 2001/01/11

[#9195] Re: Redefining singleton methods — ts <decoux@...>

>>>>> "H" == Horst Duch=EAne?= <iso-8859-1> writes:

10 messages 2001/01/12

[#9242] polymorphism — Maurice Szmurlo <maurice@...>

hello

73 messages 2001/01/13

[#9279] Can ruby replace php? — Jim Freeze <jim@...>

When I read that ruby could be used to replace PHP I got really

15 messages 2001/01/14

[#9411] The Ruby Way — "Conrad Schneiker" <schneiker@...>

As a member of the "Big 8" newsgroups, "The Ruby Way" (of posting) is to

15 messages 2001/01/17

[#9462] Re: reading an entire file as a string — ts <decoux@...>

>>>>> "R" == Raja S <raja@cs.indiana.edu> writes:

35 messages 2001/01/17
[#9465] Re: reading an entire file as a string — Dave Thomas <Dave@...> 2001/01/17

raja@cs.indiana.edu (Raja S.) writes:

[#9521] Larry Wall INterview — ianm74@...

Larry was interviewed at the Perl/Ruby conference in Koyoto:

20 messages 2001/01/18
[#10583] Re: Larry Wall INterview — "greg strockbine" <gstrock@...> 2001/02/08

Larry Wall's interview is how I found out

[#9610] Re: 101 Misconceptions About Dynamic Languages — "Ben Tilly" <ben_tilly@...>

"Christian" <christians@syd.microforte.com.au> wrote:

13 messages 2001/01/20

[#9761] Re: 101 Misconceptions About Dynamic Languages — ts <decoux@...>

>>>>> "C" == Christoph Rippel <crippel@primenet.com> writes:

16 messages 2001/01/23

[#9792] Ruby 162 installer available — Dave Thomas <Dave@...>

15 messages 2001/01/24

[#9958] Re: Vim syntax files again. — "Conrad Schneiker" <schneik@...>

Hugh Sasse wrote:

14 messages 2001/01/26
[#10065] Re: Vim syntax files again. — Hugh Sasse Staff Elec Eng <hgs@...> 2001/01/29

On Sat, 27 Jan 2001, Conrad Schneiker wrote:

[#9975] line continuation — "David Ruby" <ruby_david@...>

can a ruby statement break into multiple lines?

18 messages 2001/01/27
[#9976] Re: line continuation — Michael Neumann <neumann@...> 2001/01/27

On Sat, 27 Jan 2001, David Ruby wrote:

[#9988] Re: line continuation — harryo@... (Harry Ohlsen) 2001/01/28

>A statement break into mutliple lines if it is not complete,

[ruby-talk:8801] Re: Modules and mixins

From: Clemens Hintze <c.hintze@...>
Date: 2001-01-08 00:20:05 UTC
List: ruby-talk #8801
On  7 Jan, Holden Glova wrote:
> Hello all,

Hello you, :-)

(...)

> I have never had an exposure to anything like mixins throughout my
> degree and sadly am feeling quite lost, which I'm sure will pass with
> time and hopefully the patience of the list as I ask silly questions
> about this topic.

do not feel to sad! It is not such a big issue. What makes it a bit
difficult to explain, however, is that due to Ruby's flexibility and
power, the answer comes in three flavours, at least. You know, although
Ruby is a real and complete OOL, it let *you* decide to use which
paradigm to program in. It do not force you to use OOP at all.

The three paradigms, Ruby supports and I want to mention, are:

o Procedural programming
  In this paradigm you use classes as struct/record like datatype
  definition. Or you can use the class OpenStruct for this
  purpose instead.

  Modules, however, will be used to build ... ehrm ... just modules. ;-)
  Namespaces to group functions and data together. Much like in e.g.
  Modula 2, Oberon, Turbo Pascal's Units or even C++ namespaces. But
  modules, of course, can do much more ...

o OOP (Class based)
  Here modules have additional sense. You can use them like in the
  procedural programming, explained above, but you can use them also to
  group functionalities together. These functionalities have not
  necessarily anything to do with any certain class.

  A good example is e.g. the module Enumerable. This module contains
  many functionalities (coded using methods) that describe tasks that
  could be applied to any container/stream or whatever like instance
  that can iterate thru its contained objects via method 'each'.

  You could see a module as the brother at the other end of the spectrum
  of class based OOP. Classes describes objects and the methods that
  could be applied on them. Modules describe functionalities that could
  be applied to *any* object, iff certain preconditions (e.g. existence
  of certain method(s)) are met. Or using another POV: A class group
  data, making the internal state of an object and some code that could
  be applied on *that* set of data, whereas a module group tasks
  (code) together that seeming to belong into same family but not
  necessarily depending on an object's internal state.

  In languages like C++ or even Python, there is no such concept like
  Ruby's modules. Here you have to mis-use (IMHO, of course) classes to
  group only functionalities and use them via multiple inheritance. Not
  worth the trouble IMO, as *true* multiple inheritance (A is_a B and A
  is_a C) is really seldom necessary!

o Classless OO
  That paradigm is also called prototype based programming. Here you
  really didn't need classes to do anything in your program. While in
  'classic' OO, you need to create a class to describe the objects
  (means instances) you want to create, in classless OO you simply build
  concrete, ready-to-use objects with desired structure and behavior. If
  you need more then one instantiation of such an object, you simply
  clone an already existing one and have two of them then.

  In Ruby you can also use modules here to build the concrete objects of
  prototype based system. By doing this, modules will therefore not only
  contain similar functionalities, unlike in the class based OO, but
  also data to reflect internal state of that special object. A further
  usage of modules in Ruby ...

Of course, nobody will prevent you from mixing these all in your program
;-)

> What I really don't understand is when do I use a module? How do I
> know that I should have a class in this module that is to be
> "extended" from in it's useage. What heuristics do you folks use?
> What patterns do you follow that spark these design decisions?

Reading my sermon above, you possibly may get some hints for what
modules can be good for. Of course Ruby will not enforce you to chose
one way over another one for your programming. All is anytime available.
Use whatever you want to use. Ruby "(...)stays out of your way(...)" and
features all your ideas!

A further hint: please do not restrict yourself by using a classical
approach! Try to find out what meets your needs and decide *then*. I
have tried to show you only the beginning of the way, the rest you will
have to find out for yourself on your journey; and all the fun is on
that journey, indeed :-)))

Perhaps tell us later, what you have found then, yes? :-)

> Thanks in advance for any contributions to this topic.

(...)

> Signed,
> Holden Glova


HTH,
\cle

In This Thread

Prev Next