Ruby先驅者談該程式語言之短板
Ruby締造者松本行弘以及Rails締造者David Heinemeier Hansson就該語言作出坦率評論。
作為最初釋出於1995年的動態語言,Ruby憑藉著自身的便捷性優勢而受到廣泛好評、並經常出現在人氣語言評選的榜單之上。不過多年以來Ruby也受到了不少批評者們的抨擊。面對這一狀況,Ruby社群中最為突出的兩位成員毫不畏懼,以坦率的態度笑看針對該語言的攻擊與讚賞。
Ruby締造者松本行弘與高人氣Ruby on Rails Web開發框架締造者David Heinemeier Hansson就自己對於Ruby的態度,接受了InfoWorld本週進行的郵件採訪。
Ruby的優勢
松本行弘在談到他一手打造的程式語言的優勢與短板時顯得有些沉默寡言。根據他的說法,Ruby擁有“簡潔特質並提供具備可讀性的程式碼。”此外,Ruby還擁有“更出色的抽象化能力,例如物件導向程式設計、函式性程式設計以及超程式設計等等。”
他同時指出,Ruby的效能表現“對於大多數用例來說已經足夠優秀”,而且目前網際網路上擁有大量與Ruby相關的資源、因此該語言“在全世界範圍內都擁有積極的社群體系。”在羅列Ruby優勢時,松本行弘還提到了Ruby on Rails以及RubyGems包管理器。
與此同時,Hansson則在列舉這款語言的優勢時,首先提到“Ruby很明顯高度關注程式設計師的積極情緒”。“從這一關注重點出發,Ruby擁有理想的使用舒適度以及源自便捷性的突出美感。編寫Ruby程式碼是一種簡單而愉悅的體驗,我所使用過的任何一種其它程式語言都無法在這方面與之比肩。”
他同時表示,Ruby語言還包含有多種正規化:“Ruby是一種顯而易見的後現代程式語言:它從所有主流程式設計正規化當中汲取到精華。大家可以在必要時利用它實現物件導向開發,而函式性程式設計也能在Ruby當中實現。其廣泛的能力以及精妙的程式設計規劃原則實在令我感到歎為觀止。”
Ruby還在發展與穩定之間找到了理想的平衡點,Hansson指出。“Ruby世界可謂發展迅猛,但卻並沒有快到讓使用者搞不清狀況——就像JavaScript那樣。此外,Ruby的發展步伐也沒有慢到像Perl那樣趨於停滯、甚至像Python 3那樣根本鮮有人問津。它顯然找到了適合自己的絕佳發展軌道。”
Ruby的短板
說起劣勢話題,松本行弘表示Ruby的語法可能太過複雜、開發人員很難一次性將其徹底掌握。此外,Ruby“與Java或者Scala等靜態編譯語言相比,在速度上處於劣勢”。而且在非Web領域缺少豐富的應用程式與庫,例如研究性計算範疇,不過這個問題正隨著SciRuby專案的建立而逐漸得到解決。
說起速度問題,Hansson坦言“對於一部分特定的利基型應用程式及網際網路規模級別來說,Ruby確實算不上最理想的選擇。這種利基性需求與規模水平如今正變得愈發淡化、且遠離主流需求,但其仍然客觀存在。如果我們能夠利用Ruby應對一切,而不必再屈就於Go、Rust或者C等系統級語言當然最好,但實際情況卻並非如此。”
與此同時,Ruby的可表達性往往會讓DSL變得“過於聰明”,Hansson指出。“如果大家願意,完全可以編寫出看起來大體類似於普通英文那樣的Ruby程式碼。不過大體類似有時候反倒不如‘完全不同’來得好,AppleScript已經用實際教訓向我們證明了這一點。在我看來,一部分非常流行的Ruby庫在這方面似乎有點誤入歧途了。”
英文:infoworld
相關文章
- 七週七語言之Ruby
- 程式設計人生:15位軟體先驅訪談錄程式設計
- 閒談Monaco Editor-自定義語言之Monarch
- 談談數字城市的技術短板
- JavaScript非同步程式設計(2)- 先驅者:jsDeferredJavaScript非同步程式設計JS
- AI先驅者丹尼爾·丹尼特去世AI
- Ruby程式語言與Ruby之間的比較
- 極客漫畫:程式語言之戰
- Rust語言之GoF設計模式:中介者Mediator模式RustGo設計模式
- Golang語言之gRPC程式設計示例GolangRPCC程式程式設計
- Ruby 札記 - 淺談和配置 Ruby
- 《程式設計人生》帶您回顧15位軟體先驅言談錄程式設計
- Go語言之methodGo
- Go語言之介面Go
- JAVA語言之SetJava
- C語言之家C語言
- Ruby語言
- Go語言之ContextGoContext
- Go語言之 Struct TagGoStruct
- go語言之反射-------ReflectionGo反射
- 好程式設計師Java分享SQL語言之索引程式設計師JavaSQL索引
- 是否有一種完美語言來終結“程式語言之爭”?
- 深度解密 Go 語言之 channel解密Go
- 深度解密Go語言之 map解密Go
- 深度解密Go語言之Slice解密Go
- 深度解密Go語言之channel解密Go
- C語言之基本概念C語言
- 深度解密GO語言之反射解密Go反射
- Go語言之讀寫鎖Go
- C語言之氣泡排序C語言排序
- C語言之結構體C語言結構體
- C語言之詭異字串C語言字串
- Go語言之包(package)管理GoPackage
- 淺析《先驅者》出色的難度系統設計
- Ruby社群應該去Rails化了AI
- 巨頭們的程式語言之爭:我的語言就是比你好
- 程式語言收入排行榜Ruby居榜首
- 好程式設計師Java教程:SQL語言之檢視程式設計師JavaSQL