国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python 和 ruby的對比

ghnor / 2662人閱讀

摘要:的解析器實(shí)現(xiàn)更成熟,第三方庫質(zhì)量高解析器盡管已經(jīng)有了很大的性能提升和很多新的功能,但是從源代碼實(shí)現(xiàn)的角度來說,基本上是通過在源代碼上打來增加功能的。相對而言,解析器更成熟,也比較穩(wěn)定。

最近在考慮學(xué)習(xí)一門后端語言,在ruby和python直接猶豫,然后自己做了一些對比,希望能幫到有同樣問題的你。

一、異同對比選擇1、Python和ruby的相同點(diǎn):

都強(qiáng)調(diào)語法簡單,都具有更一般的表達(dá)方式。python是縮進(jìn),ruby是類basic的表達(dá)。都大量減少了符號(hào)。

都是動(dòng)態(tài)數(shù)據(jù)類型。都是有豐富的數(shù)據(jù)結(jié)構(gòu)。

都具有C語言擴(kuò)展能力,都具有可移植性,比perl的可移植性更好。也都可以作為嵌入語言。

都是面向?qū)ο蟮恼Z言,都可以作為大項(xiàng)目的開發(fā)工具。

都有豐富的庫支持。

也有最寬松的版權(quán)許可,除了一些工具屬于GNU世界。

都有l(wèi)isp特色的eval函數(shù),也都能把函數(shù)作為參數(shù)。

也有圖形界面的ruby的專門編輯器。

都獲得了廣泛的c庫的支持。如qt、gtk、tk、SDL、FOX等,ruby計(jì)劃實(shí)現(xiàn)SWIG接口。

都有完善的文檔。

2、和python相比ruby的優(yōu)點(diǎn):

具有正則表達(dá)式和嵌入html的功能。python也有正則表達(dá)式,但沒有ruby的應(yīng)用方便和廣泛。python的嵌入html項(xiàng)目才剛起步。ruby還有apache的mod模塊。ruby本身也實(shí)現(xiàn)和很多unix工具,如racc,doctools。比python更親近Linux。

比python功能更完整的面向?qū)ο蟮恼Z法。

ruby的整個(gè)庫都是具有類繼承的結(jié)構(gòu)。

他的基本的數(shù)據(jù)類型和運(yùn)算符都是可以重載的。

ruby主要的功能都是通過對象的方法調(diào)用來實(shí)現(xiàn)的,而不是函數(shù)。python也在向這方面發(fā)展,但沒有ruby做的徹底。

ruby的類是更規(guī)范的單繼承,還有接口等概念的實(shí)現(xiàn)。

python可以實(shí)現(xiàn)在列表內(nèi)的條件語句、循環(huán)語句,而ruby用“塊”的方式來實(shí)現(xiàn)這個(gè)功能,比python的更靈活,更具有通用性。

ruby具有類似lisp的徹底的函數(shù)方式的條件語句、循環(huán)語句等。語句的表達(dá)能力更強(qiáng)。

附帶一些unix工具,如racc等。

3、和python相比ruby的不足:

最大的不足正是因?yàn)閞uby的強(qiáng)大所引起的。它沒有python的簡單性好。比較復(fù)雜的面向?qū)ο笳Z法、“塊”語法的引入、正則表達(dá)式的引入、一些簡寫標(biāo)記都增加了語言的復(fù)雜性。

python的縮進(jìn)表達(dá)方式比ruby的basic的表達(dá)方式更讓人悅目,ruby程序的滿眼的end讓人不舒服。當(dāng)然,ruby認(rèn)為end的方式比python更先進(jìn)。

ruby還沒有python的“自省”的能力,沒有從程序文件中生成文檔的能力。

ruby沒有國際化的支持。國際化支持在ruby的計(jì)劃中。這是因?yàn)閞uby的歷史比python要短造成的。

ruby沒有類似jython的東西。

4、python和ruby的語言的選擇:

從簡單的就是好的來說,選python是沒錯(cuò)的。python適合尋找簡單語言的人,這很可能造成python更流行,因此也有更多的支持。但如果要追求更強(qiáng)大的語法功能,則ruby是好的選擇。因?yàn)閞uby和python的哲學(xué)有很多相似的地方,先從python入手,盡量用python,如果python的能力不足了,可以在找ruby。

ruby和python的比較,就像五筆和拼音輸入法的比較。拼音作為入門的輸入法和長久使用的輸入法都沒有問題。五筆適合更高要求的情況。如果追求性能的不妨學(xué)學(xué)ruby。對編程語言感興趣,想了解各種編程概念的學(xué)ruby也會(huì)很興奮。

二、兩者各有特點(diǎn):

1、Python從語法上來說更質(zhì)樸一些,而Ruby更性感一些

Python的語法相對其他腳本語言來說,沒有太多花巧的地方,顯得比較死板一點(diǎn),其實(shí)從Python強(qiáng)制代碼縮進(jìn)也可以看出來Guido設(shè)計(jì)語言的取向。語法死板的一面就是不容易玩出來更性感的東西,比方說Rails這樣的框架,另外Python也無法做DSL這樣的事情,但是語法死板的另一面就是比較規(guī)范,相對來說,更加適應(yīng)軟件開發(fā)的工程性要求,更容易組織大規(guī)模的團(tuán)隊(duì)進(jìn)行開發(fā)。

Ruby的語法非常靈活,Matz設(shè)計(jì)ruby的出發(fā)點(diǎn)也是為了coding for fun,因此可以用ruby玩出來很多花樣,運(yùn)用足夠的技巧,可以用Ruby寫出來逼近自然語言的DSL,對于程序員來說,玩ruby確實(shí)充滿了樂趣。Rails能在ruby社區(qū)誕生,而不是Python社區(qū)誕生絕對和編程語言有直接的關(guān)系。不過ruby語法靈活的另一面就是編程實(shí)現(xiàn)風(fēng)格的多樣性,這對于大規(guī)模團(tuán)隊(duì)的協(xié)作和管理是一個(gè)挑戰(zhàn)。

2、Python的解析器實(shí)現(xiàn)更成熟,第三方庫質(zhì)量高

