goodbye clojure, and good luck.

143 views
Skip to first unread message

东东

unread,
Mar 14, 2015, 10:37:30 AM3/14/15
to cn-cl...@googlegroups.com
用 clojure 可能有一年多了, 刚换了新工作, 虽然也有机会使用  clojure, 但是最近觉得累了. 

我学习过从多的编程语言, 当然不是每个都能拿来用, 每个都熟悉,  我的学习只是让我了解了多种"编程语言范式", clojure 是所有语言中我最喜欢的, 它是如此的美妙, 拥有屌爆的表达力和抽象能力, 它对我编程生涯的影响是如此的深刻.   Paul Graham 是我的偶像, Rich Hickey 则是我心中的英雄.

有时候, 工作中要去修改别人用 Java Spring 开发的 Web 程序时,  心里总会在骂什么操蛋玩意.  老子几句代码的事在这里怎么在这里如此废话啰嗦外加丑陋, 各种无聊的模式和概念,我想说, 你们知道 ring 设计有多屌吗, 你们知道 clojurescript  写 reagent 用 figwheel 跑 app 是什么感觉吗? 结果你们在改 XML...

但是现在, 我要和 clojure 说再见了

我不偏袒静态和动态语言哪个好哪个坏, 这只是取舍的问题. 

今天的静态语言用类型推断消灭了大量语法开销. 而动态语言, 我知道的只有 Julia 是可选类型, 其实我认为动态语言的可选的类型签名是现代语言必备的, 具体的好处我觉得没必要多讲,  clojure 作新时代语言也在这方面毫无作为, 结果为了要妥协性能以及和 Java 交互, 不得不在元数据上标类型, . 这便得有较多标注的代码显的很丑, 而且这种标注对编译时验证和开发工具没什么价值. core.typed 更是二等公民, 用起来实在不方便, 看看谁会用它,  所以经常在编译时或运行时提示很多无用错误信息, 光看异常栈很难定位错误.

leiningen 是最让人抓狂的, 它在我的 MBP 上慢到无法忍受, 这个问题虽然被归结在 JVM 身上, 但不管怎样, 每次执行 lein 会让人有种想死的感觉, 就算直接执行 lein 命令让它输出 tasks 也要经过漫长的等待. 要知道  sbt 虽然是个操蛋玩意, 但它可没这么慢, scala repl 也很快能启动

哎不吐槽别的了, 各位 clj 友们, 你们在学习和使用 clojure 时都有什么样的故事. 欢迎一起来分享和吐槽 :)

TLightSky

unread,
Mar 15, 2015, 2:32:26 AM3/15/15
to cn-cl...@googlegroups.com
可以试试cljs+nodejs,无论是启动还是编译速度在MBP上都还不错,配合figwheel自动reload谁用谁知道(最近在尝试把figwheel的repl 连接到我的lt编辑器)

https://github.com/swannodette/mies-node-template 这个模板是个不错的起点,pull request里有个添加figwheel的改动,还没有merge,可以手动按照diff改改

--
中文社区博客:http://blog.clojure.cn/
中文问答网站:http://ask.clojure.cn/
中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
---
您收到此邮件是因为您订阅了Google网上论坛上的“CN-Clojure”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到cn-clojure+...@googlegroups.com
要发帖到此群组,请发送电子邮件至cn-cl...@googlegroups.com
访问此群组:http://groups.google.com/group/cn-clojure
要查看更多选项,请访问https://groups.google.com/d/optout



--
会当凌绝顶,一览众山小

jaime

unread,
Mar 15, 2015, 10:30:43 PM3/15/15
to cn-cl...@googlegroups.com
跟apple watch一样,方向对的,有发展前景,但是目前续航有点蛋疼。。。。

在 2015年3月14日星期六 UTC+8下午10:37:30,东东写道:

Jianliu Hu

unread,
Mar 15, 2015, 10:40:08 PM3/15/15
to cn-cl...@googlegroups.com

你说的续航是只效率吗?
在 2015年3月16日星期一 UTC+8上午10:30:43,jaime写道:

jaime

