在您看来,学习和使用元编程的最佳语言(在简单性,可读性和代码优势方面)是什么?
我认为元编程是“编码的未来”。不是说代码会灭绝,但我们可以看到这种情况会出现在新技术上。
答案 0 :(得分:8)
首先 - 我认为我不同意你的观点,即“元编程是'编码的未来'”。它是一个很棒的工具,但不是每个人都喜欢它(例如,Java设计者故意将宏从语言中删除 - 不是我喜欢Java,而是人们做有理由反对元编程)。
总之... 我可以想到两种不同的元编程方式:在合成级别和运行时。
对于语法元编程,我认为Scheme是一个很好的选择(如果你没有提到简单性等我建议使用Common Lisp)。 对于运行时元编程,我猜Prolog和Smalltalk都非常非常有趣。 (您可以动态添加,更改和删除事实到Prolog数据库;您可以动态更改Smalltalk对象)。您也可以在Ruby中执行运行时元编程,但我不了解Ruby。
所以 - Scheme中有几种不同的元编程方法(不同的宏系统)。我建议你看看一些基本的方案书,然后阅读两个不同的宏系统。
一些好的计划书:
方案实现彼此非常不同,因此您也将使用您的Scheme实施手册。
有些地方需要了解Scheme宏:
如果您决定使用比Scheme更大且更混乱的语言,请尝试使用Common Lisp。我建议有三本书:
对于Prolog,您可以阅读Clocksin和Mellish的“Prolog编程”(获取最新版本!),然后转到Covington,Vellino和Nute的“Prolog Programing in Depth”。见第6章。
有许多好的Smalltalk书籍。我喜欢Simon Lewis的“The Small and Science of Smalltalk”。 关于Smalltalk也有一个非常好的free tutorial/primer by Canol Gokel(但它并不像教授元编程那样)。
答案 1 :(得分:5)
元编程是什么意思?元编程是一组概念,而不是一种特定的技术。
请参阅this answer,其中列出了各种概念和相关语言。以下是摘要:
有关详细信息,请参阅完整答案。一般来说,我认为一个优秀的OO全能者是Ruby。否则任何类似Lisp的东西都会起作用:它就像腻子在你手中。但这取决于你想做什么......
答案 2 :(得分:5)
Lisps几乎是各种元编程技术的首选语言。在现有的Lisps中,我建议Clojure作为一个更容易访问的Lisp,如果你想要一个强大的和的东西,它可以访问一个积极的巨大的库(Java领域的任何东西)是有用的。
对于元编程的其他方法,几乎任何函数式语言都可以解决问题。 Haskell是学习技巧和函数式编程的不错选择,但不是我现在称之为实际工作的最实用的语言。 Erlang更实用,但不太适合元编程。 OCaml是另一种可能的选择,但在实用性方面也有一点不足。然而,在许多方面它比Haskell更容易获得。
在脚本语言世界Ruby是一种语言,其中元编程是一种流行的技术。它的方法模糊地类似于Lisp,但具有更传统的语法。然而,它缺乏Lisp的全部功能和灵活性,但另一方面,除了上面的Clojure之外,它还具有更直接的实用性。
答案 3 :(得分:2)
Ruby具有非常强大和灵活的元编程功能。
答案 4 :(得分:2)
我建议使用多种语言来学习元编程。
第一个是 Prolog 。 Prolog程序是一个数据库。 Prolog“代码”这些条款是数据的一部分。该程序可以读取它们,包括它们的内容。它还可以生成新代码作为数据结构并对其进行断言,从而在运行时自行更改。所有这一切都没有使用术语扩展,这是Prolog的智能宏系统。一些Prolog AI书开始在Prolog中实现元解释器,然后根据需要进行更改。
如上所述,第二个是 Lisp ,特别是包含meta-OOP命令的CLOS(公共列表对象系统)。
最后, Python 支持运行时元编程的一个很好的而不是太模糊的机制,它是元类(创建类的类)。
答案 5 :(得分:2)
我很惊讶没人提到ML。 ML代表Meta语言。所以...是的...... CaML是一个标准的实现。 (OCaML,我刚才提到的正确的OPINIO是CaML的OO版本,它可能增加了使元编程不那么明显的功能......)
除此之外,我是Scheme的忠实粉丝,但几乎任何函数式编程语言都对此有好处......总是有小Lisper,呃,对不起,Little Schemer ......
答案 6 :(得分:0)
不知道我们是否对“元编程”有相同的定义,但肯定没有一种最好的语言可供学习。我建议您深入了解函数式编程。选择哪种语言取决于您的背景和工作环境。我现在会选择F#,但Haskel也应该是个不错的选择。
欢呼声, Achim的