什么是编程语言?

时间:2009-05-15 17:39:32

标签: programming-languages theory wikipedia

维基百科说:

  

编程语言是一种机器可读的人工语言,旨在表达可由机器,尤其是计算机执行的计算。编程语言可用于创建指定机器行为,精确表达算法或作为人类交流模式的程序。

但这是真的吗?我今天早上在淋浴时想到,编程语言可能只是一组约定,这是人类和适当安排的编译器都可以解释的。如果是这种情况,那么这种编程语言的定义是否具有误导性?如果不是这样,那么编译器和它编译的语言之间的区别是什么?

谢谢!

Ž。

8 个答案:

答案 0 :(得分:5)

编程语言恰好是那套惯例,但我不明白为什么会让维基百科条目产生误导,真的如此。如果它让你感觉更好,你可以编辑它以读取如下内容:

  

编程语言是一种机器可读的人工语言,旨在表达可由机器,尤其是计算机执行的计算。编程语言可用于定义程序,这些程序指定机器的行为,精确表达算法,或作为人类交流的模式。

答案 1 :(得分:4)

我不明白你要问的是什么......

  

我今天早上在淋浴时发现编程语言可能只是一组约定,这是人类和适当安排的编译器都可以解释的。

...以及维基百科的定义。

关键是编程语言只是“机器可读的人工语言”。

答案 2 :(得分:3)

编译器确实在减少机器代码方面充当了语言的有效规范 - 然而,由于通常通过阅读编译器的源来理解语言通常是困难的,因此通常认为编程语言是编译器实现的抽象处理模型。当一个人引用编程语言时,这个抽象模型意味着什么。

也就是说,确实存在许多语言(Hi,PHP!),其中编译器是现有语言的唯一规范。随着编译器错误被修复或引入,这些语言有时会发生不可预测的变化。

答案 3 :(得分:3)

我明白你在说什么,你是对的。将编程语言描述为“用于表达可由机器执行的计算的机器可读人工语言”是不必要的具体。编程语言可以更广泛地概括为已建立的任务描述(或“一组约定”),允许一个实体控制另一个实体的行为。我们传统上认为编程语言只是机器代码和程序员之间的一个抽象层,专门为电子计算机设计。

编程语言不仅限于传统计算机(参见K'NEX Computer),甚至根本不限于计算设备。例如,当我对我的狗的行为感到满意时,他得到了一个享受。当我不高兴时,他什么也得不到。随着时间的推移,狗会学习治疗/不治疗程序,我可以使用治疗来控制他的行为(在某种程度上)。

答案 4 :(得分:2)

编程语言是一个抽象层,有助于使程序员不必将电子信号与计算机进行通信。该语言的创建者已经完成了创建结构(语言)或标准(语法,共轭等)的所有艰苦工作,然后编译器可以用计算机理解的术语来解释它。

答案 5 :(得分:1)

所有编程语言实际上只是用于机器代码的域特定语言或操纵处理实体的寄存器和存储器。

答案 6 :(得分:1)

这可能是编程语言的真正解释:

步骤1:考虑一种语言及其语法,这是一组使用该语言制作语法上有效的语句的规则。例如,一个名为GRID的语言将tile {0,1}作为其字母和语法规则,以确保每个GRID语句具有相同的长度和高度。

步骤2(程序的定义):到目前为止,GRID是无用的。我敢于将任何有效的GRID声明视为数据。我们需要为GRID添加一些东西:后继函数。所以GRID = {语法,字母,后继函数}。为了清楚说明,让我们使用"生命游戏"的规则。作为后继功能。

步骤3:生命游戏实际上是图灵完成,因此GRID = {语法,字母,后继函数= GOL}可以执行任何可计算的计算。

编程语言只不过是一种具有后继功能的语言。评估语言(程序)的有效语句的环境除了遵循这些后继函数之外什么都不做。例如,变量是其后继函数=(保持相同)

的东西

计算机只是非常快的环境;)

答案 7 :(得分:0)

维基百科的定义可能与上下文无关。一方面,只有用机器代码编写的程序才是机器可读的。否则,您需要使用编译器将C ++,Java甚至汇编代码转换为机器代码,以便计算机执行您的指令。除非您添加仅对人类可读的注释,或者除非您在程序领域中严格讨论某个主题,否则编程不足以进行人类交流。