[#17198] enhancing Ruby error messages for out of the bound constant Fixnum? — Guillaume Cottenceau <gc@...>

Hi,

11 messages 2001/07/03

[#17206] /* */ comments — Dave Thomas <Dave@...>

43 messages 2001/07/04
[#17207] Re: /* */ comments — Stephen White <spwhite@...> 2001/07/04

On Wed, 4 Jul 2001, Dave Thomas wrote:

[#17251] Re: /* */ comments — Sean Chittenden <sean-ruby-talk@...> 2001/07/04

> Over on http://www.rubygarden.org, dv posted a patch to parse.y that

[#17268] Re: /* */ comments — matz@... (Yukihiro Matsumoto) 2001/07/05

Hi,

[#17212] Ruby 1.6.4 Win32 .exe installer question — A Bull in the China Shop of Life <feoh@...>

Folks;

11 messages 2001/07/04

[#17225] Re: /* */ comments — Arnaud Meuret <ameuret@...4you.com>

|From: Mark Slagell [mailto:ms@iastate.edu]

17 messages 2001/07/04

[#17240] Ruby Mascot/logo — "Kevin Powick" <kpowick@...>

Hi there.

14 messages 2001/07/04

[#17281] Inheritance — "Aleksei Guzev" <aleksei.guzev@...>

15 messages 2001/07/05
[#17282] Re: Inheritance — ts <decoux@...> 2001/07/05

>>>>> "A" == Aleksei Guzev <aleksei.guzev@bigfoot.com> writes:

[#17348] Adding a method to a class at the top-level — Guillaume Cottenceau <gc@...>

Comrades,

14 messages 2001/07/05

[#17482] Aliases for class methods — "HarryO" <harryo@...>

Say I wanted to write my own version of File#open that adds some

23 messages 2001/07/08

[#17511] Ruby on Slashdot — jweirich@...

Ruby is currently mentioned on Slashdot. I posted some references.

29 messages 2001/07/08
[#17512] Re: Ruby on Slashdot — Tobias Reif <tobiasreif@...> 2001/07/08

Interesting...

[#17518] Re: Ruby on Slashdot — matz@... (Yukihiro Matsumoto) 2001/07/09

Hi,

[#17519] Re: Ruby on Slashdot — "James (ruby-talk)" <ruby@...> 2001/07/09

> |I thought about that too; what about Ruby being a standard?

[#17525] Re: Ruby on Slashdot — matz@... (Yukihiro Matsumoto) 2001/07/09

Hi,

[#17536] Re: Ruby on Slashdot — David Alan Black <dblack@...> 2001/07/09

Hello --

[#17572] Re: Constants and Variables — "HarryO" <harryo@...>

> If you want objects that don't change, try Object#freeze,

25 messages 2001/07/10

[#17732] Re: Array#sort! returns nil when array empty — hfulton@...

> Array#sort! returns nil if the array is empty, whereas ri

32 messages 2001/07/12
[#17736] Re: Array#sort! returns nil when array empty — Paul Brannan <pbrannan@...> 2001/07/12

On Fri, 13 Jul 2001 hfulton@pop-server.austin.rr.com wrote:

[#17739] Re: Array#sort! returns nil when array empty — ts <decoux@...> 2001/07/12

>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:

[#17746] Re: Array#sort! returns nil when array empty — Paul Brannan <pbrannan@...> 2001/07/12

On Fri, 13 Jul 2001, ts wrote:

[#17747] What is Array#- ? — Jim Freeze <jim@...> 2001/07/12

While following the Array thread, I noticed the minus

[#17752] Re: What is Array#- ? — Dave Thomas <Dave@...> 2001/07/12

Jim Freeze <jim@freeze.org> writes:

[#17753] Re: What is Array#- ? — Jim Freeze <jim@...> 2001/07/12

On Fri, 13 Jul 2001, Dave Thomas wrote:

[#17833] Extending objects — "Aleksei Guzev" <aleksei.guzev@...>

16 messages 2001/07/14
[#17834] Ruby-newbie seeks help with Rubywin starting IRB — "Euan Mee" <lucid@...> 2001/07/14

Once I fire up Rubywin, and then invoke _R_uby _I_rb from the

[#17839] Re: Ruby-newbie seeks help with Rubywin starting IRB — A Bull in the China Shop of Life <feoh@...> 2001/07/14

At 07:05 PM 7/14/01 +0900, Euan Mee spewed forth:

[#17859] Re: Creating methods on the fly — "HarryO" <harryo@...>

I

18 messages 2001/07/15

[#17925] Movement in scripting language communities to integrate XML-RPC — gsemones@... (Guerry Semones)

Greetings,

20 messages 2001/07/16
[#17934] Re: Movement in scripting language communities to integrate XML-RPC — Tobias Reif <tobiasreif@...> 2001/07/16

"out of the box" by including

[#18018] Broadcasting data — "HarryO" <harryo@...>

Does someone have an example of broadcasting data around a network using

12 messages 2001/07/18

[#18023] [ANN] libxslt Rubified! — Wai-Sun Chia <waisun.chia@...>

Hello,

16 messages 2001/07/18
[#18024] Re: [ANN] libxslt Rubified! — TAKAHASHI Masayoshi <maki@...> 2001/07/18

Wai-Sun Chia <waisun.chia@compaq.com> wrote:

[#18100] Looking for Ruby programming exercises — Wayne Vucenic <wvucenic@...> 2001/07/19

I've been learning Ruby, mostly with the Pickaxe book, and it's going

[#18188] Newbie. Sinking fast. Please help. — Matt <matt@...>

I bought Programming Ruby a number of months back and finally have an opportunity to try out Ruby. However, I can't get it to build. Actually, that's not quite accurate. It builds fine. It won't pass 'make test'.

12 messages 2001/07/20

[#18193] Re: 99 bottles of beer — "Dat Nguyen" <thucdat@...>

18 messages 2001/07/20
[#18204] Re: 99 bottles of beer — Glen Starchman <glen@...> 2001/07/20

99.downto(0){|x|w=" on the wall";u="#{x!=0?eval(x.to_s):'no more'}

[#18306] Ruby as opposed to Python? — "Mark Nenadov" <mnenadov@...>

Hello. I have toyed with the idea of trying Ruby out for some time now.

118 messages 2001/07/22
[#18759] Re: Ruby as opposed to Python? — Paul Prescod <paulp@...> 2001/07/29

Yukihiro Matsumoto wrote:

[#18774] Re: Ruby as opposed to Python? — "Florian G. Pflug" <fgp@...> 2001/07/30

On Mon, Jul 30, 2001 at 05:58:22AM +0900, Paul Prescod wrote:

[#18393] Trouble Using FXRuby on cygwin/Windows NT — rgilbert1@... (Robbie Gilbert)

Hi,

10 messages 2001/07/23

[#18566] Which database should I use? — Urban Hafner <the-master-of-bass@...>

Hello everybody,

17 messages 2001/07/26
[#18575] Re: Which database should I use? — Urban Hafner <the-master-of-bass@...> 2001/07/26

[#18582] Re: Which database should I use? — Michael Neumann <neumann@...> 2001/07/26

Urban Hafner wrote:

[ruby-talk:18422] Re: OO question

From: Alun ap Rhisiart <alunapr@...>
Date: 2001-07-24 10:05:49 UTC
List: ruby-talk #18422
On Monday, July 23, 2001, at 09:08  pm, Tom Malone wrote:

> Someone please tell me if this is an inappropriate question for this 
> list -
> I don't want to irritate or offend anyone here.
> What is the benefit of a true object-oriented language (Ruby), in which
> everything is an object, as opposed to, say (arbitrarily) a language 
> that is
> not strictly object-oriented (yet is still popular) like Java?
>
> Forgive the newbie his ignorance  =)
>
> Tom
>
Okay, I'll have a bash. Sorry if this is a bit meandering.
First, what is a 'true' OO language? There is a story (which I quote 
from memory, may not have all the
details right) about a talk that Niklaus Wirth gave at Apple Computer 
about Oberon. He was some way
into the talk when a chap at the back stood up and said, "So you say 
that Oberon doesn't have inheritance?"
Wirth, "No, that's right"
"And it doesn't have..." (insert here various things that Ruby and 
Smalltalk have, but Oberon doesn't).
Wirth agreed.
"Then how can you say that it is an Object-Oriented Language?"
To which Wirth replies, "Well, who can say what is, and what isn't, an 
OO language?"
Chap says, "I can, I'm Alan Kay, and I invented the term"

According to Alan Kay, OO languages are defined by four things: 
Encapsulation, Information Hiding, Inheritance, and
Polymorphism. As someone else pointed out, however, you can use a 
language that doesn't provide these things and still do OO programming 
by, essentially, providing them yourself; it is just difficult. On the 
other hand, Java shows that you can have a language that provides all of 
them, and throw the advantages away (Encapsulation - what about all 
those static methods for Maths, instead of encapsulating them with 
Integer etc, what about Graphics? Information Hiding - common practice 
of directly accessing instance variables, even in standard library. 
Polymorphism - strong typing gets in the way, as it takes too narrow a 
view of 'type'.  Inheritance - you can't allow subclasses to access its
inherited methods and variables without giving every other (unrelated) 
class in the package the same privilege).

Back to your question, who cares if it isn't 'pure' OO? First, as 
someone else mentioned, consistency. I don't have to ask myself whether 
this is an object I can send messages to or a primitive type I pass to 
functions; I don't have to decide between two different collection types 
according to the sort of data I have. This means fewer errors. An 
interesting study looked at the number of Source Lines Of Code (SLOC) 
per function point required by different languages. As I recall, COBOL 
was 104, C++ and Java both 53, VB was 28, Smalltalk and Perl both 21. 
Then they looked at the number of errors in production code produced by 
programmers experienced in that language. I don't know all the figures, 
but I remember C++ was about 93, Java 50. This would be in large part 
because Java was simpler (no multiple inheritance, no templates, etc), 
and a great deal because of GC. Both are strongly typed, whereas Perl 
and Smalltalk are not (or rather, Smalltalk is very strongly typed, but 
it is the object that has type, not the variable reference), so, 
according to strong typing advocates, they should have more errors per 
line of code, although there are fewer lines of code to contain errors. 
In fact, the error rate for Smalltalk was 14 per function point. I 
haven't seen figures for Ruby, but I would bet it is down there in the 
low teens as well.  Therefore, in a 'pure' OO language, I regard strong 
typing as a failed experiment. These are errors that should be caught by 
your unit tests (RUnit, which catch far more errors too).

For me, OO is taking to a logical conclusion something that was gaining 
acceptance for some time before - the value of loosely-coupled code. It 
combined this with high-cohesion, which makes learning what the system 
can do easier. Loose coupling has high value in a software system, and 
OO is perhaps the best way to achieve it. Loose coupling means that 
maintenance, additional functionality, and refactoring are made easier, 
and much less error-prone. Hybrid OO languages tend to compromise on 
loose coupling, viz Java's tendency to expose object structures by 
allowing direct access to instance variables (and hence the Date mess). 
With primitive types, you need strong typing for type safety, but this 
makes refactoring difficult.

Code reuse (either by aggregation or inheritance) is certainly 
important, but not as much as the hype made out. Polymorphism is of 
great value, and makes use of loose-coupling, to allow you to 'slot in' 
new classes in subsequent versions of a program without breaking a lot 
of code (case statements would break, for example). This is a more 
subtle form of code reuse, but important even so.

Alun ap Rhisiart

In This Thread