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