编程语言是什么?

32

可能重复:
什么是计算机编程语言?

不,真的。

我一直在努力想出一个非常好的定义。这是我的看法:

编程语言是一种形式化语言,包含语法。语法规则用于形成语句。编程语言用于创建一组计算机可以理解的指令。一组语法语句称为程序。

我知道它读起来不太好,所以需要一些帮助。



这是维基百科 有关该主题的 第一段:

编程语言是一种人工语言,旨在表达计算机特别是计算机程序所能执行的计算。编程语言可用于创建控制计算机行为的程序、精确地表达算法或作为人类交流的一种方式。

我认为这是生活中每个人都知道它是什么,但它却难以定义的事情之一。

我是独自一人吗?你的想法呢?


20
我想应该设置为社区维基(Community Wiki)。 - Malfist
21
我的天啊,社区百科的极端主义者甚至不放假周末... - Tangiest
5
什么是程序?任何语言都能成为编程语言吗?什么是真相? - San Jacinto
3
这是一个自主托管的伪代码编译器: (1) 解析程序 (2) 生成机器码 - Amnon
2
它不是社区维基有什么问题吗?它不是主观的,而且它有一个明确的答案。我想你们只是不想让那个人获得一些声望... - RCIX
显示剩余10条评论
18个回答

18

我认为,维基百科对此做得非常正确:

A programming language is an artificial language designed to express computations
that can be performed by a machine, particularly a computer.

第一句话已足以描述它的本质:

  • 它是一种人工语言(这是其起源)
  • 它被设计为表达能够被机器执行的计算过程(这是该语言的目标/目的)

这就是编程语言在其最普遍的定义中所代表的。

您的定义缺乏这种普适性(例如,您的句子适用于命令式语言,但不适用于逻辑编程等其他类型的语言)。


6
文物:人类制造或使用的任何物品。哪种语言不是人为的? - Doug Knesek
5
确实。我会说编程语言是一种设计的语言。大多数非编程语言并没有被设计过。 - Joren
6
我认为这是“自然”和“人造”的区别。前者是作为自然过程发展而来的,而后者则是明确构建的(Esperanto也是一种人造语言,我想)。 - Johannes Schaub - litb
7
@Doug,爱情的语言? - Aiden Bell
1
世界语是人工的,但它不是一种编程语言。我不认为人工是一个标准。编程语言也不需要被设计。如果你想的话,你可以编写一个程序来生成编程语言(因为你可以!:P)。编程语言并不一定被转化为计算。你能够确定的是,它描述了一个程序,在机器上“运行”,导致机器采取行动。 - back2dos
显示剩余6条评论

5

编程语言是表达命令和指令给特定执行者的一种方式。

编程语言由符号和一套规则组成,这些规则可以明示或暗示,以使任何执行程序的执行者不违反规则。

我不同意编程语言与以下内容有关:

  • 计算--请参见Logo
  • 计算机--请参见任何菜谱
  • 人类作为程序来源--请参见生成汇编代码的编译器
  • 只是编码/解码信息的一种方式--有很多东西可以做到这一点,但它们不是编程语言。

2
你可以使用Logo进行计算。 - warren
噢,拜托!我知道它可以,我只是用它作为一个例子,表明“向前移动90个单位的海龟”也可以是一条编程语句。 - P Shved
@Doug Knesek,“规则集”并不涉及语法或语法。它们涉及的是演员在执行程序时将要或不会执行的操作。 - P Shved
那么你的定义应该简化为:语言的设计使得执行程序的任何参与者都不会违反语言的规则。 - Doug Knesek
换句话说,法律术语和军队通常使用的语言都是编程语言。我认为这不是一个特别有用的定义。 - David Thornley
显示剩余2条评论

2

API是软件(计算机程序)相互交互的一种方式。它也是人类与计算机交互的接口。


1

我喜欢的定义 :)

编程语言是指导计算机的特殊词汇:一套独特的词汇和规则,用于编写计算机程序


