Perl 6 教程

一点点闲话

《Perl 6 教程》

Perl是一门非常经典的编程语言,广泛用于文本处理,系统维护,网关编程(CGI)等许多领域。但是近年来,Perl的风头渐渐被一些新的语言所盖过,如Python,Javascript,Node.js等等。尤其是Python,这个从一开始就被视为Perl的对手的语言,得到了广泛的认可和青睐。在最新的TIOBE编程语言排行榜上,Python已经上升到第四位,超过了PHP,Javascript,仅次于三巨头Java, C/C++。

目前Perl的稳定版本是2015年6月1日发布的5.22。要知道,Perl 5的第一个版本5.000是在1994年发布的,距今已经超过20年。至此之后,Perl的主版本号就一直停留在5,后续的开发工作也是基于Perl 5编译器的核心,这使得Perl 5编译器的核心变得越来越庞大,越来越复杂。其实,Perl的开发社区很早以前就意识到了这个问题,在2000年的时候,Perl的核心领导者Larry就提出了开发Perl 6的计划。由于种种原因,Perl 6的开发计划进度非常缓慢,过程中遇到了很多困难,发布日期也是一推再推。

但是,好消息是,尽管困难重重,Perl 6还是要来了。在2015年2月的一次学术会议上,Larry宣布,Perl 6将在2015年的圣诞节

《Perl 6 教程》 正式发布。10月,Perl 6的
官方网站也做了一次大的更新,添加了许多有用的资料。现在距离圣诞节还有不到三周的时间,作为一名Perl的粉丝,非常期待Perl 6正式发布后能够一扫近年来的颓势,重新回到大家的视野中。鉴于目前Perl 6的中文资料非常稀少(英文资料也不是很多),准备在此做一个Perl 6的简明教程。无论你之前有没有接触过编程,无论之前有没有接触过Perl,都可以试着读一下本教程。希望大家能够喜欢Perl 6,喜欢我的教程。

虽然现在Perl 6还没有正式发布,但是我们已经可以用上Perl 6了。早在2010年,Rakudo团队就发布了第一个可用的Perl 6的编译器。在这里要稍微说一下关于Perl 6和他的编译器名称的问题。在Perl 5时代以及更早的时候,Perl既可以指这Perl一门语言,也可以指Perl的编译器。可是在Perl 6的时候,Larry提出我们要让语言本身和他的实现相分离。所以Perl 6指的是这个语言的设计标准,而他的实现(编译器)可以是不同的。类似的例子就如C++。C++是一门语言,但是他可以有不同的编译器,比如VS C++,G++,CLANG等等。而Rakudo就是目前对Perl 6标准支持最完善的一个编译器。当然,要指出的是,这里的编译器和C/C++的编译器还是很不一样的。因为Rakudo并不是将Perl代码编译成机器码,可以在CPU上直接执行,而是转换成一种类似Java Bytecode的中间代码。这种中间代码可以在虚拟机上运行。其中,JVM就是被支持的一种虚拟机。除了JVM,还有MoarVM,这是比JVM更好的选择。除了这两个以外,还有一个叫Parrot,曾经是Perl 6主要支持的。后来因为一些变故和MoarVM的崛起,Perl 6转向了主要支持MoarVM,这些就不展开啦。总而言之,Perl 6完全摆脱了Perl 5的编译器,采用的是一个全新的,没有历史包袱的架构。这同时也带来了一些问题,主要有两个。一是Perl 6并不完全向下兼容Perl 5的语法。对于以前的Perl 5的程序,不能保证他们可以正确地被编译,可能出现编译错误。对于这个问题,在Python 2向Python 3转变的过程中也遇到过。二是Perl 6由于采用了先编译到中间代码,再通过虚拟机执行的方式,他的运行速度相比Perl 5慢了不少。这两个问题目前还没有非常完美的解决办法。

