日韩www._日韩中文字幕91_精品成人18_中国女人久久久_日韩成人一区_美女www一区二区_国产精品片aa在线观看_九一成人免费视频_色综合一本到久久亚洲91_亚洲ww精品

[北京網(wǎng)站制作]學(xué)習(xí)函數(shù)式編程的理由

很奇怪不是,很少有人每天都使用函數(shù)式編程語言。如果你用Scala,Haskell,Erlang,F(xiàn)#或某個Lisp方言來編程,很可能沒有公司會花錢聘你。這個行業(yè)里的絕大部分人都是使用像Python,Ruby,Java或C#等面向?qū)ο蟮木幊陶Z言——它們用起來很順手。不錯,你也許會偶然用到一兩個“函數(shù)式語言特征”,例如“block”,但人們不會去做函數(shù)式編程。 然而,很多年來,我們一直被教導(dǎo)說函數(shù)式編程語言很好很棒。我仍然記得當(dāng)我第一次閱讀ESR的著名的關(guān)于學(xué)習(xí)Lisp語言的論文時的困惑。也許大多數(shù)的人對Paul Graham 的《Beating The Averages》這篇文章更加熟悉: 使用Lisp開發(fā)使我們的開發(fā)周期迭代的如此之快,以至于有時當(dāng)競爭對手在新聞發(fā)布會上推出他們的新功能一兩天后,我們就能復(fù)制出同樣的功能。當(dāng)報道產(chǎn)品發(fā)布的新聞記者打電話給我們時,我們的產(chǎn)品已經(jīng)擁有了同樣的功能特征。 那些皈依函數(shù)式編程的人中,一直常見的考慮是:學(xué)習(xí)這種新的、函數(shù)式的語言“對你有好處”;就像是某些人建議說每天30分鐘的健身房活動會“讓你的身體健康”一樣。但這也同時暗示了這樣做的難度和需要的付出。Lisp語言跟Haskell、Ocaml和Scala語言不同,被認(rèn)為是出了名的難學(xué),可以說是臭名昭著。文雅的人說這是Lisp語言的“深度&廣度”的體現(xiàn)。不文雅的人說這是“意淫”或“玩弄學(xué)術(shù)”或簡單的“沒必要”。我認(rèn)為,它的難度跟你對它熟不熟悉有關(guān),而且,這種難度是一種重要指標(biāo)顯示:學(xué)習(xí)這樣的一種語言會讓你編程更有效率、能力更強(qiáng)。 它給你的初次印象不友善 我7歲時就開始編程,在漫長無聊的郊區(qū)夏季里,在我祖父的計算機(jī)上瞎搞一氣。我學(xué)了BASIC,用它在屏幕上畫一個蹦跳的球。我學(xué)了Pascal,用它寫了一個能通過PC喇叭放音樂的程序。大概10歲時我學(xué)了C語言,但遇到了一堵越不過去的墻,直到我上了高中。那就是:指針。即使不算這些該死的指針,我寫、讀、學(xué)習(xí)、練習(xí)中,同樣遭遇無數(shù)的失敗。我把祖父的硬盤給毀掉了兩次(一次屬意外),最后弄得不少次要自己重裝操作系統(tǒng)。我失敗,一遍遍的失敗。 也許你也有跟我相似的故事,也許是完全不同的一個。但我想,差不多所有學(xué)過編程的人都有過遇到困難的經(jīng)歷。我們在學(xué)了一些基本知識后,必然會遇到一些公認(rèn)的概念上的關(guān)口,比如“指針”。很多計算機(jī)科學(xué)教授會把指針描述為他們課程上的過濾網(wǎng)。如果你想成為一名優(yōu)秀的程序員,你必須要能理解指針。很少人能輕松的掌握它們。大多數(shù)人,包括我,則需要不斷的練習(xí)和參考例子來理解什么是指針、為什么它們很重要。 這種艱難的努力過程不是偶然的,是一種幾乎普遍的現(xiàn)象。指針是一種非常強(qiáng)大和基礎(chǔ)功能的概念。學(xué)會它能讓你成為一名更好的程序員,能讓你的思考更加形象化。即使你使用的語言并不提供指針這樣的特征,但跟指針類似的數(shù)據(jù)結(jié)構(gòu)和概念卻隨處可見。 新奇事物 一旦你學(xué)會了幾種語言后,所有的語言都開始看起來都很相似。知道Python的人學(xué)習(xí)Ruby可能不會遇到太多的問題,知道Java的人學(xué)習(xí)C#會感到很熟悉。不錯,也有意外的地方。Ruby愛好者在學(xué)習(xí)Python時會對它的comprehension感到吃驚,Java用戶會對C#里的委派摸不著頭腦。還是那句話,如果你只瞟一眼,它們都很相似。我可以打保票的說,如果你還不曾有過這樣的認(rèn)識,一旦你學(xué)了一種Lisp語言,你會發(fā)現(xiàn)所有的Lisp變種都很相似。 有人說,大部分人第一次使用Haskell或Ocaml時都完全的不知所措。見鬼了,在Haskell里,連分號都跟別人不一樣。這并不是語法的問題;Haskell和ML語言完全基于一種不同的概念、一種新的語言范式。你需要用不同的方式開發(fā)應(yīng)用,不同的方式組織應(yīng)用,不同的方式擴(kuò)展應(yīng)用。 很多這樣的新概念都具有不可思議的強(qiáng)大力量。Haskell里的Monads是跟指針一樣基礎(chǔ)且強(qiáng)大的概念(你很可能在不知道它叫什么的情況下就已經(jīng)使用過它們了)。所以,跟學(xué)了Java后再學(xué)C#不一樣,有志向?qū)W習(xí)函數(shù)式語言的人需要往回走的更遠(yuǎn),去學(xué)習(xí)更加基礎(chǔ)的概念后才能接下去學(xué)習(xí)。就像是完全再學(xué)習(xí)一次指針。并且,就像是當(dāng)年我們剛開始學(xué)習(xí)編程一樣,一些很大的概念看起來會讓人迷惑茫然,讓人沮喪,直到你去攻克(以及失敗)它們。 吃下你的藥丸,找到你的藥劑師 盡管不好學(xué),但我堅信,學(xué)習(xí)這些函數(shù)式編程語言會在職業(yè)上對你有好處。我相信有些人讀到這點時會眼睛翻起來向天看,很難想象出這些monoids或monad會對他們在使用Java或C#時有用處。對我而言,我已經(jīng)不驚奇于由于這樣的思維而阻止他們學(xué)習(xí)函數(shù)式語言的現(xiàn)象;他們需要學(xué)習(xí)一種跟指針和遞歸一樣基礎(chǔ)的新概念。他們需要有一種只有專業(yè)人員在完成清晰的商業(yè)目標(biāo)時才具有的耐心和斗志。很少人能在過了可塑的年齡后還受得了挫折——一次又一次的挫折——否則我們現(xiàn)在都早成專家了,不是嗎? 還有更復(fù)雜的東西,有大量的語言和算法研究都是用函數(shù)式語言實施的(尤其是Haskell)。你很容易會被這些不熟悉的概念——例如分類學(xué)理論,half-finished abstractions,一些失敗的研究——弄的迷失方向。沒有一個清晰的指導(dǎo)(比如由一個實用主義的作者寫的一本好書),本來已經(jīng)很困難的學(xué)習(xí)任務(wù)變的更加可怕。 這些疊加起來的復(fù)雜因素導(dǎo)致了不出意外的結(jié)果:很多人不情愿在函數(shù)式編程學(xué)習(xí)中投入時間。很容易理解這種不情愿,“我干嘛不把花在學(xué)習(xí)這些東西的時間用在實現(xiàn)什么東西上呢?”但這種思路也表明了你永遠(yuǎn)不愿意在任何新技術(shù)上浪費時間(只用自己熟悉的)。在一個像軟件技術(shù)這樣日新月異的產(chǎn)業(yè)里,我不認(rèn)為這是正確的判斷。 眼見為實 學(xué)習(xí)一種函數(shù)式編程語言最顯而易見的好處是,你能學(xué)會這種類型語言中的函數(shù)式概念。它能幫助你的大腦,讓它具有能非常清晰的思考和處理一些驚人的重大概念的能力。這并不是函數(shù)式編程具有魔法;各種語言和范式的出現(xiàn)都是為了應(yīng)對某一特定類別的問題。函數(shù)式編程的殺手锏正是應(yīng)對了當(dāng)今世界上日益增長的并行性編程和元數(shù)據(jù)編程趨勢。 例如,我們研究一個簡化的、本地版本化的Google著名的MapReduce范例。用函數(shù)式方式描述這種范例是不可思議的清晰簡潔:   mapReducer data partitioner mapper reducer =   let partitions = partitioner data   in reduce reducer (map mapper partitions)   讓這樣的代碼支持并行計算或分布式并行計算是輕而易舉的(對于本地并行計算,很多的功能包都支持“pmap”和“preduce“——只需要利用函數(shù)式語言的一些簡單特性)。像maps,partitions, generators, streams, reductions, folds,已以及function chaining等概念在各種的函數(shù)式編程語言中都大同小異,所以,任何對Lisp,Haskell,OCaml,甚至帶點函數(shù)式語言特征的語言——Python和Ruby熟悉的人,都會很容易的理解這里面的思想精華。 讓我們花點時間考慮一下,如何用一種面向?qū)ο蟮恼Z言,以一種常見的面向?qū)ο蟮哪J絹砬宄拿枋鲞@種架構(gòu)。至少你需要做的事情是定義用來描述mapper和reducer的聲明。如果你有好奇心,請試著用你喜歡的面向?qū)ο笳Z言描述一個最小化的“面向?qū)ο?rdquo;的MapReduce。我發(fā)現(xiàn)那是非常羅嗦的。如果使用Java風(fēng)格的語言,它會像這樣: interface Mapper {   B map(A input);   }     interface Reducer {   Y reduce(X a, X b);   }     abstract class MapReduce {   private Mapper mapper;   private Reducer reducer;     public MapReduce(Mapper map, Reducer reduce) {   // ...   }     public run(SeqenceType data) {   // ...   }   }     即使是沒有加入循環(huán)邏輯
返回新聞列表
日韩www._日韩中文字幕91_精品成人18_中国女人久久久_日韩成人一区_美女www一区二区_国产精品片aa在线观看_九一成人免费视频_色综合一本到久久亚洲91_亚洲ww精品
久久国产欧美| 伊人久久噜噜噜躁狠狠躁| 91一区二区| 激情五月综合| 精品国产一区二区三区av片 | 一区二区电影| 国产欧美自拍| 91亚洲国产| 99av国产精品欲麻豆| 秋霞影院一区二区三区| 日韩一区二区三区色| 中文字幕乱码亚洲无线精品一区| 青草综合视频| 阿v视频在线观看| 免费精品视频| 99成人在线| 久久精品一区二区不卡| 国产精品网址| 日本一不卡视频| 国产精品亚洲综合在线观看| 欧美亚洲视频| 99精品欧美| 国产精品久久久久77777丨| 成人免费图片免费观看| 美国三级日本三级久久99 | 伊人久久国产| 久久久久久一区二区| 麻豆9191精品国产| 国产亚洲在线| 国产毛片一区| 丝袜美腿成人在线| 成人一区二区| 国产精品久久久久无码av| 欧美www视频在线观看| 日韩制服丝袜av| 蜜臀91精品一区二区三区| 色爱综合网欧美| 亚洲伊人av| 成人在线视频观看| 日韩专区中文字幕一区二区| 美女视频网站久久| 青青草97国产精品免费观看无弹窗版| 欧美一级一区| 欧美日韩亚洲一区三区| 国产aa精品| 日韩手机在线| jizz性欧美23| 亚洲婷婷在线| 国产一级久久| 欧美aaaaaaaaaaaa| 99久久伊人| 国内视频精品| 同性恋视频一区| avtt综合网| 亚洲无线一线二线三线区别av| 激情国产一区| 蘑菇福利视频一区播放| 黄视频免费在线看| 久久三级毛片| aa亚洲一区一区三区| 天堂精品久久久久| 99久久婷婷| 视频福利一区| 久久久久免费av| 狠狠入ady亚洲精品经典电影| 久久www成人_看片免费不卡| 碰碰在线视频| 日本不卡一区二区三区高清视频| 亚洲+变态+欧美+另类+精品| 超碰成人免费| 亚洲激情婷婷| 欧美色网一区| 91九色成人| 亚洲国产视频二区| 国产综合网站| 在线最新版中文在线| 美女在线视频一区| 日韩福利电影在线| 一本久久青青| 国产色播av在线| 影音先锋久久久| 北条麻妃一区二区三区在线| 亚洲国产日韩欧美在线| 亚洲第一av| 电影91久久久| 国产综合激情| 日韩欧美一区免费| 亚洲精品影院在线观看| 999久久精品| 久久福利精品| 老司机精品视频一区二区三区| 九九九九九九精品任你躁 | 日韩在线欧美| 一区二区三区中文| 99国产**精品****| 蜜桃久久精品一区二区| 美女精品一区二区| 欧美一级二级三级视频| 蜜桃精品在线观看| 你懂的国产精品永久在线| 里番精品3d一二三区| 久草免费在线视频| 国产麻豆一区二区三区精品视频| 欧美日韩在线二区| 精品三区视频| 亚洲啊v在线免费视频| 视频一区视频二区在线观看| 日本sm残虐另类| 99久久综合| 天天综合网天天| 日韩影片在线观看| 久久av一区二区三区| 欧美三级不卡| 欧美粗暴jizz性欧美20| 国产成人福利夜色影视| 成人爽a毛片| 超碰国产一区| 51vv免费精品视频一区二区| 手机在线电影一区| 国产精品欧美三级在线观看| 99日韩精品| 影音先锋中文字幕一区| 成人免费电影网址| 国产91在线精品| 国产精品jk白丝蜜臀av小说| 鲁鲁在线中文| 日本一区二区三区视频在线看 | 99热精品久久| 久久亚洲精品中文字幕| 黑人久久a级毛片免费观看| 三级成人在线| 精品三级在线观看视频| 福利视频一区| 91成人免费| 国产va免费精品观看精品视频| 伊人成年综合电影网| 欧美国产专区| 国产精品日韩久久久| 国产欧美精品久久| 日韩aaaa| 精品国产99| 日韩精品亚洲专区| 亚洲精品网址| 亚洲都市激情| 经典三级一区二区| 91精品国产调教在线观看| 日韩国产精品91| 亚洲欧美日本视频在线观看| 国产亚洲欧美日韩在线观看一区二区 | 日本欧洲一区二区| 偷窥自拍亚洲色图精选| 另类激情视频| 久久天堂精品| 亚洲欧美在线综合| 国产精品vvv| 欧美一区二区麻豆红桃视频| 青青草国产精品亚洲专区无| 红桃视频国产精品| 久久综合偷偷噜噜噜色| 国产成人精品123区免费视频| 久久久9色精品国产一区二区三区| 青青青爽久久午夜综合久久午夜| 天堂av在线一区| 精品欧美午夜寂寞影院| 亚洲色图欧美| 国产自产自拍视频在线观看| 福利欧美精品在线| 欧美激情性爽国产精品17p| 亚洲天堂导航| 欧美日韩国产欧| 粉嫩一区二区三区四区公司1| 欧美欧美天天天天操| 成人欧美一区二区三区的电影| 激情亚洲网站| av男人一区| 亚洲无中文字幕| 国产麻豆久久| 亚洲在线视频| 天堂网av成人| 亚洲影院天堂中文av色| 亚洲国产二区| 亚洲人体影院| 亚洲欧美激情诱惑| 久久综合国产| 91欧美日韩在线| 国产日产精品一区二区三区四区的观看方式 | 九九久久国产| 色综合天天爱| 天天射天天综合网| 精品国产中文字幕第一页| 亚洲毛片一区| 91亚洲视频| 超级白嫩亚洲国产第一| 欧美日韩日本国产亚洲在线| 丁香婷婷成人| 精品国产三区在线| 最新亚洲精品| 91亚洲精品在看在线观看高清| 久久精品国产久精国产| 日韩福利一区|