编程鹦鹉


本书由Perl和Python的创造者撰写,为您介绍这门新语言。它不仅是一本全面的语言参考,还展示了Parrot中的高级编程技术,包括网络客户端和服务器编程、软件重用以及在互联网上的Parrot应用。

401页,美国$19.95 / 加拿大$28.95。

今天,我们期待已久并期待已久的官方公告终于来了:Perl和Python社区中许多人期待的一年多合作终于实现了,Perl和Python的开发者之间将开始一段联合开发时期。

我很高兴和荣幸地为大家带来Larry和Guido的独家访谈,我们将讨论这个令人兴奋的消息。

您是什么时候决定开始这个想法的,是什么促使您这样做的?

GvR:我们去年7月在开源大会上首次讨论了这个想法。我当时在思考Python 3000需要的变化...

LW:..而我非常清楚Perl和Perl社区需要一场大地震。Perl需要从头开始完全重新思考,语言和社区都需要重新设计。许多事情在开始开发Perl 6时就发生了。我们完全重新组织了开发结构,我被选出去重新设计语言。

GvR:所以我们聚在一起开始讨论我们两种语言都需要的变化,我们决定互相帮助,这就是联合开发想法的来源。

当您提到“联合开发”时,您指的是什么?

LW:最初,我们以为我们可以交换解释器中的技术。Perl解释器有一些非常棒的功能:我们有一个非常快的正则表达式引擎,我们有非常好的可移植性,我们有很多可以帮助Python的东西。另一方面,Python有一个非常好的结构。我喜欢它的编码方式,它有很多其他技术问题处理得很好,我们需要的:安全的信号处理,一致的Unicode支持等等。

GvR:我们还谈论了微软的.NET和公共语言运行时;我们一致认为尝试使我们的解释器更加接近是非常好的主意,最终你将能够在同一个解释器上运行Perl和Python的字节码。

LW:但当我收集Perl 6的变更请求——我们称之为RFC——的时候,我忍不住想“嘿,Python已经解决了许多这些问题”。

GvR:没错,我发现我需要把Perl多年来一直有的东西带到Python中,比如变量的嵌套作用域。所以我们只是把想法结合起来,提出了一个全新的语言的设计。

关于这门新语言的名字呢?

GvR:嗯,那是我提出的。我们讨论了许多可能的名字:Chimera、Pylon、Perth,最后决定叫Parrot。我们有一些基本想法:我们希望它以“P”开头;它必须是在/usr/bin/结尾时听起来不会很愚蠢的东西。

LW:我们还想让这个名字代表一种动物,来代表骆驼和蟒蛇的结合。这也帮助了书封面的设计...

GvR:最终,我在想Monty Python最精彩的时刻——鹦鹉梗之后想到了Parrot。

LW:听起来很合适——动态、多彩、异国情调。我喜欢!

您是如何设计它的呢?

GvR:我们希望它能够让Python程序员和Perl程序员都能感到宾至如归。它必须结合两种语言的最佳部分。它必须灵活、可扩展和优雅。

LW:我认为设计语言的大部分想法都非常简单;毕竟,我们俩都有丰富的语言设计经验,我们知道什么可行什么不可行。《Perl 6 RFCs》也很有帮助,因为它展示了我认为可行但实际上不可行的想法。

GvR:从根本上讲,我们语言中的一些概念是相同的;只是决定如何将它们全部整合起来。

给我们展示一些Parrot代码。

GvR:显然,目前没有完整的Parrot程序可用,只有一些示例代码。这是一个Tim Peters编写的示例。
    # 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;
    }

这对Perl 6和Py3k的未来开发意味着什么?

LW:这就是Perl和Python开发未来的样子!

GvR:确实如此。我们将让我们的开发团队一起合作开发Parrot解释器。Dan Sugalski和Jeremy Hylton现在正在坐下来商讨如何前进,如何合并我们已有的代码;我们希望在今年7月底的Parrot大会上向您展示一些成果。

你认为你的语言程序员会有什么反应?

LW:我认为Perl程序员会非常喜爱它。一直以来,Perl都是关于吸取其他语言中最好的想法;我们从C、awk、Unix shell中借鉴,那么我们为什么应该忽视我们最成功的竞争对手呢?这对Perl和Perl社区来说是一个完全自然的举措,我相信一旦他们开始认真地编程Parrot,他们就不会再回到Perl。我知道我做不到。

GvR:我认为Python程序员比Perl程序员更难接受。但是,我们已经在这一方向上走了很长时间。Python 2不得不引入一些Perl早已拥有的特性,例如嵌套作用域,还有许多其他我认为需要做出的改变,所有这些都在推动我们向Perl的最好特性靠拢。但我同意Larry的观点,我认为一旦Python程序员意识到这是一个两种语言最佳部分的组合,他们会感到非常自在地在Parrot上进行编程。

你有没有听到其他编程社区的反应?

LW:我收到一些来自Ruby的创造者,Matz,Matsumoto的信;他说他非常高兴,因为Perl和Python程序员决定开始学习Ruby,这导致了许多新程序员的涌入。

GvR:是的,我们预期有些人会因这个想法而感到害怕。这是很自然的。顺便说一句,John Ousterhout对我们所做的事情非常感兴趣,但我还没有听到Tcl团队对此的看法。

你如何看待这种猜测,即这次行动受到了你新雇主ActiveState公司的影响?

LW:(笑)这纯粹是无稽之谈。胡说八道。

GvR:我想象不出你在说什么。(Fnord。)


Programming Parrot,Parrot语言的权威指南,将由O'Reilly和Associates出版。