本书由Perl和Python的创造者撰写,为您介绍这门新语言。它不仅是一本全面的语言参考,还展示了Parrot中的高级编程技术,包括网络客户端和服务器编程、软件重用以及在互联网上的Parrot应用。 |
今天,我们期待已久并期待已久的官方公告终于来了:Perl和Python社区中许多人期待的一年多合作终于实现了,Perl和Python的开发者之间将开始一段联合开发时期。
我很高兴和荣幸地为大家带来Larry和Guido的独家访谈,我们将讨论这个令人兴奋的消息。
LW:..而我非常清楚Perl和Perl社区需要一场大地震。Perl需要从头开始完全重新思考,语言和社区都需要重新设计。许多事情在开始开发Perl 6时就发生了。我们完全重新组织了开发结构,我被选出去重新设计语言。
GvR:所以我们聚在一起开始讨论我们两种语言都需要的变化,我们决定互相帮助,这就是联合开发想法的来源。
GvR:我们还谈论了微软的.NET和公共语言运行时;我们一致认为尝试使我们的解释器更加接近是非常好的主意,最终你将能够在同一个解释器上运行Perl和Python的字节码。
LW:但当我收集Perl 6的变更请求——我们称之为RFC——的时候,我忍不住想“嘿,Python已经解决了许多这些问题”。
GvR:没错,我发现我需要把Perl多年来一直有的东西带到Python中,比如变量的嵌套作用域。所以我们只是把想法结合起来,提出了一个全新的语言的设计。
/usr/bin/
结尾时听起来不会很愚蠢的东西。LW:我们还想让这个名字代表一种动物,来代表骆驼和蟒蛇的结合。这也帮助了书封面的设计...
GvR:最终,我在想Monty Python最精彩的时刻——鹦鹉梗之后想到了Parrot。
LW:听起来很合适——动态、多彩、异国情调。我喜欢!
LW:我认为设计语言的大部分想法都非常简单;毕竟,我们俩都有丰富的语言设计经验,我们知道什么可行什么不可行。《Perl 6 RFCs》也很有帮助,因为它展示了我认为可行但实际上不可行的想法。
GvR:从根本上讲,我们语言中的一些概念是相同的;只是决定如何将它们全部整合起来。
# copy stdin to stdout, except for lines starting with # while left_angle_right_angle: if dollar_underscore[0] =eq= "#": continue_next; } print dollar_underscore; }LW:我认为这正好展示了我们试图实现的目标:对于Perl和Python程序员来说,这非常明显。我们在Perl的括号结构块和Python的空格块之间找到了一个很好的折衷方案;我们以一种优雅的方式合并了语言关键词的名称;我们保留了Perl的快捷变量概念,但与之结合了Python的可读性。
GvR:当然,这只是编写这个程序的一种方式。 Larry,编写程序确实有不止一种方法,对吧?
LW:当然。我可能会这样编写程序:
while(@line = Sys::Stdin->readline()): continue_next if $line[0] =eq= "#": print @line; }
GvR:确实如此。我们将让我们的开发团队一起合作开发Parrot解释器。Dan Sugalski和Jeremy Hylton现在正在坐下来商讨如何前进,如何合并我们已有的代码;我们希望在今年7月底的Parrot大会上向您展示一些成果。
GvR:我认为Python程序员比Perl程序员更难接受。但是,我们已经在这一方向上走了很长时间。Python 2不得不引入一些Perl早已拥有的特性,例如嵌套作用域,还有许多其他我认为需要做出的改变,所有这些都在推动我们向Perl的最好特性靠拢。但我同意Larry的观点,我认为一旦Python程序员意识到这是一个两种语言最佳部分的组合,他们会感到非常自在地在Parrot上进行编程。
GvR:是的,我们预期有些人会因这个想法而感到害怕。这是很自然的。顺便说一句,John Ousterhout对我们所做的事情非常感兴趣,但我还没有听到Tcl团队对此的看法。
GvR:我想象不出你在说什么。(Fnord。)