Clojure是一種高級(jí)的,動(dòng)態(tài)的函數(shù)式編程語言。是一種運(yùn)行在Java平臺(tái)上的 Lisp 方言,Lisp是一種以表達(dá)性和功能強(qiáng)大著稱的編程語言,但人們通常認(rèn)為它不太適合應(yīng)用于一般情況,而軟件的出現(xiàn)徹底改變了這一現(xiàn)狀。如今,在任何具備Java虛擬機(jī)的地方,您都可以利用Lisp的強(qiáng)大功能。它是基于LISP編程語言設(shè)計(jì)的,并且具有使其在Java和.Net運(yùn)行時(shí)環(huán)境上運(yùn)行的編譯器。
使用教程
由于軟件代碼在Java虛擬機(jī)上運(yùn)行,因此軟件中的大部分項(xiàng)目結(jié)構(gòu)與在java項(xiàng)目中發(fā)現(xiàn)的類似。 以下是Eclipse中針對(duì)項(xiàng)目的示例項(xiàng)目結(jié)構(gòu)的快照。
1、demo_1 - 這是軟件代碼文件放在其中的包。
2、core.clj - 這是主要的軟件代碼文件,它將包含應(yīng)用程序的代碼。
3、Leiningen文件夾包含像運(yùn)行任何基于軟件的應(yīng)用程序所需的clojure-1.6.0.jar文件。
4、pom.properties文件將包含諸如groupId,artifactId和軟件項(xiàng)目版本等信息。
5、
project.clj文件包含關(guān)于軟件應(yīng)用程序本身的信息
軟件特色
1、它基于LISP編程語言,使其代碼語句比傳統(tǒng)的編程語言更小。
2、它是一種函數(shù)型編程語言。
3、它專注于基本概念的不變性,你不應(yīng)該對(duì)創(chuàng)建的對(duì)象進(jìn)行任何更改。
4、它可以管理程序員的應(yīng)用程序的狀態(tài)。
5、它支持并發(fā)。
6、它包含現(xiàn)有的編程語言。 例如,軟件可以利用整個(gè)Java生態(tài)系統(tǒng)來管理通過JVM運(yùn)行的代碼。
同類對(duì)比
1、軟件不僅是用fp模擬OOP或支持OOP, 而是解決了java OOP 的很多問題,比如接口封閉,defprotocol提供的不僅是接口,而是胖接口,extend-type宏來擴(kuò)展已有類型,僅用幾個(gè)組合子來表達(dá)更好的抽象,社區(qū)里面有個(gè)說法,Clojure做Java比Java還好
2、Scala的OOP也不是無腦的沿用java,Scala比java更OOP, trait, object, 伴生對(duì)象等都是在OOP上比java更遠(yuǎn)的,問題是復(fù)雜性有些沒控制好,任你發(fā)揮,多繼承的同時(shí)可能還要考慮線性初始化,絕對(duì)讓人暈頭轉(zhuǎn)向,與軟件不同的地方就是控制不好代碼的熵,而此款軟件只用那幾個(gè)宏做有限的組合
3、Scala是對(duì)java OOP 的橫向擴(kuò)展,加了更多東西,軟件更像是對(duì)java的縱向擴(kuò)展,增強(qiáng)了很多東西
0條評(píng)論