[#13775] Problems with racc rule definitions — Michael Neumann <neumann@...>

15 messages 2001/04/17
[#13795] Re: Problems with racc rule definitions — Minero Aoki <aamine@...> 2001/04/18

Hi,

[#13940] From Guido, with love... — Dave Thomas <Dave@...>

52 messages 2001/04/20

[#13953] regexp — James Ponder <james@...>

Hi, I'm new to ruby and am coming from a perl background - therefore I

19 messages 2001/04/21

[#14033] Distributed Ruby and heterogeneous networks — harryo@... (Harry Ohlsen)

I wrote my first small distributed application yesterday and it worked

15 messages 2001/04/22

[#14040] RCR: getClassFromString method — ptkwt@...1.aracnet.com (Phil Tomson)

It would be nice to have a function that returns a class type given a

20 messages 2001/04/22

[#14130] Re: Ruby mascot proposal — "Conrad Schneiker" <schneik@...>

Guy N. Hurst wrote:

21 messages 2001/04/24
[#14148] Re: Ruby mascot proposal — Stephen White <spwhite@...> 2001/04/24

On Tue, 24 Apr 2001, Conrad Schneiker wrote:

[#14188] Re: Ruby mascot proposal — matz@... (Yukihiro Matsumoto) 2001/04/25

Hi,

[#14193] Re: Ruby mascot proposal — "W. Kent Starr" <elderburn@...> 2001/04/25

On Tuesday 24 April 2001 23:02, Yukihiro Matsumoto wrote:

[#14138] Re: python on the smalltalk VM — Conrad Schneiker <schneik@...>

FYI: Thought this might be of interest to the JRuby and Ruby/GUI folks.

27 messages 2001/04/24
[#14153] Re: python on the smalltalk VM — Andrew Kuchling <akuchlin@...> 2001/04/24

Conrad Schneiker <schneik@austin.ibm.com> writes:

[#14154] array#flatten! question — Jim Freeze <jim@...> 2001/04/24

Hello.

[#14159] Can I insert into an array — Jim Freeze <jim@...> 2001/04/24

Ok, this may be a dumb question, but, is it possible to insert into an

[#14162] Re: Can I insert into an array — Dave Thomas <Dave@...> 2001/04/24

Jim Freeze <jim@freeze.org> writes:

[#14289] RCR: Array#insert — Shugo Maeda <shugo@...> 2001/04/27

At Wed, 25 Apr 2001 01:28:36 +0900,

[#14221] An or in an if. — Tim Pettman <tjp@...>

Hi there,

18 messages 2001/04/25

[#14267] Re: Ruby mascot proposal — "Conrad Schneiker" <schneik@...>

Danny van Bruggen,

16 messages 2001/04/26

[#14452] How to do it the Ruby-way 3 — Stefan Matthias Aust <sma@3plus4.de>

First a question: Why is

21 messages 2001/04/30

[ruby-talk:13689] Re: methods and types

From: Bernd Lorbach <berndlor@...>
Date: 2001-04-15 12:10:04 UTC
List: ruby-talk #13689
Jish Karoshi wrote:

> How do you design programs when you can't specify types?  If all
> I can specify in a method definition are the names of the arguments,
> then how does anybody know how to use that method without knowing
> about the implementation of the method?

If all you know about a function is the name of the arguments,
you cannot do serious programming. But if you know the types
of the arguments, you cannot do neiter! Imagine a function

	pid_t waitpid(pid_t wpid, int *status, int options)

do you exacly know what is does, or what meaning return values
have, without having seen any documentation? Type information
does not help much here.

The clue is, if you write a function, and want it get used by
others, you have to provide some documentation, either as
comments, or elsewhere. In the documentation, you also
can provide type informatin - if the functin is restricted
to some types. If you just know parameter types, you start
trying out - and programming by try and error might be fun,
but is not a serious thing.

In Ruby, you need not specify types, as often functions can take
more than one type.

	def add_up(a,b)
		a + b
	end

It adds what you give - It cill act on every type having
a method "+" defined. if you pass strings it will result
strings. If you pass integer, it will return integer:

	add_up("Hello", "World") --> "HelloWorld"
	add_up(22, 33)           --> 55

That is what I call polymorphic!
Look at C++, where for that class of polymorphism you need
templates. And I cannot imagine something like

	template <class T_IN, class T_OUT>
	T_OUT process(T_IN input, T_OUT output)

is more intuitive (or even easier to program) like the Ruby

	def process(input, output)

> The same thing goes for
> the return value.

Shure!

> I have only been looking into ruby for a brief time, but from what
> I can tell, it seems like everybody on a project would have to know
> implementation details of the whole system in order to participate.
> I don't understand how to chop a system up into little black boxes
> if I don't have type information.

I do not agree here. The C++ STL has more in common with a black box
(at least for beginners) than any Ruby function.

Also, I do not consider black boxes to be that bad.
It does a great deal in hiding implementation details.

> I especially don't understand how anyone would ever be able to
> implement a distributed system in this way.

Do not mind. You will learn as you get used to OOP, type abstraction
and software engineering :-)

> I feel that I must be missing something obvious and important here!
> If somebody could clue me in I  would really appreciate it.

I have to admit that there is not so much documenation on Ruby like
on other programming languages, but if you want to learn something
about the concepts of Ruby, try

	http://www.ruby-lang.org/en/doc.html

The "Ruby User's Guide" is a good point to start with.

Greetings, /Bernd

In This Thread