思考 Perl 6

brian d foy 采访了 Laurent Rosenfeld,他的新书《Think Perl 6》由 O’Reilly 媒体出版,将于今年夏天上市,并可预购。这本书是针对不同主题的一系列《Think …》书籍之一,并且是在Creative Commons 许可证下免费提供的。

这篇文章是通过 brian 的学习 Perl 6 的 Kickstarter 项目奖励而得以实现的。

您的 Perl 编程背景是什么?您是如何发现这门语言的,它是如何帮助您解决问题的,您最喜欢它的什么方面?

(Laurent) 我从2002年开始使用 Perl 5 进行编程。当时我主要使用 Python(以及一点 TCL/TK)来满足我的脚本需求。

我当时开始工作的那个团队是使用一些相对较小的 Perl 程序,在数据迁移套件的环境中。

尽管当时我并不是作为开发者工作的,但我认为熟悉这门语言会很好。所以我从互联网上找了一本教程开始学习,我发现这门语言相当令人愉快。

那时,我们收到了一些大型的格式不正确的数据文件,在我们可以使用它们之前需要预处理。我最初想快速编写一个 Python 脚本,然后改变了主意:既然我正在学习 Perl,也许我可以尝试用 Perl 编写这个脚本。大约一天后,我就有了完成所需功能的 Perl 脚本。那个脚本可能相当笨拙,并且肯定不符合最佳实践,但它完全符合需求。

我非常惊讶,我竟然能够用当时所知道的 Perl 的小子集轻松地编写一个用于实际专业使用的脚本。我继续使用 Perl。实际上,几年后我才开始真正将 Perl 视为一个编程语言,而不仅仅是一个脚本语言。

您是什么时候开始使用 Perl 6 的?

我在2012年和2013年初对 Perl 6 进行了各种测试和实验,但我从2013年下半年开始认真使用 Perl 6。我从2014年开始撰写关于 Perl 6 的文章。

您最喜欢这门新语言的一些特性是什么?

嗯,首先,它属于 Perl 家族,具有相同的风格(TIMTOWTDI,DWIM 等)。这使得我学习它变得容易,尽管 Perl 5 和 Perl 6 是不同的语言。

然后我最喜欢的特性是其强大的对象模型,对函数式编程风格的出色支持,增强的正则表达式功能和语法。我喜欢内置的扩展语言的可能性,例如构建新的运算符,扩展 Perl 6 语法等。

对并发编程和并行处理的支持看起来也很棒,但我只是玩过,到现在还没有做任何事情。

您的《Think Perl 6》新书是基于类似的 Python 书籍的。您是如何发现那本书的?那时您在使用 Python 吗?

多年前,我阅读了《Think Python》的第一版,并发现它是一本非常好的书,因为它不是在教 Python,而是在用 Python 教授计算机科学和编程。这就是《Think Perl 6》的主要思想:用 Perl 6 教授计算机科学。

我过去使用过 Python,但不记得我第一次阅读《Think Python》时是否一直在使用它。

这两本书有多相似?为了适应Perl 6,您是否不得不对书的大部分内容进行修改?

早期章节相当相似(当然,代码示例和语法特性方面的差异除外)。

正如我所说,这两本书都是关于教授计算机编程而不是特定语言。所以关于编程艺术的大部分内容相当相似。但是,当涉及到语言特性时,显然有一些主要差异。

例如,关于字符串的章节相当不同,因为《Think Perl 6》中有一个关于正则表达式或正则的长篇内容,而Python书籍甚至没有提及。

后期章节,如关于面向对象编程、语法或函数式编程的章节,完全不同或甚至全新。

您开始将《Think Python》翻译成法语。是什么激励您这样做?

正如我所说,我非常喜欢这本书的第一版。当我的朋友们考虑将这本书翻译成法语时,我强烈支持这个想法。

最初,有另一个人(我因为和她一起在其他项目上工作而很熟悉她)开始翻译这本书,我最初担任翻译的技术编辑。然后我被更多地拖入项目中,并自己翻译了更技术性的部分。

您还翻译了什么?

我翻译了许多其他的东西。关于像书籍大小的物品,我应该提到chromatic的《Modern Perl》,我现在正在翻译一本关于Scala的书。

