clojure編程
A. 如何直接運行 Clojure 腳本文件
對於大多數的腳本編程語言來說, 提供有現成的分別進入控制台與執行腳本文件的命令. 例如 Scala, python 默認進入控制台(REPL), 接文件路徑為參數則執行腳本文件. 還有分別進入控制台和執行腳本的命令是: irb 與 ruby, groovsh 與 groovy, php -a 與 php, perl -de1 和 perl. 可以 Clojure 本身就沒有 clojure 這樣的命令. 當我們試圖在 Mac 下用 brew install clojure 安裝時, 得到的提示是沒有 clojure, 應該用 brew install leiningen 去安裝 leiningen, 它是一個類似於 Scala sbt 的工具.
所以啟動 Clojure REPL 的命令就是 lein repl , 其實還有一個辦法來啟動 Clojure 的控制台, 因為 Clojure 也是構築於 JVM 之上的, 所以也能像啟 Groovy/Scala 一樣通過 java 指令載入 jar 文件來啟動. 去官網 http://clojure.org/ 下載 Clojure 安裝包(例如: ), 解壓, 假定它的 jar 文件是 ~/Developers/clojure-1.8.0/clojure-1.8.0.jar , 那麼也可以用命令 java -jar ~/Developers/clojure-1.8.0/clojure-1.8.0.jar 進到 Clojure 控制台.
進到 Clojure 的提示符 user=> 下就可以測試 Clojure 代碼了, 那麼如何載入一個寫在 clj 文件里的代碼呢? 我們可以在 Clojure 控制台下用方法 load-file . 假定 ~/hello.clj 文件的內容是
(+ 1 2)
在 Clojure 控制台下
user=> (load-file "~/hello.clj")3
這只是相當於我們在控制台輸入 (+ 1 2) , 也看到了 3, 其實我們在 ~/hello.clj 中並沒有列印輸出結果. 所以如果真正是執行 ~/hello.clj 應該是什麼也看不到了, 我們需要准確的執行 clojure 腳本文件的方法.
在此我們也順道溫習一下 Clojure 與 Java 的簡單互操作, 創建了文件 ~/interop.clj , 內容如下:
(+ 1 2 3)
(println (. Math PI))
(println (. Math abs -3))
(println (. "foo" toUpperCase))
(println Math/PI)
(println (Math/abs -5))
(println (.toUpperCase "bar"))
(def n1 (new Integer "42"))
(println n1)
(let [n2 (Integer. "53")]
(println n2))
針對啟動 Clojure 控制台的不同我們同樣有兩種方式執行 Clojure 腳本文件
一: 通過 clojure-x.x.x.jar 來執行 Clojure 腳本
➜ ~ java -jar ~/Developers/clojure-1.8.0/clojure-1.8.0.jar ~/interop.clj
3.141592653589793
3
FOO
3.141592653589793
5
BAR
42
53
上面的執行效果才是正確的, 其中 (+ 1 2 3) 沒有 print 是不會有輸出的.
把它編製成一個 bash 腳本 clojure 就是
#!/bin/bash
java -jar ~/Developers/clojure-1.8.0/clojure-1.8.0.jar $@
$@ 的意思是傳什麼給這個 clojure 腳本, 它就原原本本的送到 clojure-1.8.0.jar 的主程序. 然後把 clojure 用 chmod +x clojure 改成可執行. 再來看下
➜ ~ vi clojure
➜ ~ ./clojure
Clojure 1.8.0
user=> ^D
➜ ~ ./clojure ~/interop.clj
3.141592653589793
3
FOO
3.141592653589793
5
BAR
42
53
沒參數時進入控制台, 有參數時當成文件載入執行
二: lein 通過 exec 插件執行 clojure 腳本
lein 的插件安裝可以參考 lein-exec . 全局安裝的話只要在 ~/.lein/profiles.clj 中添加一行
{:user {:plugins [[lein-exec "0.3.6"]]}}
再次啟動 lein 就會自動下載相應的插件依賴, 並加入了 exec 任務, 用 lein help exec 查看這個插件的具體命令使用方法. 簡單的用來載入外部 clj 文件的指令是
➜ ~ lein exec ~/interop.clj
3.141592653589793
3
FOO
3.141592653589793
5
BAR
42
53
執行結果是一致的.
不僅如此, Clojure 也能用作系統腳本語言, 像其他腳本語言一樣. 下載 https://raw.github.com/kumarshantanu/lein-exec/master/lein-exec 放在 PATH 下, 並改成可執行.
之後只要在 clj 腳本第一行寫上
#!/usr/bin/env lein-exec
或
#!/bin/bash lein-exec
就可以用 Clojure 快樂的寫系統腳本了.
另外, 如果 clj 文件是放在一個 lein 項目中, 應該是可以通過 lein 任務來執行主函數中的代碼的.
附: 在我目前的 ~/.lein/profiles.clj 文件中已用到了三個插件
{:user {:plugins [[venantius/ultra "0.4.1"]
[lein-iclojure "1.2"]
[lein-exec "0.3.6"] ]}}
分別是 控制台著色, 代碼提示, 和執行插件.
B. Java函數式編程語言是什麼
函數式編程語言的核心是它以處理數據的方式處理代碼。這意味著函數應該是第一等級(First-class)的值,並且能夠被賦值給變數,傳遞給函數等等。
事實上,很多函數式語言比這走得更遠,將計算和演算法看得比它們操作的數據更重要。其中有些語言想分離程序狀態和函數(以一種看起來有點對立的方式,使用面向對象的語言,這通常會將它們聯系得更緊密)。
Clojure編程語言就是一個這樣的例子,盡管它運行於基於類的Java虛擬機,Clojure的本質是函數式語言,並且在高級語言源程序中不直接公布類和對象(盡管提供了與Java良好的互操作性)。
C. 大數據技術領域工具都有哪些
1、Hadop
Hadoop誕生於2005年,是雅虎(Yahoo)為解決網路搜索問題而設計的一個項目。由於它的技術效率,後來被Apache軟體基金會作為開源應用程序引入。Hadoop本身不是一個產品,而是一個軟體產品的生態系統,這些軟體產品結合在一起,實現了全面的功能和靈活的大數據分析。從技術上講,Hadoop包括兩個關鍵服務:使用Hadoop分布式文件系統(HDFS)的可靠數據存儲服務和使用MapRece技術的高性能並行數據處理服務。
2、蜂巢
Hive是建立在Hadoop文件系統之上的數據倉庫架構,用於分析和管理存儲在HDFS中的數據。Facebook的誕生和發展是為了應對管理和機器學習Facebook每天產生的大量新社交網路數據的需求。後來,其他公司開始使用和開發Apache
Hive,如Netflix、Amazon等。
3、風暴
Storm是一個主要由Clojure編程語言編寫的分布式計算框架。這家營銷和情報公司由Nathan
Marz和他在BackType的團隊創立,2011年被Twitter收購。Twitter隨後將該項目開源,並將其推廣到GitHub。Storm最終於2014年9月加入Apache孵化器項目,正式成為Apache的頂級項目之一。
D. 《Clojure編程樂趣》epub下載在線閱讀全文,求百度網盤雲資源
《Clojure編程樂趣》(Michael Fogus/Chris Houser)電子書網盤下載免費在線閱讀:
鏈接:https://pan..com/s/1gBTmWKBch59XTkcAZWp71g
書名:Clojure編程樂趣
豆瓣評分:7.8
作者:Michael Fogus/Chris Houser
出版社:人民郵電出版社
原作名:The Joy of Clojure
譯者:鄭曄
出版年:2013-11-1
頁數:318
內容簡介
Clojure是一門Lisp方言。它通過函數式編程技術,直接支持並發軟體開發,得到眾多開發人員的歡迎。
《Clojure編程樂趣》並非Clojure初學指南,也不是一本Clojure的編程操作手冊,而是通過對Clojure詳盡地探究,教授函數式的程序設計方式,幫助讀者理解和體會Clojure編程的樂趣,進而開發出優美的軟體。
全書分為5個部分共13章。第1部分是基礎,包括第1章到第3章,從Clojure背後的思想開始,介紹了Clojure的基礎知識,並帶領讀者初步嘗試Clojure編程。第2部分包括第4章和第5章,介紹了Clojure的各種數據類型。第3部分是第6章和第7章,介紹了函數式編程的特性。第4部分包括第8章到第11章,分別介紹了宏、組合數據域代碼、Clojure對Java的調用,以及並發編程等較為高級的話題。第5部分為第12章和第13章,探討了Clojure的性能問題及其帶給我們的思考。
《Clojure編程樂趣》適合有一定基礎的Clojure程序員閱讀,進而掌握函數編程的思考方法和程序設計方法,也可以作為讀者學習函數式編程的參考資料。
作者簡介······
Michael Fogus
Michael Fogus is software developer with experience in distributedsimulation, machine vision, and expert systems construction. He's actively involved in the Clojure and Scala communities.
E. 大數據技術領域工具都有哪些
【導讀】關於大數據的業務應用,通過將數據擴展到解決方案,應該關注數據的「結構」和「維度」。那麼,大數據技術領域工具有哪些呢?大數據工程師都在用它們,今天就跟隨小編一起來了解下吧!
1、Hadop
Hadoop誕生於2005年,是雅虎(Yahoo)為解決網路搜索問題而設計的一個項目。由於它的技術效率,後來被Apache軟體基金會作為開源應用程序引入。Hadoop本身不是一個產品,而是一個軟體產品的生態系統,這些軟體產品結合在一起,實現了全面的功能和靈活的大數據分析。從技術上講,Hadoop包括兩個關鍵服務:使用Hadoop分布式文件系統(HDFS)的可靠數據存儲服務和使用MapRece技術的高性能並行數據處理服務。
2、蜂巢
Hive是建立在Hadoop文件系統之上的數據倉庫架構,用於分析和管理存儲在HDFS中的數據。Facebook的誕生和發展是為了應對管理和機器學習Facebook每天產生的大量新社交網路數據的需求。後來,其他公司開始使用和開發Apache
Hive,如Netflix、Amazon等。
3、風暴
Storm是一個主要由Clojure編程語言編寫的分布式計算框架。這家營銷和情報公司由Nathan
Marz和他在BackType的團隊創立,2011年被Twitter收購。Twitter隨後將該項目開源,並將其推廣到GitHub。Storm最終於2014年9月加入Apache孵化器項目,正式成為Apache的頂級項目之一。
關於大數據技術領域工具都有哪些,小編就和您分享到這里了。如果您對大數據工程有濃厚的興趣,希望這篇文章可以為您提供幫助。如果您還想了解更多關於數據分析師、大數據工程師的技巧及素大數據工程師具備能力等內容,可以點擊本站的其他文章進行學習。
F. 想學編程不知道從哪裡開始
1、先要確定自己學編程是要干什麼?
2、再來找相對應的編程語言。
科普一下
編程語言:C、C++、Java、C#、Prolog、VB、Scala、Clojure、Haskell、Ada、Python、Ruby、Pascal(Delphi)、Fortran、Lisp、matlab、Perl、Erlang、Boo、Tcl、Bash、C
shell、Objective-C、PHP、PL-SQL、Transact-SQL、ASP、JSP、Lua、smalltalk、R、D,golang,Rust
涉及到的工具:sed、awk、grep
我們現在學一門語言,大部分是要用到了才學(基本上是中國的公司用什麼我們學什麼),基於興趣的不多。
解決問題case:已知大量事實,和事實之間的約束,要求挖掘關系。
應用程序case:從小到超大型應用程序,非完全互聯網應用
解決問題case:程序規模不是很大的偏數學問題
特殊應用case:需要大量處理字元串的應用
特殊應用case:需要一個膠水,粘結不同語言寫出來的程序
果斷用prolog族語言。
例如,漢諾塔、地圖著色、數獨問題、八皇後問題等這種考驗智商,並且需要從已知規則中發現模式的問題。擁有一大堆已知案例的應用(例如大部分的人工智慧情況)
除非你是研究者,程序員一般是遇不到這種問題的。當然頂級的程序員也確實得具備解決這些問題的能力。但是他們就算解決也是用c解決的。這屬於叫好不叫座的科研型語言。
這也是大部分軟體公司遇到的情況。一般有幾種沒辦法分出高下的解決方案:C++,Java,C#,VB。當然,這裡面可以有CLR和JVM的不同衍生。例如,理論上,你也可以用scala來代替(不過估計大型公司不會冒這個險)。還是在理論上,你也可以用函數式編程的Clojure和Haskell來做(估計沒人會那麼傻)。還是在理論上,也可以用Ada這種強悍的通用語言,但估計沒人願意接受比C++還復雜的編程語言。理論上(基本只能在理論上),不嫌棄的話smalltalk也行。還是在理論上,python、ruby等配合一定的圖形界面庫也可以勝任(但項目大到一定的程度是,你會欲哭無淚)。
但是,我另起一行。有個語言:D語言。我個人不認為不可以列入首選名單。但是貌似知名度不行啊。。。。企業支持少啊。。。。。確實是門優秀的語言。C++太尾大不掉,需要一種語言,讓C++成為純粹的C++。
最近谷歌強勢的推出了golang,背景是後台程序員C++寫的好的太缺,python寫的後台實在是效率不行。於是一個在這之間的,注重工程管理的,並且是全靜態編譯的golang誕生了,你會發現其擁有C++匹配的效率,也擁有python般豐富的編程庫。其go和channel機制著實讓人著迷,一出來就吸引了大量的後台開發人員,有的公司甚至後台全面轉向go。但是其之前版本的內存回收機制比較爛,所以也有無數坑。現在的golang已經基本解決了這些問題,編譯器也用golang重新實現了。可以說已經產品化了。
與golang競爭搶這個市場的還有rust,這是一個為並行而生,意在取代c++的編程語言。與golang的定位是相同的,但是目的是不同的。rust復雜,很復雜,上手難,但是一旦你掌握,這將是一個很強大的武器。已經有公司放棄golang轉向rust的。但是這個語言的致命缺陷就是復雜,我們已經有一個復雜的C++了,他啥都能幹,還要一個rust做什麼?當然,我不能把rust拍死,畢竟這門語言的牛逼程度時比較逼近C++的。不過我高度懷疑其會較好不叫座。
稍小一點規模的,無法接受面向對象的程序員,有不少用C的。雖然OOP程序員看他們像是不開化的人,但是他們有他們的哲學(我從嵌入式開發過來,相當長時間內也擺脫不了C,總本能的排斥OOP),但是如果讀者是一個nginx或者其他的c底層基礎設施絕對會對oop嗤之以鼻,內核的編程範式已經給c下了一個什麼叫對什麼叫錯的定義了。由於內核作為標桿,大家竟然同步的統一了編程風格。不用商量。nginx給那些歧視c的人上了生動的一課,現在哪一個互聯網公司能離開nginx?
曾經很多人用Pascal(包括擴展的Delphi),曾經很多人用Fortran,但是都明顯在退步。大型通用語言(C++、Java、C#)表明了他們在各種環境的適應能力。lisp系列也在一些問題上展現出古老的魅力。(但這個語言遠沒有《黑客與畫家》的作者給我們描述的那樣神奇,個人認為。不過我的C++風格思想佔了主導,可能沒辦法公正的評價lisp,但是據我的使用lisp經驗,在大部分情況下,我最後還是放棄了它。因為大部分情況下我總能找到用C++(或其他OOP語言)更好的原因)
另外,讀研的一般都用過matlab。這個工具,兩個字:強大!不過僅指科學計算方面。脫離了這個方面,就得考慮合不合適了,畢竟固定的矩陣思維不是啥情況都有效的。我用matlab最多的是神經網路,圖片和信號處理。毫不誇張的說,matlab活脫脫一個photoshop啊。。。(當然,你得會用。。。)不過matlab的神經網路確實不行,做的太差了,小規模的網路可以,3層不用BP的F網,幾十個就掛掉了。有這個需求的用ANN吧。(還是C++,偷笑)
首選利器是Perl,不過如果你習慣了sed、awk、grep,也能很方便的完成相同的功能,但perl是吸收三家所長做的。
其次是C++,別拍我。諸位用過regex嗎?就是boost里的那個,最近被並入C++11啦。有了正則表達式的C++,處理字元,無敵了很多哇。當然,Java程序員別拍我,我知道這種庫一個大型的通用語言都會有。我提C++,一般順帶著不否定Java和C#能以相似的代價完成相同的功能。
首選是python。倆字:精簡(呀,這么說一個強大的語言有點太輕浮了,但比起ruby,確實簡單吶。。。)(另外Boo在.net是可以用來取代python)
G. 編程都有哪些語言
目前熱門的語言有:C、C++、JAVA、VB、VC、FoxPro、Delphi、SQL、PHP、ASP、JSP等等。
專門有機構為編程語言進行排名,如下圖:
H. 大數據技術領域工具有哪些
1、Hadop
Hadoop誕生於2005年,是雅虎(Yahoo)為解決網路搜索問題而設計的一個項目。由於它的技術效率,後來被Apache軟體基金會作為開源應用程序引入。Hadoop本身不是一個產品,而是一個軟體產品的生態系統,這些軟體產品結合在一起,實現了全面的功能和靈活的大數據分析。從技術上講,Hadoop包括兩個關鍵服務:使用Hadoop分布式文件系統(HDFS)的可靠數據存儲服務和使用MapRece技術的高性能並行數據處理服務。
2、蜂巢
Hive是建立在Hadoop文件系統之上的數據倉庫架構,用於分析和管理存儲在HDFS中的數據。Facebook的誕生和發展是為了應對管理和機器學習Facebook每天產生的大量新社交網路數據的需求。後來,其他公司開始使用和開發Apache Hive,如Netflix、Amazon等。
3、風暴
Storm是一個主要由Clojure編程語言編寫的分布式計算框架。這家營銷和情報公司由Nathan Marz和他在BackType的團隊創立,2011年被Twitter收購。Twitter隨後將該項目開源,並將其推廣到GitHub。Storm最終於2014年9月加入Apache孵化器項目,正式成為Apache的頂級項目之一。
I. 《Clojure程序設計》pdf下載在線閱讀全文,求百度網盤雲資源
《Clojure程序設計》(哈羅威 (Stuart Halloway))電子書網盤下載免費在線閱讀
鏈接: https://pan..com/s/1XWfYSu9qEeeCoxXLKodtkw
書名:Clojure程序設計
作者:哈羅威 (Stuart Halloway)
譯者:溫瑞雲
豆瓣評分:7.6
出版社:人民郵電出版社
出版年份:2013-4-1
頁數:253
內容簡介:
Clojure是一種基於Java虛擬機的動態編程語言。如果你要轉移到函數式編程,或是要應對來自並發的挑戰,那麼,Clojure是你的首選語言。Clojure具備以下優點:
◆ 簡單,是這門優雅語言的核心; ◆ 獨到的並發機制和函數式風格;
◆ Lisp的強大;◆ 充分發揮JVM的全部能力;
◆ 代碼量往往比Java少,且易於維護。
本書是介紹Clojure的經典之作。它完全覆蓋了Clojure 1.3版本提供的新特性,而且為了體現Clojure新生概念的重要意義,作者重新組織和編寫了一些章節。
兩位作者通過本書展示了如何從頭構建一個應用,幫助讀者充分了解Clojure程序的完整開發流程,還幫助讀者運用Clojure思想為問題的各個部分找出解決方案。
通過閱讀本書,你能夠學會運用Clojure的方式進行思考,充分利用這門語言的優勢,快速構建強大的程序。
作者簡介:
Stuart Halloway Clojure/core成員、Relevance公司CTO。
Aaron Bedra Clojure/core成員,在擔任Relevance公司開發者期間,他成為一名技術領袖、演講家和作家。他對Clojure語言及其支持庫貢獻頗多,同時也是Clojure社區中的活躍分子。Aaron牽頭開發了一些商業的Clojure項目。目前他在Groupon工作。
J. Scala,Groovy,Clojure Kotlin 分別解決了Java 的什麼痛點
這三個,都和Java無關,只是碰巧都運行在JVM之上而已。他們都沒有想過要取代Java,都是獨立的語言,差異極大。
groovy是一門腳本語言,個人覺得沒啥用處。
Scala是怪獸,人類歷史上最有野心的編程語言。
clojure,是JVM上的lisp,並發支持的很好。是這個世界上你需要學習的最後一門語言。
同時,他們都不能替代Python或者Ruby或者PHP。
他們都不是來填坑的,都是來挖坑的。