是什么让某些编程语言比其他语言更强大?
我在这里要坦白一下我的无知,不过我得说,我是学会计的,从来没上过计算机科学的课。
我快要开始一个新项目了,考虑用Python而不是PHP,虽然我对PHP更熟悉,因为我听说Python是一种更强大的语言。这让我好奇,是什么让一种编程语言比另一种更强大呢?我觉得JavaScript不太强大,因为它通常是在浏览器里运行的。但是,为什么Python比PHP更强大呢?不管怎样,我都是在给计算机下指令,那为什么有些语言在理解和执行这些指令上更出色呢?我怎么知道在一个特定的项目中我到底需要多少“力量”呢?
6 个回答
我不喜欢那种说“语言X比Y更强大”的说法。真正的问题是,哪种语言能让你变得更强大。如果语言X能让你比语言Y更快地写出更好的(能正常运行的)代码,那么,是的,X就更“强大”。
如果你想要一个客观的解释来说明语言的强大程度……嗯,祝你好运。
其实这并不是一个关于“能力”的问题,而是你想做什么,以及你打算怎么做。你可以说Python“更强大”,因为它有很多内置的库;或者说C++“更强大”,因为它运行得更快;又或者说Haskell“更强大”,因为它使用了懒惰求值——总之,这其实是个人观点的问题。不过,我没见过用PHP写的桌面应用,也没见过用C++写的网页应用(当然,可能有例外)。
有些编程语言提供了一种被认为是“优雅”的方式来完成特定的任务。比如,看看Haskell中的阶乘函数:
factorial 0 = 1
factorial n = n * factorial (n-1)
有些人可能觉得这个写法优雅,主要是因为它清晰地反映了数学定义。但这真的比其他实现方式要“好”吗?不一定。(尤其是这可能会导致栈溢出。)
总之,选择你觉得最适合你任务的语言——如果你对PHP最熟悉,而且不想学Python,那就别学。如果你对Python感兴趣,那就去试试。别因为它被认为“更强大”就去学习它。
当保罗·格雷厄姆谈到Lisp是最强大的编程语言时,他指的是它的表达能力。其实,任何一种图灵完备的语言都能表达任何程序,这就是重点。让一种语言在特定任务上比另一种语言更好的原因,是它能更简洁或更清晰地定义一个程序。对于大多数编程任务来说,这才是最重要的。
偶尔(我说的确实是偶尔)性能开始变得重要,比如在你的程序中轻松嵌入汇编语言的能力会变得重要。但大多数情况下,关键还是在于能够清晰、简洁地表达你的想法。