当前位置:  开发笔记 > 编程语言 > 正文

学什么?Lisp或OCaml还是......?

如何解决《学什么?Lisp或OCaml还是?》经验,为你挑选了7个好方法。

我已经掌握了一些语言(粗略的专业知识):Python,C,C++,PHP,Javascript,Haskell,Java,MIPS,x86汇编程序.但是,自从我学会了一个新的,已经差不多2年了,我开始痒了.我有几个标准:

    必须(重复:必须)有一个免费的Linux实现

    应该与我已经知道的语言不同.换句话说,它应具有让我思考以新方式解决问题的功能.

    应该有一些实际应用的潜力.它不需要是下一个Java,但这排除了Brainf*和莎士比亚:)我真的不关心它有多少招聘帖子,但真实世界的应用程序和库是一个加号.

    应该至少有足够的免费学习材料来帮助我入门.

我在想Lisp(CL?还有什么?)或OCaml.我已经有了一些使用Haskell的函数式语言的经验(是的,我知道Lisp/OCaml是多范式的).我不是专家 - 例如来自Real World Haskell的部分代码仍然可以扭曲我的大脑,但我理解基本概念和一些高级概念(仿函数,monad).

哪一个选择?我忽略了其他任何语言?另外,您能不能包括一些有用的链接到好书/教程等.



1> Norman Ramse..:

Lisp和OCaml都不是你所知道的超级远方.这里有四个建议,部分是为了内在的兴趣,部分是为了扩展你的视野.

一种逻辑编程语言,可能是Prolog.我没有在网上找到好的资料,但是Sterling和Shapiro 的"Prolog的艺术 "一书非常出色.Clocksin和Mellish的基础教科书也很好.主要的兴趣点是用关系编程而不是函数.

纯面向对象语言,无论是 Smalltalk的或自我.如果您只使用混合面向对象语言,您会惊奇地发现纯粹的面向对象是多么美丽.我已经链接到了Smalltalk 的Squeak实现.我个人会建议在处理Self之前学习Smalltalk; 这是一个非常庞大和活跃的社区,软件也很发达.Self站在Smalltalk的肩膀上,是一个更具启发性的设计,但社区规模要小得多.对于那些可以访问ACM数字图书馆的人,我推荐Dave Ungar在HOPL-III上的精彩演讲 ; 这篇论文也很不错.

该图标的编程语言有两个伟大的事情去为它; 一个功能强大且不同寻常的评估模型,带有隐式回溯,以及一个用户可扩展的字符串处理模型,可以将正则表达式全部空洞化.我很遗憾地说Icon从来没有跟上时代的步伐,而且我的所有建议都是最不实用的.事实上,我担心语言会奄奄一息.但它会让你的思绪几乎和Haskell一样,并且在不同的方向上.Icon对于适度大小的字符串处理任务仍然非常有用.

您可以在计算机杂志的 Ralph Griswold撰写的文章中阅读有关图标字符串处理的内容.

该的Lua编程语言是我最后和最激进的建议.它的兴趣不在于新颖的语言特征或范例,而在于语言及其实现精湛工程.Lua占据了许多领域,包括脚本,游戏,字符串处理和轻量级函数式编程.但它的主要兴趣点是它与C的无缝集成,为了获得全部好处,你应该将一个C库绑定到Lua.

该HOPL-III网站还包含一个优秀的谈话有关Lua的纸.



2> Rainer Joswi..:

Common Lisp和Ocaml都非常有用.如果您已经了解Haskell,那么CL可能是更不同的体验.

SBCL和Clozure CL都是Linux上Common Lisp的非常有用的实现.(关于各种实现的概述:Common Lisp调查.)

作为一个起点,我建议使用Peter Seibel的优秀书籍Practical Common Lisp,它既可以在线获得,也可以打印出来.

社区指针在这里:CLIKI.


不,Lisp专为符号软件的进化和交互式开发而设计.所以代码是数据,数据是代码,超出了'宏'.学习使用声明性编程,交互式开发,符号计算等.这是Lisp的核心.宏只是符号编程中的一种技术.学习使用可编程编程语言.'On Lisp'对黑客很有用.更好的是PAIP,AMOP,PCL,SICP,LisP,...(各种Lisp书籍的首字母缩略词).
Common Lisp将教授/允许你在抽象中思考我认为我没见过的任何其他语言.那个及其独特的对象系统是我发现最引人注目的作为大脑成长的语言.Ocaml为您提供静态类型和工具,以创建数据状态的细微描述.其中一位创作者提出了"使非法国家无法代表"的说法,并与OCaml(或SML或Haskell)合作让您实践.以这种思维方式工作对编程思维总体上非常有益.

