我正在学习 Clojure,我真的很喜欢它的一些功能。是时候考虑一些真正的“宠物项目”了,我意识到我不知道如何真正做到这一点use克洛朱尔。
我看到很多网络和模板框架(例如 Compojure),但不知何故我怀疑它是否值得。我认为从长远来看,它无法满足您使用 Spring、Hibernate 和 Java EE 堆栈的某些部分来解决的现实应用程序的需求。
另一方面,我看到了并发功能的巨大潜力,但我对如何真正使用它们缺乏想法。
背景足够了,我的问题是:
- Clojure和函数式编程有哪些可行的应用?对于一个宠物项目,您能提出什么想法,而不是将我用 OO/Java EE 所做的事情重写为不同的语法?我正在寻找真正能够发挥 Clojure 潜力的东西,并带来一种比 OO/结构编程感觉更好的解决方案(不仅仅是在语法上)。
- 混合 Clojure 和 Java 是否常见,或者至少合理?我的意思是要么在 95% 的 Java 项目中使用 Clojure 来构建小型库,要么在 Clojure 编写的核心之上构建 Java 应用程序。
Edit:感谢所有精彩的回答。他们都非常鼓舞人心。因此,如果您还有其他需要补充的内容,请尽管补充,不要因某项已被接受而被推迟。
回答问题的“背景”部分:
我认为你应该读一下 Jörg W. Mittag 的书answer https://stackoverflow.com/questions/1113226/real-world-haskell-programming/1113332#1113332一个题为“现实世界 Haskell 编程”的问题。他提出了许多精彩的观点。请继续阅读我对现实世界中 FP 问题的看法;滚动越过水平线以获取两个实际问题的答案。
有许多以 FP 为中心的公司似乎非常擅长他们正在做的事情;举一些例子,谷歌Jane Street(OCaml),Galois(Haskell),FlightCaster(Clojure用于后端繁重工作;我似乎记得读过他们的前端目前是在Rails中完成的)。据称,自动交易策略通常是用面向 FP 的语言编写的;这确实很有意义,尽管我没有内部数据来证实这一点。有关 Clojure 的其他示例,请参阅成功案例页面上的公司列表 https://clojure.org/community/success_stories.
有些人似乎在解决 Rails、Django 等现实世界应用程序的需求方面取得了一定程度的成功。他们似乎觉得没有必要接触 J2EE 及其朋友。并不是说这些与 FP 有很大关系,但它们是likeFP 因为他们是nothing就像现在的“企业语言”。
至于两个实际问题:
为什么不直接选择您上次想做的事情并在 Clojure 中完成呢?显然,任何事情都可以用 Java 完成(而且大多数事情可能已经完成),但更精简的语言可能会使产品更干净、体验更愉快、耗时更少等。
关于混合 Clojure 和 Java——我见过相当多的 Clojure 代码使用几个直接用 Java 编码的类(无论出于什么原因)。我自己尝试过反其道而行之,这有点痛苦,因为在 Clojure 中使用接口继承比使用类继承要简单得多,Java 代码中的意外耦合会严重干扰 Clojure 代码的能力尽管如此,在 Clojure 中扩展 Java 程序是完全可能的,对于忧心忡忡的 Java 开发人员来说,这似乎是一种特别安全且明智的试验方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)