在讨论编程语言时,"强大"意味着什么?

And*_*ell 27 programming-languages

在编程语言讨论/比较的背景下,术语"权力"是什么意思?

它有明确的含义吗?即使定义不明确?

如果有人说"语言X比语言Y更强大"或者问一个问题,它们是什么意思 - 或者他们试图找出什么信息?

Vin*_*eet 29

它没有明确的含义.在这些类型的讨论中,"语言X比语言Y更强大"通常意味着"我喜欢语言X而不是语言Y".另一方面,你通常也会有人知道任何图灵完整语言如何能够完成与任何其他图灵完整语言相同的任务,因此两者都没有比其他语言更强大.

我认为它的好处是表现力.当语言具有高度表达力时,意味着表达概念所需的代码更少.对我而言,这并不仅仅意味着你必须编写更少的代码来完成相同的任务,而且代码很容易被人类阅读.当然,通常(到某一点),具有较少的代码行来阅读使得阅读和理解的任务对于人类来说更容易.

拥有一个"强大的"标准库在这里沿着相同的路线发挥作用.如果一种语言配备了完整,完整的库,那么该语言的惯用代码将能够从现有的库代码中受益,而不必重复或重新发明应用程序代码中的常见功能.最终结果是,必须编写和读取更少的代码来完成相同的任务.

我一直在说"一般"和"到一定程度",因为一旦语言过于简洁,人类就难以破译.我认为在这种极端情况下,语言可能仍被视为"更强大"(甚至"太强大").所以我想我说我对"强大"的个人解释包括其中"有用"和"可读"的某些方面.

  • 表达能力为+1.而且要明确一点,一种语言不仅能够简洁地表达对计算机的指令,而且能够清楚地/明显地向休闲(人类)读者表达意图.这就是为什么短裤并不总是更好. (3认同)

Ama*_*dan 22

C功能强大,因为它级别低,可以访问硬件.Python功能强大,因为您可以快速创建原型.Lisp非常强大,因为它的REPL为您提供了极好的调试机会.SQL很强大,因为你说出你想要的东西,而DMBS会找出最适合你的方法.Haskell功能强大,因为每个函数都可以单独测试.C++非常强大,因为它的语法结构数量是任何一个人需要或使用的语法结构的十倍.APL非常强大,因为它可以将十屏幕程序压缩成十个字符.地狱,COBOL很强大,因为......为什么所有银行都会使用它呢?:)


Nor*_*sey 11

"强大"没有真正的技术含义,但很多人提出了建议.

一些更有趣的:

  • 如果你能用更少的代码行编写相同的程序(或者一些其他理智的,合理的程序大小测量),Paul Graham想要称一种语言"更强大".

  • Matthias Felleisen写了一篇非常严肃的理论研究,名为"编程语言的表达能力".

作为知道并使用许多编程语言的人,我相信语言之间存在真正的差异,而"权力"可以方便地描述一种语言可能比另一种语言更好的方式.然而,每当我听到一种语言比另一种语言更强大的讨论或声称时,我倾向于将一只手牢牢地放在我的钱包上.


JUS*_*ION 8

在编程语言中描述"权力"的唯一有意义的方法是"可以用最少量的资源做我需要的",其中"资源"被定义为"我不愿意支付的任何成本",因此可以开发时间,CPU时间,内存空间,金钱等

所以基本上"权力"的定义纯粹是主观的,在任何客观的讨论中都没有意义.


Nou*_*him 6

强大意味着"高效率"."力量"可以提高你做事的能力."事物"的形状,大小和其他方面各不相同.因此,松散地说,当应用于编程语言时,"强大"意味着它可以帮助您快速有效地执行任务.

这使得"强大"在某种程度上得到了很好的定义,但在各个领 在一个域中强大的语言可能在另一个域中瘫痪,例如.如果你想进行系统级编程,C非常强大,因为它可以让你直接访问机器,硬件和结构,让你的编码速度比组装时快得多.C编译器还生成运行速度快的代码.但是,一旦你转向Web应用程序,C就会变得非常"无能为力"而且会瘫痪,因为它需要付出很大的努力才能启动和运行,你必须担心内存等很多无关的细节.

有时,语言在多个域中"强大".这给了他们一个通用的"强大"标签(或徽章,因为这里是SO).PG的说法就是LISP就是这种情况.这可能是真的,也可能不是.

在一天结束时,"强大"是一个有用的词,所以你应该评估谁在说,为什么他说它以及它对你的工作意味着什么.