Ruby1.9解析器盡管已經(jīng)有了很大的性能提升和很多新的功能,但是從源代碼實(shí)現(xiàn)的角度來說,基本上是通過在Ruby1.8源代碼上打patch來增加功能的。從源代碼的結(jié)構(gòu)來說,Ruby的實(shí)現(xiàn)太古老了,Ruby擴(kuò)展起來比較困難,只能不斷打patch。這也是為什么現(xiàn)在Ruby社區(qū)涌現(xiàn)出來那么多新的Ruby解析器實(shí)現(xiàn)的原因。從很大程度上來說,這制約了Ruby的發(fā)展速度。相對而言,Python解析器更成熟,也比較穩(wěn)定。

在第三方類庫的數(shù)量上來說,Ruby并不比Python少,但是高性能高質(zhì)量久經(jīng)考驗(yàn)的第三方類庫Python要明顯比Ruby多,事實(shí)上很多Ruby的第三方類庫都不太成熟,因此這也很大程度上制約了Ruby的發(fā)展。

3、Python的應(yīng)用領(lǐng)域非常廣泛,而Ruby目前主要局限在在Web領(lǐng)域

Python應(yīng)用的領(lǐng)域非常廣泛,除了web開發(fā)以外,還被廣泛用在服務(wù)器后端的高性能服務(wù)器實(shí)現(xiàn),服務(wù)器后端的各種密集運(yùn)算,全文檢索,各種文本處理,系統(tǒng)管理等等,另外桌面應(yīng)用領(lǐng)域wxPython也是一個(gè)很成熟的跨平臺(tái)GUI框架。對于某些特殊的應(yīng)用,比方說調(diào)用操作系統(tǒng)內(nèi)核API,Python也可以完成的很好,比方說大量小文件的實(shí)時(shí)同步方案,就是用Python直接調(diào)用linuxKernel的inotify特性來實(shí)現(xiàn)的。所以可以說Python是軟件開發(fā)領(lǐng)域的瑞士軍刀,什么事情都可以做。

正是由于Ruby解析器和Ruby類庫的制約,Ruby的應(yīng)用主要局限在Web開發(fā)領(lǐng)域,目前Ruby的應(yīng)用還無法延伸到web開發(fā)領(lǐng)域以外的很多地方。據(jù)說豆瓣早期就考慮過Ruby on Rails,但是因?yàn)镽uby不能做其他事情,而Python可以大包大攬,最后放棄Ruby選擇了Python。

4、在Web領(lǐng)域Ruby是王者

隨著互聯(lián)網(wǎng)應(yīng)用更進(jìn)一步滲透到軟件開發(fā)的各個(gè)領(lǐng)域,其實(shí)web開發(fā)占整個(gè)軟件行業(yè)開發(fā)的比重也是越來越大。盡管Ruby在其他領(lǐng)域很受制約,但是在Web開發(fā)領(lǐng)域就是絕對的王者了。Rails框架的領(lǐng)先程度已經(jīng)遠(yuǎn)遠(yuǎn)甩開了任何一個(gè)潛在的競爭對手十萬八千里。因此盡管Ruby可能有這樣那樣的問題,但是說到Web開發(fā),Rails幾乎就是無可爭議的唯一選擇。

而Python盡管十分全面,卻偏偏在web開發(fā)領(lǐng)域不彰,web框架雖然眾多,卻沒有一個(gè)真正可以挑大梁,Django雖然在Python社區(qū)比較流行,但很多方面也有缺陷。現(xiàn)在的互聯(lián)網(wǎng)應(yīng)用往往都是多種語言混合編程,Ruby在Web以外的缺陷也可以用其他語言來彌補(bǔ)。

5、Python的包管理不如Ruby

盡管Python的第三方類庫更高質(zhì)量更成熟,但是Python社區(qū)缺乏Ruby Gem這樣一個(gè)良好的包管理軟件和包發(fā)布的網(wǎng)站。因此應(yīng)用的構(gòu)建顯得不如Ruby那么方便,那么人性化。特別是在類庫的版本升級上,就會(huì)遇到很多麻煩,不如Ruby Gem那么簡單。

不過總的來說,Python和Ruby還是相似度極高的兩種編程語言,即使兩種編程語言都學(xué)習(xí)一下也不會(huì)浪費(fèi)太多時(shí)間。如果我個(gè)人選擇的話,會(huì)首選用Rails來構(gòu)建web應(yīng)用,再根據(jù)情況選擇Python或者Java處理一些服務(wù)器后端的運(yùn)算。總之,未來還是一個(gè)混合編程的時(shí)代,我們需要多了解一些編程工具,然后根據(jù)需要看菜吃飯才行。

三、《ruby和python的比較》之更正

1、文檔、開源項(xiàng)目、庫支持,這些東西Ruby不要跟Python比,不是幾個(gè)數(shù)量級的問題,何必貌似并列的排在一起。

2、Python確實(shí)沒有把正則表達(dá)式模塊內(nèi)置到核心里面,但是卻有re這個(gè)標(biāo)準(zhǔn)庫的支持,當(dāng)時(shí)的目的也是為了盡可能的把核心做到最小。我不太明白,使用標(biāo)準(zhǔn)庫和內(nèi)置有什么區(qū)別,甚至可以作為優(yōu)點(diǎn)?且使用Python中的正則表達(dá)式也不過是多個(gè)import

re和調(diào)用時(shí)的幾個(gè)字母而已,省下的無數(shù)個(gè)end足以抵銷這個(gè)問題了。

3、至于嵌入HTML功能,Python里有C/Python雙實(shí)現(xiàn)的Cheetah模板可用,據(jù)說托Zope的福,美國海軍和法國政府在用,不知Ruby這個(gè)功能的成熟度如何?

4、mod_ruby模塊的出現(xiàn)時(shí)間很短,如果作者沒有聽過mod_python那就實(shí)在孤陋寡聞了。我在一年前翻譯mod_python3.2.8文檔的時(shí)候,mod_python已經(jīng)很成熟了,以至于幾乎所有的Python

