[PerlChina] Perl with opensources

agentzh agentzh at gmail.com
Mon Oct 6 00:39:07 PDT 2008


2008/10/6 Achilles Xu <formalin14 at gmail.com>

> perl是一门类似c++的语言,可以通过高级技术来自醒和重载语言特性。
>

呃。。。好吧。。。不过我感觉 perl 更 C 一些,其实。。。呵呵。。。


>
>
> perl可以自醒,可以oo,这毋庸置疑,只是用户体验如何呢?python的新手,处处在使用自省,而不知道其存在。他们确实能够在写超级简单的程序的时候用到动态和自醒带来的便利。对他们来说,也许"动态类"这个概念会更容易理解一些。特别是对于javascript程序员来说,python的oo模型非常亲和。
>

我一直是把 JavaScript 里的 OO 当作 Perl OO 来使的。。。不过我确实比较喜欢像 Smalltalk 和 Ruby
那样比较"现代"的 OO 模型(当然了,看各人对"现代"的定义了)。。。所以从这个意义上讲,还是比较地期待 Perl 6.

Moose 为 Perl 5 程序员带来了 Perl 6 OO 的光明与辉煌,但我总是担心它会带来额外的开销。。。不过 Jesse 和 clkao
已经在他们的 Prophet 实现中大量使用了 Moose,代码确实很漂亮。mooooooooooooooose :D

我希望更多地讨论一些实际使用的感觉,而不是互相的功能比较,对于通用目的的编程语言,其实谁也不比谁少什么东西。
>

呃。。。影响到 Turing Complete 的基本功能应该都会有的。。。不过有些比较高级的东西确实会少的。。。

比如 Perl 5 没有可用于生产的线程支持,没有像 Lisp 和 Perl 6 那样强大的 Macro 系统(或许我的
Filter::QuasiQuote 能让这种情形改善一些?哈哈?),没有方便的函数内静态变量(利用 bug 的 hack 不算哦 ;)),没有方便的
variable binding(得用 * 了,呵呵),没有 JIT 编译器,没有自动延展当前 Perl 语言解析器的语法的动态 grammar
机制,没有 hyper-operator,没有 junction,没有 list comprehension,没有 MMD (Multi-method
dispatch),没有真正的 lazy evaluation 和无限列表支持,没有像样的类型系统和类型检查器,等等等等。

幸运的是,其中的大部分问题都将在 Perl 6 得到解决,或者说能够解决,呵呵。


>
> 恰如你提到的场合,带出了各种编程语言推荐用户的思维和编程方式。python希望用户(包括初级用户)用着很动态,而perl是另外一种感觉,perl一般是两分钟写出一个面向过程的程序,想哪写哪。
>

嗯,许多动态性本身就意味着开销,或许这也是为什么 C/C++/Haskell 经常可以跑得更快的原因吧,呵呵。

诚然,单行的 Perl 脚本随处可见,许多百行以内的小 Perl 程序也极多,呵呵。Perl
确实让人感觉很多时间是直接在和机器交谈,而非在做一个大部分人认为很严肃的"编程工作",呵呵。当然了,对于比较大的 Perl
系统,自然也得写严肃了,但这些系统多半是从一个几十行的小 .pl 脚本逐渐进化出来的,比如我的上万行的 OpenResty 系统一开始的原型不过是一个
70 多行可以打印在一张 A4 纸上的 openapi.pl 脚本文件而已,呵呵。

Best,
-agentzh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/china-pm/attachments/20081006/55a3fd53/attachment.html>


More information about the China-pm mailing list