Perl6[编辑]
Perl 6是计算机程序语言Perl语言的后续。尽管提供了同Perl 5的兼容模式,由于Perl 6语言语法同Perl 5不同,因此,可以把她看作一种新的计算机程序语言。
Perl 6拥有丰富的现代语言特征,作者计划用重新定义正规表达式和增加函数式编程语言的特征,使之成为可演化的语言。为保证Perl 6和Perl社区的持续稳定发展,Perl 6编译器需要使用Perl 6来重写,为保证Perl语言原有函式库的重用,编译器还计划提供同Perl 5语言的兼容模式。
由于Perl 6语言的语法特征和要求,Perl 6编译器实现非常复杂,同时,开源社区的资源相对贫乏。因此,Perl 6编译器的开发显得相当缓慢。
和Ruby比较:
一般都是认为Ruby vs. Python(可能是因为同样采取缩排的设计),但是就一些相关的讨论和访谈,Ruby vs. Perl 6的可能性反而是最大的。CPAN上排名第一名,同时也是Perl 6的开发者的唐凤(Audrey)就这么说过:“Ruby就是‘没有到处打广告的Perl 6’”[1]。Ruby的创始者——松本行弘(まつもとゆきひろ/Yukihiro Matsumoto,Matz)在接受O'Reilly的访问时[2],也提到“Ruby借用了很多Perl的东西……,Python远比Perl要少……”。从Ruby的命名也可以看出Matz远大的企图心:“Pearl(珍珠)是六月的诞生石[3],而Ruby是七月的诞生石,我认为Ruby这个名字作为Perl之后的一门语言的名字真是再恰当不过了。”
Perl之父拉里·沃尔(Larry Wall)在《Larry Wall On Perl, Religion, and……》[5]一文中表示:“很多方面上我还是很喜欢Ruby的,这是因为那些部分是从Perl借过去的。:-)”、“我还喜欢Ruby的C<*>一元星号操作符,所以我把它加到Perl 6里面。”
但是拉里·沃尔在文中也说:“Ruby的主要问题在于它的最少惊讶原则可能让人误入歧途,就好像隐藏式词法范围。问题在于减少谁的惊讶?专家和初学者对不同的事情惊讶。从一个小程序写成大程序的人和从开始就写大程序的人可能对不同的事情感到惊讶。”
Perl6的结构:
摘要
源码进入解释器,解释器产生一个语法树(syntax tree)。
语法树进入编译器,编译器产字节码(bytecode)。
字节码进入优化器(optimizer),优化器产生更多的(更好的)字节码。
Runtime然后来处理进入的字节码(可能是运行他,不过也有可能把他转化为Java字节码,或.Net字节码,或可执行的Alpha 代码(an alpha executable),或编码的DNA序列)。
Source Code
+----------------+
|The Parser |
+----------------+
Syntax Tree
+-------------------+
|The Compiler |
+--------------------+
Bytecode
+---------------------------+
|Byteode Optimizer |
+---------------------------+
Better Bytecode
+------------+
|Runtime |
+------------+
计划
解释器将允许你改动这些规则。规则集(rule sets)定义了主要的语言(Perl, C, Python, Java, etc.),你能为其他的语言撰写新的规则(比如,没有$ @ %等符号的Perl)。
运行时引擎(the runtime engine)将会时一个基于寄存器的虚拟机(a register-based virtual machine),而perl5的虚拟机时基于栈的(stack-based)。
重写(revisit)Perl的一个主要原因是要去修复混乱的XS(XS是指用C/C++子程式来扩展Perl)的方式。除了用来执行Perl的函数, Perl5没有用于扩展的API,所以扩展Perl需要大量繁琐的工作。Dan和Larry的目标是要使C扩展的使用尽可能的简单(Brian Ingerson的出色的Perl5内联模块为此指明一些方向)。所有使用过XS的人都等着他的灭亡。
Perl5被设计成这样一种方式,那就是当有C的时候,他就能运行。近来,一些虚拟机(JVM, .NET)代替了C。所以,我们将看到,我们的自己的虚拟机不仅能在有C的时候运行,而且同样能方便的将字节码输入到其他的虚拟机。
网络营销词典内容均由网友提供,仅供参考。如发现词条内容有问题,请发邮件至info # wm23.com。