Ruby先驅(qū)者談該編程語(yǔ)言之短板
譯文Ruby締造者松本行弘以及Rails締造者David Heinemeier Hansson就該語(yǔ)言作出坦率評(píng)論。
作為最初發(fā)布于1995年的動(dòng)態(tài)語(yǔ)言,Ruby憑借著自身的便捷性優(yōu)勢(shì)而受到廣泛好評(píng)、并經(jīng)常出現(xiàn)在人氣語(yǔ)言評(píng)選的榜單之上。不過(guò)多年以來(lái)Ruby也受到了不少批評(píng)者們的抨擊。面對(duì)這一狀況,Ruby社區(qū)中最為突出的兩位成員毫不畏懼,以坦率的態(tài)度笑看針對(duì)該語(yǔ)言的攻擊與贊賞。
Ruby締造者松本行弘與高人氣Ruby on Rails Web開(kāi)發(fā)框架締造者David Heinemeier Hansson就自己對(duì)于Ruby的態(tài)度,接受了InfoWorld本周進(jìn)行的郵件采訪。
Ruby的優(yōu)勢(shì)
松本行弘在談到他一手打造的編程語(yǔ)言的優(yōu)勢(shì)與短板時(shí)顯得有些沉默寡言。根據(jù)他的說(shuō)法,Ruby擁有“簡(jiǎn)潔特質(zhì)并提供具備可讀性的代碼。”此外,Ruby還擁有“更出色的抽象化能力,例如面向?qū)ο缶幊獭⒑瘮?shù)性編程以及元編程等等。”
他同時(shí)指出,Ruby的性能表現(xiàn)“對(duì)于大多數(shù)用例來(lái)說(shuō)已經(jīng)足夠優(yōu)秀”,而且目前互聯(lián)網(wǎng)上擁有大量與Ruby相關(guān)的資源、因此該語(yǔ)言“在全世界范圍內(nèi)都擁有積極的社區(qū)體系。”在羅列Ruby優(yōu)勢(shì)時(shí),松本行弘還提到了Ruby on Rails以及RubyGems包管理器。
與此同時(shí),Hansson則在列舉這款語(yǔ)言的優(yōu)勢(shì)時(shí),首先提到“Ruby很明顯高度關(guān)注程序員的積極情緒”。“從這一關(guān)注重點(diǎn)出發(fā),Ruby擁有理想的使用舒適度以及源自便捷性的突出美感。編寫Ruby代碼是一種簡(jiǎn)單而愉悅的體驗(yàn),我所使用過(guò)的任何一種其它編程語(yǔ)言都無(wú)法在這方面與之比肩。”
他同時(shí)表示,Ruby語(yǔ)言還包含有多種范式:“Ruby是一種顯而易見(jiàn)的后現(xiàn)代編程語(yǔ)言:它從所有主流編程范式當(dāng)中汲取到精華。大家可以在必要時(shí)利用它實(shí)現(xiàn)面向?qū)ο箝_(kāi)發(fā),而函數(shù)性編程也能在Ruby當(dāng)中實(shí)現(xiàn)。其廣泛的能力以及精妙的編程規(guī)劃原則實(shí)在令我感到嘆為觀止。”
Ruby還在發(fā)展與穩(wěn)定之間找到了理想的平衡點(diǎn),Hansson指出。“Ruby世界可謂發(fā)展迅猛,但卻并沒(méi)有快到讓使用者搞不清狀況——就像JavaScript那樣。此外,Ruby的發(fā)展步伐也沒(méi)有慢到像Perl那樣趨于停滯、甚至像Python 3那樣根本鮮有人問(wèn)津。它顯然找到了適合自己的絕佳發(fā)展軌道。”
Ruby的短板
說(shuō)起劣勢(shì)話題,松本行弘表示Ruby的語(yǔ)法可能太過(guò)復(fù)雜、開(kāi)發(fā)人員很難一次性將其徹底掌握。此外,Ruby“與Java或者Scala等靜態(tài)編譯語(yǔ)言相比,在速度上處于劣勢(shì)”。而且在非Web領(lǐng)域缺少豐富的應(yīng)用程序與庫(kù),例如研究性計(jì)算范疇,不過(guò)這個(gè)問(wèn)題正隨著SciRuby項(xiàng)目的建立而逐漸得到解決。
說(shuō)起速度問(wèn)題,Hansson坦言“對(duì)于一部分特定的利基型應(yīng)用程序及互聯(lián)網(wǎng)規(guī)模級(jí)別來(lái)說(shuō),Ruby確實(shí)算不上最理想的選擇。這種利基性需求與規(guī)模水平如今正變得愈發(fā)淡化、且遠(yuǎn)離主流需求,但其仍然客觀存在。如果我們能夠利用Ruby應(yīng)對(duì)一切,而不必再屈就于Go、Rust或者C等系統(tǒng)級(jí)語(yǔ)言當(dāng)然最好,但實(shí)際情況卻并非如此。”
與此同時(shí),Ruby的可表達(dá)性往往會(huì)讓DSL變得“過(guò)于聰明”,Hansson指出。“如果大家愿意,完全可以編寫出看起來(lái)大體類似于普通英文那樣的Ruby代碼。不過(guò)大體類似有時(shí)候反倒不如‘完全不同’來(lái)得好,AppleScript已經(jīng)用實(shí)際教訓(xùn)向我們證明了這一點(diǎn)。在我看來(lái),一部分非常流行的Ruby庫(kù)在這方面似乎有點(diǎn)誤入歧途了。”



















