(I promised Pm a translation on Pm's use.perl journal back in Apr 23, and here it is.)
(這是 Rakudo Perl 的負責人 Patrick Michaud 最近在 PerlMonks 上某篇文章的中譯。感謝唐宗浩與蒙面噗友協助潤稿。
Perlmonks.org 上最近有位蒙面僧人,發起了一場關於 “Perl 6 之現況” 的討論,對 Perl 6 開發的各個方面,指天畫地,無所不談。
我個人呢,覺得蒙面僧的評論, 既缺乏邏輯,又脫離現實,教人不知從何回起。
不僅如此,我當前的人生,有更重要的事情需要我:我的家庭正經歷一段艱困的過程 -- 我得先照顧好他們纔行。
樂土(Rakudo) 和 Perl 6,只好排在稍遠的第二位。
至於回應蒙面人所寫出的垃圾呢, 甚至不該在我的心裡佔有一席之地。
但是,討論串裡有則評論,讓我深感困擾,使我不得不作出回應 -- 即使是未盡完善的回應也好。
我不想把這份回應埋藏在討論串裡,所以另起專文論之。
蒙面僧如此寫道:
喔,咱來告訴您怎麼做。[寫出支持 Perl 6 的文法引擎] 再簡單也沒有了。
您只要找懂得怎麼做這件事的人就行了!
寫這玩意兒的方法,大學裡都有教的(當然要好一點的大學才行)。
教授們有開課,教“形式語言與自動機”和“編譯器理論”呢。
您們這幫開源志工,要知識沒知識,要學識沒學識... 連理論都無法掌握,怎麼做實踐呢?
我想請教蒙面僧:“您以為都是哪些人在做 Perl 6 啊?”
我個人是資訊科學系博士,在大學教程序語言已經十四年了。
Damian Conway 博士的學術背景也不賴(澳洲 Monash 大學),他很熟悉語言和編譯器設計的理論與實務。
Jonathan Worthington 是劍橋畢業的,他主修的正是“編譯器實作與形式語言”。
Larry Wall 在加州柏克萊讀語言學碩士前,大學主修“自然語言與人造語言”。
我們團隊裡許多重要的成員,對語言理論與實務都有充份的學術和實踐背景。
就各個動態語言的開發團隊而言,無論蒙面僧想舉哪個作例子,我們這群人的學術訓練都足以與之匹敵。
要是 Perl 6 沒法請到真正搞編譯器的人來用、來幫忙,那就甭指望平庸的開源嫩咖能做出什麼事了。
我實在沒法想像 Larry、Damian、Allison 等人不是“真正搞編譯器的”。他們和 Perl 6 的許多參與者,在培育開源人才和專案上都有相當豐富的經驗。
如果您覺得 Larry 等人不夠格設計、實作編程語言,那別說 Perl 6 了,Perl 5 可能也不入您的法眼。
蒙面僧這類人士,往往大放厥辭,逕自揣測 Perl 6 應該花多久才會開發完成,而後如果 Perl 6 花的時間比他們想得久,各種猜想就出現了。
最常見的猜想,不外乎“開發團隊能力不足”(見上文),“設計過程本身有瑕疵”,“Parrot 架構太差,無法供 Perl 6 所需”等等。
這些蒙面人輕易就能對 “Perl 6 出了大問題”胡吹一通,卻不願意稍微費點時間看基礎事實,以檢驗自已的論點。
事實上,我時常覺得很有趣:這些人建議我們做的改革,其實往往早已行之有年。
回到開發文法引擎的主題。蒙面僧認為這“再簡單也沒有了”,我們需要的只是“找到懂得怎麼做的人”。
但如果我們來看看實際上,Perl 6 標準文法(STD.pm6)的開發過程,就會發現事情遠非如此。
我想,STD.pm6 很能代表所有 Perl 6 實作人員所面臨的挑戰。試考慮以下事實:
- Larry 本人是標準文法的主要實作者。
- 實作標準文法時,不需要等待其他規格確定,因為標準文法即是規格的一部份。
- STD.pm6 完全在 Perl 5 上運行 -- 不受所謂 “未經證實的虛擬機器” 影響。
然而,從 Larry 發起標準文法以來,已經三年過去了。今天的 STD.pm6 雖然很好很強大,但離“完工”還有一段距離。在它開發的過程裡,也已經大幅重構了許多次。
這個故事告訴我,此項目所需的龐大時間和精力,似乎是 Perl 6 高昂野心的自然結果,與主事者的能力關係不大。
讀者們看到這裡,也許馬上想問:“如果光是剖析器就要寫上三年,那編譯器豈不還要更久,這樣 Perl 6 的誕生不就沒指望了嗎?”
我們可以用幾項事實來回答這個問題:
- 其他元件的工程,和 Larry 負責的文法部份是同時並行的。
- 軟體開發,並不是依照固定順序進行的生產線。
- 已經有好幾個 “足堪使用” 的 Perl 6 實作了。
Perl 6 與大學裡教的傳統編譯器建構方式,可說是南轅北轍。Perl 6 所代表的,是對編程語言設計和實作的全面範型轉移。
這個新的範型給了 Perl 6 強大的威力,但也正因如此,Perl 6 決不是幾位研究生可以開個專題,就實作完成的語言。
誠如 TimToady 在 #perl6 所言:“世上已經有太多那種語言了。”
就個人而言,我很感動,也很榮幸能與 Rakudo 和 Perl 6 的人們共事。
Perl 6 是個很酷的語言。我理解人們在漫長等待它實現的過程裡,難免感到沮喪、甚至痛苦。在這個主題上,我只能盡一己之力,做些有建設性的工作。
但是,我也發現蒙面人士提供的建議、點評、總結等等,大致不出以下四種:
- 我們團隊已經試過了,或目前已經在做了。
- 與現實不符。
- 和一般合理觀察到的基礎事實相違背。
- 評論者自已並不想使用 Perl 6,純粹只想攻擊它。
如上文所述,這類評論大多只要用一點點事實、一點點常識,就足以反駁。
實在很難想像有人會用心寫出這種怪論。但它們還是出現了。
言歸正傳。我覺得以上回覆未盡完善,因為在同一個討論串裡,蒙面僧還提出了許多其他的論點,我無法一一反駁。
當然,我可以再花上幾個小時分析、回應其中的謬誤失實之處,但老實說,我覺得再費精神在這上頭,未必有什麼價值。
Moritz Lenz、chromatic、Michael Schwern 等人,也正在勉力寫出合情合理的文章,來回應無憑無據的指控。
我很感謝他們的襄助。想想,蒙面僧等人要寫出這些廢話費的力氣很少,與我們少數幾個人要澄清這些指控所費的精神,完全不成正比。
然而,這些指控仍有必要澄清,否則它將會持續腐臭,發散到更廣大的空間中,衍生出需要費更多力氣澄清的各式謠言。
我希望這篇文章,至少能鼓勵 Perl 社群裡的成員,對他們所接收到關於 Perl 6 的言論,能多採取批判性的態度來檢視。如果言論的發起人在社群裡並無聲望,那更要再三檢視。
我也希望能有更多人眾志成城,一起協助闢謠,讓這類有瑕疵的思想、分析、對話,不致於經由蒙面僧傳染到整個 Perl 世界。
Pm
附註:有些人可能會說,從上文看來,Perl 6 的藍圖畫得太大,應該向下修正,才能“準時完成”。
這樣說也不無道理,但我有兩點回應:
1. 我們已經有“準時”每月釋出的版本了。各位不妨下載試用、回報瑕疵。
2. 我們已經有“向下修正”的版本了。NQP、STD.pm6 等等都是 Perl 6 的部份實作,目前也有實際的應用價值,並非僅是理論研究的空想專案而已。
人們常說,與其花這麼多力氣在 Perl 6 上,不如把那些精神拿來改善 Perl 5。就我所知,我們這群 Perl 6 的開發者,對 Perl 5 的改良與成長,當然是樂觀其成。
說實在的,Perl 5 幾個最新的功能,都是從 Perl 6 的初始構想中引介而來,這點讓我們很開心。身為 Perl 6 的核心開發者,雖然我們也喜歡 Perl 5,但不表示我有興趣,或有能力,對 Perl 5 核心開發作出貢獻。
我們是人,不是大量製造的程式設計工具,我們並不喜歡只因為別人覺得某個專案更有價值,就把我們從眼前的專案裡拉開,硬生生調派到其他專案裡面。
我個人很希望致力於 Perl 5 的人們,能持續投身於開發工作,順利做出成果。也希望周邊的支持系統更趨完善,讓更多人能在 Perl 5 的天地裡發揮所長。
事實上,這也是我對一切開源專案的祈願,即使其中有些專案,對我個人來說,沒有什麼特別的意義。:-)
Recent Comments