Clojure,學(xué)習(xí)入門(1)——,學(xué)習(xí)資料x
發(fā)布時(shí)間:2020-08-29 來源: 黨課講稿 點(diǎn)擊:
Clojure 學(xué)習(xí)入門(1 )—— 學(xué)習(xí)資料
Clojure(發(fā)音類似"closure",["kl????(r)])是一套現(xiàn)代的 Lisp 語言的動(dòng)態(tài)語言版,它是一個(gè)函數(shù)式多用途的語言,其語法和其他的 Lisp 一樣,都是建立在 S-expression 之上,即”全是括號(hào),前綴表達(dá)式”的語言。
Clojure 可以執(zhí)行于 Java 虛擬機(jī)(JVM)、通用語言運(yùn)行時(shí)(CLR),以及JavaScript 引擎之上。與其他 Lisp 一樣,Clojure 認(rèn)為代碼即數(shù)據(jù),同時(shí)有復(fù)雜的宏系統(tǒng)。
Clojure 的理念和特性 Clojure 是什么,為什么有人要學(xué)這門語言? 總的來說,那些認(rèn)為 Clojure 會(huì)在現(xiàn)有的大多數(shù)編程語言中取得成功的人至少基于這樣一個(gè)理由: 它是一門新的,支持并發(fā)的語言。而那些對 lisp 語言缺乏了解的人卻往往會(huì)認(rèn)為:這是一門相當(dāng)奇怪的,充斥著令人困惑的圓括號(hào)和方括號(hào)的語言. 但是,不爭的事實(shí)是 Clojure 在市場上贏得比其他新誕生的編程語言更多的追捧和表現(xiàn),更強(qiáng)的發(fā)展勢頭。它第一個(gè)對外的發(fā)行版是在 2007 年秋季的時(shí)候發(fā)布的,在 2009 年 5 月發(fā)行了第一個(gè)穩(wěn)定版,到這個(gè)時(shí)候,它已經(jīng)培育了一個(gè)活躍的、充滿熱情的社區(qū),一個(gè)欣欣向榮的開發(fā)工具和類庫的生態(tài)系統(tǒng),它們被用在迅速增長的一系列專業(yè)的應(yīng)用程序中。
下一代的語言 每一年,在世界范圍內(nèi)的眾多機(jī)構(gòu)中的都有很多有才華的計(jì)算機(jī)科學(xué)家通過發(fā)表成千上萬的論文來闡發(fā)它們新的和有趣的想法。這些新的概念在經(jīng)受了自然選擇和沉淀后,其中那些優(yōu)秀和有用的部分會(huì)被準(zhǔn)許進(jìn)入實(shí)際的應(yīng)用環(huán)境中。
Clojure 包括了眾多尚未在其他(任何)編程語言的實(shí)現(xiàn)中出現(xiàn)的最新的想法和偉大的理念. 這其中最引人注目的就是涉及并發(fā)程序的部分:軟件內(nèi)存交互和基于代理的進(jìn)程調(diào)度 (Software Transactional Memory and agent-based processing ) 被 "燒錄進(jìn)" (嵌入)到 Clojure 編程語言的底層. 除此之外(例如持續(xù)不可更改 persistent immutability) 還擁有很多精妙的設(shè)計(jì)理念,這些設(shè)計(jì)理念是現(xiàn)代學(xué)術(shù)研究的成果,也是數(shù)十載實(shí)踐的經(jīng)驗(yàn)。
拋開 Clojure 的學(xué)術(shù)背景,Clojure 是主要設(shè)計(jì)原則是堅(jiān)持: 有用性(useful 有益處的) 高于可用性. 它的高級(jí)屬性是被精心選擇的,目的是向程序員提供健壯的、干凈的代碼,以便程序員容易理解和高效編程. Clojure 雖然有很強(qiáng)的學(xué)術(shù)背景支持,但是絕不是一門只在象牙塔中的語言,每天都有眾多開發(fā)者在各自的開發(fā)領(lǐng)域內(nèi)使用它。
動(dòng)態(tài)而強(qiáng)有力 ( 沒錯(cuò), 它是 lisp!) 對下面語句的意思的理解會(huì)因?yàn)樽x者編程經(jīng)驗(yàn)的不同而有很大差異,它可能會(huì)讓你非常興奮,也可能讓你產(chǎn)生一些輕微的不適. Clojure 是完全的,真正意義上的神圣的 lisp 語言的一個(gè)方言。
lisp 語言因?yàn)槠錈o以倫比強(qiáng)大能力和幾乎無窮的表達(dá)力而獲得了盛譽(yù),Clojure 自然也不例外。它的功能和元編程的能力是建立在這樣的基礎(chǔ)之上的:異常馴服的 C語言的"石頭" 或 具有延展性的 java 語言的"木頭" . 你可以用幾百行甚至幾十行Clojure 代碼取替代幾千行靜態(tài)語言的代碼,伴隨著這而來的是 bug 數(shù)量的減少和開發(fā)時(shí)間的縮短。
樣板代碼(Boilerplate code )被完全刪去. 域指定語言(Domain Specific Languages ) 不僅簡單,而且更一般化--lisp 程序往往是按照 "自下而上" 的開發(fā)方式寫成的。展開式(演進(jìn)式)的 結(jié)構(gòu)和語法更適合特定的問題領(lǐng)域。你在程序運(yùn)行的時(shí)候取修改程序,而不需要重新編譯或重啟程序。
但是,歷史上也有對 lisp 進(jìn)行詆毀的人,或許稱為抱怨更為合適. lisp 發(fā)展過程中,沒有完整的規(guī)范, 各種不兼容的實(shí)現(xiàn),陳舊落伍的限制.cruft accumulate 在其存在的四五十年里一直存在. 對于 大多數(shù)人來說,它的語法過于詭異了。
Clojure 修正上面的大多數(shù)這些問題. 它保留了 lisp 的思想和哲學(xué),并同時(shí)清除了過去的很多限制. Clojure 高速、干凈、具有優(yōu)先能力和優(yōu)雅的特征. 但是沒有改變 lisp中 "代碼也是數(shù)據(jù)" 的哲學(xué). Clojure 語言在直覺和觀感上比歷史上的 lisp 更易于閱讀. 在后面開始學(xué)習(xí)的初級(jí)階段,你就發(fā)現(xiàn)雖然 仍有各種括號(hào),但是代碼是難以置信的容易讀和寫。
對于那些熟悉 lisp 語言的人來說,他們很快就會(huì)發(fā)現(xiàn)他們非常適應(yīng) Clojure. 對于那些原先沒有接觸 過 lisp 的人來說,也沒有必要擔(dān)心, Clojure 是簡潔和無痛學(xué)習(xí)。
官方文檔:
官方文檔:
http://clojure.org/documentation
中文資料 中文資料(強(qiáng)烈推薦):
1. clojure 入門教程
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 手冊(低版本)
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 開源工具:
開源工具:
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ù)庫:
http://www.clojureql.org/
datomic 數(shù)據(jù)庫:
http://www.datomic.com/
fleetdb 數(shù)據(jù)庫:
://fleetdb.org/
https://github.com/mmcgrana/fleetdb-client
pdf 處理:
https://github.com/yogthos/clj-pdf
csv 處理:
https://github.com/clojure/data.csv
json 庫:
dakrone/cheshire
https://github.com/mmcgrana/clj-json
mail 庫:
clojurewerkz/mailer
https://github.com/MayDaniel/clj-mail
圖形處理庫:
mikera/clisk
ztellman/penumbra/wiki/Applications
https://github.com/quil/quil
音頻處理庫:
https://github.com/overtone/overtone
報(bào)表工具庫:
http://incanter.org/
定時(shí)任務(wù)框架:
http://clojurequartz.info
webservices
http://clojure-liberator.github.com
附:編程語言發(fā)展的編年史 編程語言的歷史早于真正意義的計(jì)算機(jī)的出現(xiàn)。19 世紀(jì)就有“可編程的”織布機(jī)和鋼琴彈奏裝置出現(xiàn),它們都是領(lǐng)域特定語言(DSL)的樣例。
據(jù)統(tǒng)計(jì)已有 256 種編程語言,這么多的語言中只有一些是常用的或?qū)嵱玫摹?/p>
1 Regional Assembly Language 2 Autocode 4 IPL (LISP 語言的祖先) 5 LOW-MATIC (COBOL 語言的祖先) FORTRAN (第一個(gè)編譯型語言) 7 COMTRAN (COBOL 語言的祖先) LISP 8 ALGOL 58 FACT (COBOL 語言的祖先) COBOL 59 RPG APL imula 2 SNOBOL • 1963 – CPL (C 語言的祖先)
BASIC 4 PL/I 6 JOSS 7 BCPL (C 語言的祖先) 8 Logo 69 B (C 語言的祖先) Pascal 0 Forth C Smalltalk 2 Prolog 3 ML 5 cheme 78 SQL 0 C++ (既有類的 C 語言,更名于 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 種編程語言,每一種語言的出現(xiàn)都帶有某些新特征。編程語言不斷的在革新,很快就會(huì)有超出這個(gè)清單的新編程語言出現(xiàn)。更多參考 程序員必須知道的編程語言編年史
相關(guān)熱詞搜索:學(xué)習(xí)資料 入門 學(xué)習(xí)
熱點(diǎn)文章閱讀