除此之外,我还翻译了许多关于编程语言各种特性的简短教程和文章,如Perl 5、Perl 6、Python、C++、Go等,以及关于大数据的各种文章,还有一些关于树莓派的文章。

您认为在法语和英语中思考问题的方式不同吗?这些口语语言是否影响了您解释事物的方式?

不,我认为我所使用的语言不会影响我的思维方式。有时我在用法语写作时会在英语中思考,有时则相反,但大多数时候,我在我试图表达自己的语言中思考。我甚至在两种语言中做梦(尽管更频繁地在法语中)。我认为我在真正的意义上是双语者,因为我真的可以用两种语言思考而没有任何真正的差异(尽管,当然,我的英语水平不如我的母语法语流利)。

但当然,我所使用的语言在某种程度上改变了表达思想的方式。

《Think Perl 6》的副标题是“像计算机科学家一样思考”。您认为编程世界需要更多的学术严谨性吗?

更多的学术严谨性,嗯,是的,在某种程度上,但我不确定这真的是缺乏的东西。更广泛的计算机科学理解肯定需要。有时我看到人们在一个语言中开发,比如PHP,但并不真正了解任何其他语言或任何其他做事方式;这不太好。我倾向于认为如果你只了解一种语言,你就不能成为一个真正优秀的程序员。我个人非常喜欢编程语言,我在过去三十年中至少使用过三十多种。我认为这打开了其他方法和更好的做事方式的大门。

我非常同意Tom Christiansen的说法,一个没有接触过命令式或过程式编程、面向对象编程、函数式编程以及逻辑或声明式编程的程序员有一些概念上的盲点。

而且我也不认为你可以仅仅通过一个学期或简单地阅读“Programming X for Dummies”成为一位优秀的程序员。

哪本书对您的编程习惯影响最大?

近期,当然非马克·贾森·多米努斯的《高级Perl》莫属,这是一本关于Perl 5函数式编程的书籍。在我看来,这可能是过去十年中我读过的最好的IT/CS书籍。它真正改变了我编程的方式,不仅在Perl中,而且在其他编程语言中编写代码的方式也发生了变化。

哪些使用非Perl语言的书籍使你成为一个更好的Perl程序员?

很难列出清单而不会忘记一些重要的书籍。仅举几个例子,不分先后:《编程实践》(Kernighan和Pike)、《程序设计语言的构造与解释》(Abelson和Sussman)、《Python编程思维》(A. Downey)、《编程珠玑》(Jon Bentley)、《精通正则表达式》(Jeffrey Friedl)。

即使某人不会使用Perl 6,他们能从你的书中学到哪些可以应用到其他语言中的教训?

嗯,我当然希望使用我的书学习编程的人会继续使用Perl 6,但如果他们通过我的书学会了编程并在其他语言中成为优秀的程序员,我也会非常高兴。

就我个人而言,在我学习的时候,我不得不使用一些我在之后很少或从未用于任何实际目的的编程语言(Basic、Fortran、Pascal、Lisp、Scheme、Caml、Ada、Prolog、Modula-2等)。但我从它们中学到了很多东西。

你对Perl 6的未来有什么看法?

坦白说,我不知道。我认为这种语言确实非常好且高效,但这并不足以使其成为主导语言。有一定的运气因素:这种语言是否在正确的时间出现?让我们面对现实:Perl 6的出现花了太长时间。但如果Perl 6与当今的需求相匹配,那么这也不算什么;我认为它很可能匹配。Perl 6的优点是它很容易扩展;因此,它很可能会满足当前的需求,也能满足未来的需求。

你希望在Perl 6中看到什么样的未来?

我真的认为这是我迄今为止见过的最伟大的编程语言。我希望人们会开始认识到这一点。


本文最初发布在PerlTricks.com

标签

brian d foy

brian d foy是一位Perl培训师和作家,也是Perl.com的高级编辑。他是《精通Perl》、《Mojolicious Web Clients》、《Learning Perl Exercises》的作者,也是《Programming Perl》、《Learning Perl》、《Intermediate Perl》和《Effective Perl Programming》的合著者。

浏览他们的文章

反馈

这篇文章有什么问题吗?请在GitHub上打开一个issue或pull request来帮助我们,地址为GitHub