首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从祈使到函数式编程

从祈使到函数式编程
EN

Software Engineering用户
提问于 2012-09-30 09:28:15
回答 3查看 1.4K关注 0票数 5

作为一名电子工程师,我的编程经验从组装开始,并继续使用PL/M、C、C++、Delphi、Java、C#等(命令式编程在我的血液中)。

我感兴趣的是增加我以前关于函数式编程的知识和技能,但到目前为止,我所看到的一切似乎都非常模糊和深奥。

你能回答我这些问题吗?

1)今天的主流函数式编程语言是什么(我不想因为X语言具有Y特性而迷失自己的学习大量FP语言)?

( 2)第一个FP语言是什么(如果你想的话,它是函数式编程的Fortran )?

3)最后,在谈论纯FP和非纯FP时,每个类别的主流语言是什么?

提前谢谢你

EN

回答 3

Software Engineering用户

发布于 2012-09-30 09:45:45

我的回答是: Lisp,Lisp和Lisp。

对于第一个问题,这可能是一个有争议的答案。当然,喜欢微软开发栈的人会认为F#是更主流的--毕竟,它就在你的开发者的工具链中,可以安装(或已经安装)在数百万台PC上。学术界对Haskell更感兴趣,但在这里,现实世界的使用也比他们所希望的要少。电信工程师们却对Erlang发誓。但是当把所有方言结合在一起时--教学和扩展语言的方案,企业级应用程序的通用Lisp,真正的编辑器Emacs lisp,酷酷的Java孩子的Clojure .它们可能只是最常用的功能性语言。(请注意,编程语言市场份额是一个高度政治化的话题,您收到的任何答案都会被其他意见撕成碎片。)

第二个问题很简单。除非您想要计算纯数学的lambda微积分,Lisp是第一位的--尽管它最初也是作为一种数学建模工具来使用的,但结果证明它很容易实现,其余的都是历史。那是20世纪50年代。

问题三:普通的Lisp绝对是非纯的,而Scheme更像Haskell这样的纯粹的公理系统,它严格地将副作用与计算分离开来。再说一遍,关于市场份额的问题总是有争议的,而且Scheme肯定不是最纯粹的FP语言,只是(我猜)使用最多的语言--即使这其中大部分是由于计算机科学新生的群体所致。而且,Common也不是最不纯的语言--我认为所有的“JVM上的Lisp”工具都不那么纯净,因为利用巨大的Java库生态系统是它们存在的原因之一。如果我不得不猜测,我会说其中之一可能会成为函数式编程的下一个大赢家。

票数 9
EN

Software Engineering用户

发布于 2012-09-30 11:17:37

1)今天的主流函数式编程语言是什么(我不想因为X语言具有Y特性而迷失自己的学习大量FP语言)?

我会很犹豫在这里说出一个名字。FP本身根本不是主流语言,所以称任何FP语言为“主流”都是愚蠢的。

有几种FP编程语言寻求通过支持主流平台(例如JVM或.NET)与主流编程相联系,例如Scala、F#和Clojure,还有一些主流编程语言至少有一定程度的FP支持(JavaScript是最流行的)。

在FP领域,Lisp (Common和Scheme是最突出的方言,Clojure是一个相对较新的语言)可能在用户数、库和平台支持方面处于领先地位。当然,除非您计算JavaScript,这在许多方面与Scheme惊人地相似(如果您可以忽略语法的话)。

( 2)第一个FP语言是什么(如果你想的话,它是函数式编程的Fortran )?

绝对是Lisp。这一点毫无疑问。

3)最后,在谈论纯FP和非纯FP时,每个类别的主流语言是什么?

如果你想要真正的纯粹,实际上几乎没有选择-- Haskell强调要做到完全纯净(语言本身:运行时可以并且通常执行不纯的操作),而且有几种实验语言遵循类似的哲学,但在各种方面与Haskell不同。AFAIK,其他的都允许这样或那样的不纯的构造,有些人比其他人更多的是关于它的学术。

票数 5
EN

Software Engineering用户

发布于 2012-09-30 14:29:38

1)根本就没有。可能的选择是F# (来自MS并与.NET框架集成)、GHC (在几个最流行的平台上编译为本机代码、绑定到许多C和C++库)、scala (jvm选择,尽管它有局限性)。对于动态类型,请查看Erlang (跨平台,重点关注并发性、并行性和网络通信)和lisp后代: clojure (用于JVM平台)、racket方案(本机代码)。

( 2)lambda微积分。不过,这只是数学模型。第一个实现的FP语言是Lisp和后来的SASL。

3)对于纯FPL来说,它目前是haskell --唯一普遍存在的纯惰性FPL (尽管GHC方言有不纯的特性)。不纯洁的人没有明确的领袖。除了F#之外,SML家族正在消亡,所以我可能会坚持使用F# (他们说它对Mono有问题)或一些骗人的方言。

除了纯/不纯的全息图,还要注意静态/动态类型的全息图。我显然是站在静态的一边,但我很清楚很多人更喜欢Dynamic (lisp方言,Erlang等等)。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/166791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档