Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re^4: What's wrong with Perl 6?

by spurperl (Priest)
on May 11, 2007 at 13:40 UTC ( #614910=note: print w/replies, xml ) Need Help??

in reply to Re^3: What's wrong with Perl 6?
in thread What's wrong with Perl 6?

1) The exact syntactical rules don't matter that much, because once you get used to Ruby, it feels natural to write code in a certain way. I'm sure Python is even more unusual from Perl's point of view. I have never had a problem with the problem you present in Ruby. And finishing each intermediary line in a multi-line expression with an operator is a good practice.

2) Ruby doesn't need 'use strict' the way Perl does, because in Ruby uninitialized variables don't 'spring to life' when referenced. Variables must be initialized before use, otherwise you get an exception. In this sense Ruby is very much like Lisp, and you don't hear people complaining about the lack of the 'strict' module in Lisp.

Replies are listed 'Best First'.
Re^5: What's wrong with Perl 6?
by Jenda (Abbot) on May 11, 2007 at 15:24 UTC

    Ad 1) You mean you think

    blah = blah blah blah blah blah blah blah blah + blah blah blah blblah blah blah blah + blah blah blah bla blah blah blahh blablah + sdfgdfgdfhfgh
    is a good practice? With the operators hidden all the way to the right, each at a different column, forcing you to scan for the end of the lines to find out where does the statement end? Well, up to you. I find this incredibly ugly.

    Ad 2) Sorry, no that's not true. All Ruby does is it makes the warnings turned on by use warnings 'uninitialized'; fatal. It has no way whatsoever to catch even something as simple as

    result = foo(...) do something with result ... resutl = bar(...) do something with result
    There is no way to specify that one assignment is supposed to be "initialization" and another not. Which means that some operations on variables are kinda guarded, others are not. Because they are undistinguishable from intended initializations.

    Another problem is that you CAN'T declare a variable as being private for a block. You can only hope you do not stomp on an outer variable accidentaly. Or create an outer variable later and break stuff. At least the block parameters will always be local to the block starting with 1.9, but I still will not be able to start using a variable within a block without having to look elsewhere to make sure it really is a new variable. And no, all methods cannot be those advertised 5 lives long, if only because of data literals.

Re^5: What's wrong with Perl 6?
by shawnmck on May 18, 2007 at 23:31 UTC
    We are trying to install a pre-existing ruby on rails. We are new to ruby so we have a new install. We have already had to update the code in this app from 'require_gem' to 'gem' and now we are getting variable not initialized errors. Was there a previous ruby version that was by default was loose and allowed you 'spring to life' variables? Is there a way to tell ruby to be loose about its variable declaration? i know this is a perl site, but you are talking about our exact problem. hoping you can help.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://614910]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (3)
As of 2017-02-26 21:30 GMT
Find Nodes?
    Voting Booth?
    Before electricity was invented, what was the Electric Eel called?

    Results (376 votes). Check out past polls.