Non-declared variables

Discussion in 'Ruby' started by Avatar, Oct 16, 2006.

  1. Avatar

    Avatar Guest

    I would like to hear people's opinions on the ability to use variables
    without declaring them in dynamic languages like Ruby.

    It would seem to me that an argument for non-declared local variables
    that typically occupy a small scope could be made. But, class
    variables? What is the benefit in allowing for runtime definition of
    class variables?

    Are there real tangible benefits that non-declared, dynamically typed
    (at binding time) variables provide? Or do dynamic variables simply
    create less compile time errors and more (harder to catch) runtime
    errors?

    Thoughts?
     
    Avatar, Oct 16, 2006
    #1
    1. Advertising

  2. Avatar

    Ken Bloom Guest

    On Mon, 16 Oct 2006 04:38:09 -0700, Avatar wrote:

    > I would like to hear people's opinions on the ability to use variables
    > without declaring them in dynamic languages like Ruby.
    >
    > It would seem to me that an argument for non-declared local variables
    > that typically occupy a small scope could be made. But, class
    > variables? What is the benefit in allowing for runtime definition of
    > class variables?
    >
    > Are there real tangible benefits that non-declared, dynamically typed
    > (at binding time) variables provide? Or do dynamic variables simply
    > create less compile time errors and more (harder to catch) runtime
    > errors?
    >
    > Thoughts?


    I was programming in Java last week, and writing typed code. I found that
    after about an hour of coding, my code would have worked correctly (it
    would have been less time if Java supported operator overloading the way
    ruby does), but I still had to spend another hour getting the types
    appropriately declared, and typecasting things correctly as I pulled
    objects out of their various collections.

    C++ can be worse. I wanted to use the Boost Spirit library for CFG
    parsing, and found that I couldn't read the compile errors I was
    getting because 90% of the text was multiply nested template types. The C++
    Standard Template Library uses templates so much to get close to Ruby's
    flexibility, but the result is still more complicated than Ruby,
    impossible to debug, and less flexible. At that point, why not go all the
    way to a dynamically typed language?

    --Ken Bloom

    --
    Ken Bloom. PhD candidate. Linguistic Cognition Laboratory.
    Department of Computer Science. Illinois Institute of Technology.
    http://www.iit.edu/~kbloom1/
    I've added a signing subkey to my GPG key. Please update your keyring.
     
    Ken Bloom, Oct 16, 2006
    #2
    1. Advertising

  3. > C++ can be worse. I wanted to use the Boost Spirit library for CFG
    > parsing, and found that I couldn't read the compile errors I was
    > getting because 90% of the text was multiply nested template types. The C++
    > Standard Template Library uses templates so much to get close to Ruby's
    > flexibility, but the result is still more complicated than Ruby,
    > impossible to debug, and less flexible. At that point, why not go all the
    > way to a dynamically typed language?


    Because then you're a different language with different use cases with
    different benefits and drawbacks.

    Boost is an incredibly good set of libraries, with an extremely high
    level of QA. The great tragedy is that facilities like this were not
    part of a C++ standard library a decade ago.

    Still, the C++ Standards Committee are well aware of the problems that
    templates cause with respect to indecipherable error messages, which
    is why the new system of concepts has been proposed for C++0x, so the
    compiler can flag straight away when you've tried to instantiate a
    template parameter that won't work.

    Also, if you're a genius, you can use template metaprogramming to do
    some really spanky compile-time shenanigans.

    Martin
     
    Martin Coxall, Oct 16, 2006
    #3
  4. Avatar

    Phrogz Guest

    Avatar wrote:
    > I would like to hear people's opinions on the ability to use variables
    > without declaring them in dynamic languages like Ruby.


    Could you clarify what you mean by that? Are you concerned about
    methods like #instance_variable_set and #class_variable_set? Or more
    generally about the fact that code like:

    class Foo
    @bar = 12
    end

    creates an instance variable on the fly at runtime, without requiring
    some sort of
    instance @bar
    line that 'declares' it before use?
     
    Phrogz, Oct 16, 2006
    #4
  5. On 10/16/06, Avatar <> wrote:
    > I would like to hear people's opinions on the ability to use variables
    > without declaring them in dynamic languages like Ruby.


    You mean without declaring their *type*, right?

    It's more accurate to say simply that variables have no type in Ruby;
    Rather the variable's contents have a type.

    In any case, Ruby requires that variables be declared before use just
    as any decent language worth the name does.

    Martin
     
    Martin Coxall, Oct 16, 2006
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Anand Sagar
    Replies:
    2
    Views:
    3,453
    Anand Sagar
    Jun 15, 2004
  2. Nathan Sokalski

    Accessing variables declared in Global.asax.vb

    Nathan Sokalski, May 23, 2005, in forum: ASP .Net
    Replies:
    3
    Views:
    13,484
    worlebird
    Oct 17, 2006
  3. JohnZing

    declared or not declared ?

    JohnZing, Feb 5, 2006, in forum: ASP .Net
    Replies:
    3
    Views:
    1,620
    Jon Paal
    Feb 5, 2006
  4. vincent wehren
    Replies:
    2
    Views:
    751
    Raymond Arthur St. Marie II of III
    Jul 22, 2003
  5. ohms377
    Replies:
    3
    Views:
    318
    Cameron Laird
    May 11, 2005
Loading...

Share This Page