1
17
回答问题的“背景”部分: 我想你应该读一下JRG W.Mittag的 answer 一个题为“现实世界哈斯克尔编程”的问题。他取得了许多优异的成绩。继续阅读我在现实世界问题上对FP的看法;滚动到横线以获得两个实际问题的答案。 有许多以FP为中心的公司似乎非常擅长他们所做的事情;例如,谷歌简街(ocaml)、伽罗瓦(haskell)、Flightcaster(clojure,后端重提升;我似乎记得他们的前端目前是在Rails中完成的)。假设自动交易策略通常是用面向FP的语言编写的;这确实非常有意义,尽管我没有内部数据来证实这一点。有关Clojure的其他示例,请参见 the list of companies on the success stories page . 有些人似乎在满足Rails、Django等现实世界应用程序的需求方面获得了一定程度的成功。似乎他们觉得没有必要接触J2EE和朋友。不是说这些与外交政策有很大关系,而是 喜欢 因为他们是 没有什么 就像现在的“企业语言”。 对于两个实际问题: 为什么不拿起你上次想做的事情,在Clojure做呢?显然,任何事情都可以用Java来完成(大多数事情可能已经完成了),但是更简洁的语言可以使产品更干净,体验更愉快,时间更少。 关于混合Culjure和Java-我已经看到了一个相当数量的Culjule代码使用两个直接在Java中编码的类(不管什么原因)。我试着用另一种方式来绕过自己,这是一种痛苦,因为使用接口继承比在Culjure中继承类要简单得多,Java代码中的意外耦合会严重干扰CuljuleCo代码以最自然的方式做事的能力。然而,完全可以扩展J。在Culjule中的AVA程序,它看起来是一种特别安全和明智的方法,用于担心Java开发者。 |
2
9
函数式编程几乎可以应用于任何任务。网络应用程序,科学应用程序,游戏,等等。 混合Culjule和Java是非常常见的,因为Culjress没有很多专用的库,例如I/O或网络。 已经拥有大量Java代码的组织可以使用CujJueE用于Java项目的小部分。 对于新项目,使用Culjure作为高级驱动语言通常更有效,在必要时调用Java库。 |
3
5
我一直在使用Clojure开发一个小型的Web应用程序,虽然这个应用程序没有什么特别之处,但它的编写经验却完全不同。我用ASP.NET编写了Web应用程序,搬到Clojure不是为了学习不同的语法,而是为了学习不同的思考和编程方式。不管你选择做什么项目,都要学习一种不同的思考方式,所以我不担心找到完美的功能项目,而更担心找到你只想做的事情。 |
4
3
我认为这个问题的答案很大程度上与你的项目所嵌入的环境以及对你施加的约束有关。没有社会因素,我认为Clojure至少是一个“好”的语言,Java是任何问题,除了可能的情况下,你需要最后一点的性能。即使在这些情况下,事情也没有看上去那么简单。首先,在理论极限下,一些未来版本的CuljEube可能会被编译成字节码,就像Java编译成的那样“快”(假设程序员从瓶颈中得到更多的工作)。更重要的是,优化是一个多因素的问题,其中程序员的生产力和代码的灵活性是一个多因素的问题。严重的因素。因此,尽管有一种感觉可以准确地说CuljEube比Java慢,但在讨论特定应用程序的性能时,这种感觉可能不是重要的。 所以我会说,如果你忽视社会因素,Culjule的用例接近Java的超集,但我不会试图用Lojjule编写Linux内核模块… 当然,并不是所有的问题在函数语言中都有同样自然的解决方案。但是人们已经想出了一些有趣的方法来处理某些情况,其中fp似乎很难映射到域,无论如何,Clojure实际上为您提供了足够的从纯fp中逃脱的阴影,如果您真的觉得有必要以命令式的方式编写程序的一部分,您可以(当然,您放弃了在这种情况下,在最坏的情况下,你可以使用Culjule来驱动Java库,其方式与Java中的相同。很难想象这样的情况会是个好主意,但在大多数情况下,它不会明显地低于使用Java的情况,并且在许多情况下它可能会更好。 我仍然是Culjule的新手,虽然我已经在CL和Clice中编程了很长一段时间,我花了大约五年的时间编写Java来谋生。但我可能更喜欢Culjule到Java,因为几乎没有任何东西,甚至不知道它,只要没有涉及社会因素。 但忽视社会因素是错误的。我已经是一个Lisp程序员足够长的时间了,对于Lisp在给定的上下文中工作的好坏,我有一种磨练得很好的直觉。我已经把Lisp介绍给商业环境,这是一个巨大的胜利,我也把它介绍给了真正没有商业环境的环境。我会考虑长期和努力,把你的职业生涯押在成功地将一个程序员团队过渡到任何Lisp,包括Clojure,特别是如果他们不太热衷于这个想法。 为了让你了解一下我认为Clojure可能有用的功能,我目前在Clojure中编写了很多与扑克相关的代码。其中一些是相当简单的东西(从七张牌中找出你能打出的最好的五张牌),而其中一些则更有趣(通过一些试探法和一些基本统计数据查看某人的打牌历史并从中提取有意义的趋势)。所有这些都不需要Clojure复杂的并发机制。NISMS,但它仍然更好(至少在我)在Culjule比它将在,例如,爪哇。 当然,还有一些其他的案例,有人可能会描述Clojure因其复杂的并发管理机制等而赢得了巨大的成功。我的目标是一些更温和的东西-我只是指出,即使您不需要这些机制,您可能会发现Clojure是一种非常适合于通用编程的语言,al如果你来自一个命令式的/oo背景,那么你需要重新思考你是如何抽象事物的。嘿,如果您需要并发机制(正如您可能需要的那样,事情的发展方向),至少您已经了解Clojure了。 |
5
3
我喜欢在学习新语言时编写游戏程序。 我正在学习Clojure,开始写蜘蛛纸牌。如果你从来没有玩过蜘蛛,不要开始;它是非常有加性的-)。见 http://www.spidersolitaire.org/ . 在编写这个游戏时,我将使用一些我想学习的东西:函数编程、并发、Java交互(Swing)等等。 我也开始写一个珠宝玩家( http://www.popcap.com/games/free/bejeweled2 但是在找到比赛得分的决定性规则时遇到了问题。 |
Freid001 · 具有最小和最大限制的架构? 6 年前 |
phlie · Hoplon With Castra加载后端时出错 6 年前 |
David Furnam · Clojure从数组中获取坐标 6 年前 |
Jeroen · 如何将惰性序列转换为映射? 6 年前 |