[#14464] who uses Python or Ruby, and for what? — ellard2@...01.fas.harvard.edu (-11,3-3562,3-3076)

A while ago I posted a request for people to share their experiences

12 messages 2001/05/01

[#14555] Ruby as a Mac OS/X scripting language — Dave Thomas <Dave@...>

10 messages 2001/05/02

[#14557] Arggg Bitten by the block var scope feature!!! — Wayne Scott <wscott@...>

13 messages 2001/05/02

[#14598] Re: Arggg Bitten by the block var scope feature!!! — "Conrad Schneiker" <schneik@...>

# On Thu, 3 May 2001, Wayne Scott wrote:

9 messages 2001/05/03

[#14636] Yet another "About private methods" question — Eric Jacoboni <jacoboni@...2.fr>

I'm still trying to figure out the semantics of private methods in Ruby.

39 messages 2001/05/04
[#14656] Re: Yet another "About private methods" question — Dave Thomas <Dave@...> 2001/05/04

Eric Jacoboni <jaco@teaser.fr> writes:

[#14666] Ruby and Web Applications — "Chris Montgomery" <monty@...> 2001/05/04

Greetings from a newbie,

[#14772] Re: Ruby and Web Applications — Jim Freeze <jim@...> 2001/05/07

On Sat, 5 May 2001, Chris Montgomery wrote:

[#14710] Why's Ruby so slow in this case? — Stefan Matthias Aust <sma@3plus4.de>

Sure, Ruby, being interpreted, is slower than a compiled language.

12 messages 2001/05/05

[#14881] Class/Module Information — "John Kaurin" <jkaurin@...>

It is possible to modify the following code to produce

18 messages 2001/05/09

[#15034] Re: calling .inspect on array/hash causes core dump — ts <decoux@...>

>>>>> "A" == Andreas Riedl <viisi@chello.at> writes:

15 messages 2001/05/12

[#15198] Re: Q: GUI framework with direct drawing ca pabilities? — Steve Tuckner <SAT@...>

Would it be a good idea to develop a pure Ruby GUI framework built on top of

13 messages 2001/05/15

[#15234] Pluggable sorting - How would you do it? — "Hal E. Fulton" <hal9000@...>

Hello all,

16 messages 2001/05/16

[#15549] ColdFusion for Ruby — "Michael Dinowitz" <mdinowit@...2000.com>

I don't currently use Ruby. To tell the truth, I have no real reason to. I'd

12 messages 2001/05/22

[#15569] I like ruby-chan ... — Rob Armstrong <rob@...>

Ruby is more human(e) than Python. We already have too many animals :-).

15 messages 2001/05/23

[#15601] How to avoid spelling mistakes of variable names — ndrochak@... (Nick Drochak)

Since Ruby does not require a variable to be declared, do people find

13 messages 2001/05/23

[#15734] java based interpreter and regexes — "Wayne Blair" <wayne.blair@...>

I have been thinking about the java based ruby interpreter project, and I

48 messages 2001/05/25

[#15804] is it possible to dynamically coerce objects types in Ruby? — mirian@... (Mirian Crzig Lennox)

Greetings to all. I am a newcomer to Ruby and I am exploring the

13 messages 2001/05/27
[#15807] Re: is it possible to dynamically coerce objects types in Ruby? — matz@... (Yukihiro Matsumoto) 2001/05/27

Hi,

[#15863] Experimental "in" operator for collections — Stefan Matthias Aust <sma@3plus4.de>

There's one thing where I prefer Python over Ruby. Testing whether an

13 messages 2001/05/28

[#15925] Re: Block arguments vs method arguments — ts <decoux@...>

>>>>> "M" == Mike <mike@lepton.fr> writes:

43 messages 2001/05/29
[#16070] Re: Block arguments vs method arguments — "Hal E. Fulton" <hal9000@...> 2001/05/31

----- Original Message -----

[#16081] Re: Block arguments vs method arguments — Sean Russell <ser@...> 2001/05/31

On Thu, May 31, 2001 at 11:53:17AM +0900, Hal E. Fulton wrote:

[#16088] Re: Block arguments vs method arguments — Dan Moniz <dnm@...> 2001/05/31

At 11:01 PM 5/31/2001 +0900, Sean Russell wrote:

[#15954] new keyword idea: tryreturn, tryturn or done — Juha Pohjalainen <voidjump@...>

Hello everyone!

12 messages 2001/05/29

[ruby-talk:14649] to be local or not to be local [was Re: Arggg Bitten by the block var scope feature!!!]

From: raja@... (Raja S.)
Date: 2001-05-04 16:41:24 UTC
List: ruby-talk #14649
This issue has been a couple of times thru the cycle on this list.

I've enormous respect for Matz's insight and his judicious design choices
he has made in harmoniously blending features into Ruby.  But the need for a
difference between 'procs' and 'methods' has intrigued me.  I'm not able to
fully understand nor appreciate why these two have to be treated differently
(e.g. the way in which they accept parameters --- different behavior of |a|
in procs vs methods, method params being local while proc params are not
etc).

Matz has expressed his interest in introducing the <...> notation.

But I still am not sure why folks think its a good idea for |x,y,z| to be
potentially non-local.

In 

        method(a1,a2) {|x,y,z| ...}

The -only- reason I can see for not having x,y,z as local variables is the
(slight?) efficiency boost one gets --- every time you invoke the block you
don't have to allocate the new vars if they already exist.  Perhaps Matz has
run some tests on this but I'm not sure if such a slight boost is worth the
potential problem.  Also, making a design decision in this manner
(efficiency over avoiding surprise) seems not to be in the spirit of the
overall design of Ruby.

Suppose |x,y,z| were true local vars (as in method params) you could still
assign non-locally if you really wanted to by:

     n=10
     ...
     foo (10) {|x| n=x; ...}

Few view points I have been put forth in favor of |x,y,z| being non-local

1. "it is bad practice to shadow variables."

    I agree.  

    But my view is that the problem is not so much about
    "deliberate shadowing"  as it is about  "inadvertent capture".
    During refactoring, local code modifications and even during first time
    writing it is possible for accidental "inadvertent captures" to take
    place.   
    
    Not just with blocks but with procs too:

      x=10
      ...
      poly = proc {|x| 10*x**2 + 5*x -2}

    Dangerous inadvertent capture!  Should not the language protect us
    against this?

2.  "In C we  have to be careful about the following situation:
         i=20
         ...
         for (i=0; i<100; ++i) {
             ...
         }
   Block params should be handled with the same care."

   In C we had to live with that.  But to avoid the very same problems we
   are currently talking about C++ (and Java) introduced loop local
   variables:

         for (int i=0; i<100; ++i) {
            ...
          }

   Last I looked even the C 9X draft standard has loop local variables.

3.  "Such captures don't happen that often.  In any event the programmer
    should be more careful."

    This view point is some what in the line of preferring programmer
    managed memory as opposed to automatic memory management.  when coding
    in C/C++ no matter how careful I am, now matter what tool I use (purify
    etc) I will still have the nagging doubt as to whether there is a memory
    leak some where.

    The Lisp folks figured this out some 40 years ago in the early 60s.
    Some 30 years later other languages slowly started catching on to the
    benefits of automatic heap management.  With garbage collection you've
    practically got an iron clad guarantee that there will be no dangling
    reference errors.

    Same here.  Making proc/block params local makes an entire class or
    potential problems a non-issue.

Maybe I'm wrong (as is not that un-common) and I'm not seeing something.
But I can't figure out anything in favor of having |x,y,z| be potentially
non-local but for efficiency.

Not second guessing nor trying to start a vociferous debate but am just
interested in views from the "its ok/desirable for |x,y,z| to be non-local"
camp as to why the status quo is fine.


Regards,
Raja

In This Thread