• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++ Programmer's Cookbook

            {C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

            面向對象的腳本語言Ruby好可愛

            從架構上看,二者雖然實際上相差甚遠,但最后表現(xiàn)出來的結果反而很相似。Ruby是純粹的OO語言,而Python是函數(shù)和OO混合型。雖然Ruby也能用函數(shù)風格的編碼方式,但實際上是模擬出來的。他們的這個差距對于普通的程序員影響并不大,畢竟看起來差不多。

            總體來說,如果是非專業(yè)人員初嘗開發(fā),Ruby是合適的。對于專業(yè)的程序員,我還是建議選擇Python。
             

            Ruby是一種功能強大的面向對象的腳本語言,她可以使您方便快捷地進行面向對象編程.Ruby使文本處理和系統(tǒng)管理變得簡單,與Perl非常相似.一句話:簡單明了,擴展性強,移植性好.

            Ruby的幾大亮點:

            • 語法簡單
            • 垃圾回收
            • 可移植性
            • 動態(tài)載入
            • 完全免費
            • 正則表達式



            Ruby,一種面向對象的腳本語言。 它綜合了perl,python,java等語言的特點寫成,有強大的文字處理能力,簡單的語法,完全的面向對象。 而且,用它來編程,你會得到很多的樂趣,比如.... 仔細往下看吧。同時歡迎有相同愛好的人一起加入這里,共同學習。

            我不打算浪費時間來談論Ruby的歷史,如果你沒有聽說過它,你可以去它的主頁看看www.ruby-lang.org,或者去它的新聞組comp.lang.ruby。如果你知道Ruby,我將講述我為什么會喜愛它。(你也可能去我的Ruby主頁或者個人主頁看看)

            1. 它是面向對象的。 這表示什么意義呢? 如果問10個程序員,你也許會得到12種結果,你有你的看法,我不會試圖去改變你的看法。但是有一點,Ruby提供了對數(shù)據(jù)和方法的封裝,允許類的繼承,對象的多態(tài)。不像其它語言(C++,Perl等),Ruby從設計的時候開始就是一種面向對象的語言。

            2. 它是純面向對象的語言。難道是我多余?不是這樣的,之所以這么說,因為Ruby中一切都是對象,包括原始數(shù)據(jù)類型(primitive data types),比如字符串,整型,都表示的是一個對象,而不需要Java那樣提供包裝類(wrapper classes)。另外,甚至是常量,也會被當作對象來處理,所以一個方法的接收者,可以是一個數(shù)字常量。

            3. 它是動態(tài)語言。 對于只熟悉像C++,Java這樣靜態(tài)語言的人來說,這是一個重大的概念上的差別。動態(tài)意味著方法和變量可以在運行時候添加和重定義。它減少了像C語言那樣的條件編譯(#ifdef),而且容易實現(xiàn)反射API(reflection API)。動態(tài)性使得程序能自我感知(self-aware),比如運行時類型信息,檢測丟失的方法,用來檢測增加方法的鉤子等。在這些方面Ruby和Lisp和Smalltalk都有一些關系。

            4. 它是一種解釋執(zhí)行的語言。這是一個負雜的問題,值得重點解釋一下,也許這個特點會因為性能的原因而引起從優(yōu)點變?yōu)槿秉c的爭論。對于此,我有幾點見解:1.第一:快速開發(fā)循環(huán)是一個巨大的好處,這要得意于Ruby的解釋執(zhí)行。2.多慢才叫慢呢?在說它慢之前先定一個慢的基準。3.也許有人要批評我了,但我還要說:處理器每年都在變得原來越快。4.如果你真的很在意你的速度,你可以用C開發(fā)一部分你的代碼。5.最后,從某種意義上說,這是一個還在爭論中的問題,沒有一個語言天生就是解釋型的,世界上沒有哪個法律進制開發(fā)一個Ruby編譯器出來。

            5. 它理解正則表達式。 很多年之前,正則表達式只是用在UNIX的工具如grep或者sed中,或者在vi中進行一些一定的查找-替換等。Perl的出現(xiàn)解決了這些問題,而現(xiàn)在,Ruby同樣也能做到這些。越來越多得人認識到了這種字符串和文本處理技術的難以置信的能力,如果你對此表示懷疑,那么請去看一下 Jeffrey Friedl的書Mastering Regular Expressions,然后,你就應該不會有什么懷疑了。

            6. 它是多平臺的。 Ruby可以運行在Linux,UNIX,Windows,BeOS?,甚至MS-DOS。如果我沒記錯,甚至還有一個Amiga 版本的

            7. 它是派生來的。 這是一件好事情嗎?拋去書本上的知識,它是有用的。牛頓曾說過“我如果看得比別人遠,那是因為我站在巨人的肩膀上”。Ruby同樣也是站在巨人的肩膀上,它借鑒了Smalltalk, CLU, Lisp, C, C++, Perl, Kornshell等的優(yōu)點。在我看來它的原則包括:1.不要重復制造輪子。2.不要修補沒有損壞的東西。3.最后一個也是比較特別的,它能平衡(Leverage )你已有的知識。你了解UNIX的文件和管道,沒關系,你可以在Ruby中繼續(xù)用,你用了兩年的時間學習了printf 指示符,不必擔心,Ruby中你也可以使用printf。你知道Perl的正則表達式處理,那么你也就學會了Ruby中的正則表達式。

            8. 它是創(chuàng)新的。 是不是覺得這個和第七條矛盾了?也許是有一部分矛盾,每個硬幣都有兩面。一些Ruby的特點都是創(chuàng)新的東西,比如非常有用的Mix-in,也許這個特點會被后來的語言借鑒。(注:一位讀者指出Lisp早在1979年就有mix-in了,這是我的疏忽;我應該找個更好的例子,并且能確信它。)

            9. 它是非常高層次的語言。(Very High-Level Language :VHLL) 這是一個容易引起爭論的話題,因為這個術語還沒有廣泛使用。而且它的意思比起OOP來說還是有討論余地的。我這么說,指的是Ruby能支持復雜的結構和這些結構的負雜的操作,而需要的指令非常少,這與最小努力原則(Principle of Least Effort)一致。

            10. 它有一個靈巧的垃圾收集器。 像malloc和free 這樣的例程已經(jīng)是昨天的惡夢了,你不需要什么回收內存的操作,甚至是調用垃圾收集器。

            11. 它是腳本語言。 不要因為此就認為它不夠強大,它不是一個玩具。它是完全成熟的語言,用它能輕松的完成傳統(tǒng)的腳本操作,比如運行外部程序,檢查系統(tǒng)資源,使用管道,捕獲輸出等等。

            12. 它是通用的。 Kornshell做的東西它也可以做,C語言做的東西它也可以做的很好。你可以用它寫一個只運行一次的只有10行的程序,或者對一些遺留程序進行包裝,你想寫個web server,或者一個CGI,都可以用Ruby來寫。

            13. 它是多線程的。 Y你可以用一些簡單的API來寫多線程程序,甚至在MS-DOS上都可以。

            14. 它是open source的。 你想看它的源代碼嗎?可以,你也可以提交補丁,參加廣泛的社區(qū),包括它的創(chuàng)造者。

            15. 它是值覺得。 Ruby的學習曲線比較低,而如果你翻過了一個坎,你開始“猜測”事情是怎么工作的,而且你的猜測很多時候都是正確的。Ruby堅持最小驚訝( Least Astonishment)的原則。

            16. 它有異常機制。 像Java和 C++一樣, Ruby 中也有異常機制,這意味著你不必因為返回值而將代碼弄得凌亂不堪,很少的嵌套if語句,很少的意大利面條似的邏輯,更好的錯誤處理。

            17. 它有一個高級的數(shù)組類:Array。 Ruby中數(shù)組都是動態(tài)的,你不必像pascal那樣在聲明它的大小,也不必像C,C++那樣為它分配內存。它們是對象,所以你不必關心它們的長度,實際上你不能"走到末尾(walk off the end)"。這個類提供了各種方法,使得你能夠根據(jù)索引,根據(jù)元素來訪問數(shù)組內容,也可以反向處理數(shù)組。你也可以用數(shù)作作為set,隊列,堆棧等。如果你想用查找表,可以用哈希結構。

            18. 它是可以擴展的。 你可以用C或者Ruby來編寫外部庫(external libraries),同樣,你也可以修改已有的類和對象。

            19. 鼓勵文檔編程(literate programming)。 你可以在Ruby程序中嵌入注釋或者文檔,這些文檔可以用Ruby的文檔工具提取和處理。(真正的文檔編程者可能認為這是必須的基本東西吧)

            20. 創(chuàng)造性的使用標點符號和大寫字母。 比如一個方法返回一個boolean型(Ruby中并沒有這種說法),那么一般這個方法最后都以問號結尾,如果一個方法要修改接收者本身,或者具有破壞性,則用一個感嘆號結尾,簡單,直覺。所有常量,包括類名,都以大寫字母開頭,所有對象屬性以@符號開頭。這有匈牙利命名法的實用性,但是沒有視覺上的丑陋性。

            21. Reserved words aren't.It's perfectly allowable to use an identifier that is a so-called "reserved word" as long as the parser doesn't perceive an amibiguity. This is a breath of fresh air.(能用保留字作為變量嗎?沒看太懂。)

            22. 支持迭代器。 這使得你可以給一個數(shù)組,list,tree等對象傳遞一個塊,然后對它們的每個元素進行block調用。這個技術值得深入學習。

            23. 它的安全性。 Ruby借鑒了Perl中基于$SAFE變量的分層控制機制 。這對于CGI程序來說非常有用,可以防止人們攻擊web服務器。

            24. Ruby中沒有指針。 像 Java一樣,和C++不同,Ruby中沒有指針的概念,所以免除了關于指針語法和調試的頭疼。當然,這也意味著最底層的程序開發(fā)將會很困難,比如訪問一個設備的控制狀態(tài)寄存器;但是,我們可以用一個C庫來調用。(像C語言程序員有時候要使用匯編語言一樣,Ruby程序員有時候也要使用C語言來完成一定的任務)

            25. 它使得人們專注于細節(jié)。 Ruby中有很多同義詞和別名,你也許不記得字符串或數(shù)組的長度是size還是length,沒關系,它們任何一個都可以工作。對于Range來說,你可以使用begin 和end 或者使用 first 和 last,它們也都工作。你想拼寫indices,結果寫成了indexes,沒關系,這兩個都一樣。

            26. 非常靈活的語法。 方法調用時候括號可以省略,參數(shù)之間只需用逗號分割。類似Perl風格的數(shù)組定義可以讓你不用全部使用引號和逗號定義一個字符串的數(shù)組。關鍵字return可以生路。

            27. 豐富的庫函數(shù)。 Ruby提供了線程,socket,有限對象持久化,CGI,服務器端可執(zhí)行的,數(shù)據(jù)庫等其它庫函數(shù),還有對Tk的支持等。還有很多其它的庫函數(shù)。

            28. 本身自帶調試器(debugger)。 在完美的世界中,我們才不需要調試器,但是這個世界不是完美的。

            29. 交互式執(zhí)行。 可以用Ruby像Kornshell那樣執(zhí)行。 (這可能是本頁最具爭論的一點,我不得不承認,Ruby真的不是一個很好的shell。但我仍然堅持,基于Ruby的shell是一個不錯的主意。)

            30. 它是簡明的。 不像Pascal那樣要求if后面跟著then,while后面跟著do 。變量不需要聲明,它們不需要類型。返回類型不必指定,關鍵字return 可以省略,它將返回最后一個表達式的值。另一方面,它也不像Perl或者C那樣復雜難懂。

            31. 它是面向表達式的(expression-oriented)。 你可以輕易的使用 x = if a<0 then b else c 這樣的表達式。

            32. 語法砂糖(syntax sugar)。 (像Mary Poppins解釋:一勺語法的糖能使語義被接受) 。如果你想對數(shù)組x進行迭代,可以用for a in x。你也可以用a+=b代替a=a+b,這都行。很多操作符其實在Ruby中都是方法,這些方法的名字比較直觀,短小,有著便利的語法。

            33. 它支持操作符重載。 如果我沒有記錯的話,早在很久之前的SNOBOL就提供了這個功能,但是直到C++它才變得流行。雖然它可能亂用而出錯,但是這仍是一個非常不錯的優(yōu)點。另外Ruby自動定義操作符的賦值版本,比如,如果你重定義了+,那么,你同時得到了一個+=操作符。

            34. 支持無限精度的數(shù)字。 有人會關心 short, int, long嗎,只需要使用 Bignum就行了,你可以輕松的實現(xiàn)365的階乘。

            35. 有冪操作符。 在很久以前,我們在BASIC和FORTRAN中使用它,然而當我們學習Pascal和C之后,我們才認識到這個操作符有多差勁。(我們被告知自己連它是怎么工作的都不知道-它使用了對數(shù),迭代了嗎,效率如何?),但是,我們真的關系這些嗎?如果是,我們可以重寫這個方法,否則,Ruby有非常好的* *(星號之間無空格)操作符可以用。

            36. 強大的字符串處理。 If如果你想查找,判斷,格式化,trim,定界(delimit),interpose,tokenize,你可以自己選擇隨便用哪一個來得到你想要的結果。

            37. 規(guī)則很少引起異常。 Ruby的語法和語義比其它語言有條理,每種語言都有獨特的一面,每條規(guī)則都會有異常發(fā)生,但是Ruby規(guī)則引起的異常就少的多了。

            posted on 2006-01-02 12:06 夢在天涯 閱讀(466) 評論(0)  編輯 收藏 引用

            公告

            EMail:itech001#126.com

            導航

            統(tǒng)計

            • 隨筆 - 461
            • 文章 - 4
            • 評論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1804314
            • 排名 - 5

            最新評論

            閱讀排行榜

            亚洲中文字幕无码久久综合网| 国产精品久久久香蕉| 色综合久久久久网| 久久夜色撩人精品国产小说| 日本久久中文字幕| 久久精品蜜芽亚洲国产AV| 久久久久亚洲AV无码去区首| 亚洲精品无码专区久久久| 久久99精品久久久久久齐齐| 漂亮人妻被中出中文字幕久久| 久久亚洲精品中文字幕三区| 尹人香蕉久久99天天拍| 免费观看成人久久网免费观看| 久久久精品国产| 久久精品女人天堂AV麻| 狠狠色婷婷久久一区二区三区| 久久久久久极精品久久久| 久久er国产精品免费观看2| 久久久久久国产精品无码下载| 久久久黄片| 99久久久久| 久久综合欧美成人| 国产精品国色综合久久| 久久人人爽人人爽人人AV| 久久久亚洲AV波多野结衣| 日韩久久无码免费毛片软件 | 精品久久久久久无码专区| 亚洲午夜久久久| 亚洲日韩欧美一区久久久久我| 91精品国产色综久久 | 18岁日韩内射颜射午夜久久成人| 欧美激情一区二区久久久| 久久亚洲国产精品123区| 久久久艹| 热久久视久久精品18| 亚洲欧洲久久av| 久久婷婷午色综合夜啪| 欧美精品国产综合久久| 伊人色综合久久天天人手人婷 | 久久精品无码一区二区WWW| 中文字幕精品久久|