WEB框架都支持構(gòu)建在其上來提高效率。但是,似乎mod_ruby的更新,每年也只有幾次。mod_python更有g(shù)nu.org這樣的重量級應(yīng)用,不知mod_ruby有沒有?

5、另外,提到unix工具。Red hat

Linux的安裝程序一直是用Python寫的,如果你恰巧用ubuntu,那么,那個(gè)提示你更新系統(tǒng)的程序,也是用Python寫的。

6、racc和doctools,請?jiān)徫业墓侣崖劊襣oogle了一下居然除了你的這篇文章還沒找到幾篇關(guān)于racc的中文內(nèi)容,輾轉(zhuǎn)之后才查到是一種類似yacc的工具。從google的角度講,racc的可用性我就不多說了。我不太明白一個(gè)yacc工具在日常編程當(dāng)中有多大的實(shí)用性,但是既然作者提到了我就順便找了個(gè)我只聽說過名字,根本沒用過的Spark。google的結(jié)果是"racc

ruby":"python

spark"=159,000:659,000。至于doctools,我更是無話可說,在google上只有15,800條記錄,我到現(xiàn)在都看不出這個(gè)東西是干什么用的。所以找了個(gè)估計(jì)是類似的東西對比了一下,docutils,google的記錄是25,400條。

7、“比Python庫更完整的面向?qū)ο笳Z法”。試問面向?qū)ο蟮哪康氖鞘裁矗吭僬撸瑀uby能否像Python一樣,絕大多數(shù)標(biāo)準(zhǔn)庫根本不需要查文檔,只要猜測一下大體上的名字,然后dir()一下,再help()一下就可以直接上手,用到第二次的時(shí)候,因?yàn)槟K內(nèi)東西實(shí)在太少,記憶太方便,就可以直接寫出來的地步?另外,面向?qū)ο蠹炔皇鞘裁淬y彈,也不是最先進(jìn)的軟件工程思想。

8、"ruby的整個(gè)庫都是類繼承結(jié)構(gòu)的",個(gè)人認(rèn)為是Java的糟粕,反倒是當(dāng)成寶學(xué)過來了。或許這也是ruby來拯救Java程序員的一項(xiàng)優(yōu)勢吧。

9、"基本數(shù)據(jù)類型和運(yùn)算符都是可以重載的",這個(gè)不是太清楚,不知Python中重載__add__之類的算不算。

10、"ruby主要的功能都是通過對象的方法調(diào)用來實(shí)現(xiàn)的,而不是函數(shù)",Python中所有的東西都是對象,但并不都是類,不知這句還有什么意義。另外,推薦你不要太追求什么徹底,還是實(shí)用這個(gè)詞比較有吸引力。

11、Python沒有嚴(yán)格要求單繼承是給程序員以靈活性。另外,關(guān)于接口,Python中只要定義了同名的函數(shù)就算是具有了相同的接口,玄學(xué)上升到了這個(gè)高度,我也有些迷糊了。至于接口,不要那么自信,ruby的所謂接口也不過是個(gè)mix-in。這個(gè)東西Python的幾個(gè)大項(xiàng)目中也有過實(shí)現(xiàn),只是因?yàn)閷ython意義不明顯,所以才沒有更多的使用。

12、關(guān)于lisp的函數(shù)式編程,Python中有很多內(nèi)置支持,如map、zip、filter等等,當(dāng)然還有l(wèi)ambda。不要說支持,我們談實(shí)用。Pythoner中尚且有些人認(rèn)為函數(shù)式編程影響了代碼可讀性而盡量避免呢。所以,你認(rèn)為支持什么東西之前,先想好這樣?xùn)|西算不算是個(gè)好東西。

13、"最大的不足正是因?yàn)閞uby的強(qiáng)大所引起的"。這句真惡心,不予評論。

14、呵呵,ruby居然沒有國際化支持,真是個(gè)笑話,不知道當(dāng)初那個(gè)小日本怎么想的?難道他英語過了四級?

15、至于jython,現(xiàn)在也有了jruby,可能是作者的原文比較早的緣故吧。Python也有很多種實(shí)現(xiàn),像是jython,

ironpython, pypy,

pyrex等等。Python的優(yōu)秀其實(shí)并不一定要通過用其他語言來實(shí)現(xiàn)才能體現(xiàn)出來。當(dāng)然更不要說寄希望于要Java來解救水深火熱中的ruby了。

另外么,有些ruby的缺點(diǎn)不要回避:

16、ruby沒有本地化線程,而是用的偽線程,根本無法利用多核CPU的優(yōu)勢。CPython使用了本地化線程,但是因?yàn)槭褂昧薌IL所以也是無法利用多核CPU優(yōu)勢的。但是Stackless的出現(xiàn)完全可以解決這個(gè)問題,并且stackless更是將Python提高到了并行計(jì)算的高度,這個(gè)高度的競爭對手可以是Erlang,ruby自然不必窺探。其中的超輕量線程技術(shù)可以確保一臺(tái)很爛的機(jī)器上跑幾十萬的線程還很輕松。基于Twisted的異步編程方式也提供了一種選擇。

17、剛剛開始學(xué)Python的時(shí)候,就聽說過一句“Python是主流動(dòng)態(tài)語言中最慢的”,后來才知道,說那句話的人根本沒把ruby放在眼里。如果把ruby也算進(jìn)主流動(dòng)態(tài)語言里,那么就會(huì)出現(xiàn)一個(gè)比Python還慢了一個(gè)多數(shù)量級的語言了。

18、ruby流行么?是不是要走向PHP?php是個(gè)好東西,但是問題在于他只能作WEB編程,限制了PHP的應(yīng)用范圍,稍微需要系統(tǒng)一點(diǎn)的東西就要借助于C。而現(xiàn)在的ruby似乎也就是走著這條路。直到有一天,有人爆料"ruby是可以做客戶端編程的",贏得大家一片好奇。況且現(xiàn)在的ROR能否取代什么還是個(gè)未知數(shù)。從Java

WEB開發(fā)中解救出來的人們也并不都是走向了ruby。

四、評《選Ruby還是選Python?》

Python和Ruby的設(shè)計(jì)哲學(xué)確實(shí)有很大的差異,這個(gè)問題,我就不評論哪個(gè)更好了,各有所愛吧。至于效率,Ruby永遠(yuǎn)不要考慮跟Python相比。Ruby是偽線程,而且根本沒有利用多核CPU的可能,直接pass。而Python使用native

thread,僅僅由于部分模塊不是threadsafe的而加入了GIL來限制應(yīng)用多核CPU,而在我最近的測試中,在使用Twisted的異步線程之后,已經(jīng)可以很好的利用多核CPU的計(jì)算能力了。執(zhí)行效率上也不是一個(gè)數(shù)量級,自己試試就知道。

拿Java對比Python,可見作者創(chuàng)造力之強(qiáng)悍,哈哈。開源項(xiàng)目是很符合達(dá)爾文的自然選擇的,難道Ruby的開源項(xiàng)目少倒成了優(yōu)點(diǎn)了?另外,在Python中我也沒見除了WEB

framework之外有什么項(xiàng)目有太多的重復(fù)。舉個(gè)例子,pypcap就已經(jīng)基本淘汰了pcapy了。

談到資源,Ruby還有很長的路要走,所以提到雙方都很強(qiáng)的時(shí)候,麻煩不要太并列化了。至于Java社區(qū)的人傾向于學(xué)Ruby,我個(gè)人認(rèn)為只是被Java折磨慣了的開發(fā)人員目光太狹隘所致。語言是工具,面向?qū)ο笠彩枪ぞ撸兇獾拿嫦驅(qū)ο蟛⒉灰姷酶呙鞯侥睦锶ィ琍ython也有函數(shù)式編程的支持,作者怎么沒有提到。另外,Python的很多做法是以開發(fā)效率為第一目標(biāo)的而不拘泥于各類形式,甚至為很多智力有限的人所廣泛詬病的C++中的多繼承,Python也可以支持。問題不在于支持了什么讓你不喜歡的東西,而是讓盡可能多的人用上他們喜歡的東西。另外,一直被Ruby開發(fā)者所認(rèn)為的Python不夠OO的一個(gè)例子就是取一個(gè)序列的長度,Python使用len(x)的方法。這個(gè)問題,如果Ruby開發(fā)者認(rèn)為x.length就可以算是OO的話,那么Python也大可以直接使用x.__len__()來獲取長度。從用方法來封裝屬性的Java角度講,誰更OO一些呢,哈哈。

Ruby是一個(gè)日本人的作品,呵呵,這個(gè)就不多說了,不喜歡日本的國人有很多,在此我僅在技術(shù)層面就可以把Ruby貶低下去,無須用非技術(shù)的東西了。

關(guān)于Ruby on

rails,Ruby社區(qū)確實(shí)把幾乎所有的精力都集中于此。但是這只能表現(xiàn)出Ruby的幼稚,事實(shí)已經(jīng)證明了,ROR的很多模仿者已經(jīng)推出無數(shù)的高級功能,遠(yuǎn)遠(yuǎn)超過了ROR,沒有取代ROR只是出于先入為主的觀念。如果現(xiàn)在的Ruby,突然失去了ROR又會(huì)是什么樣子。至于作者提到的zend,居然用來跟ROR相比,有如以卵擊石,我學(xué)過Python的2種WEB框架,平時(shí)也比較關(guān)注Python和Ruby的各種東西,但是zend這個(gè)東西,我是沒有聽說過的,不知是不是作者的作品,哈哈。如果一定要在WEB框架上有個(gè)較量的話,你可以用django,Quixote,mod_python之類的來比較一下。django,一個(gè)典型的ROR模仿品,還在成長,但是已經(jīng)有很多優(yōu)于ROR的功能了,而性能上遠(yuǎn)優(yōu)于ROR自不必說。應(yīng)用Quixote的douban.com是所有使用Python和Ruby網(wǎng)站中流量最大的,而且在相同硬件配置的情況下比ROR實(shí)現(xiàn)速度快了一倍還多,要知道去除WEB服務(wù)器等等的各種平等損耗之后,這可是要快上一個(gè)數(shù)量級的東西。至于mod_python,據(jù)說www.gnu.org用的就是這個(gè)。如果Ruby還想開源的話,那么就永遠(yuǎn)活在Python的陰影里面吧。

至于上手的速度,各個(gè)人有不同的情況,不作評論。至于靈活性所帶來的東西,仁者見仁,就不要評論了。作者談到Python的入門不容易,真不知Ruby有個(gè)何等容易。我初學(xué)Python時(shí),第11天就用Python寫了一個(gè)詞法解析器,至今仍然在我博客上可查。所以,入門難度這個(gè)東西,每個(gè)人還是自己去試試為好,不必聽別人怎么說。

提到ROR生成的目錄有很多東西,要很久才可以都了解,這確實(shí)是IDE的綜合癥。在Python下,比較典型的例子是TurboGears,如果你希望了解整個(gè)應(yīng)用程序的運(yùn)行方式,你可以從核心cherrypy開始學(xué)習(xí),然后開始使用TurboGears就沒有什么可不了解的東西了。在這個(gè)角度上,ROR沒有選擇。再者,現(xiàn)在ROR可用的一種連接WEB服務(wù)器的方式scgi,當(dāng)年也是Python的作品,又是一個(gè)在Python的陰影下活著的小東西。

未來的發(fā)展么,孤注一擲的Ruby還很難說,但既然是孤注一擲,風(fēng)險(xiǎn)還是蠻大的。而Python么,我也以為真的會(huì)平穩(wěn)的發(fā)展,但是后來Micro$oft的加入,讓我們都難以預(yù)料Python的未來到底有多大了。我們再回頭談?wù)勛髡咭恢庇憛挼腜ython的多樣性,在我看來Ruby可以超越Python的東西屈指可數(shù),而Python超過Ruby的東西,自然是Ruby難以逾越的鴻溝。所以從編程語言的多樣性考慮,也就不建議大家學(xué)Ruby了吧,少了一種選擇,聚集一些人氣總是好的。

五、python和ruby,我選誰?

其實(shí)python和ruby非常接近,比大多數(shù)別的語言要接近的多,所以喜歡用啥就用啥(大實(shí)話,雖然也是廢話)。語法上的差別雖然有那么一點(diǎn),大部分是syntax sugar,我斗膽稍微列幾個(gè)(python我也忘得差不多了,不對的大家盡管來鞭尸吧),但是主要差異還是設(shè)計(jì)思想上的:靈活vs明確. 我不認(rèn)為兩者在生產(chǎn)力上會(huì)有什么差別,如果你熟悉的話。*注意,僅限語言本身的比較。

1. ruby的case可以匹配很多東西:范圍/數(shù)組,對象,正則表達(dá),python沒有case/switch而使用if/else比較死板點(diǎn)

2. python的縮進(jìn)很漂亮,雖然有時(shí)會(huì)造成些許麻煩。ruby的end蠻難看的,所以大家都被逼當(dāng)one liner(玩笑)

3. 感覺上ruby比python更OO,當(dāng)然這也可能是因?yàn)閜ython不提倡用那些改變對象內(nèi)部構(gòu)造的‘伎倆’造成的錯(cuò)覺

4. python有l(wèi)ist comprehension, ruby沒有:(

5. python有真正的keyword argument, ruby用hash模擬,當(dāng)然實(shí)際用起來沒什么差別

6. python的self很討厭,ruby沒有那種繁瑣的東西

7. reflection,ruby內(nèi)置了很多方法,比如object.methods,而python把這些信息存在特殊的字典里。差不多

8. ruby的block功能很強(qiáng),python的lambda只能返回單一值

9. ruby的open class已經(jīng)聲明遠(yuǎn)播,可以玩出2.days.ago這樣的花樣,python好像沒法直接修改內(nèi)置類也反對這么做。

10. python需要用@classmethod修飾聲明類方法,ruby是內(nèi)建

11. ruby有單子方法,也就對對象多帶帶定制,python不知道有沒有類似概念

12. ruby有method_missing機(jī)制,python可以使用__getattr__截獲未定義方法(from qiezi)

13. ruby使用單繼承+mixin,python使用多重繼承,不過python也有mixin

14. ruby有attr_*系列語法helper,省卻自己寫一堆setter/getter, python的property方法還是得自己寫setter/getter

15. ruby和python都使用duck typing,不過python也有一套顯式的interface機(jī)制(從zope3并入內(nèi)核了么?)

16. ruby的函數(shù)調(diào)用括號(hào)是可省的,稍微少敲幾下鍵盤。python默認(rèn)沒括號(hào)也不帶參數(shù)的話返回函數(shù)本身的一個(gè)引用。

17. 我不清楚python的meta programming能到什么程度,只好等大牛來說說了。只是覺得pythoner不常用那個(gè),也許覺得會(huì)把程序邏輯搞得晦澀不明。

18. ruby從perl繼承了一部分難看的東西,比如很多預(yù)定義的$x常量

19. ruby內(nèi)建正則表達(dá),方便一點(diǎn)

20. ruby的yield是用來call block的。而python的yield是用來給generator輸入輸出值的。

21. python的庫給我感覺命名規(guī)范有點(diǎn)不統(tǒng)一,有些方法用snake_case有些則用CamelCase,也許是庫太多了遺留下的歷史問題

22. python的三引號(hào)很漂亮,ruby的<<-XX...XX太難看了,也可以用%q{...}包裹多行文字(from qiezi)

23. ruby的類庫設(shè)計(jì)中喜歡給方法添加別名,方便記憶。

另: ruby官方網(wǎng)站也提供了一些基本的比較。

六、兩種語言的資源和學(xué)習(xí)曲線比較:

總體的印象,用一個(gè)不大恰當(dāng)?shù)谋扔鳎喝绻鸓ython是Java,那么Ruby就是.net。我們知道,Java世界非常復(fù)雜,非常多樣性,任何一個(gè)需求,都會(huì)有很多開源項(xiàng)目,他們用不同的思想來實(shí)現(xiàn),性能特點(diǎn)迥異,到底選那個(gè),總是令人犯難。現(xiàn)在Python也是如此,而由于Python開發(fā)難度遠(yuǎn)遠(yuǎn)低于Java,導(dǎo)致Python的相關(guān)項(xiàng)目比Java還要多得多。

資源上,兩者社區(qū)都很強(qiáng),有趣的是,現(xiàn)在Java社區(qū)存在被Ruby同化的危險(xiǎn),至少我訂閱的幾個(gè)Javablog聚合中談Ruby比Java還多。Ruby的社區(qū)較為集中,Python則比較分散。我總懷疑Ruby的日本用戶較多,但因?yàn)椴欢瘴模茈y確認(rèn)這個(gè)想法。對于一個(gè)母語非英語的創(chuàng)始人,我總是有點(diǎn)恐懼,怕很難理解他,怕很難得到最新消息等等,雖然這個(gè)擔(dān)心目前看來并無必要,不過,誰知道會(huì)怎么樣呢!

Ruby之所以現(xiàn)在突然變得熱門,和rails這套架構(gòu)是分不開的。考慮Ruby,就要考慮到Ruby on rails。rails提供了一套非常好的web開發(fā)框架,開發(fā)效率非常高。Python雖然有很多類似的架構(gòu)實(shí)現(xiàn),但并沒有出現(xiàn)一個(gè)能夠一統(tǒng)江湖的架構(gòu)。Python的zend雖然完整,但更偏向于web服務(wù)器,不能用來和rails比較。

Ruby比pyton更容易上手。從語言特征看,Ruby有很多有意思的創(chuàng)造,比如說block,但大規(guī)模的應(yīng)用這些好玩的東西讓程序變得混亂。Python語法強(qiáng)調(diào)簡單,但是由于太靈活,簡單得太過分,于是傳統(tǒng)程序員經(jīng)常會(huì)看到一些令人大吃一驚的表達(dá)方式。我不知道這應(yīng)該算優(yōu)點(diǎn)還是缺點(diǎn),至少我認(rèn)為語法過于靈活,容易導(dǎo)致不同程序員的代碼風(fēng)格差異過大,增加了學(xué)習(xí)成本。

初期入門,Ruby更容易,但一旦達(dá)到一定復(fù)雜度,那么Ruby的難度驟然加大。Python入門不容易,復(fù)雜的時(shí)候也不會(huì)太痛苦。rails有入門簡單,深入難的問題。rails生成的目錄是做什么用途?o/r mapping如何實(shí)現(xiàn)的?如何把數(shù)據(jù)從web中傳遞到數(shù)據(jù)庫的。這些都是Ruby程序員早晚要面對的問題。Python則不會(huì)這樣,如果搞不清楚這些,大概根本沒辦法開始。集成度太高的快速開發(fā)工具都有這個(gè)特點(diǎn),無論是VB、Delphi,還是.net,有多少使用了半年以內(nèi)的開發(fā)人員可以說清楚工程目錄下面所有的文件的用途、每個(gè)文件中的語法?我相信很多很有經(jīng)驗(yàn)的用戶也未必說的清楚。

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

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

對于未來發(fā)展,我認(rèn)為Python的發(fā)展可預(yù)見,會(huì)較為平穩(wěn)。Python已經(jīng)屬于一個(gè)社區(qū),而非一個(gè)人,但Ruby由于種種原因,Ruby的作者maze的意志仍然會(huì)對Ruby的發(fā)展造成較大影響。Sun控制著Java,但由于sun的資源強(qiáng)大,且組織了jcp進(jìn)行統(tǒng)籌,所以Java發(fā)展很不錯(cuò),但Ruby能不能作到這一點(diǎn),還需要時(shí)間來證明。

七、從Python到Ruby

Python是一門非常優(yōu)秀的語言,從Python遷移到Ruby,你將發(fā)現(xiàn)一些語法上的不同。

相似點(diǎn)

和Python一樣,在Ruby中,...

有一個(gè)交互提示 (叫做 irb).

你可以在命令行中讀取文檔 (通過ri 命令來替代 pydoc).

沒有特殊的結(jié)束一行的符號(hào) (新行除外).

文字可以用多行,就像Python中的三個(gè)引號(hào).

List用[],Dict用{} (Dict在Ruby中叫“hashes”).

Arrays的工作方式相同(2個(gè)Array相加成為一個(gè)更加長的Array,但是想這樣a3 = [ a1, a2 ] 合并,將產(chǎn)生一個(gè)包含數(shù)組的數(shù)組).

Objects是有固定類型和動(dòng)態(tài)轉(zhuǎn)換的.

一切都是object,變量名只是一個(gè)指向Object的指針.

雖然關(guān)鍵字不同, 但是exceptions的工作方式不變.

你擁有嵌入文檔的工具 (在Ruby中叫做rdoc).

不同點(diǎn)

與Python不同, 在Ruby中,...

Strings是可以改變的。

你可以使用常量(常量的值是不同改變的)。

這里有些強(qiáng)制規(guī)定的書寫要求 (例如:class的名字以大寫字母開頭, 變量名已小寫字母開頭)。

這里只有一種容器(Array), 并且是可以改變的。

引號(hào)中的String限制不同。

這里沒有新風(fēng)格的Class,Class只有一種風(fēng)格。

你無法直接訪問屬性,在Ruby中,都是通過方法調(diào)用實(shí)現(xiàn)的。

在方法調(diào)用中使用(),是一種可選的策略。

這里用private等等限制訪問的關(guān)鍵字,來替代Python中的名字隱藏。

“mixin’s”用來替代多繼承。

你可以在任何時(shí)候修改已有的Class,并添加新的方法。

用true和false來替代True和False (用nil來替代None)。

在判斷真值的時(shí)候,只有false和nil會(huì)被認(rèn)為是假.其他所有的都認(rèn)為是真(包括0, 0.0, "",和[])。

用elsif替代elif.

用require替代import. 但是用法是相同的。

用usual-style來注釋文檔(替代docstrings) 同時(shí)用來生成文檔。

八、從三個(gè)方面來進(jìn)行Python和Ruby的比較:

1.各自所適用于什么應(yīng)用

2.開發(fā)環(huán)境、運(yùn)行環(huán)境

3.可移植性如何,因?yàn)轫?xiàng)目最后計(jì)劃移植到手機(jī)平臺(tái),如windows CE Symbina

【1.各自所適用于的應(yīng)用場合】

查閱的結(jié)果似乎對于這兩種語言的評價(jià)都很好,在網(wǎng)絡(luò)開發(fā)上的性能都很好。都很適用于快速的應(yīng)用程序開發(fā),開發(fā)的效率很高。

Python:

摘取了跟項(xiàng)目有關(guān)的一些應(yīng)用方面的敘述

跨平臺(tái)開發(fā):

Python 以中立方式支持不同的一系列平臺(tái),如果用戶使用的系統(tǒng)包含不同的平臺(tái),使用 Python 開發(fā)應(yīng)用程序則再好不過;它這種適應(yīng)性也可以為系統(tǒng)預(yù)留使用其它工具的可能。對于頻繁更換平臺(tái)用戶,Python 是個(gè)理想的選擇。

為最終用戶提供軟件服務(wù)時(shí),Python 也是個(gè)備選方案,可以避免同時(shí)用不同應(yīng)用軟件編程的時(shí)間和費(fèi)用。

互聯(lián)網(wǎng)程序設(shè)計(jì):

Python 帶有的標(biāo)準(zhǔn)模塊可以對網(wǎng)絡(luò)插槽進(jìn)行初級和協(xié)議級別的通訊,比如,如果要從 POP 服務(wù)器上讀取電子郵件,Python 隨帶的庫模塊可以做到。另外, Python 還支持 XML、HTML和 CGI 庫文件,所以利用它可以解析用戶輸入的需求,并通過網(wǎng)絡(luò)服務(wù)器產(chǎn)生最佳質(zhì)量的成果。

程序員還可為擁有 Python 內(nèi)置解釋器的 Apache、Unix 和 Windows 網(wǎng)絡(luò)服務(wù)器編譯模塊。基于 CGI 程序的功效,可以很方便地執(zhí)行 Python 語句而不用多帶帶裝載。

