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。
他们都不是来填坑的,都是来挖坑的。