虽然Perl 6还有一些问题,但是这不能掩盖Perl 6背后先进的设计思想和更丰富好用的语法所带来的便利。在Perl 6还没有发布前,我们可以通过安装Rakudo和MoarVM(JVM/ParrotVM)来体验和学习一下Perl 6。

如何安装

Windows

对于windows用户,可以去这个页面下载适合的安装程序(.msi)

http://rakudo.org/downloads/star/

Mac OS X

对于Mac用户,最好的方法就是用Homebrew。如果你已经装了,那么就可以通过下面的命令

$ brew install rakudo-star

可以使用命令查看一下我们安装的Perl 6的版本

$ perl6 --version
This is perl6 version 2015.09 built on MoarVM version 2015.09

根据我自己的经验,这个rakudo的版本已经更新到了基于MoarVM的2015.9,已经是非常新的版本了。如果你的版本比我的还要新,那么恭喜你。

Linux

在Linux上主要有两种方法来安装Perl 6。

从库中自动安装(建议)

如果你是初学者,我强烈建议采用这一种安装方法。

  • Debian/Ubuntu/LinuxMint
$ sudo apt-get install rakudo
  • Fedora/Red Hat/Cent OS
$ yum install rakudo

一句话就解决了,省心。照例看一下版本

$ perl6 --version
This is perl6 version 2013.12 built on parrot 5.9.0 revision 0

我用的是LinuxMint 17.3。这里安装的版本是基于parrot的2013.12,比Mac上的版本要低一些,但是功能上该有的也基本都有了,所以问题不大。

如果你特别在意版本的问题,想要用到最新的版本,也有办法,可以自己编译源码。但是非常不建议没有经验的新手尝试。

从源码编译安装(慎重)

首先,从源码编译安装要求

  • Perl 5.8 or newer (这个基本不会有问题)
  • git
  • make
  • gcc
    对于后三个,如果没有的话需要自己安装。建议采用sudo apt-get install的方法。

其次,我们需要用到一个小工具叫rakudobrew。利用这个小工具,可以让我们很方便的下载并安装最新的rakudo。安装这个小工具需要下面三条命令

$ git clone https://github.com/tadzik/rakudobrew ~/.rakudobrew
$ echo 'export PATH=~/.rakudobrew/bin:$PATH' >> ~/bashrc
$ source ~/.bashrc

如果没有什么错误信息的话,就表示rakudobrew已经装好啦。
下面就可以用这条命令安装Rakudo了。

$ rakudobrew build moar

经过将近十分钟的等待和屏幕上眼花缭乱的安装信息之后,Rakudo和MoarVM已经成功装好了。这时候再查看版本信息

$ perl6 --version
This is raked version 2015.11-416-g328e95e built on MoarVM version 2015.11-34-gc3eea17 implementation Perl v6.b

不错吧,已经更新到2015年11月的某个基于MoarVM的版本了。版本控么应该可以开心了吧。过了一段时间后如果希望升级到最新的版本,就再运行一次这个命令就可以了。

如果想要更新rakudobrew本身,可以用下面这个命令

$ rakudobrew self-upgrade 

除了Rakudo以外呢,还推荐大家装一个小工具叫Panda。名字取的挺好的,就是熊猫。这个是专门为Perl 6用来安装Perl模块的工具。用下面的命令就可以装上。

$ rakudobrew build-panda

装上以后,我们来尝试装一个模块,叫Task::Star

$ panda install Task::Star

这个命令可以一键帮你装好所有常用的Perl 6的模块,就不用等到需要的时候再一个个去找去安装了。

另外需要补充的是,rakudobrew的方法也同样可以用在Mac OS X上,步骤也是一样的。这样也可以为你的Mac装上最新的Perl 6版本。

这样,我们就装好了Perl 6。

第一个Perl 6程序

我们可以试着用Perl 6来写一个最简单的程序:Hello World

$ perl6
>say "Hello World"
Hello World
>
    原文作者:zhangsl16
    原文地址: https://www.jianshu.com/p/697103d4c556
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