p****o 发帖数: 1340 | 1 可以借贴问一个问题吗?我最近也在学clojure,呵呵,主要是因为自己的兴趣,也慢
慢体会到了这个functional programming确实处理很多问题有好处。
HCI说,快糙猛是用clojure的一个好处,但是这个我就没有体会到。我的问题是,如何
才能用clojure快糙猛哩? |
|
h*i 发帖数: 3446 | 2 基本属实。
库少不是问题,Clojure是寄生语言,用宿主的库就行了。有点时间,还可以自己用
Clojure包装一下,放github上,有人用的话,对找工作有帮助。
Clojure现在不算是个时尚语言了,用户大多是有经验的程序员,其实蛮好。 |
|
c**s 发帖数: 43 | 3 来自主题: _FunctionalProgramming版 - Clojure I think you could start with the 2 books on Clojure, Programming Clojure and
Practical Clojure. If you don't have lisp exp, you maybe want to try OnLisp
later, after you are more familiar with the language. |
|
M*********n 发帖数: 4839 | 4 有大牛用过这个吗?前景如何?
今天又收到一个小公司的offer,用clojure做super computing,我说c/c++好啊,
他说clojure才是未来。 |
|
h*i 发帖数: 3446 | 5 No, I am talking about Clojure, the programming language, not closure, the
technique.
Clojure is a Lisp on JVM. It's a functional programming language, not object
-oriented.
an |
|
|
t****a 发帖数: 1212 | 7 个人认为,incanter从设计,功能,和性能上都比R差一截。好处是他很容易和clojure
的其他部分整合,比如弄到hadoop上去运行就很容易。clojure是通用语言,设计上个
人以为比R强。 |
|
p*****2 发帖数: 21240 | 8
scala:
OO, FP, imperative 混杂在一起,上手可能更容易一点,因为大家都熟悉OO和
imperative,但是语言变的复杂化了。
并发:AKKA,actor model 非常适合大型的分布式应用的开发, 如果开发大型应用应选
scala
静态类型,开发速度会比较慢,如果对Scala不是很熟悉,开发效率也未必比Java高
clojure:
基本上纯FP,上手可能更难一点,但是上手之后就是一个爽字了。
并发:STM model, 使得多线程编程更容易,也使得FP里面可以mutate state, thread
safe, 开发一般程序足够了,但是开发大型分布式应用明显不如AKKA
动态类型,适合快速开发
总的来说scala语言复杂,功能强大,clojure语言简单(熟悉以后),属于小快灵的风
格。两者对尾递归的支持都差不多。 |
|
d******3 发帖数: 70 | 9 刚粗略看了下Clojure,觉得在state mutation方面是比Haskell简化了。haskell里主
要还是靠monad来实现。monad是公认的难学,不过monad一旦做好了后,就使得不纯的
function具有了和纯function类似的特质,并发就变得很简单了。我总有点疑虑,
clojure的这种简化是不是还是要花一些代价的,总体来说。另外FP在把很多function
合成一个系统的时候,有type checking还是一个挺大的advantage吧。
mutation |
|
r*******n 发帖数: 3020 | 10 我前年比较闲,把几大functional 语言看了一下,纸上的功夫,没有做过项目.
我喜欢阅读技术书籍,比如经典的joy of clojure, clojure programming,
learn you a haskell for great good, ocaml doc, practical common lisp.
还有paper why functional这些都看了,但谈不上研究,就想知道点为什么。 |
|
d*******r 发帖数: 3299 | 11 二爷你 Node.js 不用啦? 或者是主要用 Clojure,然后需要效能和大并发的地方,用
点 Node.js?
Clojure |
|
z****e 发帖数: 54598 | 12 用clojure,这个比较纯粹的fp
而且符号比scala好
但是你这个跑在jvm上是为了什么?
用你习惯的语言建模出报表,r什么都可以
然后如果需要,你再用clojure什么
另外jvm上的数学,你应该看一看apache common math这个lib |
|
z****e 发帖数: 54598 | 13 如果你真要自己实现,再clojure
clojure并没有优化多少,其实还是很烦的一个过程 |
|
p*****2 发帖数: 21240 | 14
是。我们公司一个java大牛说他帮助debug了一个scala项目的bug,结果花了好多时间
最后发现是akka的bug,因此强烈鄙视用scala的人。我跟他说了一下clojure,他到挺
同意用clojure的。 |
|
c******o 发帖数: 1277 | 15 this comparison happens many times, look at the comment, scala has its
greatness.
I am recently just fascinated by scalaz.
btw, how clojure handle stack overflow for complex recursions?
I am recently studying stackless scala, wondering how clojure handle
recursive that is not tail recursive. |
|
n*****3 发帖数: 1584 | 16 到了 clojure west
clojure 不温不火, 做并行是不错。。
clojurescipt react om 看起来会很火 |
|
m******t 发帖数: 635 | 17 顶一下二爷和clojure.
搭车问个问题,如果用clojure作REST web service一般怎么搞?我现在在考虑用一个
liberator的库不知道是不是目前的标准套路 |
|
e*******o 发帖数: 4654 | 18 Perl 的小trick 多,记住了就好了。
基本还是所见即所得,clojure还是容易晕的。
clojure 再给它10年,用的人的数量也没法和perl比吧。
我是写perl的,我在的公司用Perl,10多年了,即使去年开始重写新版本,也没有换语
言。 |
|
S*A 发帖数: 7142 | 19 看了,臭长。这个人觉得自己很吊。
对于 C 的优点分析以及汇编的接近很赞同。
但是根本没有说明为什么 clojure 是新的 C。
就是可以运行时候自己修改自己代码?
论据非常弱。
Clojure 绝对没有可能接近 C 的地位。 |
|
p*****2 发帖数: 21240 | 20 对手
scala把clojure很多东西都抄了 断了clojure的后路 |
|
p*****2 发帖数: 21240 | 21 我们用clojure比scala多不少 毕竟clojure好学吗
不过你说spark的话干嘛不上scala
另外oo有oo的好处 这个要承认 当然scala fp oo揉在一起更复杂了 所以也得看如何取
舍了 |
|
h*i 发帖数: 3446 | 22 Clojure就是适合做lightweight数据处理,vectors, maps, 等等,很适合做data
munging/feature engineering.
如果你是要作numerical analysis,那还得go native and distributed.
类似R的,Clojure的incanter有dataframe。 |
|
h*i 发帖数: 3446 | 23 看你说的数据分析是指产品中的还是产品前的。
R太慢,一般不用在产品里面跑,而且,产品中很少会跑复杂的算法,R包全的优势不明
显.
我一般是用R建模,训练参数,产品里面用,用的代码用clojure 写,事实上,我们产
品全是用clojure 写的,前后端都是。
★ 发自iPhone App: ChineseWeb 8.7 |
|
h*i 发帖数: 3446 | 24 问题是这样的,Java每个东西都必须取个名字,这个名字指代的复杂数据结构必须装在
程序员脑袋里面: map.put(BattleOrganizer.getBattleParticipant())
http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of
Clojure一切都是直白的,也不用给一切东西取名字,相当于直接在JSON上面操作。{:
battle-orgnaizer {:name "zhaoce" :id 1}}, 这整个东西不需要名字,是什么意思是
直白的。
Clojure里面,如果不写宏的话,特殊符号不多,(), [], {}, #{}, #(%),这是有限的
,而且特殊符号的意思是公共的,学会了就行;而给数据结构可以取的名字是无限的,
名字的意思只有写程序的人自己知道,然后再把每个东西用一个类包起来,放到一个单
独文件里面,这完全就是不想让别人理解了,非用IDE工具不可。 |
|
h*i 发帖数: 3446 | 25 你从来不写JSON config files?
Clojure约定俗成,尽量用:keywords来作key, 现实中,一般见到的clojure map都是这
种样子的:
{:key value
:another-key another-value
:key2 value3}
缩进,空格都有用。
:keywords自己也是函数, 所以可以用来从map中取值:(:a-key a-map)
而不用写 (get a-map :a-key),一个意思,更简略而已。 |
|
n*****3 发帖数: 1584 | 26 nb ah..
BTW why you guys did not use scala instead of clojure ? clojure really
looks bad
since spark gets more and more popular nowdays..
containters, |
|
h*i 发帖数: 3446 | 27 to me:
Scala : Java :: C++ : C
我15年前放弃C++选了Java, 和今天不用Scala用Clojure的道理是一样的。我只对写应
用感兴趣,对语言本身的特性没有丝毫的兴趣,不想在语言本身上化时间,Clojure让
我把时间用在创造我的应用上,而不是学别人创造的语法上。JVM上的东西我都能用,
包括Spark,我为啥要跟自己过不去? |
|
f******x 发帖数: 98 | 28 握手,海螺子。Clojure也是我的favorite。可惜incanter还是一块短板,工作环境里
还是只能用Python/R.
期待Clojure将来会有更好的数值计算库和环境。 |
|
n*****3 发帖数: 1584 | 29 agree, clojure is indeed beautiful in terms of design, like c ;
scala is a mixed monster like c++
but spark's clojure wraper is not so mature, and can not always be up-to-
date . |
|
d*******r 发帖数: 3299 | 30 大牛用 dynamic typing 难道没有错误地 access 某个变量,然后程序 crash 掉的吗?
比如我看你 clojure sample 里还有 access java class 的 data member 的代码,如
果那个 data member 不存在会如何?
我觉得 static typing 确实更 robust,不会run起来再 crash 掉。
还有,clojure 需要处理 validate remote message 这类的问题吗?
ligthtable,
has |
|
d*******r 发帖数: 3299 | 31 这个叼...
我是想学 Clojure 的,不过工作上没机会用...
大牛说说 Clojure 跟 Scheme 用起来主要区别是啥
production |
|
h*i 发帖数: 3446 | 32 如果不调用Java,全用Clojure数据结构的话,不会出null pointer exception crash.
Clojure handle it for you.
如果调Java的数据的话,还是和写Java程序一样的,要自己make sure it's not null
。Java's syntax check does not help with such runtime exceptions. Unless it
has a type system like that of Haskell, but Java does not have that.
吗? |
|
n*****3 发帖数: 1584 | 33 o'reilly clojure programming as the first clojure book.
You might only need to cover the first half book【 在 cornbeef (maimai) 的大
作中提到: 】 |
|
n*****3 发帖数: 1584 | 34 o'reilly clojure programming as the first clojure book.
You might only need to cover the first half book【 在 cornbeef (maimai) 的大
作中提到: 】 |
|
h*i 发帖数: 3446 | 35 我个人认为clojure 的Llsp特点不是难点,所以CL程序员不比Java程序员学clojure 有
什么优势。
★ 发自iPhone App: ChineseWeb 8.7 |
|
h*i 发帖数: 3446 | 36 mutable data也会用到,但不是必须的。一般atom用得最多,存全局状态方便。我写过
的几个Web应用一般都会用到几个atom,主要是为了方便。如果不图方便,可以用
component这种DI framework,这样就连atom都不用了。我一般是两者都用,常用到的
状态,比如DB connection啥的,用component,只只出现在一个地方的的状态用atom。
但如果是写libary,经常是一个mutable data都没有的。Clojure故意把mutable data
搞得很难用。最容易用的atom,也要搞一些boilerplate,先要定义,然后用的时候要
swap!, swap!的时候还要记得把值包在一个函数里面,最后要deref,一堆事要做。
基本上来说,Clojure日常的代码,bread and butter, 都是用immutable data的,这
个坎必须翻过去才能正常写代码,CL程序员和Java程序员都一样的需要翻这个坎。 |
|
h*i 发帖数: 3446 | 37 Clojure
学了clojure 你算是学到了新东西,艺不压身。groovy这种不用学,到时要用拿起来就
用就行了。
★ 发自iPhone App: ChineseWeb 8.7 |
|
h*i 发帖数: 3446 | 38 That's exactly what I said. A team that have adopted Clojure is not a team
that do some Clojure on the side. If they do the later, they are not whom I
refer to in my statement. |
|
c******o 发帖数: 1277 | 39 ...
I already showed. Static JVM language is something clojure can not
substitute, and can not ever do better than in that area.
"Once Clojure is used in a team, there is simply no benefit of using Java
for this team any more."
But |
|
g*****g 发帖数: 34805 | 40 Groovy didn't aim high but it will stay useful. Clojure aims to take over
the world but struggles to remain relevant. Someday another language will
succeed Java , but it's not Clojure for sure.
.
ones |
|
n*****3 发帖数: 1584 | 41 second this
我听了这个报告, 感觉 clojure 很有前途,
from data to Web presentation,
clojure/script 一条龙搞定, PE form ace
还很好 , 和 Java 一样 or better。 |
|
h*i 发帖数: 3446 | 42 我没找过Clojure工作,但从招人角度,感觉是Clojure工作不少,但人很难找到。不过
现在程序员都很吃香吧,所以不用有找不到工作的担心。 |
|
p*******8 发帖数: 344 | 43 现在最简单的刷了60题,表示还没迈过坎,三周后要去新公司搞clojure, 是不是得抓
紧刷了?clojure的core functions不少啊,感觉还是要不断刷才能真正理解,有时候
很简单的算法也不知道怎么入手,是不是应该多用recursion? 刷题过程还是觉得自己
慢慢在进步 |
|
h*i 发帖数: 3446 | 44 根据用Clojure主打的公司的人自己的描述,他们往往能让新人在两三周内上手Clojure
。毕竟这个语言很简单,有人带,有具体项目的话,应该很快能上手的。
Enjoy. |
|
r*g 发帖数: 3159 | 45 老实讲,这一点clojure 比apl/j 差远了。当然你要说clojure有别的优势那是, 但是
就这个几十个核心函数, 数据为中心,建议看看j的词典。
我学这些不为工作也不为面试,就是玩玩。 |
|
h*i 发帖数: 3446 | 46 听说过APL/J,以前IBM很多人都会。不过这种语言怪符太多了吧?point-free, 函数
的参数都是藏起来的,这个也太抽象了。
Clojure发展了好几年才发展到这个阶段,这就是Clojure 1.7引入的所谓transducer,
也就是0参数的函数组合。但这已经有人认为太过了,全是point-free的语言,还不得
让人发疯了。
我觉得语言设计掌握一个度很重要。计算机这个行当出新东西不容易,所谓The
sciences of the artificial, 都是人想出来的东西,大部分东东别人都已经想过了。
所以比的不该是谁“最“怎么怎么,比得是应该是谁把已有的东西组合得更好用。 |
|
h*i 发帖数: 3446 | 47 作为一个用户,我不管底层是如何实现的,只要我用起来一样就行了。
具体说到实现的话,Clojure好像是把CSP转换成一个finte state machine来实现async
的。从用户角度,这种实现好像也没有什么损害。
好像没有人benchmark过goroutine和core.async两者的效率区别。可能也没有意义,两
个语言的使用场合完全不同。go是底层系统语言,与C/C++啥的竞争,Clojure是高层的
用来写应用的语言,根本不与C/C++的竞争。
async |
|
n******7 发帖数: 12463 | 48 scala为啥死了? clojure哪里有大规模的应用吗?
版上写scala的还见过几个
clojure好像就hci了 |
|
h*i 发帖数: 3446 | 49 好问题,但我不知道答案。
不过一般来说,我觉得能找到本地的,可能也不愿意找远程的。比如我自己,要招人的
话肯定不会招远程工作的,我们内部都商量过了,宁愿招不会Clojure的junior来训练
也不愿意要远程的Clojure老手,我们这种初创公司担不起远程的风险。
当然各公司境况不一样,不能一概而论。 |
|
h*i 发帖数: 3446 | 50 Rich Hickey is an outsider. His college major was Music. His formal
education in Computer Science was taking some class from a local college (
SUNY Empire State College). His linkedin: https://www.linkedin.com/in/
richhickey
However, he has been a professional programmer for several decades, and
taught programming classes in universities such as NYU. He implemented
several versions of Lisp in various platforms before developing Clojure full
-time for a couple of years. After announcing Clojure, ... 阅读全帖 |
|