Perl 6 教程

一點點閑話

Perl是一門非常經(jīng)典的編程語言,廣泛用于文本處理,系統(tǒng)維護,網(wǎng)關(guān)編程(CGI)等許多領(lǐng)域。但是近年來,Perl的風頭漸漸被一些新的語言所蓋過,如Python,Javascript,Node.js等等。尤其是Python,這個從一開始就被視為Perl的對手的語言,得到了廣泛的認可和青睞。在最新的TIOBE編程語言排行榜上,Python已經(jīng)上升到第四位,超過了PHP,Javascript,僅次于三巨頭Java, C/C++。

目前Perl的穩(wěn)定版本是2015年6月1日發(fā)布的5.22。要知道,Perl 5的第一個版本5.000是在1994年發(fā)布的,距今已經(jīng)超過20年。至此之后,Perl的主版本號就一直停留在5,后續(xù)的開發(fā)工作也是基于Perl 5編譯器的核心,這使得Perl 5編譯器的核心變得越來越龐大,越來越復雜。其實,Perl的開發(fā)社區(qū)很早以前就意識到了這個問題,在2000年的時候,Perl的核心領(lǐng)導者Larry就提出了開發(fā)Perl 6的計劃。由于種種原因,Perl 6的開發(fā)計劃進度非常緩慢,過程中遇到了很多困難,發(fā)布日期也是一推再推。

但是,好消息是,盡管困難重重,Perl 6還是要來了。在2015年2月的一次學術(shù)會議上,Larry宣布,Perl 6將在2015年的圣誕節(jié)

正式發(fā)布。10月,Perl 6的官方網(wǎng)站也做了一次大的更新,添加了許多有用的資料?,F(xiàn)在距離圣誕節(jié)還有不到三周的時間,作為一名Perl的粉絲,非常期待Perl 6正式發(fā)布后能夠一掃近年來的頹勢,重新回到大家的視野中。鑒于目前Perl 6的中文資料非常稀少(英文資料也不是很多),準備在此做一個Perl 6的簡明教程。無論你之前有沒有接觸過編程,無論之前有沒有接觸過Perl,都可以試著讀一下本教程。希望大家能夠喜歡Perl 6,喜歡我的教程。

雖然現(xiàn)在Perl 6還沒有正式發(fā)布,但是我們已經(jīng)可以用上Perl 6了。早在2010年,Rakudo團隊就發(fā)布了第一個可用的Perl 6的編譯器。在這里要稍微說一下關(guān)于Perl 6和他的編譯器名稱的問題。在Perl 5時代以及更早的時候,Perl既可以指這Perl一門語言,也可以指Perl的編譯器??墒窃赑erl 6的時候,Larry提出我們要讓語言本身和他的實現(xiàn)相分離。所以Perl 6指的是這個語言的設(shè)計標準,而他的實現(xiàn)(編譯器)可以是不同的。類似的例子就如C++。C++是一門語言,但是他可以有不同的編譯器,比如VS C++,G++,CLANG等等。而Rakudo就是目前對Perl 6標準支持最完善的一個編譯器。當然,要指出的是,這里的編譯器和C/C++的編譯器還是很不一樣的。因為Rakudo并不是將Perl代碼編譯成機器碼,可以在CPU上直接執(zhí)行,而是轉(zhuǎn)換成一種類似Java Bytecode的中間代碼。這種中間代碼可以在虛擬機上運行。其中,JVM就是被支持的一種虛擬機。除了JVM,還有MoarVM,這是比JVM更好的選擇。除了這兩個以外,還有一個叫Parrot,曾經(jīng)是Perl 6主要支持的。后來因為一些變故和MoarVM的崛起,Perl 6轉(zhuǎn)向了主要支持MoarVM,這些就不展開啦??偠灾琍erl 6完全擺脫了Perl 5的編譯器,采用的是一個全新的,沒有歷史包袱的架構(gòu)。這同時也帶來了一些問題,主要有兩個。一是Perl 6并不完全向下兼容Perl 5的語法。對于以前的Perl 5的程序,不能保證他們可以正確地被編譯,可能出現(xiàn)編譯錯誤。對于這個問題,在Python 2向Python 3轉(zhuǎn)變的過程中也遇到過。二是Perl 6由于采用了先編譯到中間代碼,再通過虛擬機執(zhí)行的方式,他的運行速度相比Perl 5慢了不少。這兩個問題目前還沒有非常完美的解決辦法。

雖然Perl 6還有一些問題,但是這不能掩蓋Perl 6背后先進的設(shè)計思想和更豐富好用的語法所帶來的便利。在Perl 6還沒有發(fā)布前,我們可以通過安裝Rakudo和MoarVM(JVM/ParrotVM)來體驗和學習一下Perl 6。

如何安裝

Windows

對于windows用戶,可以去這個頁面下載適合的安裝程序(.msi)

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

Mac OS X

對于Mac用戶,最好的方法就是用Homebrew。如果你已經(jīng)裝了,那么就可以通過下面的命令

$ brew install rakudo-star

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

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

根據(jù)我自己的經(jīng)驗,這個rakudo的版本已經(jīng)更新到了基于MoarVM的2015.9,已經(jīng)是非常新的版本了。如果你的版本比我的還要新,那么恭喜你。

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上的版本要低一些,但是功能上該有的也基本都有了,所以問題不大。

如果你特別在意版本的問題,想要用到最新的版本,也有辦法,可以自己編譯源碼。但是非常不建議沒有經(jīng)驗的新手嘗試。

從源碼編譯安裝(慎重)

首先,從源碼編譯安裝要求

  • 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已經(jīng)裝好啦。
下面就可以用這條命令安裝Rakudo了。

$ rakudobrew build moar

經(jīng)過將近十分鐘的等待和屏幕上眼花繚亂的安裝信息之后,Rakudo和MoarVM已經(jīng)成功裝好了。這時候再查看版本信息

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

不錯吧,已經(jīng)更新到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
>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 標題: Rakudo and NQP Internals子標題: The guts tormented imple...
    焉知非魚閱讀 1,527評論 1 3
  • 2016-10-20 號更新。 源文件可以在 github 或 perl6.org上找到. General Rak...
    焉知非魚閱讀 1,062評論 0 0
  • TITLE: 編程語言亂燉 碼農(nóng)最大的煩惱——編程語言太多。不是我不學習,這世界變化快! 有時候還是蠻懷念十幾、二...
    碼園老農(nóng)閱讀 5,602評論 2 35
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,805評論 9 468
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評論 19 139

友情鏈接更多精彩內(nèi)容