代码之家  ›  专栏  ›  技术社区  ›  Jon Romero

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

  •  11
  • Jon Romero  · 技术社区  · 17 年前

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

    谢谢

    编辑:

    5 回复  |  直到 7 年前
        1
  •  10
  •   OmG    7 年前

    有没有什么特别的理由不使用 R? 这是一种构建与购买(或者在本例中是下载)的决定。如果你在做统计计算,R many packages 现成的。其中包括用于各种类型数据源的许多库和接口。还有一些接口库可用于在其他语言中嵌入R such as Python, GUI in Python (for example) 以及使用R。

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

    written about the LISP ephiphany

        2
  •  8
  •   OmG    7 年前

    冒着得罪某些人的风险,我很难和解” 容易被其他喜欢基础语言的人理解 不 作为一种批评,但作为一种观察,你提到的每种语言都有一种风格和自然的习语,与BASIC语言截然不同。

    • 里面 而不仅仅是写一篇“源代码”文本。

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

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

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

    基本上所有这些语言(尤其是Prolog、IMHO)中使用“本地口音”编写的代码都将使用常规BASIC编程规范之外的习惯用法和概念。换句话说,如果你选择其中一种,然后用“基本口音”编写代码,那么你就浪费了这种语言所能提供的好处。

    我相信所有这些都是值得学习的,因为它们可以教授(或至少强化,取决于你的背景)。但是与语言X的相似性(对于X的各种值)并不是你所能得到的。

        3
  •  3
  •   OmG    7 年前

    我可以部分回答你

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

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

        4
  •  2
  •   void void    17 年前

        5
  •  0
  •   OmG    7 年前

    如果您对Prolog感兴趣,那么有一个免费版本的 Visual Prolog

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