h*i 发帖数: 3446 | 1 作为认知心理学家,我就给你科普一下。人脑不是计算机,不是用来作底层计算的。人
的工作计忆容量平均只有七个单元,用冯纽曼机的概念,就是一个内存只有一个拜特的
机器。计算速度?那就更惨了,是几百毫秒作一个基本操作。传统程序员的训练,就是
用人脑这个性能很差的计算机,来模拟高性能的人造计算机。程序员自己写的代码,在
自己脑子里运行都是搞不定的,所以会有虫子,要用debugger来一步步跟。人脑厉害的
,一是长时计忆,容量几乎无限,二是抽象能力,把复杂的模式抽象成一个个概念,可
以用符号表示。
编程语言应该要发挥人脑的优势,把复杂的算法模式变成可记忆的符号,这就是
clojure 这种语言也许无意中正在作的事,它搞了好几十个核心函数,让程序员记住,
每个函数是一个复杂的算法模式。这儿"学编程"的含义都变了。刷LC,是学习用原始
的三个工具,赋值,条件,循环,来实现复杂算法模式的技巧,有点中学学奥数的意思
。刷4clojure,是学习一堆高度抽象的函数,毎个函数是干嘛的,什么时候用,有点学
大学数学的意思,技巧不是主要的,知道都有些啥,用来干嘛更重要。有人悟性不行,
用刷LC的方法来刷4cloj... 阅读全帖 |
|
|
x***i 发帖数: 585 | 3 多谢前辈建议, 顺便再此推荐一个 clojure 的 "leetcode": 4clojure.com |
|
p*****2 发帖数: 21240 | 4
1. Redis
随便扫了一本书
2. MongoDB
MongoDB的free training course
3. Node.js
随便扫了一本书
4. Hadoop
参加了Big data conference,有tutorial
5. Clojure
Clojure in action, 4clojure
6. Storm
参加了Big data conference,有tutorial
这些技术都不难其实。 |
|
z***t 发帖数: 14 | 5 在做上面的题。看document还是没做题有感觉。 |
|
|
|
|
|
h*i 发帖数: 3446 | 10 Clojure的社区很好,人都比较友好,有问题可以随便问,写了code可以让人给你
review, 不少人很热衷于review别人的code.
4clojure很好,可以follow别人,一个题自己作完了以后,去看看同样的问题高手怎么
解决的,这样进步很快。 |
|
f******x 发帖数: 98 | 11 完全同意,我也是在做完4clojure上的题目后才真正理解和认同Clojure的philosophy。
编程不学LISP,纵写亿行也枉然
Clojure,Clojure,不用赋值最牛逼, |
|
h*i 发帖数: 3446 | 12 如果代码也很可读呢?
我还没听说过一个Clojure程序员抱怨读不懂别人的Clojure代码的,正在学习Clojure
的人
除外。
的确是这样,我在学Clojure的时候,有两个月觉得自己都不会写代码了。 呵呵,是有
这么一个过程,我是靠做4clojure.com的题来翻过这个坎的,过了之后,觉得这个语言
真他妈简单,老子再也不想学别人创造的什么鸟语法了。Life is too short. |
|
f******x 发帖数: 98 | 13 the joy of clojure + 4clojure.com |
|
h*i 发帖数: 3446 | 14 Emerick, Carper & Grand, Clojure Programming, O'Reilly, 2012. 比较系统和全面
,适合从头学习。
Fogus & Houser, The Joy of Clojure, 2nd Edition, Mannings, 2015
更深一些,写得比较chatty, 但是对掌握Clojure的思想精髓很有帮助,没事可以读读
玩。
还有就是做题, 4clojure.com |
|
|
t**r 发帖数: 3428 | 16 实践clojure的话有什么库或者框架适合玩
基本语法熟悉了之后玩什么比较好?
刷4clojure还是用来刷leetcode?还是玩玩框架?有推荐的么 |
|
h*i 发帖数: 3446 | 17 1. 先设好Clojure的编程环境。编辑器(emacs, vim用fireplace)或者IDE(IntelliJ
用cursive, Eclipse用CCW, 还有lighttable)啥的,根据自己的喜好设置好,必要的
LISP插件装好,比如paredit,rainbow啥的,不要闹“数括号”的笑话。最终目的是在
这个环境里能方便地(一个快捷键)用REPL跑代码。Clojure程序是从下到上,一个小
函数一个小函数的来码出来的。
2. 我个人觉得刷4clojure是必须的。自己作完了一个题,再看看高手的代码(跟几个
高手就行了),可以提高很快。等核心的函数基本上记住了(大概作了一百道题之后吧
),也就差不多了。然后就看你想干什么了,上手做项目就行了。
3. 做项目要学会用lein。读lein的example project.clj很有用。
Clojure是反框架的,所以不要期望有什么大而全的框架可以学,都是各种各样的小库
,需要的时候github上找。一般常用功能都能找到几个库,根据自己的喜好和库的情况
选一个,比如github一年都没更新过的库,那就算了。 |
|
h*i 发帖数: 3446 | 18 1. 先设好Clojure的编程环境。编辑器(emacs;vim用fireplace)或者IDE(IntelliJ
用cursive; Eclipse用CCW;还有lighttable)啥的,根据自己的喜好设置好,必要的
LISP插件装好,比如paredit啥的,不要闹“数括号”的笑话。最终目的是在这个环境
里能方便地(一个快捷键)用REPL跑代码。Clojure程序是从下到上,一个小函数一个
小函数的用REPL试出来的。
2. 我个人觉得刷4clojure是必须的。自己作完了一个题,再看看高手的代码(跟几个
高手就行了),可以提高很快。等核心的函数基本上记住了(大概作了一百道题之后吧
),也就差不多了。然后就看你想干什么了,上手做项目就行了。
3. 做项目要学会用lein。读lein的example project.clj很有用。
Clojure是反框架的,所以不要期望有什么大而全的框架可以学,都是各种各样的小库
,需要的时候github上找。一般常用功能都能找到几个库,根据自己的喜好和库的情况
选一个,如果github一年都没更新过的库,那就算了。一般的库都没啥文档,看代码就
行了... 阅读全帖 |
|
p*******8 发帖数: 344 | 19 多谢!正在刷4clojure, emacs 还是用不惯啊 正在适应,不过功能确实强! |
|
r*g 发帖数: 3159 | 20 多谢推荐。
这4clojure做的人不多啊,做到100多道的才一千人? |
|
p*****2 发帖数: 21240 | 21 fp对于很多算法的表达并不擅长 尤其是当你还care performance的时候
4clojure最大的贡献就是让你学习到这点 |
|
h*i 发帖数: 3446 | 22 三周完全够了。其实4clojure那种“自己实现某核心函数“的题有点误导,完成这些题
往往需要recursion。但在真正的项目中,很少用到recursion,基本上就是直接用各种
核心函数组合起来,很适合ad hoc数据处理。
等你翻过了坎,做了一些项目,就会意识到,从本质上说,Clojure其实是很
imperative的,真正项目的大部分代码都是在隐含包在do里面,比如在let,doseq等等
里面,这其实都是在一步一步执行的。所以用Clojure实现算法的pseudo-code往往觉得
是行行对应的。
总的来说,Clojure是一个实用性的语言,口味是追求简单实用的,并不追求什么纯粹
性, 这和haskell完全不同。比如我完全不懂什么是monad,但一点也不妨碍我用
Clojure。 |
|
h*i 发帖数: 3446 | 23 除了上面的links,其实更重要的是参加Clojure的社区活动。
平时可以随便参加的有各地的Clojure meetup, Clojure user groups,等等。比如在
湾区,每个月就有2个Clojure meetups,一个Clojure dojo, 一个Clojure office
hour。这些都可以去参加,混个脸熟。
如果不喜欢f2f社会活动的,网上社区有IRC,还有slackhttps://clojurians.slack.
com, 用http://clojurians.net/邀请自己), 这些都是常年有几百人挂在线上的,clojurians有公司发positions,Clojure
googlegroup也有公司发job posts.
愿意花点钱的,每年有几个Clojure的会,clojure/conj(美东), clojure/west(美
西),euroclojure,这是三个大的会,其他地区性小会就不提了。很多人去会上找工作
。这些会的注册费很便宜的,经济有困难的还可以申请旅行经费(一般是在社区有
visibility的未成年人申请得到)。
最后就是给... 阅读全帖 |
|
|
h*i 发帖数: 3446 | 25 先从搞业余爱好的项目开始,研究一下开发环境如何搭。如果是Web项目,我建议从
luminus微框架开始,http://www.luminusweb.net/ 如果想要短平快的,Clojurescript挺好,比如https://github.com/anmonteiro/lumo,直接npm安装,下面是node.js.
开发环境和项目搭好架子了之后,我建议还是要稍微刷刷题的。学Clojure编程主要的
难点在于programming in the small,就是学习如何不用赋值和循环来编程的技能,所
以刷题是必要的。4clojure.com啥的刷刷,看看别人是如何写的,把常用函数和用法都
掌握了。然后就是要问问题,slack, reddit什么的,有问题就问,不要憋着。 |
|
O***b 发帖数: 104 | 26 我让学生进组的时候都做做 4Clojure 和 Koan ,目前看来效果不错。 |
|
x***4 发帖数: 1815 | 27 是不是做完4clojure的题,就基本够面试的条件呢? |
|
h*i 发帖数: 3446 | 28 来自主题: _FunctionalProgramming版 - Clojure After almost a year, I think I can call myself a Clojure programmer now.
Yes, I have all 4 clojure books on the market. Joy of Clojure is the one I
like the most. Practical Clojure is pretty good too. But what really got my
going is actually doing Clojure programming exercise in a functional style.
4clojure.com is a good place to try. Project Euler is good too, there's a
euler-clojure wiki where people share their solutions.
and
OnLisp |
|