ben*_*ben 1 lisp enterprise haskell functional-programming ml
Lisp在学术界很早就开发了一套有趣的语言功能,但大多数都没有在生产环境中流行.
有些语言,比如JavaScript,改编了基本功能,如垃圾收集和词法闭包,但所有可能实际上改变你大规模编写程序的东西,比如功能强大的宏,代码作为数据的东西和自定义控件结构,似乎在其他功能语言中传播,其中任何一种都不适用于非平凡的项目.
功能编程社区还提出了许多其他有趣的想法(除了函数式编程本身),如引用透明性,通用案例表达式(即模式匹配,不像C/C#开关那样残缺)和curried函数,似乎在常规编程中显然很有用,并且应该很容易与现有的编程实践集成,但由于某种原因似乎永远陷入了学术界.
为什么这些功能很难被采用?是否有任何现代的,实用的语言实际上是从Lisp中学习而不是半复杂地复制"一流的功能",还是存在使这不可能的内在冲突?
nlu*_*oni 20
是否有任何现代的,实用的语言实际上是从Lisp中学习而不是半复杂地复制"一流的功能",还是存在使这不可能的内在冲突?
为什么不是lisp,haskell,ocaml或f#modern?
您可能只需要自己接受并查看它们并意识到它们更强大,使用像Java这样的库,然后您就会想到.
从功能语言到其他语言已经采用了许多功能.但反之亦然 - (某些)功能语言具有对象.
语言"追赶"与是否具有强大,精心研究和精心设计的特征之间没有已知的相关性.
关于这个问题已经说了很多.它遍布技术和艺术.我们知道艺术家A比艺术家B有更多的训练和创作更广泛和深度的作品,但艺术家B在市场上更为成功.是因为有一个时代精神?是因为艺术家B有更好的营销方式吗?是因为大多数人不会花时间去理解艺术家A吗?也许艺术家B暗中可怕,我们应该不信任对艺术家做出判断的专家?可能以上所有,在某种程度上.
这使得学习艺术的人和学习编程语言的人疯狂.
Scala是语言的绝对之王,它具有重要的学术特征.更高的种类,自我类型,多态模式匹配等等.所有这些都是前沿(或接近它)的学术研究课题,已被纳入Scala作为基本特征.可以说,这已经损害了语言的简单性,但它确实导致了一些非常有趣的模式.
C#比Scala更主流,但它也采用了更少的"外部"功能.LINQ是Wadler广义列表推导的有限实现,每个人都知道lambdas.但就此而言,C#(理所当然地)在采用学术界的研究特色方面仍然有点保守.
小智 5
Erlang最近不仅通过Twitter使用,而且通过XMPP驱动的消息传递和ejabberd等实现的兴起获得了新的曝光.它体现了许多来自功能性编程的想法,这些想法是为此而设计的语言.最初用于运行电话交换机,由Ericson构思运行第一个GSM网络.它仍然存在,它功能齐全(作为一种语言)并在许多生产环境中使用.