欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
我愛(ài) Ruby 的三十七個(gè)理由-開(kāi)發(fā)者網(wǎng)絡(luò )-Ruby-天極Yesky
 

  這里我就不累述 Ruby 語(yǔ)言的歷史了。如果您還不了解 Ruby,官方網(wǎng)站 www.ruby-lang.org 是最好的去處。而對于已經(jīng)了解 Ruby 的各位,我在此給出我愛(ài)上這門(mén)(相對比較)新的語(yǔ)言的理由。

  1. Ruby 是面向對象語(yǔ)言。 這意味著(zhù)什么呢?的確,關(guān)于“什么是 OOP”,每十位程序員當中恐怕就有十二種看法。這個(gè)問(wèn)題我留待您自己判斷。而就特征而言,Ruby 提供了機制,將數據和方法封裝到對象里,實(shí)現了一個(gè)類(lèi)到另一個(gè)類(lèi)的繼承機制,還提供對象多態(tài)機制。與某些語(yǔ)言(C++、Perl 5 等等)不同的是,Ruby 從一開(kāi)始的時(shí)候就是以面向對象為目標來(lái)設計的。

  2. Ruby 是“純正”的 OOP 語(yǔ)言。 我說(shuō)重復了么?我可不這么認為。說(shuō)“純正”,這就意味著(zhù),所有的一切——包括字符串或整型之類(lèi)的基本數據類(lèi)型——都是以對象的形態(tài)來(lái)表達的。在 Ruby 中用不著(zhù) Java 里面提供的那種 wrapper class(包裹類(lèi))(譯注:wrapper class 用來(lái)將基本類(lèi)型包裝成對象類(lèi)型)。而且,甚至連常量都被當作對象來(lái)對待,因此方法可以由——比如數字常量——來(lái)喚起。

  3. Ruby 是動(dòng)態(tài)語(yǔ)言。 對于只熟悉諸如 C++、Java 等靜態(tài)語(yǔ)言的人而言,這就是個(gè)新概念。所謂動(dòng)態(tài)意味著(zhù),可以在運行期動(dòng)態(tài)地追加或者重新定義方法和變量。這種動(dòng)態(tài)機制免除了對 C 語(yǔ)言中條件編譯(#ifdef)這類(lèi)功能的需要,并且使構建復雜的 reflection(內省機制)API 成為可能。復雜的 reflection 機制又進(jìn)而使得程序可以變得更為“自知(self-aware)”——從而為如下諸多功能開(kāi)啟了方便之門(mén):運行期類(lèi)型信息、丟失方法的偵測、能夠偵測新追加的方法的鉤子技術(shù),等等。從這個(gè)方面來(lái)看,Ruby 與 Lisp 和 Smalltalk 有些許親緣關(guān)系。

  4. Ruby 是解釋型語(yǔ)言。 這是個(gè)復雜問(wèn)題,值得多說(shuō)幾句。有人可以爭論說(shuō),從性能方面來(lái)考量,語(yǔ)言采用解釋型機制弊大于利。對于這種想法,我用下面的斟酌予以回應:1. 首先最為顯著(zhù)的是,快速開(kāi)發(fā)周期(rapid development cycle)頗有效益可得,Ruby 的解釋型語(yǔ)言本質(zhì)助長(cháng)這種效益。2. 太慢到底是多慢呢?說(shuō)慢之前請先做一些性能測試。3. 盡管會(huì )有人因此而批評我,但我還是要這么說(shuō):處理器每年都在持續提速。4. 如果您著(zhù)實(shí)需要速度,您可以用 C 語(yǔ)言撰寫(xiě)需要速度的那部分代碼。5. 最后,從某種意義上說(shuō),有一種值得商榷的觀(guān)點(diǎn):鑒于沒(méi)有哪種語(yǔ)言是從骨子里就被解釋?zhuān)虼瞬⒉荒苷f(shuō)不可能撰寫(xiě)出 Ruby 編譯器。

  5. Ruby 能夠處理正則表達式。 多年以來(lái),正則表達式一直被認為是屬于 UNIX 領(lǐng)域的雕蟲(chóng)小技,涉及諸如 grepsed 之類(lèi)的陽(yáng)春工具,或是在 vi 里面做一些討巧的“查找-替換”操作。Perl 語(yǔ)言幫助人們改變了這種看法,而現在 Ruby 也對此有所幫助。越來(lái)越多的人認識到這種超高級的字符串和文本操縱技巧中所蘊含的無(wú)比威力。對此持懷疑態(tài)度者,應該去讀一讀 Jeffrey Friedl 的書(shū) Mastering Regular Expressions 。非懷疑論者也應該讀。

  6. Ruby 是支持多種平臺的語(yǔ)言。 Ruby 可以運行在 Linux 及其他 UNIX 變體、各種版本 Windows 平臺、BeOS,甚至 MS-DOS 上。如果我沒(méi)記錯的話(huà),還有 Amiga 版本的。

  7. Ruby 借鑒了前輩語(yǔ)言。 這是好事兒?jiǎn)??在文學(xué)領(lǐng)域之外,是的,這是好事兒。牛頓說(shuō),“若我看得比別人遠,乃是因為我站在了巨人的肩上”。Ruby 確實(shí)是站在了巨人的肩上。Ruby 引借了來(lái)自 Smalltalk, CLU, Lisp, C, C++, Perl, Kornshell,以及其他語(yǔ)言的特性。我看到其中的原則是:1. 不要重新發(fā)明輪子;2. 不要修補沒(méi)有問(wèn)題的部分;3. 特別重要的是,充分利用人們現有的知識。您掌握 UNIX 里面的文件和管道(pipes)嗎?沒(méi)問(wèn)題,您可以在 Ruby 中運用到那些知識。您花了兩年時(shí)間研習 printf 的各種格式符號?別擔心,您在 Ruby 里面還可以使用 printf。您了解 Perl 的 regex handling 技術(shù)?好的,那么您幾乎也就立刻學(xué)會(huì )了 Ruby 的 regex handling 技術(shù)。

  8. Ruby 具創(chuàng )新性。 這一條與第7條有些矛盾吧?唔……是有一點(diǎn);每個(gè)硬幣都有兩面嘛。Ruby 有一些特征極具創(chuàng )新性,比如非常有用的 mix-in 概念?;蛟S這些創(chuàng )新型特征將來(lái)會(huì )被新的語(yǔ)言借鑒。(注:一位讀者向我指出,LISP 至少早在 1979 年就有 mix-in 了。這一點(diǎn)我倒是完全沒(méi)有注意到;我當另尋一個(gè)更好的例證,保證其真確性。)

  9. Ruby 是特高級語(yǔ)言(Very High-Level Language,VHLL)。 這個(gè)問(wèn)題有待商榷,因為術(shù)語(yǔ) VHLL 還未被廣泛使用,而其含義更是比 OOP 的含義更具爭議性。我說(shuō)“特高級”指的是,Ruby 可以通過(guò)相對較少的指令掌控復雜的數據結構并對其進(jìn)行復雜的操作,符合了被一些人稱(chēng)為“最少投入”的原則(Principle of Least Effort)。

  10. Ruby 有智能垃圾收集器。 諸如 mallocfree 之類(lèi)的函數現在只是已然過(guò)去的昨夜噩夢(mèng)。您連析構函數都不需要調用。僅此足矣。

  11. Ruby 是腳本語(yǔ)言。 不要以為 Ruby 是腳本語(yǔ)言所以就不強大。Ruby 可不是玩具。Ruby 是全功能的程序設計語(yǔ)言,只不過(guò) Ruby 讓傳統的腳本操作變得更容易撰寫(xiě),比如運行外部程序、檢查系統資源、使用 pipe(管道)、截獲輸出等等。

  12. Ruby 用處多樣。 Ruby 可以完成好 Kornshell 能夠完成好的事情,也可以完成好 C 語(yǔ)言能夠完成好的事情。想快速寫(xiě)一個(gè)十行的 hack 程序來(lái)完成一次性的任務(wù),或者為遺留代碼寫(xiě)個(gè) wrapper 嗎?用 Ruby 沒(méi)問(wèn)題。想寫(xiě)一個(gè) Web 服務(wù)器、CGI,或者棋類(lèi)游戲嗎?用 Ruby 也沒(méi)問(wèn)題。

  13. Ruby 對線(xiàn)程予以支持。 您可以使用簡(jiǎn)單的 API 撰寫(xiě)多線(xiàn)程應用程序。是的,即使是在 MS-DOS 上撰寫(xiě)也可以。

  14. Ruby 是開(kāi)源的。 想看 Ruby 的源代碼了?想提供一個(gè)補丁建議了?只管去吧!想與智慧云集、樂(lè )于助人、包括語(yǔ)言設計者在內的用戶(hù)社區進(jìn)行聯(lián)絡(luò )嗎?可以的!

  15. Ruby 具有直觀(guān)性(直覺(jué)性)。 學(xué)習曲線(xiàn)平滑不陡。一旦入了門(mén),您是否就開(kāi)始“猜測” Ruby 的使用方式了呢?您的猜測通常是正確的(譯注:因為 Ruby 很直觀(guān),符合了人們慣常期待的方式)。Ruby 致力于符合“最少詫異或驚訝”之原則(Principle of Least Astonishment (or Surprise)).

  16. Ruby 具有異常(exception)機制。 同 Java 和 C++ 一樣,Ruby 能處理異常。這意味著(zhù)少與返回代碼糾纏,更少的嵌套 if 語(yǔ)句,更少的意大利面式邏輯(spaghetti logic,貶義,指的是復雜混亂的代碼設計,比如大量使用GOTO語(yǔ)句等等),更好的錯誤處理機能。

  17. Ruby 有高級的 Array class 。 數組是動(dòng)態(tài)的;您不必像在 Pascal 等語(yǔ)言當中那樣在編譯期聲明數組大小。您不必像在 C/C++/Java 當中那樣為數組分配內存空間。Ruby 的數組是對象,因此您不必時(shí)刻警惕其長(cháng)度;原則上,您不可能像在 C 語(yǔ)言當中那樣“越出數組的長(cháng)度大限”。想以索引、元素,或者反向處理數組嗎?想打印整個(gè)數組嗎?Ruby 為所有這些事情提供了對應的方法。想把數組當作集合(set)、堆棧(stack),或隊列(queue)來(lái)對待嗎?Ruby 也為此提供了對應的方法。想把數組當作查找表(lookup table)來(lái)使用嗎?這是個(gè)問(wèn)題問(wèn)得巧——您不必這樣用,因為 Ruby 提供了哈希表專(zhuān)門(mén)處理這個(gè)問(wèn)題。

  18. Ruby 是可擴展的。 您可以用 Ruby 或者 C 語(yǔ)言編寫(xiě)外部程序庫。另外,您還可以隨心所欲地就地修改現存的類(lèi)和對象。

  19. Ruby 鼓勵 literate programming(字面編程方式)。 您可以將注釋嵌入到代碼中,Ruby 的文檔工具可以從中抽取和操縱這些注釋。(Literate programming 的鐵桿兒支持者或許會(huì )認為這是很基礎的東西吧。)

  20. Ruby 以創(chuàng )新的方式使用分隔符和大小寫(xiě)。 返回 Boolean(盡管 Ruby 不這樣稱(chēng)呼它)的方法通常都以問(wèn)號結尾,而且,修改數據的方法的名稱(chēng)帶有驚嘆號。一切都簡(jiǎn)單、明了、直觀(guān)。包括 class 名稱(chēng)在內的所有常量都以大寫(xiě)字母開(kāi)頭。所有對象的 attributes 都以 @ 標記開(kāi)頭。這種方案既有老式的“匈牙利表示法(Hungarian notation)”的務(wù)實(shí)性,又避免了齷齪刺眼的表現形式。

  21. Ruby 的保留字不保留。 使用被稱(chēng)為“保留字(reserved word)”的標識符是完全沒(méi)有問(wèn)題的,只要保證別讓語(yǔ)法分析器遇到歧義的情況就行。這可真是暢快。

  22. Ruby 支持迭代器(iterator)。 Ruby 的迭代器使得“傳遞代碼區塊到對象中”這種操作可以經(jīng)由這樣的方式來(lái)完成,即對于數組、列表(list)、樹(shù)(tree)等諸多結構中的每一個(gè)元素都能夠調用指定的代碼區塊。這是個(gè)值得深入探究,威力強大的技巧。

  23. Ruby 具有安全性特性。Ruby 借用了 Perl 的“點(diǎn)綴(tainting)”概念,通過(guò) $SAFE 變量實(shí)現了多種控制級別(揪心級別?)。此特性對于“為了攻破 web 服務(wù)器而被利用”的 CGI 程序而言,特別有好處。

  24. Ruby 沒(méi)有指針。 類(lèi)似 Java,并向 C++ 惡狠狠地點(diǎn)了點(diǎn)頭,Ruby 中沒(méi)有“指針(pointer)”概念;不存在間接性,沒(méi)有指針運算,沒(méi)有語(yǔ)法和調試指針所帶來(lái)的頭疼困擾。當然,這意味著(zhù)真正底層的系統編程變得困難了一些,比如訪(fǎng)問(wèn)某設備的控制狀態(tài)寄存器;但這些系統級事務(wù)總是可以利用 C 程序庫來(lái)完成。(正如 C 程序員會(huì )在必要時(shí)使用匯編一樣,Ruby 程序員會(huì )在必要時(shí)使用 C 語(yǔ)言?。?/p>

  25. Ruby 關(guān)注細節。 Ruby 提供豐富的同義詞和別名。不記得對數組或字符串是用 size 還是 length 嗎??jì)蓚€(gè)都可以用。對于范圍(range),是用 beginend ,還是 firstlast?由您自選。您心里拼寫(xiě) indices ,而您的手卻拼出 indexes 嗎??jì)蓚€(gè)都可以用。

  26. Ruby 具有靈活的語(yǔ)法特性。 在方法調用中可以忽略括號,參數之間可以忽略逗號。Perl 風(fēng)格的引號允許我們定義數組或字符串時(shí)不必勞煩去敲那些引號和逗號(譯注:Ruby 中 a = [ ‘a(chǎn)nt‘, ‘bee‘, ‘cat‘ ] 可以簡(jiǎn)寫(xiě)為 a = %w{ ant bee cat })。return 關(guān)鍵字也可以忽略。

  27. Ruby 有豐富的程序庫可供使用。 Ruby 的程序庫提供了對線(xiàn)程、套接字(socket)、有限的對象永續機制、CGI、服務(wù)器端可執行機制、DB 文件等許多功能的支持。Ruby 還對 Tk 有所支持,今后會(huì )有更多的支持。

  28. Ruby 有調試器(debugger)。 在完美世界里我們大約不需要調試器??上н@并不是完美的世界。

  29. Ruby 可通過(guò)交互的方式來(lái)使用。 Ruby 設計為可以將其當作一種類(lèi)似 Kornshell 的 shell 來(lái)使用。(這是本文中最令人質(zhì)疑的觀(guān)點(diǎn),而且我也不得不承認,Ruby 并不是真正非常優(yōu)秀的 shell。但我還是堅持認為,基于 Ruby 的 shell 是個(gè)不錯的東西。)

  30. Ruby 是精煉的語(yǔ)言。 Ruby 中沒(méi)有非必要的關(guān)鍵字,比如 Pascal 的 begin,if 之后的 then,while 之后的 do。不需要事先聲明變量,因為變量無(wú)類(lèi)型。不需要為方法指定返回類(lèi)型。不需要 return 關(guān)鍵字;方法會(huì )返回最后被求值的表達式之結果。另外一方面……Ruby 不像 C 或 Perl 那么晦澀。

  31. Ruby 是面向表達的語(yǔ)言(expression-oriented)。 您可以像說(shuō)話(huà)一樣很容易寫(xiě)出 x = if a<0 then b else c end 這樣的句子。

  32. Ruby 語(yǔ)言中系結了 syntax sugar(語(yǔ)法糖)。 (轉述 Mary Poppins 的話(huà)說(shuō)就是:一勺語(yǔ)法糖可以壓一壓語(yǔ)義的藥味。"A spoonful of syntax sugar helps the semantic medicine go down.")只要您想,您就可以用 for a in x 來(lái)迭代遍歷數組 x,可以用 a += b 來(lái)代替 a = a + b。大多數操作符其實(shí)只是簡(jiǎn)化的方法表示、更加直覺(jué)的名稱(chēng)以及更加方便使用的語(yǔ)法形式。

    譯注:Mary Poppins 指的是美國1964年拍攝的經(jīng)典電影《歡樂(lè )滿(mǎn)人間(Mary Poppins)》。

  33. Ruby 支持操作符重載(overloading)。 如果我沒(méi)記錯的話(huà),操作符重載源起自很久以前的 SNOBOL,但卻是由較近的 C++ 振興。這個(gè)機制可能會(huì )被濫用或誤用,但有總比沒(méi)有好。另外,Ruby 會(huì )自動(dòng)定義操作符的賦值(assignment)版本,比如說(shuō),您定義了操作符 + ,那么您就會(huì )自動(dòng)得到操作符 +=。

  34. Ruby 具有無(wú)限精度的整數算法 誰(shuí)還關(guān)心 short、int、long 呢? 使用 Bignum 就行了。承認吧,您總還是想看看365的階乘是多少?,F在您可以看了。

  35. Ruby 具有冪運算操作符。 在過(guò)去年代,我們在 BASIC 和 FORTRAN 里使用過(guò)冪運算操作符。但是后來(lái)我們學(xué)會(huì )了 Pascal 和 C 語(yǔ)言,知道了這個(gè)操作符邪惡的一面。(我們被告知,我們甚至都不曾知道求值是如何完成的——是使用了對數還是迭代?效率有多高?)可是我們真的關(guān)心這些么?如果是,我們可以編寫(xiě)自己的版本。如果不是,Ruby 還提供了您珍愛(ài)的老好用的 ** operator 供您使用。享用它吧!

  36. Ruby 具有強大的字符串處理能力。 如果您想對字符串進(jìn)行搜索、替換、修改、格式化、截斷(trim)、分隔(delimit)、追加(interpose),或者字元化(tokenize)等操作,您可以使用 Ruby 內建的方法。如過(guò)內建方法不能滿(mǎn)足要求,您可以利用內建方法來(lái)建構自己所需。

  37. Ruby 幾乎沒(méi)有違反自身規則的例外情況。 Ruby 的語(yǔ)法和語(yǔ)義比大多數語(yǔ)言更具自我完備性(self-consistent)。每種語(yǔ)言都有犄角旮旯,每種規則都有例外情況;但 Ruby 的旮旯和例外可能比您想象的要少。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
37個(gè)我愛(ài)Ruby的理由
以?xún)?yōu)美方式編寫(xiě)JavaScript代碼
Ruby的基礎 - 面向對象語(yǔ)言Ruby
5種語(yǔ)言下的DSL實(shí)現
C 語(yǔ)言的起源與發(fā)展
PHP的問(wèn)題全面闡述PHP網(wǎng)站設計的問(wèn)題
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久