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

Re^5: Perl archeology: Need help in refactoring of old Perl code that does not use strict (hurry up and wait)

by eyepopslikeamosquito (Chancellor)
on Nov 15, 2017 at 06:07 UTC ( #1203447=note: print w/replies, xml ) Need Help??


in reply to Re^4: Perl archeology: Need help in refactoring of old Perl code that does not use strict (hurry up and wait)
in thread Perl archeology: Need help in refactoring of old Perl code that does not use strict

To clarify my original surprise that you mentioned Python, I was not disputing that Python is gaining ground, I was challenging you on your reason, namely "OO (inspired by the desire to compete with Python)" because I found it hard to believe that Perl's OO enhancements were in any way inspired by Python's (rather pedestrian and uninspirational) OO features! Far more plausible to me, was for Perl to seek OO inspiration from a stronger OO language, such as Ruby or Smalltalk or CLOS, rather than pragmatic Python. Do you have any citations to support your claim?

From the Moose manual in the "Justification" section:

For Moose, we have "borrowed" features from Perl 6, CLOS (LISP), Smalltalk, Java, BETA, OCaml, Ruby and more, and the bits we didn't like (cause they sucked) we tossed aside. So for this reason (and a few others) Stevan has re-dubbed Moose a postmodern object system.
An academic paper Super and Inner - Together at Last is also cited. No mention of Python. Similarly, in Class::MOP (SEE ALSO section), The Art of the Meta Object Protocol (CLOS), Smalltalk, and many other influences are given. Again, no mention of Python.

Finally, in the original Apocalypse 12, Larry explicitly gave only one reference, namely "Traits: Composable Units of Behavior. European Conference on Object-Oriented Programming (ECOOP), July 2003. Springer LNCS 2743, Ed. Luca Cardelli. by Nathanael Schärli, Stéphane Ducasse, Oscar Nierstrasz and Andrew Black". The only mention of Python is this Larry quote: "Python's attributes suffer from the same misdesign as Perl 5's attributes. (My fault for copying Python's object model. :-)"

In summary then, I'm not aware of any significant Python influence on Perl OO or Moose design. If anyone knows different, please let us know.

  • Comment on Re^5: Perl archeology: Need help in refactoring of old Perl code that does not use strict (hurry up and wait)

Replies are listed 'Best First'.
Re^6: Perl archeology: Need help in refactoring of old Perl code that does not use strict (hurry up and wait)
by Arunbear (Prior) on Nov 15, 2017 at 11:09 UTC

      Yes, you're right, Python was a significant influence on the early Perl 5 object system in the 1990s. And passing 'self' as the first parameter to access object state still endures today.

      My original gut reaction to the claim that Moose is "Perl trying to keep up with Python in the OO domain" still stands; that is, Python's OO system hasn't been the inspiration for enhancing Perl's OO capabilities since around the year 2000 or so.

      Thanks for the link. Though (for some definition of object) everything is an object in Python, it's not a pure OO language, rather it's a pragmatic multi-paradigm language. Like Perl.

      IMHO, Perl and Python remain similar pragmatic, multi-paradigm languages, the main point of (philosophical) difference being Perl's TMTOWTDI ("There's more than one way to do it"), or the more recent TimToadyBicarbonate ("There's more than one way to do it, but sometimes consistency is not a bad thing either"), versus Python's TOOWTDI ("There should be one -- and preferably only one -- obvious way to do it").

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (6)
As of 2019-12-09 10:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?