函数编程的真实世界实现?[关闭]


9

我试图使自己熟悉不同类型的语言,以了解每种语言都非常擅长的领域。到目前为止,我已经涉猎C –一种过程语言,C ++和Java –静态类型的面向对象语言和groovy –一种动态类型的面向对象语言。

每种编程语言可能已经开始满足需求。而且我认为每种语言在至少一件事上都非常优秀,因此它成为特定领域或领域的标准。与C一样,C ++已成为浏览器或游戏开发等领域的标准。Linux世界中的Python以其易于编写脚本的能力而著称,而企业界中的Java等。

现在,我有兴趣学习像Clojure或Lisp这样的函数式编程语言。那么,现实情况中的函数式编程语言在哪里使用?我不认为有人会使用Clojure或Lisp开发应用程序或UI。因此,在学习了基础教程和学习资源以简要了解函数式编程的实现之后,我应该沉迷于什么样的项目?您是否强烈建议您使用一种语言,例如clojure?


5
“而且我认为每种语言在至少一件事上都非常出色,因为它成为特定领域或领域的标准。”通常情况并非如此。认为语言以某种方式“专业化”是危险的假设。几种语言都有利基,但通常情况并非如此。
S.Lott

6
“我不知道如何以及从哪里开始。” 是什么使您无法开始学习教程?您能解释为什么这些语言的教程没有帮助或有用吗?
S.Lott

“ C ++和Java”彼此之间几乎没有关系。
DeadMG

除了它们遵循函数式编程范式的原因之外,我是否可以让您真正了解您学习Clojure或Lisp的原因?
Maxood 2012年

3
当您说“实时”时,您是说“现实世界”吗?在这个问题的背景下,这似乎更有道理。
sepp2k 2012年

Answers:


13

你说的是现实世界中的函数式编程,我想是Erlang。

Erlang是一种编程语言,用于构建对高可用性有要求的大规模可扩展的软实时系统。它的一些用途是在电信,银行,电子商务,计算机电话和即时消息中。

http://www.erlang.org/


3
+1 Korrecto!另外,我想补充一点,对于功能领域的初学者来说,“最纯正的”功能语言就是Haskell :)
yati sagade 2012年

5

斯坦福大学(Stanford University)举办了精彩的有关函数式编程的系列讲座,您可以在YouTube上查看。

我建议您研究Scheme而不是LISP。Scheme是Lisp的修改版本,具有进一步的增强功能。该计划主要用于学术和培训目的。如果您想进行理论计算机研究,这是一种很棒的语言。

应用范围

适用于Android的Google App Inventor使用Scheme,其中Kawa用于将Scheme代码编译为运行在Android设备上的Java虚拟机的字节代码。Synopsys使用Elk Scheme作为其技术CAD(TCAD)工具的脚本语言。

仅供参考:方案的使用


不知道,如果这个问题可以帮助你:programmers.stackexchange.com/questions/25056/...
Maxood

1
这是LISP的书籍(免费和在线!):gigamonkeys.com/book它涵盖“实用”项目,例如ID3标签解析器,Web编程和垃圾邮件过滤。
FrustratedWithFormsDesigner 2012年

5

mailrank.com的创始人Bryan O'Sullivan(已被Facebook收购)在Haskell中构建了该软件的整个服务器端。他在Strange Loop 2011上对此进行了介绍,可在线观看视频幻灯片

那个家伙写了一本书,叫做《真实世界》。几个人提到了编程教程。这可能很适合您的兴趣(我也喜欢Erlang的建议)。


4

我从金融界的朋友那里知道,量化交易公司Jane Street使用OCaml实施其交易策略。他们在一个页面上谈论原因,以及指向该话题的链接。


2

以下是Common Lisp成功案例的列表:

http://wiki.alu.org/Industry%20Application

http://www.franz.com/success/

http://www.lispworks.com/success-stories/index.html

尽管Common Lisp只是部分功能(它还支持OOP和过程式程序,以及您希望实现自己的任何东西,或使用库),但它是一种非常实用的语言,在称职的程序员手中非常强大。我实际上使用它来编写具有出色RESTAS框架的Web应用程序。

我现在正在从事的商业python项目最终将由以Lisp编写的服务(如其名称所建议的RESTAS对于RESTful服务非常有用)进行补充。


1

我建议您深入研究编译器(针对通用语言或DSL)-这是函数式编程的最佳选择。从频谱的一侧的ADT和模式匹配到另一侧的Lisp宏,将探索许多有趣而有用的事情。


0

您可能想看看Hume

“休ume编程语言”页面中:

Hume(高阶统一元环境)是一种强类型的,功能最强大的语言,带有用于开发,证明和评估并发,安全关键系统的集成工具集。Hume旨在通过引入新的抽象和可证明性级别,来扩展资源受限系统(包括实时嵌入式和安全性至关重要的系统)的语言设计领域。

Wikipedia Hume页面:

休ume(Hume)是一种基于功能的编程语言,由苏格兰的圣安德鲁斯大学赫瑞瓦特大学开发,以18世纪哲学家大卫·休ume(David Hume)命名。它以实时嵌入式系统为目标,旨在产生高度抽象的设计,但仍将精确提取时间和空间执行成本,因此允许编写将在保证的有限时间和空间约束下执行的程序。

休ume在将函数编程思想与有限状态自动机思想相结合方面是不寻常的。自动机用于将通信程序构造为一系列“框”,其中每个框都使用高级模式匹配以纯功能性的方式将输入映射到输出。将其构造为一系列级别(每个级别都显示不同的机器属性)也很不寻常,这非常不寻常。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.