2009年3月13日星期五

[PerlChina] Re: Hello, 各位

2009/3/14 Okajn <okajn.cn@gmail.com>
我接触Perl比较晚,也是去年12月做个项目有用到Perl才开始学习。。不过,一学上Perl,还是觉得Perl挺好玩,代码里符号一大堆,看起来
比较酷,就有点喜欢上Perl啦,

呵呵,记得我最早看到 Perl 代码是当年上高中时看 "The Practice of Programming"[1] 的时候,觉得 Perl/Awk 的符号都挺酷的,哈哈!然后才发心要好好学一下这两门语言,呵呵。
 
不过认识还比较肤浅,想来学习学习,在perlchina.org上看到这有这个讨论组,就过来学习学习。。。

因为在网上乱七八糟地查了些资料嘛,看到有关Perl 6的Wiki,就想了解下,可大部分都是英文的,看起来费劲,有很多东西都搞不太明白是干吗的,

真的,英语阅读要好好练,因为 Perl 很 English,呵呵。说开去,对于技术人员的自我更新的意义就更大了,呵呵。
 

好像几个词出的频率比较高,比如:Parrot, Pugs, Rakudo...这里有没有达人能给多解释一下,这些都跟Perl 6有什么关系,

Parrot 是用 C 编写的面向动态类型的语言的虚拟机。在性质上,和 JVM [2] 和 CLR [3] 属于同一类东西,但后两者面向静态类型的语言(虽然 Python 这样的动态语言也有 JVM 的 port,但无疑是很低效很 ugly 的做法),且在字节码级别上是面向栈的。Parrot 中是和真实世界中的 x86 指令集一样面向寄存器的,当然,Parrot 中的寄存器自然也是虚拟的,数量可以根据需要无限增加,所以编译器的寄存器分配算法和真实的 x86 编译器是很不同的 [4]. Parrot 项目启动的初衷是运行 Perl 6 程序,但无疑雄心勃勃的 Perl 人希望 Parrot 还能同时运行 Python/Ruby/Tcl/Awk/... 等其他动态类型的语言。

Pugs 是 2005 ~ 2008 年间最成熟的 Perl 6 编译器/解释器实现,由唐凤领导,使用 Haskell 语言编写。Perl 6 语言的“官方测试集”就是在 Pugs 项目中孕育而生的。Pugs 的实现并不依赖于 Parrot 虚拟机。

Rakudo 从一开始就被设计为针对 Parrot 虚似机的 Perl 6 编译器实现,它与 Pugs 的关系是平行的,都属于 Perl 6 语言的实现。它起步的时间远早于 Pugs,但在早期受 Parrot 自身以及 PGE [5] /TGE [6] 等编译器开发工具链的限制,进展非常迟缓(它当时只被称为 Parrot 目录树中的 languages/perl6 而已)。但 Rakudo 在最近两年开始发力,现在已经实现了非常多的 Perl 6 语言特性。

按照 Larry 的说法,Perl 5 是一种实现定义的语言。我们使用的 perl5 解释器便定义了这种语言的全部,没有人能轻易地构造出第二个 perl5 解释器实现,而大骆驼一书只不过是一种事后的补充说明而已,远不能作为 Perl 5 的语言规范。所以 Larry 希望在 Perl 6 中纠正这个“错误“,让 Perl 6 成为一种由规范定义的由设计良好的测试集验证的语言,不再有”官方的实现“。任何人做的东西只要通过了 Perl 6 官方测试集,就承受是合法的 Perl 6 实现,呵呵。有趣的是,Perl 6 项目的一大副产品是为 perl5 提供了一个我们现在看到的比较像样的测试集 [7]。
 

Perl 6与Perl 5都有些什么什么本质的区别。。。

Perl 6 是一门全新的语言,Larry 说只保留了 Perl (5) 的精神 ;) 

Cheers,
-agentzh
------------------------------------------------------------------------------------- 注脚 -----------------------------------------------------------------------------------
[1] http://en.wikipedia.org/wiki/The_Practice_of_Programming
[2] Java Virtual Machine (Java 虚拟机)
[3] Microsoft .NET 平台上使用的 Common Language Runtime
[4] 曾经在 Parrot 的官方文档中鼓吹 Parrot 的这种面向寄存器的设计可以复用几十年来在现代优化编译器研究领域内的寄存器分配算法的成果,这显然是有问题的,所以后来这一论断从文档中删除了。
[5] Parrot Grammar Engine, Perl 6 正则引擎的 Parrot 实现。
[6] Tree Grammar Engine, 基于树形属性文法的 AST(抽象语法树) 变换引擎,由 Parrot 的 PIR 语言实现,多和 PGE 组成一工具链。
[7] 当然,Perl 6 语言中不少很酷的特性也被新版的 perl5 实现所采纳。


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

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

没有评论: