亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: send_linux
打印 上一主題 下一主題

《ruby元編程》有獎試讀中。ǐ@獎名單已公布) [復(fù)制鏈接]

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
31 [報告]
發(fā)表于 2012-02-28 10:42 |只看該作者
元編程誰也比不上 Lisp 吧,但是畢竟元編程在程序中只占很小比例。Easy things should be easy and hard things should be possible Perl 中這名格言我想很適合這里。日常應(yīng)用方面 Lisp 相當(dāng)?shù)谋瘎。胍脗模塊找不到,處理字符串感覺像在寫匯編,數(shù)學(xué)計算方面前置語法看的人想死……

Ruby 在提供常用功能的情況下讓元編程同自己的語言模型比較好的結(jié)合起來,這些就夠了,作者也沒狂妄到要超越 Lisp 吧。

可以省掉調(diào)用的括號很有用啊畢竟函數(shù)當(dāng)參數(shù)在 Ruby 中更少用,它用 BLOCK 語法省掉了不少高階函數(shù)。另外千萬別噴我啊,我也是 Lisp 黨

論壇徽章:
0
32 [報告]
發(fā)表于 2012-02-28 11:20 |只看該作者
本帖最后由 琳琳的小狗 于 2012-02-28 11:40 編輯

回復(fù) 30# OwnWaterloo

其實繞到最后,兄臺挖了個坑自己跳下去了。還記得最初的討論焦點么?導(dǎo)火索來自于《Ruby元編程》中作者有利用Ruby語法優(yōu)勢貶低其他語言(如C++、以及Lisp)的嫌疑,F(xiàn)在回頭看看,不正是以FP語言之長來對比Ruby的短板么?

Ruby社區(qū)以Pragmatic為宗旨,屬于實戰(zhàn)派,相比Lisp這種學(xué)院派的風(fēng)格來說,的確是不太一樣(當(dāng)然,你也可以說是因為FP另類)。面向?qū)ο笳Z言之所以獲得大多數(shù)人的關(guān)注,其中最大的一個原因就是他盡力去模擬現(xiàn)實生活中的事物,比較符合人類的心智模型,要不然FP這么優(yōu)雅高級,怎么就流行不起來呢?lua還好點,恕在下孤陋寡聞,還真沒在多少場合下見到Lisp的大規(guī)模應(yīng)用。俗話說“工欲善其事,必先利其器”,就那我最熟悉的Web應(yīng)用開發(fā),以及自動化測試來講,使用Ruby這類動態(tài)語言才是最佳選擇。

感覺OO實在是被妖魔化了,如果真如某些人所言,那怎么有這么多語言都以此為賣點?比如javascript,還有風(fēng)頭正旺的Objective C,為何不搞成純FP呢?個人認(rèn)為,F(xiàn)P太過于抽象的思維是其受阻的最大原因,另一個原因就是源代碼的可讀性,Lisp那括號語法,以及前綴表達(dá)式,都給初學(xué)者帶來了不小的障礙。還記得SICP第一章的導(dǎo)言么?作者是這么說的:“程序是寫給人看的,機(jī)器順便執(zhí)行”。同樣的道理,映射到Ruby中來,方法調(diào)用可省略括號、各種操作符比如加號的語法糖,無一不是為了實現(xiàn)整潔、易讀的代碼而設(shè)計的,《Ruby元編程》一書中指代的“程序員友好”就在這里。

至于我的回帖中引入Ruby實現(xiàn)的Lisp解釋器,僅僅只是想說明,如果你愿意,使用這種帶有一定約束條件的內(nèi)部DSL,也是完全可以實現(xiàn)FP那些特性的。但是,可以歸可以,為什么沒人去這么干呢?這是個問題。Rubyist一般都會采取最簡單的辦法來實現(xiàn)手頭的任務(wù),如果開發(fā)過程中,真要我去實現(xiàn)一個map,那我頂多這么做:
  1. def map(operate, *args)
  2.   args.shift.zip(*args).map {|pair| pair.reduce operate}
  3. end

  4. p (map :+, [1, 2, 3], [4, 5, 6], [7, 8, 9]) #輸出[12, 15, 18]
  5. p (map :push, [[1, 2],[3,4]], [5,6], [7, 8]) #輸出[[1, 2, 5, 7], [3, 4, 6, 8]]
復(fù)制代碼
的確,正如你說,利用了zip和reduce,但是就API的使用者而言,真的有區(qū)別么?拿BDD的理論來比擬,客戶是關(guān)注你軟件的內(nèi)部實現(xiàn)細(xì)節(jié),還是更關(guān)注于產(chǎn)品的功能和行為?

大乘佛藏經(jīng)雖然牛逼,可以普度眾生,還不是需要唐僧師徒一行遠(yuǎn)涉萬里西天取經(jīng)么?同理,如果沒有人推廣傳授,F(xiàn)P可能永遠(yuǎn)都是實驗室那些科學(xué)怪人們的小蜜,僅此而已。所以我倒是覺得,其他語言能借鑒其中好的思想,并將其應(yīng)用到實戰(zhàn)總來,這絕對是有百益而無一害的好事情。他山之石可以攻玉,在Ruby社區(qū)這樣一個滿懷包容性、以及上進(jìn)心的生態(tài)環(huán)境中,作為其中的一員,我很欣慰。還是那句老話,切莫跑題,先拋棄成見,就這本書的內(nèi)容進(jìn)行展開討論吧:)

論壇徽章:
0
33 [報告]
發(fā)表于 2012-02-28 12:56 |只看該作者
狂熱的PK,能讓人熱血沸騰,但轉(zhuǎn)過身之后,還需要大家冷靜、理性地選擇合適的技術(shù),總之,我喜歡Ruby!

論壇徽章:
0
34 [報告]
發(fā)表于 2012-02-28 15:22 |只看該作者
還可以吧,沒什么特別的感覺,技術(shù)類的圖書都差不多。。

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
35 [報告]
發(fā)表于 2012-02-28 17:10 |只看該作者
回復(fù) 31# zhlong8

>> 但是畢竟元編程在程序中只占很小比例
no。 是因為元編程在其他語言里不容易,所以才占很小比例。


>> 日常應(yīng)用方面 Lisp 相當(dāng)?shù)谋瘎?br /> 目前我也覺得是這樣。

討論語言時,一部分人是將語言、語言實現(xiàn)、語言所在環(huán)境一起在討論。
而一部分人,比如我在這個帖子里,是僅僅討論語言本身。

因為這幾者本來就是分開的概念。
例如,Java語言(實現(xiàn)只有一個)很爛,但JVM環(huán)境還不錯,至少很豐富,移植性很好,安裝程度也很普遍。
于是clojure(實現(xiàn)也只有一個)出現(xiàn)了,lisp+JVM……  等haskell學(xué)完了(學(xué)得會么我……)下一個可能就是它了……
又或者h(yuǎn)askell遇到瓶頸了(已經(jīng)遇到了……) 與clojure同步學(xué)……

類似的,Lua是一個好語言,也是一個好的實現(xiàn)。但環(huán)境就匱乏了。
于是雖然我沒事就挑Python/emacs lisp毛病,但日常應(yīng)用方面還是得用它或者emacs lisp……


>> 數(shù)學(xué)計算方面前置語法看的人想死
可以自己寫個宏,將表達(dá)式從中綴解析為后綴。
如果數(shù)學(xué)計算的比例很多的話。


>> 作者也沒狂妄到要超越 Lisp 吧。
我想作者應(yīng)該沒有。 但用戶呢?

有Python程序員,甚至是個知名人士,宣稱Python是lisp —— 《關(guān)于Lisp最迷人的故事》。
JS也想?yún)⒑,說JS=C+Lisp,(文章名我忘了,因為內(nèi)容太狗血了…… 。
說是因為JS學(xué)了C的語法…… C的語法毫無亮點,中綴聲明是被詬病的存在好嗎……
而從Lisp里學(xué)了什么我真沒看出來……  因為JS的設(shè)計者是個scheme程序員?
或者是gc? dynamic typing? first class function? closure? 我都不好意思說if-else與recursion了……  但是, who doesn't

而Ruby,貌似有篇文章名字叫做: ruby is an acceptable lisp。
觀點有2:
1. ruby語法比lisp好
2. lisp元編程功能的80%在ruby中都可以實現(xiàn)

我是學(xué)了lisp之后才明白為什么這些語言都想與lisp扯上關(guān)系:真像給自己臉上帖金了一樣。
但沒有一個學(xué)到了lisp的精髓syntax friendly從來就不是lisp的精髓, 而且會影響AST的直觀性。
所以ruby那篇第1個觀點就站不住腳。 第2個觀點我很懷疑80%這個數(shù)據(jù)。
也許能完成80%的功能, 但不是以lisp的元編程的方式。
直到現(xiàn)在我都不能肯定ruby里能夠code transformation。 而且即使能, 多樣的語法也許也會造成轉(zhuǎn)換時的障礙。


>> 可以省掉調(diào)用的括號很有用啊畢竟函數(shù)當(dāng)參數(shù)在 Ruby 中更少用,它用 BLOCK 語法省掉了不少高階函數(shù)。
我沒說它沒用……
block語法,不是1st class value,需要Proc.new/lambda后才是。 這也許是松本一開始的設(shè)計失誤。
省略調(diào)用的括號更是讓函數(shù)也降級了, f 也不是 1st class value, 需要 method 后才是。 這是"友好"語法產(chǎn)生的代價。
一個影響函數(shù)傳出,一個影響函數(shù)傳入…… 這還怎么算是函數(shù)式語言?

注意……  我前面也強調(diào)了, 不是說Ruby就一定要有l(wèi)isp那樣元編程, 就一定要支持FP。
它不支持是它的選擇。 如果能用其他方式,比如OO,表達(dá)思想依然沒什么可挑剔的。
但是:
1. 許多表達(dá)不是OO專屬的,僅僅只是Ruby這么選擇了
2. 如果Ruby不支持lisp那樣的元編程, 就不要說它支持
3. 如果Ruby對FP的支持是這種樣子…… 至少沒法說服我Ruby是個函數(shù)式語言……

與上面的X語言是否是Lisp一樣。 許多語言也稱自己是函數(shù)式…… 就像java說自己支持generic……
其實FP并不是個很精確的定義, 但它常使用的那些構(gòu)造就有比較精確的定義。
在這些定義下這些號稱FP的語言各有各的問題,而Ruby的問題是很嚴(yán)重的。 前面已經(jīng)說了這里就不重復(fù)了。



>> 另外千萬別噴我啊,我也是 Lisp 黨
我像在噴人么……  我一般只會噴Java、OO、設(shè)計模式等等…… 現(xiàn)在也有點懶得噴了……

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
36 [報告]
發(fā)表于 2012-02-28 17:21 |只看該作者
回復(fù) 32# 琳琳的小狗

>> 其實繞到最后,兄臺挖了個坑自己跳下去了。還記得最初的討論焦點么?導(dǎo)火索來自于《Ruby元編程》中作者有利用Ruby語法優(yōu)勢貶低其他語言(如C++、以及Lisp)的嫌疑,F(xiàn)在回頭看看,不正是以FP語言之長來對比Ruby的短板么?

承認(rèn)FP是Ruby的短板了?  那我部分目的也達(dá)到了。

我一直記得討論是怎么展開的:
1. 我認(rèn)為那些技術(shù)不是OO的專利,只是Ruby選擇了OO來實現(xiàn)這些功能
2. 你質(zhì)疑我對OO的質(zhì)疑
3. 因為我聽許多人(不僅僅是你)說Ruby是FP語言, 而我知道這兩種風(fēng)格結(jié)合在一起很容易出問題

于是將那些容易出問題的地方向你請教, 結(jié)果發(fā)現(xiàn)Ruby為了省略調(diào)用括號連1st class function都不支持……

而且我一直在強調(diào)…… 這很重要,我再重復(fù)一次……
不是說Ruby必須支持FP,它支持OO也沒什么可挑剔的。
而是說1) Ruby的那些功能不是OO的專利 2) 就不要再說Ruby對FP的支持很好了好嗎……

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
37 [報告]
發(fā)表于 2012-02-28 17:35 |只看該作者
回復(fù) 32# 琳琳的小狗

關(guān)于OO的流行,與FP以及Lisp的不流行。  記得前面你說的"不流行不代表不好"嗎?

說OO符合人類的心智模型,其實是在說OO扯低了程序員的整體水平
3.times ...  a.push(x) 才符合人類心智? 而times(3, ...) push(a,x) 就不行? 這抽象思維水平是得有多低?
而且前者是后者的特殊化, 這種特殊化會另語言變得很復(fù)雜。 前面js與python的反例我舉了, lua的正例我舉了。
ruby的oo方面我接觸到的那一塊 —— 整個ruby中的一小部分 —— 已經(jīng)比lisp整體復(fù)雜了 ……

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
38 [報告]
發(fā)表于 2012-02-28 17:44 |只看該作者
回復(fù) 32# 琳琳的小狗

關(guān)于你那行代碼 map :push, [[1, 2],[3,4]], [5,6], [7, 8]
我似乎看到了ruby的希望, 只是不知道ruby是如何解釋這一行為的。

關(guān)于這里的語法問題,以及省略調(diào)用括號,加法操作符等等等等……
語法簡單不等于語意簡單。 有一個語法使得看代碼看上去好看, 寫起來舒服, 但代碼是否真如看上去那樣的運作?
于是無論語法如何簡煉, 系統(tǒng)的學(xué)習(xí)一門語言終歸是要學(xué)習(xí)它的語意。

lisp的語意 —— 此處特指emacs lisp,因為cl/scheme是標(biāo)準(zhǔn)化的,由一兩個實現(xiàn)去解釋標(biāo)準(zhǔn)不合適……
我可以在10句話、200字以內(nèi)說解釋完。
其余的都是由語言自己實現(xiàn)的, 可以通過上面的核心語意去看這些機(jī)制的準(zhǔn)確定義。

而lisp的語法更是沒什么好說的了…… 它的目的就是為了代碼寫成什么樣子, 就讀(read procedure)做什么樣子……

ruby能做到嗎?

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
39 [報告]
發(fā)表于 2012-02-28 17:52 |只看該作者
回復(fù) 32# 琳琳的小狗

>> 所以我倒是覺得,其他語言能借鑒其中好的思想,并將其應(yīng)用到實戰(zhàn)總來,這絕對是有百益而無一害的好事情。

也許ruby借鑒了smalltalk,但smalltalk我不了解……
但我了解smalltalk有一個特性, 叫image-based execution。 如果有興趣也許會去了解, 不過這東西在cl里面也有, 也許不會有那個空閑。

lisp我了解,ruby從lisp里借鑒的 —— 排開其他許多語言都已經(jīng)借鑒過的 —— 是expression only。 這是值得肯定的。
但僅僅為了調(diào)用省略括號就拋棄1st class function…… 我覺得代價太大……
C我了解,我沒看出ruby從C里借鑒了什么…… 難道只是因為C、Lisp招牌響亮就要說自己是它們的后繼?


>> 他山之石可以攻玉,在Ruby社區(qū)這樣一個滿懷包容性、以及上進(jìn)心的生態(tài)環(huán)境中,作為其中的一員,我很欣慰。
no, Ruby是排外的, 前面已經(jīng)說了它排斥FP與編譯。


>> 還是那句老話,切莫跑題,先拋棄成見,就這本書的內(nèi)容進(jìn)行展開討論吧:)

我有成見嗎? 我指出的那些問題難道不是事實? 只是我對ruby的誤解?
關(guān)于跑題…… 這帖人氣高啊…… 要另外去開一帖: ruby不是函數(shù)式語言, 就沒人來了啊……  我就學(xué)不到東西了啊…… 碼這么多字還干嘛呢……

論壇徽章:
0
40 [報告]
發(fā)表于 2012-02-28 21:03 |只看該作者
回復(fù) 39# OwnWaterloo


    Lisp是很強大,但是復(fù)雜度太高了。語言的目的是交流,不運用就沒有價值。所以Lisp與其說是語言不如說是理論。就像大部分科學(xué)家潛在的內(nèi)心都對數(shù)學(xué)家有所嫉妒,有所自卑。諸多語言都羨慕Lsip的強大,并且從中吸取養(yǎng)分。所以兩者沒有什么可比性。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP