是什么让一些编程语言比其他语言更强大?

时间:2010-10-18 21:12:28

标签: python programming-languages

我将在这里揭示我的无知,但在我的辩护中,我是一名会计专业,而且我从未上过计算机科学课。

我即将开始一个新项目,我正在考虑使用Python而不是PHP,即使我对PHP更擅长,因为我听说Python是一种更强大的语言。这让我想知道,是什么让一种编程语言比另一种编程语言更强大?我认为javascript不是很强大,因为它(通常)在浏览器中运行。但是,为什么Python比PHP更强大?在每种情况下,我都在向计算机发出指令,那么为什么某些语言更好地解释和执行这些指令呢?我怎么知道具体项目实际需要多少“力量”?

6 个答案:

答案 0 :(得分:8)

当保罗格雷厄姆谈到Lisp是最强大的语言时,他的意思是最具表现力。您可以用任何图灵完整语言表达任何程序。这就是重点。使一种语言比另一种语言(对于特定任务)更好的原因是它能够更简洁或清晰地定义给定程序。对于大多数编程任务而言,这才是最重要的。

偶尔(我的意思是偶尔)性能开始发挥作用,并且诸如能够在程序中轻松嵌入汇编语言的功能很重要。但在大多数情况下,它是关于能够清晰简洁地表达您的想法的能力。

答案 1 :(得分:4)

我讨厌那种语言“语言X比Y更强大”。真正的问题是哪种语言使更强大。如果语言X允许你比Y更快地编写更好的代码(有效),是的,X更“强大”。

如果你正在寻找对语言强大的客观解释......那么,祝你好运。

答案 2 :(得分:4)

这不是一个权力问题,而是你想要做什么以及你如何去做的事情。你可以说Python“更强大”,因为它带有大量的内置库,或者C ++“更强大”,因为它更快,或者Haskell“更强大”,因为它使用了懒惰的评估 - 简而言之,这真的是一个意见问题。但是我没有看到很多用PHP编写的桌面应用程序,我没有看到用C ++编写的Web应用程序(当然也可能有例外)。

有些语言只提供执行某些任务的“优雅”方式。例如,查看Haskell中的阶乘函数:

factorial 0 = 1
factorial n = n * factorial (n-1)

有些人可能会认为这种优雅主要是因为它清楚地反映了数学定义。但这个比其他实现更好吗?不。(特别是因为这会溢出堆栈。)

总之,使用您认为最适合您的任务 - 如果您最擅长使用PHP,并且您不想学习Python,那么就不要这样做。如果您对它的内容感兴趣,请查看它。不要学习它,因为它“更强大。”

答案 3 :(得分:1)

我不会说计算机语言“更强大”,只是更适合您特定问题域的语言。

也就是说,PHP是一种从黑客演变而来的语言,专为非常具体的问题领域而定制;这显示在几个地方,例如跨数据库接口的参数顺序不一致。随着时间的推移,IMHO PHP社区为新的语法增强做出了一些非常悲伤的决定。

恕我直言Python更通用,设计精良,更优雅,但你的问题通常是启动火焰战争。

答案 4 :(得分:0)

股票答案是使某些语言比其他语言更强大的唯一功能,这些功能是添加库无法轻易替换的语言功能。

这个定义几乎总是列出顶部的LISP,但是除非特别注意排除它,否则列出顶部组件的奇怪副作用。

答案 5 :(得分:0)

这是一个有趣的话题,在我的话语中,我经常遇到这个问题。但是我发现字面意义上的“权力”在语言方面不再具有价值。我担心那些告诉你'python更强大'的人正在混淆语言和实现。

我最近转换为python(过去2周)以前我是PHP编码器。基于python语言编写的库 - 即django -help使语言更强大 - 因为它使用和构建的速度更快。

如果你想做某事,PHP就有了这个寓言。它有一个功能'并且文档很棒 - 因此在这个意义上是强大的。

关于解释语言 - 再次依赖于谁编码它 - 无论如何。通过共识,python可以被认为更快,更少CPU密集,它是否创建了代码的编译版本。但PHP可以有一个很好的缓存系统。

简而言之 - 选择你最喜欢的。