Statistics 逻辑语言-Prolog或Lisp/Smalltalk或其他语言?

Statistics 逻辑语言-Prolog或Lisp/Smalltalk或其他语言?,statistics,lisp,prolog,Statistics,Lisp,Prolog,因此,我正在编写某种统计程序(实际上我正在将其重新设计为更优雅的东西),我认为我应该使用一种为这类东西创建的语言(处理大量统计数据、它们之间的联系以及某种遗传/神经编程) 说实话,我只是想找个借口深入研究lisp/smalltalk(smalltalk/lisp/clojure不是一样吗?——像python和ruby?——语义方面的),但我也希望有一种语言能够被其他喜欢基本语言的人容易理解(这就是为什么我没有选择lisp的原因——至今:D) 我还检查了Prolog,它似乎是一种非常酷的语言(数据

因此,我正在编写某种统计程序(实际上我正在将其重新设计为更优雅的东西),我认为我应该使用一种为这类东西创建的语言(处理大量统计数据、它们之间的联系以及某种遗传/神经编程)

说实话,我只是想找个借口深入研究lisp/smalltalk(smalltalk/lisp/clojure不是一样吗?——像python和ruby?——语义方面的),但我也希望有一种语言能够被其他喜欢基本语言的人容易理解(这就是为什么我没有选择lisp的原因——至今:D)

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

Thx

编辑:
我总是把普通的口齿不清和Smalltalk混淆起来。很抱歉把这两个Lang放在一起。我所说的“其他喜欢基本语言的人”的意思是,我不喜欢像lisp这样的语义语言(对于没有CS背景的人来说),我觉得Prolog更直观一点(但这是我对这两种语言都有点误解后的看法).

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

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

如果你一心想学另一门语言,那就一定要去学。和有几种很好的免费实现(有些像在语音中,有些像在啤酒中)


如果要在系统上安装用户界面,Smalltalk可能是更好的选择。如果您想创建大型规则集作为应用程序的一部分,Prolog就是为这类事情而设计的。各种各样的人都会影响您对编程的思考方式,但我不能从经验中真正证明这一点——我只是真正使用AutoLISP在AutoCAD上编写自动化脚本。

我可以部分回答您的问题

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

不,不是。Smalltalk是一种OO语言,使用消息传递代替方法调用。Lisp是Lisp;-)它意味着真正的函数式语言,具有强大的宏系统、OO支持,这在其他语言(CL)中是前所未有的,还有更多的功能。闭包是一种类似于Lisp的语言,没有很多Lisp特性,但与JVM集成良好。例如,它不支持尾部调用优化。python或ruby是经典的命令式OO语言,功能有限。注:文字有限公司。例如,Guido不喜欢函数式编程,并删除了版本2.5和2.6中的一些函数特性


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

如果您对Prolog感兴趣,那么有一个免费版本可用,并且商业版本的价格合理

它是Prolog的一个强大类型分支,因此不是该语言的经典实现,但有着值得尊敬的历史——Borland早在80年代末就将它的DOS祖先作为Turbo Prolog进行了营销


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

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

  • Smalltalk—从头开始的纯OO,通常(例如Squeak)与集成环境结合在一起,集成环境同时是IDE和运行时。这样,您就可以进入Smalltalk虚拟机并在其中工作,而不仅仅是编写“源代码”文本

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

  • Clojure——LISP、OO和JVM集成的结合使得这个更不基本

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

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

基本上所有这些语言(尤其是Prolog、IMHO)中使用“本地口音”编写的代码都将使用惯例规范之外的习语和概念