代码之家  ›  专栏  ›  技术社区  ›  smfoote

是什么使得一些编程语言比其他语言更强大?[关闭]

  •  5
  • smfoote  · 技术社区  · 15 年前

    我要在这里表明我的无知,但我是一个会计专业的学生,我从来没有上过计算机科学课。

    我将要开始一个新的项目,我正在考虑使用python而不是php,尽管我对php更加熟练,因为我听说python是一种更强大的语言。这让我好奇,是什么让一种编程语言比另一种更强大?我认为JavaScript不是很强大,因为它(通常)运行在浏览器中。但是,为什么python比php更强大呢?在每一种情况下,我都在向计算机发出指令,那么为什么有些语言在解释和执行这些指令方面更擅长呢?我如何知道一个特定的项目实际需要多少“力量”?

    6 回复  |  直到 15 年前
        1
  •  8
  •   nmichaels    15 年前

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

    偶尔(我的意思是非常偶尔)性能开始发挥作用,像在程序中轻松嵌入汇编语言这样的功能很重要。但在很大程度上,它是关于清晰和简洁地表达你的想法的能力。

        2
  •  4
  •   ktdrv    15 年前

    我讨厌“语言x比y更强大”这样的说法,真正的问题是哪种语言 更强大。如果语言x允许你比y更快地编写更好的代码(这是可行的),那么,是的,x更“强大”。

    如果你想客观地解释语言的强大性…好吧,祝你好运。

        3
  •  4
  •   li.davidm    15 年前

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

    有些语言只提供被认为是执行某些任务的“优雅”方式。例如,查看haskell中的factorial函数:

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

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

    总之,使用你认为最适合你的任务的东西——如果你最好用PHP,而且你不想学Python,那就不要学。如果你对它是什么感兴趣,那就看看它。不要学它,因为它“更强大”。

        4
  •  1
  •   Paulo Scardine    15 年前

    我不会说有计算机语言“更强大”,只是语言更适合你的具体问题领域。

    也就是说,PHP是一种从黑客进化而来的语言,专门针对一个非常特定的问题域;它出现在一些地方,例如跨数据库接口的参数顺序不一致。随着时间的推移,imho php社区对新的语法增强做出了一些非常糟糕的决定。

    imho python更为通用、设计精良、优雅,但您的问题通常是一个引发火焰大战的问题。

        5
  •  0
  •   Joshua    15 年前

    股票答案是使某些语言比其他语言更强大的唯一功能,是语言功能,不能轻易地被添加库所取代。

    这个定义几乎总是将lisp列在顶部,但有一个奇怪的副作用,即在顶部附近列出assembly,除非特别注意排除它。

        6
  •  0
  •   Glycerine    15 年前

    这是一个有趣的话题,在我看来,我经常碰到这个话题。但我发现,当涉及到语言时,字面意义上的“力量”不再有价值。我担心那些告诉您“python更强大”的内容会与语言和实现混淆。

    我最近转换成了Python(最近2周),以前我是一个PHP编码人员。基于python语言(即django)的库有助于使语言更强大,因为它的使用和构建速度更快。

    如果你想做点什么的话,PHP有一个寓言。它有一个功能,文档非常出色,因此在这个意义上非常强大。

    至于解释这门语言——同样取决于谁给它编码了——没关系。根据一般的共识,python可以被认为是更快和更少的CPU密集型,它是否创建代码的编译版本。但是PHP可以有一个好的缓存系统。

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