中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Java程序員必備秘籍 Scala與Clojure函數(shù)式編程語言

編程世界就好比江湖,各種技術(shù)與思想有如各種內(nèi)外家功夫在歷史的舞臺上紛呈登場,各領(lǐng)風(fēng)騷。如今,自C、C++傳承而來的以Java為代表的命令式語言一派可謂如日中天、門徒萬千。多年來,這幾門語言一直占據(jù)著TIOBE編程語言排行榜前幾名,而很多“沒落”的語言卻在最近這幾十年里逐漸淡出了人們的視線。在命令式語言中,隨著面向?qū)ο缶幊痰牧餍卸d起的對設(shè)計模式的探討始終是OO程序員群體中的熱門話題,設(shè)計模式的相關(guān)問題也一度成為面試官遴選候選者的硬性指標(biāo)。

然而,江湖上逐漸出現(xiàn)了一種說法,“有些設(shè)計模式事實上是用來彌補語言本身不足的”,也就是說有人認(rèn)為:大部分設(shè)計模式或許并沒有存在的必要,只要將設(shè)計模式融入語言設(shè)計之中,使語言擁有足夠的表現(xiàn)力,那么很多模式將不再需要或可以得到極大的簡化?;蛟S你對這一說法還將信將疑,不置可否。但一個“沒落貴族”已經(jīng)再現(xiàn)在你的面前,它就是函數(shù)式編程語言。

函數(shù)式編程語言曾一度在江湖上銷聲匿跡,或許大部分人只在象牙塔中領(lǐng)略過它們的風(fēng)采。它的“沒落”并不是沒有原因的,比如早期人們對它在性能表現(xiàn)上的質(zhì)疑等。然而,憑借著大數(shù)據(jù)時代的東風(fēng),擁有著函數(shù)式血統(tǒng)的繼承者們再次站上了浪潮之巔,并在江湖上留下了它們的足跡。

Google的論文MapReduce: Simplified Data Processing on Large Clusters表明,MapReduce編程模型的抽象是受到了Lisp等函數(shù)式語言中的map和reduce原語的啟發(fā)而設(shè)計出來的。

分布式實時計算系統(tǒng)Storm的核心代碼是采用Clojure編寫的,而當(dāng)《程序員》雜志問及Storm創(chuàng)始人Nathan Marz為何會選擇Clojure時,Nathan回答道:“Clojure是我迄今用過的最好的語言。它允許我輕松地使用不可變性及函數(shù)式編程等技術(shù),令我的效率大幅提高?;贚isp的動態(tài)特性,我總能將Clojure塑造成符合最佳抽象的狀態(tài)。假如沒有Clojure,Storm倒不會有什么不同,但實現(xiàn)過程將痛苦得多”。

新一代分布式計算系統(tǒng)Spark不僅在實現(xiàn)中選擇了Scala,其提供的首選編程語言也是Scala。而從RDD所提供的API來看,你不難發(fā)現(xiàn)這便是典型的函數(shù)式編程,其充分利用了函數(shù)式編程的簡潔性和不可變性。

……

處于大數(shù)據(jù)時代的你,估計對以上的事跡已有所耳聞。憑借著當(dāng)今大規(guī)模的分布式計算能力和無限的水平擴展能力,原本函數(shù)式編程在單機性能上的不足已不再是人們最為詬病的問題。尤其是在當(dāng)代高性能JVM的平臺之上,像Scala和Clojure等函數(shù)式語言的性能已不可同日而語。而我們更為看重的是其簡潔的聲明性編程風(fēng)格與豐富的語言表現(xiàn)力,而其對不可變性的推崇和“無副作用”函數(shù)也讓程序的編寫變得更加簡單,從而進一步解放了程序員的生產(chǎn)力,讓“碼農(nóng)”們可以節(jié)省下更多的時間去喝喝咖啡,做些更有創(chuàng)造力的事情。這也是為什么技術(shù)社區(qū)對Java 8加入Lambda表達(dá)式支持的呼聲如此之高的主要原因。

回到設(shè)計模式的話題,GoF的設(shè)計模式是基于面向?qū)ο缶幊潭偨Y(jié)提出的,它的確指引了一代OO程序員的成長。然而,一旦你了解了更多的編程范式之后,你就會發(fā)現(xiàn)原來OO的模式在很多其他范式的語言中并不再是必需的,尤其是在函數(shù)式編程語言之中,它的關(guān)注點是擁有頭等支持的函數(shù),而不再是對象。而其聲明性的編程風(fēng)格和豐富的語言表現(xiàn)力讓你可以不再樣本化地照搬照抄設(shè)計模式,一些內(nèi)置的指令和語法糖讓你可以像編寫詩歌一樣,以簡潔、精煉、優(yōu)雅的方式來編寫代碼。相比于命令式風(fēng)格的語言,函數(shù)式語言解決相同問題的代碼量可以減少到前者的一半,有時甚至是數(shù)量級的精簡。所以,在函數(shù)式語言中,我們可以采用一些更為簡潔的方式來替代原來在面向?qū)ο缶幊讨械脑O(shè)計模式。而在純函數(shù)式編程的實踐中,先行者們又沉淀出了一些專注于函數(shù)式編程的模式,它們是函數(shù)式編程中的最佳實踐。

如果你是一名Java程序員,那么《Scala與Clojure函數(shù)式編程模式》就是為你而準(zhǔn)備的。這是一部專注于采用Scala和Clojure來講解函數(shù)式編程模式的武功秘籍。Scala和Clojure都是基于JVM平臺的函數(shù)式語言。由Scala設(shè)計者Martin Odersky所開設(shè)的名為Functional Programming Principles in Scala的課程成為了Coursera上通過率最高的編程課程之一。自2012年起,已經(jīng)有至少5萬人參加了該課程的學(xué)習(xí),而其中有1萬人通過了課程認(rèn)證,其受歡迎度可見一斑。而相比擁有一部分面向?qū)ο笱y(tǒng)的Scala,Clojure的函數(shù)式基因則顯得更純粹一些,它出自名門Lisp一脈。Paul Graham曾在《黑客與畫家》中對Lisp的生產(chǎn)力推崇備至,其江湖地位也無需置疑。作者Michael Bevilacqua-Linn采用了這兩種JVM語言來對比地講解函數(shù)式編程模式,其中前半部分結(jié)合了面向?qū)ο蟮哪J剑信e了一些面向?qū)ο竽J皆诤瘮?shù)式編程中的替代方案。而后半部分則重點講述了在函數(shù)式編程世界中所獨具的編程模式。通過閱讀本書,你可以領(lǐng)略到各種函數(shù)式編程思想與技巧,為從原來普通的Java命令式編程順利過渡到函數(shù)式編程打好堅實的基礎(chǔ),從而在JVM上編寫出更加精益的程序。

本文摘自《Scala與Clojure函數(shù)式編程模式:Java虛擬機高效編程》

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
一位“老程序員”的反思:C、Python、Java 不可兼得,專心學(xué)好一門編程語言就行!
9個殺手級 JVM 編程語言
圖靈社區(qū) : 閱讀 : 帶您走進七周七語言的程序世界
想像中理想編程語言的幾個特征 | 程序師
Java 和它的兄弟們
給Java說句公道話
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服