我在这里阅读文章:http : //www.paulgraham.com/avg.html,有关“ blub悖论”的部分特别有趣。作为主要使用c ++编写代码但接触过其他语言(主要是Haskell)的人,我知道这些语言中的一些有用的东西很难在c ++中复制。问题主要是针对精通c ++和其他某种语言的人,您是否使用某种强大的语言功能或惯用语言,如果仅使用c ++编写则很难概念化或实现?
特别是这句话引起了我的注意:
通过归纳法,唯一能够看到各种语言之间功能差异的程序员就是那些理解能力最强的程序员。(这可能是Eric Raymond所说的Lisp,使您成为更好的程序员的意思。)由于Blub悖论,您不能相信其他人的意见:他们对碰巧使用的任何语言都感到满意,因为它决定了语言的正确性。他们对程序的思考方式。
如果事实证明我等同于使用C ++的“ Blub”程序员,那么就会引发以下问题:如果您遇到过其他语言所遇到的有用概念或技术,您会发现很难概念化在用C ++编写或“思考”?
例如,可以使用Castor库在c ++中实现在Prolog和Mercury等语言中看到的逻辑编程范例,但最终我发现从概念上讲,我在考虑Prolog代码,并在使用时转换为c ++等效语言。为了扩大我的编程知识,我试图找出是否存在其他类似的有用/强大习语示例,它们可以用其他语言更有效地表达,而我可能不是C ++开发人员。我想到的另一个例子是lisp的宏系统,从程序内部生成程序代码似乎对某些问题有很多好处。这似乎很难在c ++中实现和考虑。
此问题并非旨在进行“ C ++ vs Lisp”辩论或任何形式的语言战争类型辩论。提出这样的问题是我发现有可能找出我不知道的事情的唯一途径。
there are things that other languages can do that Lisp can't
-不太可能,因为Lisp是图灵完备的。也许您是想说Lisp 中有些事不切实际?我可以对任何编程语言说同样的话。