小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

為什么說Ruby是一種簡單的語言?

 duduwolf 2005-09-19
前些日子在熊節(jié)先生的blog上看到一段文章“Why Ruby is Simple”,試著翻譯了一下,譯文如下(原文摘自《The Ruby Way》一書):

 Ruby的一大優(yōu)點就是簡單。對于這一點我想引用一個思想家的話來說明——正如Antoine de St. Exupéry所說“所謂完美,并不是說不需要加入新的內(nèi)容了,而是說沒有什么應該被去掉的了。”

 然而Ruby語言實際上也有它復雜的一面。那么為什么我還要說它是簡單的呢?

 如果你對宇宙感興趣的話,那你應該聽說過“復雜性守恒定律”——即,事實上我們不可能完全避免復雜性,不過我們卻可以對它進行重新分配。

 這就是問題的關(guān)鍵——復雜性不可能被完全避免,但我們卻可以在某一階段對它置之不理,視而不見。這也就是現(xiàn)在流行的傳統(tǒng)的“黑箱”理論,一個“黑箱”可以在內(nèi)部完成一個相當復雜的任務,但是對于外部使用者來說它卻又非常易于操作。

 就像愛因斯坦說的:“每件事情都應該盡可能的簡單,但也不能過分簡單。”

 在Ruby當中我們會發(fā)現(xiàn),程序員的想法可以以非常簡單的形式表現(xiàn)出來(當然對于維護解釋器的那些程序員而言,情況也許不是這樣)。不過,Ruby也作了一些折衷的處理。畢竟在現(xiàn)實世界中,我們多少要做一點妥協(xié)。比如,在一段Ruby程序中每一個實體(entity)都應該是一個真正的對象(true object),然而在實際執(zhí)行的時候,某些象整數(shù)(integer)這樣的值卻是以直接值(immediate value)的形式存儲的。在計算機科學發(fā)展的數(shù)十年間,類似的折衷對我們來說并不陌生,為了獲得能夠運轉(zhuǎn)起來的實際作品,我們往往會放棄優(yōu)雅的設(shè)計。事實上我們總是以犧牲一種簡潔性(理論的簡潔性)為代價來換取另一種簡潔性(實現(xiàn)的簡潔性)。

 “當你用一個較小的語言表述你的思想的時候,你會寫出一大堆東西來。而當你用一個較大的語言來做同樣事情的時候,你只需要寫一點就夠了。”Larry Wall的這一段關(guān)于Perl語言的評論同樣也適用于英語(以及大多數(shù)編程語言)。比如生物學家Ernst Haeckel就曾經(jīng)用“Ontogeny recapitulates phylogeny”這3個單詞來概括他的工作,當然我們知道在這3個高度濃縮的單詞背后,包含著大量具體而復雜的意義——而這也正是我們程序員要做的工作——我們應該讓語言具有“內(nèi)在的復雜性”,這樣我們才能保持簡單的表達方式,而把復雜的細節(jié)隱藏起來。

 我個人對簡潔性的理解是:如果你能用10行代碼搞定一個程序,那就不要把它寫成200行。

 我相信簡短通常來說是一件好事。對于程序員來說,一段短小精悍的程序更容易記憶,也更容易把握其整體思路。同時它還會帶來一個好的“副作用”——寫代碼的時候,不容易出現(xiàn)bug。

 當然我們也不能忘記愛因斯坦的警告。如果過于強調(diào)簡潔性,那我們的代碼最終也許會變成一堆沒人能夠理解的垃圾。信息論的研究結(jié)果表明:信息被過分“壓縮”的時候往往會令人費解——如果你見過或者親自用C、APL之類的常規(guī)表達式語言編寫過程序的話,你就會體會到惡劣的編碼方式帶來的危害。簡單,但不過于簡單;讓代碼盡量簡短,同時又保持可讀性。這才是我們應該做的。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多