• 没觉得不可思议😪

  • Emacs 闲谈 (一) 引言 at 2017年11月20日

    恩,一次书写满地跑. 我前后端都写, 不过主要精力还是在数据分析,机器学习上面.

  • Emacs 闲谈 (一) 引言 at 2017年11月20日

    你熟悉 js 的话,ClojureScript 挺容易上手的.

  • Emacs 闲谈 (一) 引言 at 2017年11月19日

    ClojureScript 超级爽呀, 我现在写前端单页面或者游戏, 不用在 Chrome 上调试, 直接在 Emacs 的 repl 上开发就能完成了.

    它几乎可以非常快速的开发出非常复杂的前端或者游戏来, 甚至像 js 编辑器那么复杂的交互,普通的 ClojureScript 水平都可以很快开发出来.

    以前我不喜欢前端的, 因为 ClojureScript,我爱上前端开发啦 😍 😍 😍 这里有简单的一个 ClojureScript 写的 js 游戏: https://github.com/clojurescript-scope-games/flappy-bird-demo, 也可以看看演示的视频:

  • Emacs 闲谈 (一) 引言 at 2017年11月19日

    @geniousli 我开发了 3 年多 Ruby,最终还是选择了 Lisp,Clojure 是 Lisp 的方言, 对于我来说, Clojure 的开发效率比 Ruby 还高, 而且函数式编程非常清晰明了.

    很享受那种写代码停不下来的感觉, 不用担心副作用操作, 我的老大写 Clojure 都不用调试的, 因为写纯函数, 只要思路推导正确, 结果就是正确的.

    公司产品主要是后台 Clojure 的 Web API, 前端单页面 ClojureScript, 还有 Clojure 调用 Spark 流式大数据分析等. 个人还用 Clojure 写安卓的一些原生应用 (未开源), 开源的项目小例子: 讯飞语音 sdk

  • Emacs 闲谈 (一) 引言 at 2017年11月11日

    在北京一家公司,北京好多 Clojure 的公司呀 😍 😍 😍

    我几乎完全用 Lisp 来工作, 前端单页面用 ClojureScript, Clojure 写后端 API, 还有写 Clojure 调用 Spark 流式数据分析, 个人还用 Clojure 写 Android 应用. 编辑器用 Emacs Lisp 写帮助编辑函数, 爽到爆 😍 😍 😍

  • Emacs 闲谈 (一) 引言 at 2017年11月08日

    没有 Emacs Lisp,我就不会去学习 SICP, 没有学习 SICP,我就不会工作去写 Clojure.

  • 心疼自己,Ruby 程序员-1 at 2017年10月26日

    写 C++ 不错呀, 现在最高薪的算法工程师 (30w~50w) 都基本熟练 C++, 而且大部分高性能机器学习和深度学习库,算法都是 C++ 实现的. 会 Ruby 只是能做做网站, 顶多系统管理. 不要执着于公司, 只是名称而已

  • 大部分函数式编程语言, 都很享受 C-c C-k大法好 的 开发体验. 😍 而且 Lisp 语言还很享受 C-x C-e大法好 的 开发 体验. 😜

  • Lisp 大部分人, 都集中在帝都, 深圳目前我知道的只有熊聊用 Clojure 做后端 API. 广州的汇丰用 Clojure 做后端, 混合 Java 编程.😁 😁 😁 本人也在帝都做 Clojure 开发.

  • 应用了元编程,开心哦 at 2017年09月13日

    好了,你可以去学 Clojure 了

  • @luikore Scheme 和 Racket, 是 Lisp 界的标准, 这一点不容置疑, 学透 SICP 可以完全升级一个程序员的 内功.

    但 Scheme 的问题是停留在教育层面的, 虽然 Racket 尝试生产方面, 毕竟还没成功.

    Scheme 和 Clojure 是很像的, 但是 Clojure 的生产效率是非常高的, 它和 Java 之间的互操作, 都是简单得让你惊奇. 而且 Ruby 底子好的人, 看 Java 代码是不难的.

    Clojure 后端开发 非常成熟, ClojureScript 前端开发体验也是一流的, 而且 Clojure 在大数据和数据分析领域也是非常成熟的, 如 Storm, Cascalog, 包括 Clojure 调用 Spark 也是非常容易的.

    Common Lisp 已经是混合多范式了, 虽然根植于 Lisp, 我不想用它的原因是, CLOS 不应该继承到 它的核心里面, 使得 Clisp 过度复杂.

  • @Peter 如果你们学习 Lambda 演算, 连 它的 鼻祖都 不知道, 那有何意义呢?

    Ruby 社区很多高手, 比如 @luikore 等, 都是修炼过 SICP 的, 如果你不知道他们为什么这么厉害, 只能说你们在社区白混了.

    今年的RubyConf China 2017, 都已经有三个主题是 关于函数式的了, 难道你们还要停留在学习的舒适区吗?

  • 干掉了 SICP,十个 Ruby 元编程都不在话下 😍 😍 😍

  • 要认识的 Ruby 元编程的真正价值, 就要从元编程的鼻祖 Lisp 开始, 真正做到了 代码就是数据, 数据就是代码, 真正的代码和数据的完美统一.

    真正掌握元编程的人, 任何语法都限制不了一个程序员.

    (macroexpand-1 '(-> 100 (+ 1) (+ 2) (+ 3)))    ;;=> (+ (+ (+ 100 1) 2) 3) 
    
    (defmacro unless [expr form]
      (list `if expr nil form))
    
    (macroexpand-1 '(unless false "Hi, Clojure!"))
    ;; => (if false nil "Hi, Clojure!") ;; 代码展开的样子
    
    
  • Clojure 除了具备了 Lisp 开发的 最佳体验 (Emacs + REPL) 开发, 没有比这个开发体验更好的, 我用过如此多的语言里面.

    而且 Clojure 的资源几乎是无限的, Java 资源轻易封装使用, 如我自己封装的一些 : 讯飞 Clojure 的 SDK, Hanlping, 阿里云 aliyun-oss-clj 等等.

    而且 ClojureScript 函数式来写复杂前端都轻易搞定: https://github.com/chanshunli/clojurescript-study, https://github.com/clojurescript-scope-games/flappy-bird-demo 等等. 也是 Lisp 的开发体验, 甚至不需要离开编辑器就完成了复杂单页面或者游戏.

    还有我用 Clojure 调用 Spark 数据分析, 机器学习等: 如 https://github.com/clojure-spark/sparkling-streaming-ml

    我还用 Clojure 来写安卓 APP 收集传感器数据, 做流式数据在线学习 等,

    Java 能做的, Clojure 一样能做, 而且速度快的 惊人, 曾经我认为 Ruby 是最好的语言, 但是我错了, 能够开发 Clojure 是我命运的眷顾, 让我知道 什么才是程序员的幸福 😍 😍 😍 , Clojure 给我的感觉是, 优美的极点 + 无穷的强大几乎没有它干不了的事情.

  • 吃透了 SICP, 一般的程序员的功力就干不过你了. 所以它不是那么容易吃透的呀.

    -> & ->>的区别是 :

    (macroexpand-1 '(-> 100 (+ 1) (+ 2) (+ 3)))    ;;=> (+ (+ (+ 100 1) 2) 3)
    
    (macroexpand-1 '(->> 100 (+ 1) (+ 2) (+ 3)))   ;;=> (+ 3 (+ 2 (+ 1 100)))
    
    
  • 这是函数式圣经级别读物, 我第一次看到这部著作的时候,也直接丢掉了.

    Jim Weirich 的演讲, 让我深度思考了函数式, 使得我重新读完这部书的前面四章, 被 SICP 震惊了, 发现我错了. 才知道邱奇是多么的伟大, Lisp 是多么伟大.

  • 很多计算机的设计思想 和 精髓, 是不可忽略的, 尤其是 Lisp, 几乎对所有的语言的设计 都 产生了很大的影响力.

  • Lisp 语言里面一般都是用 partial, 函数式数据分析, 还有在线数据流机器学习, 实在是太方便了.

    (def sigma
      (fn [sf f a b]
        (->> (range a (inc b))
             (map #(f %))
             (reduce sf))))
    
    (def sum-of-number (partial sigma + (fn [n] n)))
    (def sum-of-square (partial sigma + #(* % %)))
    
    (sum-of-number 1 10) ;;=> 55
    (sum-of-square 1 10) ;;=> 385
    
    (def pi (partial sigma *))
    
    (pi (fn [n] n) 1 3) ;;=> 6
    

    Lisp 用于 Spark 数据分析:

    (defn ratings->matrix [data]
      (let [cardinality (-> data
                            (spark/map #(.product %))
                            (spark/reduce max)
                            (inc))]
        (->> data
             (spark/group-by #(.user %))
             (spark/values)
             (spark/map (to-sparse-vector cardinality))
             (to-matrix))))
    
  • 我也是因为 读《计算的本质-深入剖析程序和计算机》,才知道背后 有这么 牛 B 的 SICP, 作者 Tom 只是借鉴 SICP 思想而已, 然后用 Ruby 语言表达.

    SICP 这本书改变了我, 让我转向了 Clojure 开发, 释放 Lisp 函数式强大的原力.

  • @alixiaomiao @lanzhiheng 不要看 《计算的本质-深入剖析程序和计算机》啦, 看 SICP 吧, SICP 才是圣经级别读物.

    《计算的本质-深入剖析程序和计算机》展现的只是 SICP 的冰山一角 ... ...

  • 👍 👍 👍

  • 视频只能看到招式,很难掌握发力和动作要领, 通过图解 + 受力分析 + 训练阶段分析, 更利于目标和进步.

    过去几年 看视频看了很多,也自学咏春的那些招式, 但是都不得要领, 练拳还是必须师傅教, 加上自 己用心领悟 + 总结

  • 火币用的是 Clojure 呀 😍