針對于python的網(wǎng)絡(luò)編程,有一本很好的書:《python網(wǎng)絡(luò)編程基礎(chǔ)》

這本書全面介紹了使用Python語言進(jìn)行網(wǎng)絡(luò)編程的基礎(chǔ)知識(shí),主要內(nèi)容包括網(wǎng)絡(luò)基礎(chǔ)知識(shí)、高級網(wǎng)絡(luò)操作、Web Services、解析HTML和XHTML、XML、E-mail服務(wù)、FTP、使用Python操作數(shù)據(jù)庫、SSL、幾種服務(wù)器端框架(包括Socket服務(wù)器、SimpleXMLRPCServer、CGI和mod_python),以及多任務(wù)處理(包括Forking、線程和異步通信)等。本書實(shí)用性強(qiáng),共提供了大約175個(gè)實(shí)例,6600行以上的代碼,是幫助讀者全面而快速地學(xué)習(xí)Python語言、編寫網(wǎng)絡(luò)程序的最佳實(shí)踐。

Ruby:

功能強(qiáng)大,面向?qū)ο蟮哪_本語言,可以使您方便快捷地進(jìn)行面向?qū)ο缶幊蹋袝r(shí)使用像Smalltalk、Eiffel或C++這樣正式的面向?qū)ο笳Z言來開發(fā)一些小項(xiàng)目顯得有點(diǎn)"小題大做",而Ruby剛好可以滿足這些面向?qū)ο缶幊痰男枨?當(dāng)然了,您也可以使用Ruby進(jìn)行普通的面向過程編程。

Ruby支持很多網(wǎng)絡(luò)協(xié)議,不管是高層的還是底層的。ruby提供了一些基本類,讓你可以使用TCP,UDP,SOCKS等很多協(xié)議交互,而不必拘泥在網(wǎng)絡(luò)層。這些類也提供了輔助類,讓你可以輕松的對服務(wù)器進(jìn)行讀寫。進(jìn)行網(wǎng)絡(luò)編程也是很不錯(cuò)。

【2.開發(fā)環(huán)境、運(yùn)行環(huán)境】

Python:

相比之下,就是沒有一個(gè)很強(qiáng)的集成開發(fā)環(huán)境。有人說開源軟件相對于收費(fèi)的那種軟件好用一些。

用得較多的幾個(gè):

Python自帶的idle:

不是python的IDE中最好的……

PythonWin :

使用起來非常得心應(yīng)手(就像使用 Windows 那樣舒服)。它有個(gè)好用的編輯器,包括代碼合并、語法標(biāo)簽高亮顯示以及代碼自動(dòng)完成特性。PythonWin 和有些 IDE 一樣,不包含任何類型的表單設(shè)計(jì)器;但它提供一個(gè)優(yōu)秀的調(diào)試器,具有監(jiān)視、代碼檢查、交互調(diào)試窗口、斷點(diǎn)、和其他調(diào)試器該有的功能。最重要的是,PythonWin 很穩(wěn)定,盡管有時(shí)候在 Win95r2 系統(tǒng)上使用時(shí)會(huì)奇怪地“停止響應(yīng)”。界面上來說,PythonWin 比較簡單,但非常吸引人,很好的運(yùn)用了可嵌入和可對接的元素(我有點(diǎn)偏愛 Idle 風(fēng)格的 "many windows everywhere",它也為其他許多 IDE 所采用的)。PythonWin 還集成了 ActiveState 的 HtmlHelp 版本的 Python 說明文檔和 PythonCOM。

eclipse的pydev插件,eclipse+pydev

Pydev 基于Eclipse的,非常棒的Python環(huán)境,改進(jìn)速度非常快。提供的一些功能

UliPad :

一個(gè)編輯器,你可以用它來進(jìn)行你的文檔寫作,編程開發(fā)。它使用 Python 編程語言開發(fā),用戶界面基于 wxPython 。它除了想要完成一般編輯器的常用功能之外,最主要是想實(shí)現(xiàn)一種方便、靈活的框架,開發(fā)者可以方便地開發(fā)新的功能。而且有編程經(jīng)驗(yàn)的用戶還可以針對日常工作中的特別問題編制處理的插件,從而使之與自已的日常工作緊密結(jié)合起來。由于使用的是 Python 這種功能強(qiáng)大的編程語言,你可以方便地對本軟件進(jìn)行修改,從而滿足自已的需要。

UliPad 支持代碼著色、智能補(bǔ)全、代碼調(diào)試、Python類瀏覽、代碼片段、Ftp功能、目錄瀏覽等等強(qiáng)大功能,其 Doc 目錄下的文檔更是非常豐富,是你編寫 Python 的絕世好幫手!

系統(tǒng)要求:

python 2.4+

wxPython 2.6+

我們最后選擇的是UliPad,還是挺棒的。

Ruby:

Ruby有極好的高級調(diào)試器。

可以用netbeans的ruby插件或eclipse的ruby插件

Eclipse下安裝開發(fā)環(huán)境的大致過程:

1. 安裝 Ruby 1.8.6 One-Click Installer。

2. 將 Eclipse Platform Runtime Binary 壓縮包解壓到某個(gè)目錄。

3. 將 Ruby Development Tools 壓縮包的內(nèi)容解壓縮到 Eclipse 相應(yīng)目錄下。

運(yùn)行環(huán)境在其官方網(wǎng)站上下載相應(yīng)的版本再安裝即可,windows下面的安裝較為簡單,雙擊運(yùn)行即可安裝。

【3.可移植性】

Python:

由于它的開源本質(zhì),Python已經(jīng)被移植在許多平臺(tái)上(經(jīng)過改動(dòng)使它能夠工作在不同平臺(tái)上)。如果你小心地避免使用依賴于系統(tǒng)的特性,那么你的所有Python程序無需修改就可以在下述任何平臺(tái)上面運(yùn)行。這些平臺(tái)包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至還有PocketPC!

