国产第页,国产精品视频一区二区三区,国产精品网站夜色,久久艹影院,精品国产第一页,欧美影视一区二区三区,国产在线欧美日韩精品一区二区

Clojure,學(xué)習(xí)入門(mén)(1)——,學(xué)習(xí)資料x(chóng)

發(fā)布時(shí)間:2020-08-29 來(lái)源: 黨課講稿 點(diǎn)擊:

 Clojure 學(xué)習(xí)入門(mén)(1 )—— 學(xué)習(xí)資料

 Clojure(發(fā)音類似"closure",["kl????(r)])是一套現(xiàn)代的 Lisp 語(yǔ)言的動(dòng)態(tài)語(yǔ)言版,它是一個(gè)函數(shù)式多用途的語(yǔ)言,其語(yǔ)法和其他的 Lisp 一樣,都是建立在 S-expression 之上,即”全是括號(hào),前綴表達(dá)式”的語(yǔ)言。

 Clojure 可以執(zhí)行于 Java 虛擬機(jī)(JVM)、通用語(yǔ)言運(yùn)行時(shí)(CLR),以及JavaScript 引擎之上。與其他 Lisp 一樣,Clojure 認(rèn)為代碼即數(shù)據(jù),同時(shí)有復(fù)雜的宏系統(tǒng)。

  Clojure 的理念和特性 Clojure 是什么,為什么有人要學(xué)這門(mén)語(yǔ)言? 總的來(lái)說(shuō),那些認(rèn)為 Clojure 會(huì)在現(xiàn)有的大多數(shù)編程語(yǔ)言中取得成功的人至少基于這樣一個(gè)理由: 它是一門(mén)新的,支持并發(fā)的語(yǔ)言。而那些對(duì) lisp 語(yǔ)言缺乏了解的人卻往往會(huì)認(rèn)為:這是一門(mén)相當(dāng)奇怪的,充斥著令人困惑的圓括號(hào)和方括號(hào)的語(yǔ)言. 但是,不爭(zhēng)的事實(shí)是 Clojure 在市場(chǎng)上贏得比其他新誕生的編程語(yǔ)言更多的追捧和表現(xiàn),更強(qiáng)的發(fā)展勢(shì)頭。它第一個(gè)對(duì)外的發(fā)行版是在 2007 年秋季的時(shí)候發(fā)布的,在 2009 年 5 月發(fā)行了第一個(gè)穩(wěn)定版,到這個(gè)時(shí)候,它已經(jīng)培育了一個(gè)活躍的、充滿熱情的社區(qū),一個(gè)欣欣向榮的開(kāi)發(fā)工具和類庫(kù)的生態(tài)系統(tǒng),它們被用在迅速增長(zhǎng)的一系列專業(yè)的應(yīng)用程序中。

  下一代的語(yǔ)言 每一年,在世界范圍內(nèi)的眾多機(jī)構(gòu)中的都有很多有才華的計(jì)算機(jī)科學(xué)家通過(guò)發(fā)表成千上萬(wàn)的論文來(lái)闡發(fā)它們新的和有趣的想法。這些新的概念在經(jīng)受了自然選擇和沉淀后,其中那些優(yōu)秀和有用的部分會(huì)被準(zhǔn)許進(jìn)入實(shí)際的應(yīng)用環(huán)境中。

 Clojure 包括了眾多尚未在其他(任何)編程語(yǔ)言的實(shí)現(xiàn)中出現(xiàn)的最新的想法和偉大的理念. 這其中最引人注目的就是涉及并發(fā)程序的部分:軟件內(nèi)存交互和基于代理的進(jìn)程調(diào)度 (Software Transactional Memory and agent-based processing ) 被 "燒錄進(jìn)" (嵌入)到 Clojure 編程語(yǔ)言的底層. 除此之外(例如持續(xù)不可更改 persistent immutability) 還擁有很多精妙的設(shè)計(jì)理念,這些設(shè)計(jì)理念是現(xiàn)代學(xué)術(shù)研究的成果,也是數(shù)十載實(shí)踐的經(jīng)驗(yàn)。

 拋開(kāi) Clojure 的學(xué)術(shù)背景,Clojure 是主要設(shè)計(jì)原則是堅(jiān)持: 有用性(useful 有益處的) 高于可用性. 它的高級(jí)屬性是被精心選擇的,目的是向程序員提供健壯的、干凈的代碼,以便程序員容易理解和高效編程. Clojure 雖然有很強(qiáng)的學(xué)術(shù)背景支持,但是絕不是一門(mén)只在象牙塔中的語(yǔ)言,每天都有眾多開(kāi)發(fā)者在各自的開(kāi)發(fā)領(lǐng)域內(nèi)使用它。

  動(dòng)態(tài)而強(qiáng)有力 ( 沒(méi)錯(cuò), 它是 lisp!) 對(duì)下面語(yǔ)句的意思的理解會(huì)因?yàn)樽x者編程經(jīng)驗(yàn)的不同而有很大差異,它可能會(huì)讓你非常興奮,也可能讓你產(chǎn)生一些輕微的不適. Clojure 是完全的,真正意義上的神圣的 lisp 語(yǔ)言的一個(gè)方言。

 lisp 語(yǔ)言因?yàn)槠錈o(wú)以倫比強(qiáng)大能力和幾乎無(wú)窮的表達(dá)力而獲得了盛譽(yù),Clojure 自然也不例外。它的功能和元編程的能力是建立在這樣的基礎(chǔ)之上的:異常馴服的 C語(yǔ)言的"石頭" 或 具有延展性的 java 語(yǔ)言的"木頭" . 你可以用幾百行甚至幾十行Clojure 代碼取替代幾千行靜態(tài)語(yǔ)言的代碼,伴隨著這而來(lái)的是 bug 數(shù)量的減少和開(kāi)發(fā)時(shí)間的縮短。

 樣板代碼(Boilerplate code )被完全刪去. 域指定語(yǔ)言(Domain Specific Languages ) 不僅簡(jiǎn)單,而且更一般化--lisp 程序往往是按照 "自下而上" 的開(kāi)發(fā)方式寫(xiě)成的。展開(kāi)式(演進(jìn)式)的 結(jié)構(gòu)和語(yǔ)法更適合特定的問(wèn)題領(lǐng)域。你在程序運(yùn)行的時(shí)候取修改程序,而不需要重新編譯或重啟程序。

 但是,歷史上也有對(duì) lisp 進(jìn)行詆毀的人,或許稱為抱怨更為合適. lisp 發(fā)展過(guò)程中,沒(méi)有完整的規(guī)范, 各種不兼容的實(shí)現(xiàn),陳舊落伍的限制.cruft accumulate 在其存在的四五十年里一直存在. 對(duì)于 大多數(shù)人來(lái)說(shuō),它的語(yǔ)法過(guò)于詭異了。

 Clojure 修正上面的大多數(shù)這些問(wèn)題. 它保留了 lisp 的思想和哲學(xué),并同時(shí)清除了過(guò)去的很多限制. Clojure 高速、干凈、具有優(yōu)先能力和優(yōu)雅的特征. 但是沒(méi)有改變 lisp中 "代碼也是數(shù)據(jù)" 的哲學(xué). Clojure 語(yǔ)言在直覺(jué)和觀感上比歷史上的 lisp 更易于閱讀. 在后面開(kāi)始學(xué)習(xí)的初級(jí)階段,你就發(fā)現(xiàn)雖然 仍有各種括號(hào),但是代碼是難以置信的容易讀和寫(xiě)。

 對(duì)于那些熟悉 lisp 語(yǔ)言的人來(lái)說(shuō),他們很快就會(huì)發(fā)現(xiàn)他們非常適應(yīng) Clojure. 對(duì)于那些原先沒(méi)有接觸 過(guò) lisp 的人來(lái)說(shuō),也沒(méi)有必要擔(dān)心, Clojure 是簡(jiǎn)潔和無(wú)痛學(xué)習(xí)。

  官方文檔:

 官方文檔:

 http://clojure.org/documentation

  中文資料 中文資料(強(qiáng)烈推薦):

 1. clojure 入門(mén)教程

 http://xumingming.sinaapp.com/302/clojure-functional-programming-for-the-jvm-clojure-tutorial/

 2. clojure 文檔翻譯

 http://code.google.com/p/clojure-doc-en2ch/w/list

 3. clojure 手冊(cè)(低版本)

 http://qiujj.com/static/clojure-handbook.html

 4. clojure 中文社區(qū):

 http://blog.clojure.cn/

 5. Lisp 中文社區(qū):

 http://www.lispchina.com/

 英文資料 英文資料(強(qiáng)烈推薦):

 http://clojure-doc.org/articles/content.html

  clojure 開(kāi)源工具:

 開(kāi)源工具:

 clojure 工具箱匯總:

 http://www.clojure-toolbox.com/

 ring server:

 https://github.com/ring-clojure/ring/wiki

 compojure:

 https://github.com/weavejester/compojure/wiki

 noir web 框架:

 http://www.webnoir.org

 sandbar session 框架:

 https://github.com/brentonashworth/sandbar/wiki

 clojureQL 連接數(shù)據(jù)庫(kù):

 http://www.clojureql.org/

 datomic 數(shù)據(jù)庫(kù):

 http://www.datomic.com/

 fleetdb 數(shù)據(jù)庫(kù):

 ://fleetdb.org/

 https://github.com/mmcgrana/fleetdb-client

 pdf 處理:

 https://github.com/yogthos/clj-pdf

 csv 處理:

 https://github.com/clojure/data.csv

 json 庫(kù):

 dakrone/cheshire

 https://github.com/mmcgrana/clj-json

 mail 庫(kù):

 clojurewerkz/mailer

 https://github.com/MayDaniel/clj-mail

 圖形處理庫(kù):

 mikera/clisk

 ztellman/penumbra/wiki/Applications

 https://github.com/quil/quil

 音頻處理庫(kù):

 https://github.com/overtone/overtone

 報(bào)表工具庫(kù):

 http://incanter.org/

 定時(shí)任務(wù)框架:

 http://clojurequartz.info

 webservices

 http://clojure-liberator.github.com

 附:編程語(yǔ)言發(fā)展的編年史 編程語(yǔ)言的歷史早于真正意義的計(jì)算機(jī)的出現(xiàn)。19 世紀(jì)就有“可編程的”織布機(jī)和鋼琴?gòu)椬嘌b置出現(xiàn),它們都是領(lǐng)域特定語(yǔ)言(DSL)的樣例。

 據(jù)統(tǒng)計(jì)已有 256 種編程語(yǔ)言,這么多的語(yǔ)言中只有一些是常用的或?qū)嵱玫摹?/p>

 1 Regional Assembly Language 2 Autocode 4 IPL (LISP 語(yǔ)言的祖先) 5 LOW-MATIC (COBOL 語(yǔ)言的祖先) FORTRAN (第一個(gè)編譯型語(yǔ)言) 7 COMTRAN (COBOL 語(yǔ)言的祖先) LISP 8 ALGOL 58 FACT (COBOL 語(yǔ)言的祖先) COBOL 59 RPG APL imula 2 SNOBOL • 1963 – CPL (C 語(yǔ)言的祖先)

 BASIC 4 PL/I 6 JOSS 7 BCPL (C 語(yǔ)言的祖先) 8 Logo 69 B (C 語(yǔ)言的祖先) Pascal 0 Forth C Smalltalk 2 Prolog 3 ML 5 cheme 78 SQL 0 C++ (既有類的 C 語(yǔ)言,更名于 1983 年 7 月) 3 Ada Common Lisp 4 MATLAB 5 Eiffel Objective-C 6 Erlang 7 Perl Tcl 8 Mathematica 89 FL 0 Haskell Python 1 Visual Basic Ruby 3 Lua 4 CLOS (ANSI Common Lisp 的一部分) Java Delphi (Object Pascal) JavaScript 5 PHP 6 WebDNA 7 Rebol 1999 D 0 ActionScript • 2001 – C#

 1 Visual Basic .NET 2 F# Groovy 3 Scala 7 Clojure 09 Go • 2011 – Dart 從 1951 年至今,人類一共發(fā)明了 256 種編程語(yǔ)言,每一種語(yǔ)言的出現(xiàn)都帶有某些新特征。編程語(yǔ)言不斷的在革新,很快就會(huì)有超出這個(gè)清單的新編程語(yǔ)言出現(xiàn)。更多參考 程序員必須知道的編程語(yǔ)言編年史

相關(guān)熱詞搜索:學(xué)習(xí)資料 入門(mén) 學(xué)習(xí)

版權(quán)所有 蒲公英文摘 www.huhawan.com