11

所以,我正在编写某种统计程序(实际上我正在将它重新设计为更优雅的东西)并且我认为我应该使用为这种东西创建的语言(处理大量的统计数据,它们之间的连接和某种遗传/神经编程)。

说实话,我只是想要一个深入研究 lisp/smalltalk 的借口(smalltalk/lisp/clojure 不一样吗?-像 python 和 ruby​​ 一样?-semantics-wise)但我也想要一种易于理解的语言其他喜欢 BASIC 语言的人(这就是我没有选择 LISP 的原因 - 还 :D)。

我还检查了 Prolog,它似乎是一种非常酷的语言(易于处理数据之间的关系并且比 Lisp 更容易),但我想听听您的想法。

谢谢

编辑:我总是把普通的 lisp 和 Smalltalk 混为一谈。很抱歉把这两个语言放在一起。另外,我所说的“其他喜欢 BASIC 语言的人”的意思是,我不喜欢像 lisp 这样具有语义的语言(对于没有 CS 背景的人),我发现 Prolog 更直观一些(但那是我的我只是把他们俩都弄乱了一点之后的意见)。

4

5 回答 5

10

有什么特别的理由不使用R 吗? 这是一种构建与购买(或在本例中为下载)的决定。如果你在做统计计算,R 有很多现成的包。其中包括用于各种类型数据源的许多库和接口。还有用于将 R 嵌入其他语言(例如 Python)的接口库,因此您可以使用Python 中的 GUI(例如)和使用 R 的核心计算引擎构建混合应用程序。

在这种情况下,您可能会减少实现所需的工作量并最终获得更灵活的应用程序。

如果你下定决心要学习另一种语言,那就去做吧。Smalltalk、 PrologLISP有几个很好的免费实现(一些在语音中,一些在啤酒中) 。

如果您要在系统上放置用户界面,Smalltalk 可能是更好的选择。如果您想创建大型规则集作为应用程序的一部分,Prolog 就是为这类事情而设计的。很多人都写过关于 LISP 顿悟的文章,它会影响你对编程的看法,但我不能从经验中真正保证这一点——我只是真正使用 AutoLISP 在 AutoCAD 上编写自动化脚本。

于 2009-01-02T10:25:11.003 回答
8

冒着冒犯某些人的风险,我很难将“喜欢 BASIC 语言的其他人容易理解”与您提到的任何语言调和起来。这并不是要批评,而是要观察到您提到的每种语言都具有与 BASIC 完全不同的风格和自然习语。

  • Smalltalk - 从头开始​​的纯 OO,通常(例如 Squeak)与同时是 IDE 和运行时的集成环境相结合。IOW 您进入 Smalltalk VM 并在其中工作,而不仅仅是编写“源代码”文本。

  • LISP - 更接近函数式编程(尽管带有命令式泛音);前缀符号是大多数“喜欢”其他语言的人的第一个障碍,但宏的概念和使用是一个更重要的障碍。

  • Clojure - LISP、OO 和 JVM 集成的组合使得这个更不像 BASIC。

  • Python 和 Ruby - 我将它们混为一谈(冒着进一步惹恼任何一个粉丝的风险 ;-),因为它们都是 OO 语言,具有不同的符号,这将使局外人有点学习曲线。在 Python 中仅使用缩进来进行控件嵌套以及在 Ruby 中使用类似 Perl 的特殊字符通常是新手抱怨的要点。尽管两者都可以以命令式风格编写,但经验丰富的用户会认为这不是标准的。

  • Prolog - 这是所有提到的语言中最不同于 BASIC 的。您提到的所有其他语言都可以(ab)以半程序风格使用,但这在 Prolog 中基本上是不可能的。它需要对递归有透彻的理解和舒适,才能做任何不平凡的事情。

基本上所有这些语言(但尤其是 Prolog,恕我直言)用“本地口音”编写的代码将使用常规 BASIC 编程规范之外的习语和概念。换句话说,如果您选择其中一个然后编写“带有 BASIC 口音”的代码,那么您几乎浪费了该语言可以提供的好处。

我相信他们都值得学习他们可以教授的概念(或至少加强,取决于你的背景)。但是与语言 X 的相似性(对于广泛的 X 值)不是你会得到的。

于 2009-01-02T14:55:16.827 回答
3

我可以部分回答你

(Smalltalk/Lisp/Clojure 不一样吗?-像 python 和 ruby​​?-语义方面)

不它不是。Smalltalk 是带有消息传递而不是方法调用的 OO 语言。Lisp 就是 Lisp ;-) 它意味着真正的函数式语言,具有强大的宏系统、其他语言(在 CL 中)中从未见过的 OO 支持以及更多功能。Closure 是一种类似 Lisp 的语言,没有很多 Lisp 特性,但与 JVM 有很好的集成。例如,它不支持尾调用优化。而 python 或 ruby​​ 是经典的命令式 OO 语言,功能能力有限。注意字数有限。例如,Guido 不喜欢函数式编程,并在 2.5 和 2.6 版本中删除了一些函数式特性。

如果您熟悉 Python 中的命令式过程编程并且您想改变您的范式,那么您应该谨慎地做出决定。

于 2009-01-02T10:45:25.797 回答
2

Prolog 是一种非常不同的语言。它可能很难掌握,主要是因为它严重依赖递归来完成非常基本的任务。如果你真的愿意,那就试试吧。它可以非常强大,因为它允许表达关系并简单地解决复杂的问题,典型的例子是河内塔或快速排序。它将改变您的思维方式,如果您习惯于命令式语言,这可能会很困难。

于 2009-01-02T17:20:28.283 回答
0

如果您对 Prolog 感兴趣,那么可以使用Visual Prolog的免费版本,而商业版本的价格也很合理。

它是 Prolog 的强大类型分支,因此不是您对该语言的经典实现,但有一段可敬的历史——Borland 在 80 年代后期将其 DOS 祖先作为 Turbo-Prolog 推向市场。

它也仅限于 Windows,但可用于创建标准 Windows DLL,因此您可以将代码链接到“普通”Windows 编程语言。我自己从来没有在愤怒中使用过这个包,但是我在 Uni 上过几个 Prolog 课程,所以不时下载它来玩并寻找可能的用途,它看起来足够可靠。可能只是您正在寻找的一组齿轮。

于 2009-01-02T10:46:07.793 回答