Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: The Limitations of the CPAN

by tall_man (Parson)
on Nov 18, 2004 at 04:44 UTC ( [id://408692]=note: print w/replies, xml ) Need Help??


in reply to The Limitations of the CPAN

I took a look at Ruby recently, but it had such serious flaws in my view that I dropped it like a hot potato. The main issue I described in The power of strict typo-checking. What was your experience with typo issues in Ruby?

Besides that, the scoping rules for local variables are horrible. (If you happen to use the same name as an outer scope, you clobber that variable? And they call that lexical scoping? I know some sort of fix is on the way, but still...)

Replies are listed 'Best First'.
Re^2: The Limitations of the CPAN
by Anonymous Monk on Nov 18, 2004 at 21:19 UTC
    Typo checking is actually better than Perl's IMHO, especially when checking module calls and such. For variables, i am very fond of attr_writer and attr_reader when I do need them, so there is no clobbering there. I never write foo.@bar = xyz as that's just bad style.

    As for local scoping clopping outer scoping, I have not yet run across this problem, but I have never needed to use a variable twice with the same name in the same scope other than with local scope versus instance scope, and in which case, that all works fine.

    I guess it depends on how you right your code, but the "Ruby Way" as it were does not run into problems like this, and it is not often a frequent complaint.

    I get a lot more runtime type problems with Perl, especially due to the tendancy to abuse hashes and use less object encapsulation. The code is also more fragile.

      Thus if you write Ruby well, you don't have many problems. Me too. If I write Perl well, I don't have many problems, either.

      I never write foo.@bar = xyz as that's just bad style

      Most Ruby objects I have seen fail to self-encapsulate their fields. For example, it would be unusual to see something like this:

      class MyObj attr_accessor :name private :name= def initialize(myname) self.name = myname end # more stuff using name or self.name instead of @name end
      Usually there would be raw references to "@name" all over the place. In perl, references to $self->{"name"} are typically considered bad style. If code inside and outside the class uses different means for accessing the fields, there is more danger of typos.

      But my main point was about the danger of declare-on-assignment, like this:

      axxx = 1 if (rare_condition_I_forgot_to_test) axx = 2 end print axxx,"\n"
      If "axx" was meant to be "axxx" there is no error message and the program does not always work as intended.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://408692]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2024-04-25 10:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found