2009年3月3日星期二

[PerlChina] Re: Perl vs Python

2009/3/4 rorot <yang.liana@gmail.com>

   但是,我对Perl的OOP编程没有什么认识,只觉得Perl的OOP实际上就是Package的封装。所以当需要OOP的时候,我想到Python,

呃。。。Perl 5 中的 OO 是很另类的东西,在其之上可以轻松实现各种 OO 模型,比如基于 Prototype 的(如 Class::Prototyped ),基于 Inside-out 的(如 Class::Std ),基于 Smalltalk/Ruby OO 和 Perl 6 Role 模型的(如 Moose),当然还有 Good Old Hash/Scalar 引用方式的 OO,等等等等。

我记得几年前,当时 Moose 的主要作者 steven 就曾和 nothingmuch 等人在 #perl6 频道中津津乐道 Perl 5 OO 的灵活性和可塑性。

当然,这也是一把双刃剑,过于灵活和与众不同的 OO 模型让许多初学者无所适从,同时对于老手也会让代码变得不必要的 ugly,呵呵。所以大家才会那么疯狂于 Moose 这样的比较优雅的封装,但作为代价,要在程序启动时牺牲一些性能。Larry 也在 YAPC::Asia 的一次 Perl 6 为主题的 keynote 演讲中坦言 Perl 5 的 OO 设计过于 orthogonal 了,呵呵,他一直致力于在 Perl 6 中纠正这个失误 ;) 而 Rakudo,这个 parrot 之上的 Perl 6 编译器实现已经支持 roles 已久了,值得玩一玩了哈 ;)

Cheers,
-agentzh


--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: