冒着听起来很幼稚的风险,我会问这个问题,以便更深入地理解编程语言的概念.我写这个问题是为了我自己的启发和其他人的启发.
计算机编程语言的有用定义是什么?它的基本和必要组件是什么?区分语言的主要特征是什么(功能,命令,声明,面向对象,脚本等)?
思考这个问题的一种方法.想象一下,你正在看现代台式机或笔记本电脑的硬件.假设C语言或其任何变体不存在.您如何向我人描述使计算机具有表现力和功能所需的所有内容,以满足我们对当今个人计算机的期望?
切线相关,它允许其他语言存在的计算机语言是什么?例如,使用Javascript,Perl或PHP等脚本语言.我假设这些定义的一部分是有一个解释器很可能在某种程度上用C或C++实现.是否可以在Javascript中为Javascript编写解释器?这是完整语言的要求吗?Perl,PHP等也一样吗?
我会对可以进一步查找或研究的概念列表感到满意.
与任何语言一样,编程语言只是表达和传达想法的交流工具.在这种情况下,我们将软件应该如何工作的想法转化为结构化和有条理的形式,计算机(以及在大多数情况下知道语言的其他人)可以阅读和理解.
计算机编程语言的有用定义是什么?它的基本和必要组件是什么?
我想说编程语言的定义特征如下:用该语言编写的东西最终会转化为执行的东西.因此,伪代码虽然可能具有编程语言的结构和严格性,但实际上并不是编程语言.同样,UML可以像编程语言一样以抽象的方式表达许多强大的想法,但它不足以因为人们通常不会编写要执行的UML.
您如何向我人描述使计算机具有表现力和功能所需的所有内容,以满足我们对当今个人计算机的期望?
即使"编程语言"这个词不是我正在谈论的小组的共享词汇的一部分,我认为对其他人来说显然我们需要一种与计算机通信的方式.正如没有人期望汽车自行驾驶(但是!)没有与方向盘和踏板交互形式的外部指令,没有人能够期待硬件在没有被告知做什么的情况下运行.如上所述,编程语言是我们通过其进行沟通的渠道.
切线相关,它允许其他语言存在的计算机语言是什么?
所有有用的编程语言都有一个名为图灵完整性的属性.如果图灵完整集中的一种语言可以做某事,那么它们中的任何一种都可以; 据说它们在计算上是等价的.
然而,仅仅因为它们同样"强大"并不意味着它们同样适合人类使用.这就是为什么许多人愿意牺牲你从编写汇编代码中获得的无与伦比的微观管理,以换取你使用更高级语言(如Ruby,Python或C#)获得的表现力和能力.
是否可以在Javascript中为Javascript编写解释器?这是完整语言的要求吗?Perl,PHP等也一样吗?
由于存在用C编写的Javascript解释器,因此必须能够在Javascript中编写Javascript解释器,因为两者都是图灵完备的.然而,再次注意到图灵完整性并没有说明用一种语言做另一种语言有多难 - 只是有可能开始.你的Javascript-interpreter-inside-Javascript可能非常低效,消耗大量内存,需要巨大的处理能力,并且是一个非常丑陋的黑客.但图灵完整性保证了它可以完成!
虽然这并没有直接回答你的问题,但我想起了Paul Graham关于编程语言发展的书呆子文章的复仇.这当然是一个开始调查的有趣场所.