3> fishlips..:

Prolog可能就是你要找的.

编辑

第一个评论者是对的,我的回答很短,不太有用,所以:

我首选的实现是SWI-Prolog.我个人从Prolog Programming for Artificial Intelligence中学到了很多东西.它的风格很清晰,它包含很多例子,但我没有任何关于逻辑编程的书(真是太遗憾了),所以我没有比较基础.


其他好的免费Prolog实现是GNU Prolog和YAP(Yet Another Prolog).对于Prolog,Haskell和Lisp的混合,请参见Qi(但此时它的社区非常小)
如果你指出一个实现和一本入门书,你会得到我的支持.Prolog被低估了.值得更多关注,恕我直言.

4> Sasha Chedyg..:

Erlang非常有趣,因为它具有超高效的并发模型,并且您可以轻松编写分布式系统(例如,CouchDB是用Erlang编写的).它是一种动态类型的函数式语言,但您也可以以过程的方式编写代码.我学习它的教程叫做"Erlang入门",它几乎涵盖了语言的每个部分.



5> Ionuț G. Sta..:

我打算推荐一些我尚未尝试过的东西,但是要计划,所以你必须自己判断这个.这种语言称为IO,它的特殊之处在于它基于原型,就像JavaScript一样,但也借用了许多其他语言的概念.它的就业市场可能不存在,但我想我提到了这种语言.

否则,Lisp系列中的语言可能与您已知的语言有很大不同.在这方面,我推荐Scheme,在我看来,它比Common Lisp更优雅.您可能在Scheme中感兴趣的新概念是延续.

如果你采取计划路径,花一些时间观看这些视频从1986年.他们是惊人的.



6> 小智..:

看看Smalltalk吧!Cincom VWST或Smalltalk/X - 不要打扰Squeak,因为接口很糟糕).VAST也不错,但实际上只有Windows中心.并且不要为那些在Smalltalk上嗤之以鼻的怀疑论者而烦恼 - 他们并没有使用它,而是陷入编辑运行调试循环语言和多个文档链接库的泥潭中.:-)

为什么这些Smalltalks - 嗯,他们完整的IDE,内置的GUI工具,你将看到的最佳调试器,在线帮助,并完全独立于底层操作系统.例如,在Linux下运行的ST/X编程可以传输(源代码)到Windows ST/X并且它应该执行.

ST/X是免费的,只有非常小的许可限制,Cincom提供免费的NC(非商业)版本,不受限制.我使用ST/X,因为我更喜欢它提供的默认外观.他们的IDE接口非常相似.

没有IDE和GUI工具的语言只是浪费你的时间,因为世界真的是GUI,无论底层语言有多么糟糕.例如Ruby很棒,但是没有IDE或简单的GUI工具,它真的令人沮丧.

Smalltalk不容易进入,它不完美,(用什么语言?)但学习和使用非常令人满意.现在硬件和操作系统终于赶上了Smalltalks的需求.效率很高.



7> Brian Carper..:

如果你想利用你的Java和函数式编程知识,并且你想学习一个Lisp,那么试试Clojure.

该实现是免费的,包括Linux在内的跨平台,因为它在JVM上运行.作为一个Lisp,它与大多数其他语言的不同(以有用和美妙的方式)使事情变得有趣.与您列出的语言相比,某些功能(如不可变数据结构,多方法,元数据支持,专注于安全并发等)相当新颖.Clojure非常注重成为一种实用而有用的语言而不是学术语言.它是一种功能性语言,但不是"纯粹的",这可以说是一件好事.您还可以轻松地使用Clojure中的任何Java库.

Clojure是一种新语言,所以到目前为止唯一的书是Programming Clojure,但它是一个非常好的.还有一个维基可能不是完全最新的,因为语言仍在快速发展.该邮件列表和IRC频道都非常友好,热情地问问题.当然,官方网站也是一个很好的资源.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有