Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^5: Perl Vs Ruby

by Joost (Canon)
on Nov 26, 2008 at 20:26 UTC ( [id://726218]=note: print w/replies, xml ) Need Help??


in reply to Re^4: Perl Vs Ruby
in thread Perl Vs Ruby

See my update :-)

Actually, for the foreseeable future, raw CPU speed isn't going to matter as much as good threading/concurrency support.

Replies are listed 'Best First'.
Re^6: Perl Vs Ruby
by LanX (Saint) on Nov 26, 2008 at 20:43 UTC
    Speed is not everything, but with a factor 3 tolerance, one might realize plenty of syntactic sugar and OOP in perl! Things the community normally rejects because of "slowness".

    e.g. using lvalues and ties for attributes -> A tale about accessors, lvalues and ties

    Cheers Rolf

    UPDATE: IMHO, with factor 3 you can completely emulate Ruby within Perl, e.g. with autobox

      AFIACT, most of the slowness in Ruby is down to the implementation of the interpreter, not particularly due to its OO interface (and syntactic sugar is just a one-time compile hit, and the compiler/parser is plenty fast in both perl & ruby).

      But yeah, you could implement something similar to ruby on top of perl if you're willing to sacrifice some speed. The problem with doing that, is that you'll end up with a fancy OO framework that isn't used by 90% of the code out there, which means you won't be able to use much of it when you're interfacing with most CPAN modules.

      See Moose - which looks pretty nice but isn't even trying to offer much above some OO syntactic sugar (nothing like a standardized collection / iterator interface, for example) on top of Class::MOP. If Moose and Class::MOP would have been in the core since perl 5.0, much of the collection constructs would probably have been built on top of them, and been much cleaner and extensible/swappable with user types because of it (and tie is an annoying hack). That's one of the most important things that Ruby offers over perl.

      In languages like ruby & perl, OO is such a common need that the basic interface and conventions just HAVE to be worked out by the standard library, or you'll end up with a mess of third-party extensions all using more or less similar, but in practice non-interchangeable, interfaces - and being able to swap implementations around without changing the code that uses them is one of the most important uses of OO.

        See Moose - which looks pretty nice but isn't even trying to offer much above some OO syntactic sugar (nothing like a standardized collection / iterator interface, for example) on top of Class::MOP

        This is because Moose is not trying to implement a standard library or collections framework, it is only trying to make OO nicer. And while I agree that a standard library is a good thing in theory, practice has shown that one size does not always fit all (see also - Ocaml's standard library, all the Java frameworks that have gotten traction in recent years, etc). Perl is a community (for better or worse) of strongly opinionated people, getting people to agree on some "standard" would take forever (see also - Perl 6 RPC process).

        The problem with doing that, is that you'll end up with a fancy OO framework that isn't used by 90% of the code out there, which means you won't be able to use much of it when you're interfacing with most CPAN modules.

        FWIW, Moose is built specifically to play nice with non-Moose CPAN modules and legacy non-Moose code (I have several partially Moosified apps in production). Moose would be absolutely useless IMO if it forced you to re-write everything in Moose and that was one of it's key design goals (otherwise $work would have probably just switched to Ruby or Python).

        In languages like ruby & perl, OO is such a common need that the basic interface and conventions just HAVE to be worked out by the standard library,

        I disagree with you here in regards to Perl. In Ruby they had to create a "standard library" of classes (Array, etc) because "Everything is an Object", whereas in Perl you could consider the standard library to be built-in (non-OO) arrays, hashes, scalars and the functions that operate on them.

        -stvn
        > (and tie is an annoying hack)

        Isn't it ironic that your so in favour of OOP and in the same time reject tie, which is essentially nothing more than a pimped up bless?

        It's reliable, you can hide it behind syntactic sugar, BUT it's as slow as the rest of Perl OO.

        But hey, wait! Didn't you just explain that slowness doesn't matter ...??? ; )

        Cheers Rolf

        PS: Thx for the insights in Ruby, I agree about some syntactic annoyances in Perl 5, and I'd really love to have Perl 6 syntax right now mapped on Perl 5 semantics and interpreter... sigh! : (

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (7)
As of 2024-04-16 06:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found