I think we need to agree on a definition of "programming language" to answer this question in any useful way. Is directly manipulating machine code a programming language?
Since Ada Lovelace is widely regarded as the first programmer, I'd investigate what she called the set of symbols she was using.
Update: You can read the notation that Lovelace used in her Notes on Sketch of The Analytical Engine Invented by Charles Babbage By L. F. MENABREA. Lovelace was the translator, but her notes describing the programming of the Analytical Engine ended up being about four times longer than the original publication.
The PBS series Connections made the argument that the holes punched in tiles to control the patterns created on looms (circa 1700s??) were the first programming "language".
These were followed by player piano scrolls: Codes, on paper, which are read by, and control the operation of a machine. That's a programming language, isn't it?
Programming, at least in the declarative sense, comes down to combinations of sequence, alternation, and repetition. One might consider recipe authors as programmers, and therefore very early ones. Think about a recipe: it contains sequence (slice this, then chop that, then heat so and so...), alternation (if you want it moist then bake for 40 minutes, else if you want it "cakey" bake for 55 minutes), and repetition (while not stiff kneed the dough, repeat stirring until the batter is smooth). Recipes go back thousands of years.
The language the analytical engine would have used was its own machine code, entered via punch cards indicating the operation to be performed and the columns (effectively registers) to perform it to. See these notes for some details.
I would say that the first programming language actually used was the machine language of the first stored program computer, which I believe was Baby: http://www.computer50.org/
Assuming a definition of "programming language" as "a textual notation used to describe/control the intended behavior of a digital computer", I think there's only one possible answer: raw (numerical) machine code.
Many of the other answers (e.g. recipes for cooking) are clever, but aren't about programming per se, but about description/control in a different context or more general sense.
发布评论
评论(11)
我认为我们需要就“编程语言”的定义达成一致,才能以任何有用的方式回答这个问题。 直接操作机器代码是编程语言吗?
I think we need to agree on a definition of "programming language" to answer this question in any useful way. Is directly manipulating machine code a programming language?
由于 Ada Lovelace 被广泛认为是第一位程序员,我会调查她所说的一组她正在使用的符号。
更新:您可以阅读 Lovelace 在她的注释中使用的符号 Sketch of查尔斯·巴贝奇 (Charles Babbage) 发明的分析机 作者:LF MENABREA。 洛夫莱斯是翻译者,但她描述分析引擎编程的笔记最终比原始出版物长了大约四倍。
Since Ada Lovelace is widely regarded as the first programmer, I'd investigate what she called the set of symbols she was using.
Update: You can read the notation that Lovelace used in her Notes on Sketch of The Analytical Engine Invented by Charles Babbage By L. F. MENABREA. Lovelace was the translator, but her notes describing the programming of the Analytical Engine ended up being about four times longer than the original publication.
PBS 系列《Connections》认为,在瓷砖上打孔以控制织布机(大约 1700 年代??)上创建的图案是第一种编程“语言”。
接下来是演奏者钢琴卷轴:纸上的代码,可供机器读取并控制机器的操作。 这是一种编程语言,不是吗?
The PBS series Connections made the argument that the holes punched in tiles to control the patterns created on looms (circa 1700s??) were the first programming "language".
These were followed by player piano scrolls: Codes, on paper, which are read by, and control the operation of a machine. That's a programming language, isn't it?
DNA——还是必须涉及硅计算机? ;-)
DNA -- or does it have to involve silicon computers? ;-)
编程,至少在声明性意义上,归结为顺序、交替和重复的组合。 人们可能会将菜谱作者视为程序员,因此是非常早期的程序员。 想想一个食谱:它包含顺序(切片这个,然后切碎那个,然后加热某某......),交替(如果你想要它湿润,那么烘烤 40 分钟,否则如果你想要“蛋糕状”,则烘烤 55 分钟分钟),然后重复(在面团不僵硬的情况下,重复搅拌直至面糊光滑)。 食谱可以追溯到几千年前。
Programming, at least in the declarative sense, comes down to combinations of sequence, alternation, and repetition. One might consider recipe authors as programmers, and therefore very early ones. Think about a recipe: it contains sequence (slice this, then chop that, then heat so and so...), alternation (if you want it moist then bake for 40 minutes, else if you want it "cakey" bake for 55 minutes), and repetition (while not stiff kneed the dough, repeat stirring until the batter is smooth). Recipes go back thousands of years.
分析引擎使用的语言是它自己的机器代码,通过打孔卡输入,指示要执行的操作和要执行操作的列(有效注册)。 有关详细信息,请参阅这些注释。
The language the analytical engine would have used was its own machine code, entered via punch cards indicating the operation to be performed and the columns (effectively registers) to perform it to. See these notes for some details.
我想说,实际上使用的第一种编程语言是第一台存储程序计算机的机器语言,我相信它是 Baby:http://www.computer50.org/
I would say that the first programming language actually used was the machine language of the first stored program computer, which I believe was Baby: http://www.computer50.org/
假设“编程语言”的定义是“用于描述/控制数字计算机的预期行为的文本符号”,我认为只有一个可能的答案:原始(数字)机器代码。
许多其他答案(例如烹饪食谱)都很聪明,但与编程本身无关,而是关于不同上下文或更一般意义上的描述/控制。
Assuming a definition of "programming language" as "a textual notation used to describe/control the intended behavior of a digital computer", I think there's only one possible answer: raw (numerical) machine code.
Many of the other answers (e.g. recipes for cooking) are clever, but aren't about programming per se, but about description/control in a different context or more general sense.
一开始有 Ada Lovelace,然后 Bill 说“要有 C#”,然后就有了光!
In the beginning there was Ada Lovelace , Then Bill said 'Let there be C#' And there was light !!
实际上,Rojas 等人在 2000 年左右发布了该语言的实现。
There was actually an implementation of the language published by Rojas et al. somewhere around the year 2000.
好吧,如果你沿着这条路走下去,那么正确的答案一定是 RNA,它在 DNA 之前就已经存在。 但是,我们有盲人程序员吗? ;-)
Well, if you go down that road then the correct answer has to be RNA which existed before DNA. But then, do we have a Blind Programmer? ;-)