加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

转载唐凤的博客 :: Perl 6 十周年慶

发布时间:2020-12-15 21:04:30 所属栏目:大数据 来源:网络整理
导读:2010.07.19 Perl 6 十周年慶: 前言 (五之一) (This is a translation of masak++'s excellent Perl 6 anniversary post,part 1 of 5.) (這是 masak++ 一篇網誌的中譯,分五部刊出,這是第一部份。) 十年前的今天,Jon Orwant 在一場會議上摔咖啡杯。 據維基
2010.07.19 Perl 6 十周年慶: 前言 (五之一) (This is a translation of masak++'s excellent Perl 6 anniversary post,part 1 of 5.) (這是 masak++ 一篇網誌的中譯,分五部刊出,這是第一部份。) 十年前的今天,Jon Orwant 在一場會議上摔咖啡杯。 據維基百科記載,Perl 6 計劃是從十年前的七月十九日開始的。 而前一天的擲杯事件,可以說是觸發 Perl 6 誕生的火苗。 Jon 為什麼要扔杯子呢?請看 Larry Wall 的口述歷史: 頭一小時裡,我們討論的都是些無聊沉悶的政治組織問題。 開會開到一半,Jon Orwant 走進房間,站在一邊聽了幾分鐘。 然後他很淡定地走向咖啡桌,上面大約有20個咖啡杯。 他拿起一個杯子,往對面的牆壁扔去。然後再丟一個。 他邊扔邊說: 「我們得想想辦法激勵社群,不然就都完了。大家越來越無聊,都去做別的事了。」 他說對了。原本他也許是想辦一場更大的 Perl 會議,或是讓 Perl 某些功能更強等等。但他說得很對, 他刺激了我們。 他接著說: 「我不管你們怎麼做,可你們得搞些大事出來。」然後他掉頭就走。 你要知道,這是我見過最完美的一場暴走。如果你認識 Jon,就會知道他很能自制。 他發這場脾氣完全是事前計劃好的。非常驚人。 我當時就想: 「我是不是也該站起來摔杯子呢?」 在構思這篇網誌時,我只聽說過這件事,但不確定它是哪天發生的。我上網查了些資料,還是找不到確切的日期。 不過,我找到了一份電子郵件,上面列出了有哪些人在場,以及 Jon 到底丟了幾個杯子。 最後,我決定在 IRC 頻道上直接問 Larry。接下來這段充滿雙關的對話紀錄,很能代表 #perl6 的氣氛: <TimToady> masak: 對了,那些杯子是前一天扔的。? <jnthn> 那些?我以為只扔了一個杯子!? <masak> jnthn: 五個。? <masak> jnthn: 不過,只有一個摔破了。? <masak> TimToady: 感謝。這樣我還來得及寫周年紀念文。? <jnthn> masak: 礸!? <TimToady> 我當時應該把碎片留作紀念的。? <masak> 「Perl 6: 相容性、咖啡杯,2000 年起都砸碎。」? * pmichaud 打開 photoshop,準備放上 cafepress? <masak> pmichaud: 「Perl 6: 打破杯具,再創豐杯。」 <pmichaud> 「語言有難時,請擊碎此杯。」? <jnthn> 「Perl 6: 比 Perl 5 更牆一杯。」? <pmichaud> 「Perl 6 大破大立、碎碎平安!」? <masak> "if $杯 === all @碎片 {say '夠了,太杯撞了!'}? <jnthn> 你杯得動的。:P? * masak 笑到杯桁了? <TimToady> 「Jon 為什麼要扔甜甜圈呢?」 -- 拓樸學家 <masak> :P? <TimToady> 「這是碎杯。<mug> 這是你嗑了碎杯的腦袋。 ? ? ? ? ? ? ?<camelia> 有問題嗎?」? <masak> 「Perl 6: 十年聖杯碎,今請尋其蹤。」? <jnthn> 「杯比怎麼昇出來的?」? <masak> 都被 Jon Orwant 搞大了。? <jnthn> 五杯無寸鐵,何人竟害之!? <masak> 我為清潔工祈倒。? <masak> 「Perl 6: 杯已擲下。」 Perl 6 至今已有十年的歷史了。接下來,我會從(主要是)我個人的觀點,敘述這十年來的經過。 除了紀錄史實之外,我也希望能分享我對這個專案的熱情,以及為什麼我認為 Jon Orwant 的一擲,造就了現代程式語言史上最酷的計劃之一。 2010.07.21 Perl 6 十周年慶: 遠古時期 (五之二) (This is a translation of masak++'s excellent Perl 6 anniversary post,part 2 of 5.) (這是 masak++ 為慶祝“樂土專案”即將正式發行所寫的紀念文章的中譯。) 也許你聽說過 Perl 6 最初的「徵求建議(RFC)」過程 。當時 Perl 6 才剛開始,連 Larry Wall 都還不知道要朝哪個方向發展。 於是,Perl 社群建了一套系統,公開徵求對語言功能的建議。 系統上線時,團隊原本估計會收到大約 20~30 份建議書。 結果,總共收到了 361 份! 建議書不只是數量多,而且涵蓋的範圍五花八門,甚至互相衝突。大部份的建議只考慮到一個面向,完全沒有考慮到它會對整體語言造成什麼影響。 如果當時我們竟然把所有建議都實作出來的話,結果也許會像這頭著名的 Perl 6 大怪獸一樣吧。 除此之外,社群對建議書的後續討論裡,往往缺乏「如何實作」的細節。Mark-Jason Dominus 對 Perl 6 RFC 過程的評論如下: 於是「誰來幫貓掛鈴鐺」的問題就出現了。人們提出各種各樣的功能,然後不停討論細節,但其實這些功能根本沒辦法實現。 [...] 這讓討論失去焦點,難以集中到實際可行的權衡取捨上。[...] 最後,就我個人而言,我覺得這種「不求甚解」的態度相當惱人。它讓很多實際瞭解 Perl 內部細節的人不想參與討論。 最後還是 Larry Wall 獨力接下了整合 RFC 的重任,將它們融會貫通成完整的構思。他發佈的文件統稱「啟示錄」,對 RFC 分門別類、逐項點評:有的獲得採納,有的部份保留,也有些遭到駁回。 啟示錄的編號,依照駱駝書的章節順序排列:舉例來說,和第三章「算符」相對應的「啟示錄三」,講的就是 Perl 6 裡該具備哪些算符。 以下是所有已發佈的啟示錄: 啟示錄一,2001年5月 啟示錄二,2001年5月 啟示錄三,2001年10月 啟示錄四,2002年1月 啟示錄五,2002年6月 啟示錄六,2003年3月 啟示錄十二,2004年4月 2001 ~ 2004 這三年,可說是 Perl 6 從眾人的意見中逐漸淬煉成形的階段。 與「啟示錄」同時發佈的,還有由 Perl 6 的主要設計者之一 Damian Conway 撰寫的「注疏」。 「啟示錄」注重的是語言的藍圖,以及功能的去留與否。「注疏」則負責展示如何使用新的功能,並對 Perl 5 程式員解釋 Perl 6 提供了哪些改進。 此刻我重讀「注疏」,覺得特別有趣的是當年「Perl 6 只是 Perl 5 的新分支」這個想法。當時的 Perl 6 已經作出許多細部的改進,但是 Damian 在「注疏二」裡,介紹完一長段 Perl 6 程式後,仍然如此敘述: …事實上,這支程式總共 1779 字,和 Perl 5 的版本之間只差 40 個字。而且幾乎都只是把陣列取值從 $x[…] 改成 @x[…] 而已。不用靠 p52p6 自動翻譯,就有 98% 的相容性… 還不賴! 這個想法如今已然不再。如果你到 #perl6 頻道上問「Perl 6 和 Perl 5 像不像?」我們會這樣回答:雖然這兩種語言的基本概念和目的相以,但是語法卻大有不同。所以,最好把 Perl 6 當作新的語言來學,而不是用寫 Perl 5 的角度來思考。 在 2004 年,Perl 6 團隊對啟示錄作出摘要,去除闡釋的段落,發佈成足以作為語言規格的幾篇「綱要」,以供實作團隊參考。「綱要」雖然言簡意賅,但對於想深入瞭解 Perl 6 語言的人來說,仍然是不可或缺的一批文件。 作為 Perl 6 語言的定義,「綱要」一直持續更新至今。在 perlcabal.org 上,目前共有 33 篇綱要。其中的 S02 ~ S06 已經相當穩定,偶爾有些小幅更動。其餘部份則仍然處於草案階段,有待實作者及使用者的後續回饋,來讓它們更臻完善。 與此同時,許多實作 Perl 6 的計劃紛紛出現,但最終都以放棄收場。 早在擲杯事件和 RFC 之前,Chip Salzenberg 就用 C++ 開始進行「Topaz」計劃,並準備將它發展成 Perl 6。Topaz 原本打算重寫 Perl 5 的內部結構,但卻難以為繼。 當我問 Larry 為何 Topaz 會失敗時,他的回答是:「重新實作過的瘋狂,依然還是瘋狂。」(意思是:「不要試圖把 Perl 5 的核心改裝成 Perl 6。」) 此外還有「Sapphire」專案,只持續了一個星期。它開始於 2000 年 9 月,當時 Perl 6 才剛宣佈不久。Sapphire 也採取了「重寫 Perl 5 核心」的規劃,作為 Perl 6 正式實作前的預習。 不久之後,Parrot 專案開始發展。它是一個專為動態語言設計的虛擬機器,特別適合執行動態程度極高的 Perl 6 所需。 同時開始的還有 Ponie 專案,試圖將 Perl 5 硬生生移植到 Parrot 上咝小U邕@篇文章所述,Ponie 因為巴士數太低,以及當時 Parrot 還不夠成熟的緣故,最終在 2006 內正式解散。 當時我是一介旁觀者,只知道有 Parrot,沒聽過其他專案,更不知道 Parrot 上曾經出現過的 Perl 6 實作。 我認真讀完了每篇「啟示錄」和「注疏」,覺得它們很有意思。 可然後呢?這個程式語言有一天能成真嗎?沒人曉得。似乎沒有什麼激動人心的事情發生。 在 2005 年初,有位唐某人在 perl6-all 通信論壇上貼了一段短訊,說自己正在實作一小部份「不產生副作用咚愕

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读