[#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 subscription to "Ruby-Talk". Ruby is not right for what I do. The "Bulk Mail" is overwhelming. Please, no more e-mail! Thank you! yours truly, Stan Daniels

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:9865] Re: 101 Misconceptions About Dynamic Languages

From: jstern@... (Josh Stern)
Date: 2001-01-25 10:40:02 UTC
List: ruby-talk #9865
Reimer Behrends <behrends@cse.msu.edu> wrote:
>Josh Stern (jstern@foshay.citilink.com) wrote:
>> Reimer Behrends <behrends@cse.msu.edu> wrote:
>> >Josh Stern (jstern@foshay.citilink.com) wrote:

>> Reimer, you misunderstood the pragmatics of my post.
>
>Umm, no. But I was simply using it as a jumping-off point to discuss
>matters that had been raised througout the thread. If you felt
>"targeted", my apologies. 
>I was simply using this as an opportunity to
>go into lecture mode. :)

Ok. I think I should apologize for mis-reading.

>[...]
>> >To begin with, for the most basic use of generic types, no additional
>> >effort is necessary--Array and Hash are obvious examples. 
>
>This was simple just noting something important--a large majority
>of generic types simply require that the objects they manipulate
>simply respond to certain messages--no additional measures are
>needed. Just because C++ or Eiffel as statically typed languages
>need the types as parameters doesn't mean the same for Ruby or
>Smalltalk.

Beyond static typing, there are also large context and cultural
differences at work here.  C++ analysis often has the subtext
that there is a library designer implementing foundation
classes that are not to be touched, often irritating
other programmers who feel something is missing and/or
inheriting too much overhead;
Smalltalk has the idea that this great set of foundation classes 
is given as part of the language/environment itself, often
causing splintering, big need to recover costs of language
implementation, etc;  while Ruby, so far, is happy with
the idea of everyone redefining whatever merrily as they go,
which might prove, uh, interesting in a long-running,
multi-person project.  Point being that a bunch of the 
difference is not just in the language itself but what
has been deemed acceptable in terms of givens, overhead,
speed, etc.


>> A main idea of the traits technique is that one may bundle
>> all of the generic inteface in a kind of proxy class.
>
>A main idea of the traits technique is that in a compiled language you
>somehow have to juggle things around so that the compiler won't
>complain. In dynamically typed languages, factory objects will usually
>provide the same information that you have elsewhere nicely. If it's
>needed at all.

Disagree.  First, because it's not true, and second, even if it
was true, it makes a big difference on which side of the interface
the specifications have been made.  Traits allow the specifcation
on the caller side.

>The big problem in C++ is that you have to determine _at compile time_ a
>number of things. 

That's a huge problem if these things are not known at compile
time.  And that's a key reason why a static language often
needs to be supplemented with some sort of scripting setup
in another language.  I've implied elsewhere in this thread
that two of the biggest weaknesses in a language like C++
are this lack of dynamism and also the  lack of support
for converting between textual represenations and
internal/excutable ones.

But I'm not sure what else
you are getting at.  Bad declaration syntax?  Lack of
library support for heterogenous containers?

>What I'm saying here is that most of the tools for generic programming
>in C++ are artifacts of the language, not a prerequisite for using the
>techniques.

I believe that there are generic programming techniques in much the
same sense as there are object-oriented programming techniques which
are described at a level that crosses language boundaries.

>[...]
>> >For more
>> >advanced schemes, it may be best to avoid the elaborate and
>> >unnecessarily complicated maze of C++ templates and return to simpler
>> >approaches. 
>> 
>> C++ templates aren't actually complicated, but anyway, that's
>> off the point anyway.

>I'm not sure if you've ever thought about the inherent complexity
>of implementing the C++ type mechanism completely 

Of course I know about the complexity of implementing a C++
compiler (noted elsewhere in this thread that no major compilers
implement all template linkage features), but I assumed you
were talking about complexity for the language user above.


>> For instance, the instantion of a parametric type A[X] as
>> >A[T], where X is a formal parameter and T a concrete type, can be seen
>> >as specialization inheritance from A[X] with X = T. What we need for
>> >this to work is to be able to work with types as first class
>> >objects--something that C++ can't do, 
>> 
>> a) that's not necessary
>
>True, Eiffel 2 did it without having types as first class objects, but I
>was simplifying here (expressing a sufficient, not a necessary
>condition). What I basically mean is that having classes as first class
>objects (or an equivalent mechanism) eliminates most of the problems.
>C++ "solves" the problem by making the template mechanism a small
>programming language of its own, 

What you describe just sounds like regular template instantiation
and specialization.  It's normal in C++.  When I wrote the
following:

>> b) the traits technique approximates the same thing anyway.

>See above.

I just meant it to refer to the bit about passing types as parameters.
It isn't needed for the example.

>> >but Ruby can. Instantiating formal
>> >parameters of generic types is basically constraining a family of
>> >objects along one more dimensions. While I believe that somebody
>> >mentioned earlier that genericity and inheritance are orthogonal
>> >concepts, the opposite is true: generics introduce a classical is-a
>> >relation, generally with full substitutivity (modulo the usual
>> >covariance issues).
>> 
>> I don't understand which is-a relationship you are talking about here.
>> Could you give an example?
>
>Simple. Let Polynomial[X] be the generic type of polynomials over a
>ring. Then we have
>
>	Complex < Field < Ring,
>
>and thus
>
>	Polynomial[Complex] < Polynomial[X],
>
>where the relation < expresses a subtyping relationship (modulo
>covariance issues, which we tend to naturally ignore in Ruby anyway,
>since only type theorists tend to get worked up over them).

This instatiation in C++ does not necessarily create subtypes
in this way;  it wouldn't in the example;  Polynomial[X]
is an incomplete type, outside of the type system, not
a parent.

>> Though I have suggested in other posts
>> that overloading would be useful in Ruby, but for somewhat different
>> reasons.
>
>Overloading doesn't make sense in the context of Ruby, since it requires
>static type declarations as a prerequisite. 
>You are probably referring
>to multiple dispatch, which is a feature of a number of other languages
>(such as Dylan), but not C++.

Well, I meant both - a) overloading based on function signatures (defined
as either an optional feature extending the language or a meta-programming
function written in current Ruby (though for this and other
reasons, it would be nice to extend Ruby to be able to get the syntax tree 
for a Proc), and possibly b) what would be called multiple dispatch
in a language with both static and dynamic types.  


-= Josh


In This Thread