Python在執(zhí)行時(shí),首先會(huì)將.py文件中的源代碼編譯成Python的byte code(字節(jié)碼),然后再由Python Virtual Machine來執(zhí)行這些編譯好的byte code。這種機(jī)制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更高級的Virtual Machine。這里的高級并不是通常意義上的高級,不是說Python的Virtual Machine比Java或.NET的功能更強(qiáng)大,而是說和Java 或.NET相比,Python的Virtual Machine距離真實(shí)機(jī)器的距離更遠(yuǎn)。或者可以這么說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。

可以安裝一種面向?qū)ο蟮慕忉屝缘挠?jì)算機(jī)程序設(shè)計(jì)語言,也是一種功能強(qiáng)大而完善的通用型語言,已經(jīng)具有十多年的發(fā)展歷史,成熟且穩(wěn)定。Python 具有腳本語言中最豐富和強(qiáng)大的類庫,足以支持絕大多數(shù)日常應(yīng)用.在Symbina智能手機(jī)上支持C++和JAVA開發(fā)的兩類程序,裝上Python后,也就可以支持眾多以Python開發(fā)的各種程序了。對于普通的手機(jī)用戶,我們不用了解太多,只是安上Python這個(gè)平臺(tái)就可以了,可以讓我們的手機(jī)支持更多以Python開發(fā)的程序。目前在Symbian手機(jī)上已經(jīng)有相當(dāng)多的Python開發(fā)的程序,也都是比較實(shí)用的。

Ruby:

它大部分是在Linux上開發(fā)的,但是可以在很多類型的Unix, Dos, Windows95/98/Me/NT/2000/XP, MacOS, BeOS, OS/2等系統(tǒng)上運(yùn)行。

關(guān)于ruby跟手機(jī)開發(fā)的資料很少,有在windows CE上運(yùn)行的版本,但是好像現(xiàn)在相關(guān)的資料還特別少,而且安裝失敗、編譯不通過的例子偏多。日文頁面上有少量的日文介紹。

【總結(jié)】

然后針對于Python跟Ruby在朋友的建議下還給出了如下一些參考意見,在此感謝他:

1.? Python也被稱為是一門清晰的語言。因?yàn)樗淖髡咴谠O(shè)計(jì)它的時(shí)候,總的指導(dǎo)思想是,對于一個(gè)特定的問題,只要有一種最好的方法來解決就好了。Python語言是一種清晰的語言的另一個(gè)意思是,它的作者有意的設(shè)計(jì)限制性很強(qiáng)的語法,使得不好的編程習(xí)慣(例如if語句的下一行不向右縮進(jìn))都不能通過編譯。這樣有意的強(qiáng)制程序員養(yǎng)成良好的編程習(xí)慣。Python在其他部分的設(shè)計(jì)上也堅(jiān)持了清晰劃一的風(fēng)格,這使得Python稱為一門易讀性、易維護(hù)性好,并且被大量用戶所歡迎的、用途廣泛的語言。

同一個(gè)問題用Python幾個(gè)人分別寫寫出來的代碼會(huì)很相近。但Ruby則設(shè)計(jì)思想不一樣,用它寫出來的程序太過于靈活,不同的人寫出來可能相差會(huì)很大。

2.? Ruby英文文檔極度缺乏,中文文檔就更不用說。Python社區(qū)相對成熟,也有一大堆的資料。

最后給出Python的幾個(gè)網(wǎng)站

1.http://www.python.org/- Python 的官方網(wǎng)站

2.http://python.cn/- Python 中文社區(qū)

3.http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPythonPython For Dot Net 的網(wǎng)站

Ruby的幾個(gè)網(wǎng)站

1、www.ruby-lang.org/zh_CNRuby中文官方網(wǎng)站

2、http://www.rubystudy.com/bbs/tag.php?name=RubyRuby中文學(xué)習(xí)交流社區(qū)

3、http://ruby-lang.guo.cc/Ruby在線參考手冊

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40756.html

相關(guān)文章

  • 不嚴(yán)謹(jǐn)不同語言下大 Excel 文件寫入性能比較

    摘要:測試內(nèi)容使用不同的語言及其版本,測試各自完成包含行列單元格的文件的生成,對比其各自耗費(fèi)時(shí)間,次重復(fù)執(zhí)行取其平均值后進(jìn)行橫向比較。 背景 去年因?yàn)榫€上系統(tǒng)需要導(dǎo)出大量數(shù)據(jù)(大概是 11 萬行)到 Excel,代碼是 Python 2.7 寫的,除去數(shù)據(jù)庫查詢耗時(shí),整個(gè)的 Excel 文件生成也還要耗費(fèi)幾十秒的時(shí)間,這聽起來真是一個(gè)非常夸張的事情。后來為其更換了號(hào)稱性能表現(xiàn)最好的 pyex...

    keithxiaoy 評論0 收藏0
  • 2019 為什么我們還會(huì)繼續(xù)使用 PHP ?

    摘要:但我還是使用它開發(fā)了很多軟件。那么問題就很明顯了為什么今天還在使用除了個(gè)人理想主義的偏好以外,還有很多理由。為什么使用而不是也許和比較的最重要的語言是。為什么選擇而不是你已有專業(yè)知識(shí)或者在使用庫。 showImg(https://segmentfault.com/img/remote/1460000018390090?w=790&h=466); 我們來開門見山地說。? PHP 是一門奇...

    guyan0319 評論0 收藏0
  • 帶你入門 JavaScript ES6 (五) 集合

    摘要:一概述集合是引入的新的內(nèi)置對象類型,其特點(diǎn)同數(shù)學(xué)意義的集合,即集合內(nèi)所有元素不重復(fù)元素唯一。數(shù)組集合對比數(shù)組和集合,數(shù)組可以加入重復(fù)數(shù)據(jù),而集合的所有元素是唯一的不允許重復(fù)。因此,適合臨時(shí)存放一組對象,以及存放跟對象綁定的信息。 本文同步帶你入門 帶你入門 JavaScript ES6 (五) 集合,轉(zhuǎn)載請注明出處。 前面我們學(xué)習(xí)了: for of 變量和擴(kuò)展語法 塊作用域變量和解構(gòu)...

    BetaRabbit 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新編程語言吧!

    摘要:入門,第一個(gè)這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    caspar 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<