unread,
Mar 15, 2015, 11:37:54 PM3/15/15
to cn-cl...@googlegroups.com
续航指的是watch的电池。就clojure而言,我觉得它具有lisp语言几乎的所有优点,还具有采用了前沿的编程语言技术,熟悉了的话开发效率是很可以高很灵活的。但目前最大的影响(个人感觉)还是性能,如果性能能做到go一样,那就堪称完美了。

在 2015年3月16日星期一 UTC+8上午10:40:08,Jianliu Hu写道:

dennis zhuang

unread,
Mar 15, 2015, 11:45:18 PM3/15/15
to cn-cl...@googlegroups.com
性能? JVM 的性能怎么可能比 go 差? clojure 的问题绝对不可能是性能啊。这里楼主说的其实是启动效率,这是 jvm  的顽疾。
我平常也基本不用 lein repl做小测试,而是自己写个脚本,设置一些jvm选项,启动快很多

#!/bin/sh
breakchars="(){}[],^%$#@\"\";:''|\\"
CLOJURE_DIR=~/clojure
CLOJURE_JAR="$CLOJURE_DIR"/clojure.jar
if [ $# -eq 0 ]; then
    exec rlwrap --remember -c -b "$breakchars" \
   -f "$HOME"/.clj_completions \
   -t "Clojure REPL" \
   -p red \
   -H "$CLOJURE_DIR"/.repl_history -s 1000\
   java -client -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled -cp "$CLOJURE_JAR" clojure.main
else
         exec java -cp "$CLOJURE_JAR" clojure.main $1 "$@"
fi

--
中文社区博客:http://blog.clojure.cn/
中文问答网站:http://ask.clojure.cn/
中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
---
您收到此邮件是因为您订阅了Google网上论坛上的“CN-Clojure”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到cn-clojure+...@googlegroups.com
要发帖到此群组,请发送电子邮件至cn-cl...@googlegroups.com
访问此群组:http://groups.google.com/group/cn-clojure
要查看更多选项,请访问https://groups.google.com/d/optout



--
庄晓丹
Email:        killm...@gmail.com xzh...@avos.com
Site:           http://fnil.net
Twitter:      @killme2008


jaime

unread,
Mar 16, 2015, 12:08:06 AM3/16/15
to cn-cl...@googlegroups.com
说到性能我倒是只有感性认识。JVM的性能比go要好么,有介绍文档之类的么。

在 2015年3月16日星期一 UTC+8上午11:45:18,dennis写道:
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到cn-clojure+unsubscribe@googlegroups.com

要发帖到此群组,请发送电子邮件至cn-cl...@googlegroups.com
访问此群组:http://groups.google.com/group/cn-clojure
要查看更多选项,请访问https://groups.google.com/d/optout

dennis zhuang

unread,
Mar 16, 2015, 12:18:24 AM3/16/15
to cn-cl...@googlegroups.com
语言测试


更不要说 GC 了, go 1.4+ 才准备做并发 gc 吧。

要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到cn-clojure+...@googlegroups.com

要发帖到此群组,请发送电子邮件至cn-cl...@googlegroups.com
访问此群组:http://groups.google.com/group/cn-clojure
要查看更多选项,请访问https://groups.google.com/d/optout

haosdent

unread,
Mar 16, 2015, 12:22:32 AM3/16/15
to cn-cl...@googlegroups.com
4个case Java快,7个case golang快
Best Regards,
Haosdent Huang

haosdent

unread,
Mar 16, 2015, 12:24:07 AM3/16/15
to cn-cl...@googlegroups.com
目测很快会成为语言好坏斗争贴,我先来个 #PHP才是最好的语言#

jaime

unread,
Mar 16, 2015, 1:06:15 AM3/16/15
to cn-cl...@googlegroups.com
不争。温和派,对工具没特别喜好

在 2015年3月16日星期一 UTC+8下午12:24:07,haosdent huang写道:
目测很快会成为语言好坏斗争贴,我先来个 #PHP才是最好的语言#

4个case Java快,7个case golang快
--
Best Regards,
Haosdent Huang

dennis zhuang

unread,
Mar 16, 2015, 1:32:37 AM3/16/15
to cn-cl...@googlegroups.com
你可以选择更多硬件平台查看结果,只能说各有胜场,所以我并不认为 clojure 的性能会是个问题。



要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到cn-clojure+...@googlegroups.com

要发帖到此群组,请发送电子邮件至cn-cl...@googlegroups.com
访问此群组:http://groups.google.com/group/cn-clojure
要查看更多选项,请访问https://groups.google.com/d/optout

dennis zhuang

unread,
Mar 16, 2015, 1:38:24 AM3/16/15
to cn-cl...@googlegroups.com
clojure 的编译器已经很久没有演化了,如果能在 type inference 上做出改进,很多 type hint 都可以避免。ore.typed  确实难用,我怀疑是否有人真的在生产环境尝试。

Mingli Yuan

unread,
Mar 16, 2015, 4:09:11 AM3/16/15
to cn-cl...@googlegroups.com
大家有看到 http://www.dunaj.org/ 的一些进展吗?似乎很有趣的一些实验。

我在生产环境大量使用 Clojure,遇到一些问题:
  • Clojure core 里的有些 api 比起 python 来设计的不是那么友好,不直观,容易犯错:比如 primitive 数据转型,str 就能转各种数据,而 int、long、float、double 只能转数据类型;这部分改进不难,但对程序员的体会完全不一样
  • 文档相对不足
  • 缺少 IDE 工具支持,调试代码比较慢:结果错了,想查看某些中间值的状态,比较费劲,只能打印

dennis zhuang

unread,
Mar 16, 2015, 4:11:47 AM3/16/15
to cn-cl...@googlegroups.com
看了,一些想法非常好,但是距离进入生产环境还比较遥远,重点关注。

Mingli Yuan

unread,
Mar 16, 2015, 9:28:33 AM3/16/15
to cn-cl...@googlegroups.com
刚才的 Dunaj 实验提到了数组的支持,这也是我不得不吐槽整个 JVM 平台的地方。

对于大量数值计算的应用,特别是现在机器学习这样的领域,NDArray 已经是必备的武器了。
numpy、scipy、ipython、ipython notebook 等的方便易用让 Python 平台领先整个 JVM 平台好多年。

Clojure 固然有 core.matrix、gorilla、drake 等工具,在 JVM 平台里属于最得风气的,但看起来还差不少。

更不用提 GPU 支持,Python 的 theano 至今没看到对应的 JVM 项目。

尽管有 G1 设置,JVM 的垃圾回收对大内存也是非常大的问题,它的 stop the world 简直无法忍受。
我花了很多时间在优化内存使用上,才让服务接近稳定。



Xiaojun Weng

unread,
Mar 17, 2015, 12:23:50 AM3/17/15
to cn-cl...@googlegroups.com
我觉得在生产环境用的国内国外都有的,而且是越来越多

在 2015年3月16日星期一 UTC+8下午4:11:47,dennis写道:

Sun Ning

unread,
Mar 18, 2015, 1:55:40 AM3/18/15
to cn-cl...@googlegroups.com, Xiaojun Weng
Emacs 和 cider 一起用的话,基本上不需要手动启动 lein 了。


On 03/17/2015 12:23 PM, Xiaojun Weng wrote:
我觉得在生产环境用的国内国外都有的,而且是越来越多

在 2015年3月16日星期一 UTC+8下午4:11:47,dennis写道:
看了,一些想法非常好,但是距离进入生产环境还比较遥远,重点关注。

在 2015年3月16日 下午4:09,Mingli Yuan <elist.mi...@gmail.com>写道:
大家有看到 http://www.dunaj.org/ 的一些进展吗?似乎很有趣的一些实验。

我在生产环境大量使用 Clojure,遇到一些问题:
  • Clojure core 里的有些 api 比起 python 来设计的不是那么友好,不直观,容易犯错:比如 primitive 数据转型,str 就能转各种数据,而 int、long、float、double 只能转数据类型;这部分改进不难,但对程序员的体会完全不一样
  • 文档相对不足
  • 缺少 IDE 工具支持,调试代码比较慢:结果错了,想查看某些中间值的状态,比较费 劲,只能打印


2015-03-16 13:38 GMT+08:00 dennis zhuang <killm...@gmail.com>:
clojure 的编译器已经很久没有演化了,如果能在 type inference 上做出改进,很多 type hint 都可以避免。ore.typed  确 实难用,我怀疑是否有人真的在生产环境尝试。

在 2015年3月16日 下午1:32,dennis zhuang <killm...@gmail.com>写 道:

你可以选择更多硬件平台查看结果,只能说各有 胜场,所以我并不认为 clojure 的性能会是个问题。



在 2015年3月16日 下午1:06,jaime <xieji...@gmail.com>写 道:
不争。温和派,对工具没 特别喜好

在 2015年3月16日星期一 UTC+8下午12:24:07,haosdent huang写道:
目测很快会成为 语言好坏斗争贴,我先来个 #PHP才是最好的语言#

2015-03-16 12:22 GMT+08:00 haosdent <haos...@gmail.com>:
4 个case Java快,7个case golang快

2015-03-16 12:18 GMT+08:00 dennis zhuang <killm...@gmail.com>:
语 言测试


更不要说 GC 了, go 1.4+ 才准备做并发 gc 吧。
在 2015年3月16日 下午12:08,jaime <xieji...@gmail.com>写 道:
说 到性能我倒是只有感性认识。 JVM的性能比go要好么,有 介绍文档之类的么。

在 2015年3月16日星期一 UTC+8上午 11:45:18,dennis 写道:
性 能? JVM 的性能怎么可能比 go 差? clojure 的问题绝对不可能是性能啊。这里楼主说的其实是启动效率,这是 jvm  的顽疾。
我平常也基本不用 lein repl做小测试,而是自己写个脚本,设置一些jvm选项,启 动快很多

#!/bin/sh
breakchars="(){}[],^%$#@\"\";:''|\\"
CLOJURE_DIR=~/clojure
CLOJURE_JAR="$CLOJURE_DIR"/clojure.jar
if [ $# -eq 0 ]; then
    exec rlwrap --remember -c -b "$breakchars" \
   -f "$HOME"/.clj_completions \
   -t "Clojure REPL" \
   -p red \
   -H "$CLOJURE_DIR"/.repl_history -s 1000\
   java -client -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled -cp "$CLOJURE_JAR" clojure.main
else
         exec java -cp "$CLOJURE_JAR" clojure.main $1 "$@"
fi
在 2015年3月16日 上午11:37,jaime <xieji...@gmail.com>写 道:
续 航指的是watch的电池。就 clojure而言,我觉得它 具有lisp语言几 乎的所有优点,还具有采用了前 沿的编程语言技术,熟 悉了的话开发效率是很可以高很 灵活的。但目前最大的影响(个人 感觉)还是性能,如果性能能做 到go一样,那就堪称完美了。

在 2015年3月16日星期一 UTC+8上午 10:40:08,Jianliu Hu写道:

你说的续航是只效率吗?
在 2015年3月16日星期一 UTC+8上午 10:30:43,jaime 写道:
跟apple watch一样,方向对的,有 发展前景,但是目前续航有点蛋 疼。。。。

在 2015年3月14日星期六 UTC+8下午 10:37:30,东东写道:
用 clojure 可能有一年多了, 刚换了新工作, 虽然也有机会使用  clojure, 但是最近觉得累了. 

我学习过从多的编程 语言, 当然不是每个都能拿来用, 每个都熟悉,  我的学习只是让我了解了多种"编程语言范式", clojure 是所有语言中我最喜欢的, 它是如此的美妙, 拥有屌爆的表达力和抽象能力, 它对我编程生涯的影响是如此的 深刻.   Paul Graham 是我的偶像, Rich Hickey 则是我心中的英雄.

有时候, 工作中要去修改别人用 Java Spring 开发的 Web 程序时,  心里总会在骂什么操蛋玩意.  老子几句代码的事在这里怎么 在这里如此废话啰嗦外加丑陋, 各种无聊的模式和概念,我想 说, 你们知道 ring 设计有多屌吗, 你们知道 clojurescript  写 reagent 用 figwheel 跑 app 是什么感觉吗? 结果你们在改 XML...

但是现在, 我要和 clojure 说再见了

我不偏袒静态和动态 语言哪个好哪个坏, 这只是取舍的问题. 

今天的静态语言用类 型推断消灭了大量语法开销. 而动态语言, 我知道的只有 Julia 是可选类型, 其实我认为动态语言的可选的类型签名是现代语言必备的, 具体的好处我觉得没必要多讲,  clojure 作新时代语言也在这方面毫无作为, 结果为了要妥协性能以及和 Java 交互, 不得不在元数据上标类型, . 这便得有较多标注的代码显的很 丑, 而且这种标注对编译时验证和开发工具没什么价值. core.typed 更是二等公民, 用起来实在不方便, 看看谁会用它,  所以经常在编译时或运行时提示很多无用错误信息, 光看异常栈很难定位错误.
访问此群组:http://groups.google.com/group/cn-clojure
要查看更多选项,请访问https://groups.google.com/d/optout
--
Best Regards,
Haosdent Huang



--
Best Regards,
Haosdent Huang
--
中文社区博客:http://blog.clojure.cn/
中文问答网站:http://ask.clojure.cn/
中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
---
您收到此邮件是因为您订阅了Google网上论 坛上的“CN-Clojure”群 组。
要退订此群组并停止接收此群组的电子邮件,请发 送电子邮件到cn-clojure+unsubscribe@googlegroups.com
要发帖到此群组,请发送电子邮件至cn-cl...@googlegroups.com
访问此群组:http://groups.google.com/group/cn-clojure
要查看更多选项,请访问https://groups.google.com/d/optout



--
庄 晓丹
Email:        killm...@gmail.com xzh...@avos.com
--
中文社区博客:http://blog.clojure.cn/
中文问答网站:http://ask.clojure.cn/
中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
---
您收到此邮件是因为您订阅了Google网上论坛上的“CN-Clojure”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到cn-clojure+...@googlegroups.com

Shen, Feng

unread,
Mar 18, 2015, 5:02:35 AM3/18/15
to cn-cl...@googlegroups.com, Xiaojun Weng
哈,冒个泡,也用了Clojure两年多,在13年初离开avos后,用Clojure就比较少了。主要是周围没有人再用了,加上创业忙,http-kit的维护也很少。

Clojure的性能很难成为瓶颈。启动效率也是有办法绕过的。 (补一句,语言很难成为一个程序慢的主要原因)

这两年多,写了一些go。创业后,主要是Python+Java,一部分C++.
Python还是不错的。在idea的帮助下, 缩紧一点都不是问题,很是方便。 Java性能彪悍,库全,在Idea的帮助下,很舒服的,维护项目(改bug,加功能)不累。 C++,不得已不碰,但遇到自动补全之类的问题,考虑到内存和速度,用它写(看准网收录有138万的公司,输入拼音,需要给出提示)

在选语言时,主要的考虑点还是怎么方便的把事情解决。

Go语言会是一个强悍的语言,写服务器程序很方便,它会抢占这一块市场。比较看好它的未来。
很怀念写Clojure的日子的。嗯,Emacs很难用,相比较于IDEA。

jaime

unread,
Mar 18, 2015, 11:22:28 PM3/18/15
to cn-cl...@googlegroups.com
创业去啦。现在创业氛围很浓嘛。

Clojure应用的发展感觉还是有点慢,不知道是因为lisp被人接受慢还是别的原因。说性能问题嘛,是不会成为瓶颈,因为应用场景不一样对性能的要求也不一样,只要满足需求就够了。我个人写的小程序就感觉go比clojure快,所以感觉go是比clojure快的。

因为工作性质的关系,我也很长时间没碰clojure了,最近会重温一下,这语言是好用的。

在 2015年3月18日星期三 UTC+8下午5:02:35,Feng Shen写道:
...
Reply all
Reply to author
Forward
0 new messages