1
高级语言的发明是为了让你不再需要在补丁面板和电缆上瞎搞。把它们看作是硬件和人类指令之间的抽象层级。
我使用“高级语言”这个术语来描述一种使用解析器、抽象语法树和代码生成器将其结构转换为“低级”机器指令的语言。
我故意使用“层级”这个词是因为现在我们与硬件之间有越来越多的抽象层级:网络堆栈、操作系统、应用服务器、浏览器等。

这个问题与"语言的高度"无关,而是与语言本质有关。 - badp
我不知道任何语言的“高度”是什么,但我相信抽象是一种语言的本质。至少我不会重复老套的东西。 - duffymo
2
badp,你是在暗示编程语言不是硬件的抽象吗?能否向我们解释一下C语言? - duffymo
C语言是对硬件的抽象,因为有编译器负责将更多或少地了解硬件的程序转换为处理器字节码。但这只是一个用某种语言编写的程序。此外,各种库可能提供某种硬件抽象,以使编写硬件无关的程序更容易。但同样,这只是一个用某种语言编写的程序。 - badp
也许只是因为我在定义方面对数学非常严格。你看,这个定义谈到了“高级语言”,却没有定义或知道什么是“高度”。 - badp
“高级语言”是指使用解析器、抽象语法树和代码生成器将其结构转换为“低级”机器指令的语言。当您不必要地提到“语言的高度”时,您让我感到困惑。我认为这是一个精确的定义,即使是数学家也能欣赏。 - duffymo

1
编程语言是一组由形式语法定义的符号集,可以被程序翻译成计算机能理解的另一组符号,以使最终执行一些所需的操作。

1

第一个要求是意图:编程语言是一种旨在进行计算机编程的语言。请注意,这并不完全是说辞;记住,通过手动设置位可以编程计算机...无论如何,编程语言的所有其他属性都源于其意图。

我认为“真正的”编程语言应该是图灵完备的。这排除了像HTML这样的东西,它们直接指导计算机并被称为语言,但它们不是编程语言。

对于任何分类,你都会得到边界情况;例如,APL起源于数学符号吗?但是,我认为回归意图会让你尽可能接近:对于那些边界情况,有趣的问题与分类的相关性更小。

编辑:因此,作为格言:

编程语言是一种 旨在或用于编程 计算机的语言。

真正的编程 语言也是图灵完备的。


我喜欢你对此的思考方式。基本上和我的一致。能否添加一个简洁的两句话定义?总结这个概念太难了。 - Redandwhite

1

编程语言是一种表达计算的方式

  • 精确地
  • 在高层次上
  • 以我们可以理解的方式

1

一种用于描述过程/算法的形式化语言。


1
我在记事本中写下这篇关于“编程语言”的文章是为了梳理自己的思路。我认为它很有用,因此搜索了一下与之相关的问题,“什么是编程语言?”我在这里分享并希望能对他人有所帮助。
“编程语言”是一种特别设计的人工语言,程序员使用它向计算机发出指令。因此,可以称它为一种“指令语言”,通过它程序员可以向计算机“指示”行动。
程序员使用的编程语言(如C、Java、Python或Lisp)会配备一个名为“解释器”或“编译器”的软件程序(甚至两者都有),它能够理解这种语言。它理解程序员使用这种编程语言发出的指令。
这个软件程序还能够理解特殊的“机器语言”,这是计算机唯一能理解的语言。也就是说,计算机只能理解用特殊的“机器语言”发出的指令(不同的计算机有自己特定的机器语言,这是它们唯一能够理解的语言,因此也是它们接受和执行指令的唯一语言)。
计算机无法理解“编程语言”中的指令,因为它只能理解“机器语言”。程序员不懂“机器语言”,只知道如何用“编程语言”给出指令。由于这个“编译器”或“解释器”既能理解“编程语言”又能理解“机器语言”,它可以将程序员用“编程语言”给出的指令翻译成“机器语言”指令,以便计算机知道程序员想要指示它做什么。

使用CSS您还可以向计算机提供指令。CSS不是一种编程语言。 - user142019

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接