五年 Clojure 使用者浅谈 Clojure 语言的设计

2015-08-04 11:40:25 +08:00
 LeanCloudRRY

最近不知道为什么,大家好像对函数式编程的兴趣又起来了,前阵子同事在知乎有一个比较精彩的回答,转到这里。说硬不硬,了解一下也好,和 Clojure 爱好者分享一下也好。

基于 JVM 的决定

Clojure 能够吸引人的很重要一点是它是 JVM 之上的语言,这个决定非常关键。

构建于 JVM 之上,Clojure 就是一门严肃的语言,而非很多人眼中的 LISP家族中的 玩具语言,你学习后可以马上使用并且实践。但是 Clojure 又是 LISP 方言,LISP 的神奇能力它还都保留,这样兼具美学和实用的语言如何让人不爱?我相信很多熟悉 Scheme 之类方言的童鞋,并且有 Java 背景的,都会对 Clojure 有相见恨晚的感觉。

设计原则

Clojure 的设计原则可以概括成 5 个词汇:简单、专注、实用、一致和清晰。这不是我概括的,而是《The joy of clojure》概括的。

缺陷

Clojure 的设计缺陷不能说是缺陷,这是由于它设计的目标决定的,有得必有失。

总之, Clojure 是一门精心设计的、完全融入作者对编程的思考的、富有生产力的现代编程语言,值得每个对生产效率、函数式编程、并发编程有兴趣的朋友深入了解下。

作者:Dennis Zhuang LeanCloud Tech Leader

备注:LeanCloud 采用了多种语言混合来构建整个后端系统,包括 Clojure、Java、Node.js、Scala 等。其中 Clojure 构建了整个网站门户、存储开放 API、推送、聊天等核心服务,Node.js构建了云端代码服务(类似应用代码托管),我们还使用 Scala 编写的 Spark 任务来处理离线数据分析,此外,还有大量的统计类 MapReduce 任务使用 Java 编写并运行在 Hadoop 集群上。不同服务之间使用 RESTful 协议、RPC 框架或者队列进行通信。

7376 次点击
所在节点    Clojure
4 条回复
faywong8888
2018-04-15 22:30:13 +08:00
+1
ZoomQuiet
2018-07-22 20:30:24 +08:00
是也乎,( ̄▽ ̄)

简单的说, 只有 资深的 JAVA 工程师, 才能真正用起来 Clojure
Subfire
2019-12-23 20:21:14 +08:00
boss 直聘一搜 Clojure, 缪缪不到 1 页, 搜 Golang 等, 几千页...
AndyAO
2021-01-04 09:52:49 +08:00
@Subfire #3

想到两本书上对类似现象有意思的描述

...

举例来说,假设你需要写一个软件。你的经理根本不懂这个软件的运作机制,也不知道各种编程语言有什么区别。但是,他竟然明确要求你一定要使用某一种语言进行开发。没错,他就是要求你一定要用 Java 语言。

为什么他会提出这种要求?让我们看看他脑袋里是怎么想的。他的想法无非就是,Java 是业界的标准。我知道肯定如此,因为媒体对此有铺天盖地的报道。既然它是标准,那么使用它就不会错。另外,这也意味着人才市场上肯定有无数 Java 程序员,即使现在为我打工的这批人都辞职了(真奇怪,这种事情总是不断发生),我也能够轻易地找到替代者。
嗯,这听起来也不无道理。但是,它的前提是一个没有说出口的假设,而这个假设实际上是错的。你的经理相信所有编程语言的功能都差不多,可以互相替代。如果这种想法是对的,那么他要求你用 Java 编程就很合理了。反正编程语言之间没有区别,那么就用大家都在用的那种语言吧。

但是,编程语言是不一样的。就算不探讨各种语言之间的具体区别,我也能向你证明这一点。回到 1992 年,如果你问经理使用什么语言开发软件。他会像今天一样毫不迟疑地回答说 C++。如果所有编程语言都一样,为什么答案变了?进一步说,为什么 Java 语言的设计者要如此麻烦地去创造一种新语言呢?

一般来说,如果你动手创造一种新语言,那是因为你觉得它在某些方面会优于现有的语言。

...

From:Hackers & Painters


...

首当其冲的是,亚马逊的主流语言里有两门非常啰嗦的语言 C++和 Java,外加门精练的语言 Perl 。但是 Perl 正受到排挤,渐渐退出主流。我觉得这是因为 Perl 程序员能用更少的人力完成和 Java/C++程序员同样的工作量,所以要是比人多的话,他们注定是赢不了的。根据我们的估算,亚马逊的代码量比它的功能数量膨胀得更快。

...

From:A Programmer's Rantings

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/210649

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX