计算机编程语言历史

From Babbage to Babel and Beyond is an article written by Linda Weiser Friedman. This text is a summary of her article that reviews the history of computer programming languages. She describes four ‘generations’ of software starting with machine code through to different languages, paradigms and environments.

从巴贝奇(Babbage)到《通天塔别》(Babel and Beyond),都是琳达·维泽·弗里德曼(Linda Weiser Friedman)撰写的文章。 本文是她的文章的摘要,该文章回顾了计算机编程语言的历史。 她描述了软件的四个“世代” ,从机器代码到不同的语言,范例和环境。

According to Friedman in the 90’s (the time of writing) some of the oldest programming languages were the most popular ones. She mentions FORTRAN and COBOL in particular. She also argues that:

根据弗里德曼(Friedman)的说法,在90年代(撰写本文时),一些最古老的编程语言是最受欢迎的编程语言。 她特别提到了FORTRAN和COBOL。 她还认为:

“To study high-level programming languages by examining only the state of such languages as they exist today would be incomplete.”

“仅通过检查当今语言的状态来研究高级编程语言是不完整的。”

She asks the question.

她问这个问题。

  • Why did high-level languages evolve?为什么高级语言会发展?
  • Why are we not still programming in machine code?为什么我们还不使用机器代码编程?

Early programming languages have a lot of influence on later ones. Many programming languages have similar constructs.

早期的编程语言对后来的语言有很大的影响。 许多编程语言具有类似的构造。

Perhaps it is important to examine previous languages.

检查以前的语言也许很重要。

She refers to a series of previous studies. Amongst them Knuth who has studied mathematical and numerical algorithms from antiquity to the modern era. From describing ‘static functional relationships’ ( such as equations in mathematics) to notations for a dynamic process (algorithms).

她提到了一系列先前的研究。 其中包括研究古代和现代数学和数值算法的Knuth。 从描述“静态函数关系”(例如数学方程式)到动态过程的符号(算法)。

“Often, in order to denote an algorithm as an input-output transformation, one would simply express it as y=f(x), where x is the input variable, y is the output variable, and f is the abstract (or “black box”) model, the (possibly numerical) algorithm.”

“通常,为了将一种算法表示为一种输入-输出转换,可以将其简单地表示为y = f(x),其中x是输入变量,y是输出变量,f是抽象变量(或“黑盒”)模型,(可能是数字算法)。”

She claims that Algorithms have been ‘wordy’ and ‘imprecise’ before entering an examination of early computing hardware and software.

她声称算法在进入对早期计算硬件和软件的检查之前是“冗长的”和“不精确的”。

分析引擎 (The Analytics Engine)

The earliest known computer is acknowledged to be Charles Babbage’s design for an Analytic Engine in 1834. It was designed to provide changeable sequence of numerical operations and internal storage of data. It could not be built in his lifetime, but still his collaborator Lady Augusta Ada, Countess of Lovelace(and daughter of the poet Lord Byron), coded programs for it.

最早的已知计算机是1834年Charles Babbage为解析引擎设计的。它的设计目的是提供可变的数值运算顺序和内部数据存储。 它无法在他的一生中建造,但他的合作者Lovelace的伯爵夫人(也是诗人拜伦勋爵的女儿)的奥古斯塔·阿达夫人仍为其编写了程序。

Machine-code operations on Babbage’s machine were of the form:

巴贝奇机器上的机器代码操作的形式为:

  • V~ × V2= V3, with operations(e.g. the multiply operation)and variable.V〜×V2 = V3,具有运算(例如乘法运算)和变量。
  • It used punchcards (Jacquards).它使用了打Kong卡(提花)。
  • Cards were fed into a machine and worked on internal data.卡被送入机器并处理内部数据。
  • Conditioned inside to accommodate conditional ‘jumps’ (done by physically jumping over cards).在内部进行调节以适应有条件的“跳跃”(通过物理跳过卡片来完成)。

Lady Lovelace thinking about the repetitive sequences of operations is therefore credited to have innovated the concept of a loop or repetition construct.

因此,洛夫莱斯夫人(Lady Lovelace)考虑到重复的操作序列,就可以说是创新了循环或重复结构的概念。

Babbage can be credited as the first computer architect, and Lovelace as the first computer programmer.

Babbage可以被认为是第一位计算机架构师,而Lovelace可以被认为是第一位计算机程序员。

EDVAC (EDVAC)

It was not before 1945 that stored-program computer was described and implemented. This occurred with the University of Pennsylvania of John von Neumann's: "First Draft of a Report on the EDVAC".

直到1945年,才描述并实现了存储程序计算机。 宾夕法尼亚大学约翰·冯·诺伊曼(John von Neumann)撰写的《 EDVAC报告初稿》就是这样。

The EDVAC (Electronic Discrete Variable Arithmetic Computer) describes a processor coupled with primary storage.

EDVAC(电子离散变量算术计算机)描述了与主存储器耦合的处理器。

This configuration has become known as the von Neumann architecture:

此配置已称为von Neumann体系结构:

“…describes a configuration in which the processor is tightly coupled to primary storage, primary storage is large enough to store vast amounts of data along with the program code and operations are executed sequentially without the parallelism that was needed on earlier machines to counteract their extremely limited storage capabilities.”

“…描述了一种配置,其中处理器与主存储器紧密耦合,主存储器足够大,可以存储大量数据以及程序代码,并且操作是按顺序执行的,而没有早期机器所需的并行度来抵消它们的极端运行有限的存储能力。”

硬件发展 (Developments in Hardware)

Friedman (1992) constructed a frame to help gain an overview of the development of hardware. This looks like the following:

Friedman(1992)构建了一个框架,以帮助获得对硬件开发的概述。 如下所示:

She describes this as a historical overview of computer machinery from early experimental projects to Japan’s Fifth Generation Project.

她将其描述为从早期实验项目到日本第五代项目的计算机机械的历史​​概述。

The first electronic computer for commercial use on the list is the Remington Rand’s UNIVAC from 1951. The first was purchased by the U.S. Department of the Census. This was based on vacuum tubes.

清单中第一台用于商业用途的电子计算机是雷明顿·兰德(Remington Rand)于1951年推出的UNIVAC。第一台由美国人口普查局购买。 这是基于真空管。

The later computers were characterised by new and different technology:

后来的计算机以新技术和不同技术为特征:

  1. Transistors.晶体管。
  2. Integrated circuits.集成电路。
  3. Large-scale integration.大规模整合。

Apparently in 1951 with the installation of the UNIVAC it was predicted that 12 computers would be in the U.S. by 1975. They were quite wrong. By 1975 there were 155,000 computers in use. By the end of 1989 this figure was up to 54 million.

显然在1951年安装UNIVAC时,据预测到1975年美国将有12台计算机。这是完全错误的。 到1975年,已使用了155,000台计算机。 到1989年底,这一数字已高达5400万。

Friedman goes on to described software generations as a ladder:

Friedman继续将软件世代描述为阶梯:

Model by Friedman.
弗里德曼(Friedman)的模型。

第一代软件-机器语言编程 (First software generation — machine language programming)

Friedman discusses software in four generations. According to her it relates to a sort of rung in the ‘ladder’ between human and computer user.

Friedman讨论了四代软件。 根据她的说法,它涉及人与计算机用户之间“阶梯”中的一种梯级。

“The first generation of computer software is the era of machine language programming.”

“第一代计算机软件是机器语言编程的时代。”

During the 1940’s and the early 1950’s all coding was done in machine language. That means the computer’s own internal (binary-based) instruction set.

在1940年代和1950年代初期,所有编码都是用机器语言完成的。 这意味着计算机自己的内部(基于二进制的)指令集。

Machine coding or ‘hand coding’ remained popular long after this. Every machine had its own built in code.

在此之后很长时间,机器编码或“手工编码”仍然很流行。 每台机器都有自己的内置代码。

Every task was coded ‘from scratch’ with little opportunity for generalising.

每个任务都是从头开始编码的,几乎没有机会推广。

“The word wasn’t programming then, but coding, and programmers were coders.”

“那时这个词不是编程,而是编程,而程序员是编码员。”

According to Friedman the word programmer originated in England, it crossed the Atlantic over to the US in the 1950’s and by then it was more ‘prestigious’ to be a programmer than a coder.

根据弗里德曼的说法,程序员一词起源于英国,1950年代横跨大西洋到达美国,到那时,成为一名程序员比一名编码员更具“声望”。

In form of formal communication between members of the community there was not much.

以社区成员之间的正式沟通形式没有多少。

However, The Association for Computing Machinery (ACM) was formed in 1947 and journals began publishing a few years later.

但是,计算机协会(ACM)成立于1947年,几年后开始出版期刊。

Little thought was given to ownership because it was hard to attribute to a single source.

几乎没有考虑所有权,因为很难归因于单一来源。

Friedman says:

弗里德曼说:

“In 1947, an event occurred which is of special interest to programmers and students of computing. Grace Murray Hopper, in investigating why the Mark I1 computer was not working properly, discovered a small dead moth in the machine and removed it with a tweezer. The moth went into her logbook along with a note recording the incident for posterity. From then on, computing errors were called “bugs” and the process of finding and removing them known as “debugging”.”

“ 1947年,发生了一个事件,计算机程序员和学生特别感兴趣。 格雷斯·默里·霍珀(Grace Murray Hopper)在调查为何Mark I1计算机无法正常工作的过程中,在机器中发现了一个小死飞蛾,并用镊子将其取出。 蛾子连同记录下来的事件记录一起进入了她的日志。 从那时起,计算错误被称为“错误”,发现和删除它们的过程称为“调试”。

As a side note, although the author claims this there seems to be a few ‘bugs’ or errors with this statement.

顺便提一句,尽管作者声称这句话似乎有一些“错误”或错误 。

Howard Aiken suggested a ‘coding machine’ for the Mark III. By pressing a button machine code would be punched on a paper tape. In this way a human coder would not have to bother memorising many complicated sequences of binary code.

霍华德·艾肯(Howard Aiken )为Mark III建议使用“编码机” 。 按下按钮,机器代码将被打在纸带上。 这样,人类编码人员将不必费心记住许多复杂的二进制代码序列。

Friedman describes this as a spark towards the second generation of software.

Friedman将其描述为第二代软件的火花。

第二代软件-预编译器时代 (Second software generation — the pre-compiler era)

The second generation coding aids such as for machine language coding specialists.

第二代编码辅助工具,例如机器语言编码专家。

This included different automations and assemblers. A time ‘marked by many firsts’.

这包括不同的自动化和组装程序。 “有许多首创”的时间。

Friedman asks us to consider the programming or ‘coding’ culture at the time in light of the innovations that came:

弗里德曼(Friedman)要求我们根据随之而来的创新来考虑当时的编程或“编码”文化:

“we have to bear in mind, firstly, that the mindset of the coding establishment was such that anything other than hand-coding was considered to be inferior and, secondly, that those hand-coded machine language programs were actually very complex and intricate and did as much with less storage as our sophisticated programs do today.”

“我们必须牢记,首先,编码机构的思维方式是如此,以至于除手工编码之外的任何其他事物都被认为是次等的;其次,那些手工编码的机器语言程序实际上非常复杂,错综复杂,像我们今天的复杂程序一样,用更少的存储空间完成了很多工作。”

She also says that the scepticism was warranted since these systems turned out programs that were less efficient and more costly than the equivalent hand-coded versions produced by clever, inventive human coders.

她还说,这种怀疑是有根据的,因为这些系统所产生的程序比聪明的,有创造力的人类编码器所产生的等效的手动编码版本效率低,成本高。

So, at this time programmers did not always program ‘from scratch’. Many would manually copy sections of code.

因此,此时程序员并不总是从头开始编程。 许多人会手动复制部分代码。

Copying was fraught with ‘transcription errors’.

复制充满了“转录错误”。

In 1949 John Mauchly proposed ‘Short-Order Code’ or ‘Short Code’ for the BINAC (BINary Automatic Computer). The computer was built by John Mauchly and J. Presper Eckert, it was later bought out by Remington-Rand.

1949年,John Mauchly为BINAC(二进制自动计算机)提出了“短代码”或“ 短代码 ”。 该计算机由John Mauchly和J. Presper Eckert制造,后来被Remington-Rand收购。

Short Code: was a set of interpretive subroutines stored in memory. Short Code executed about fifty times slower than the equivalent hand-coded program.

短代码 :是存储在内存中的一组解释性子例程。 短代码的执行速度比等效的手工编码程序慢大约五十倍

The years 1950–1951 saw an emergence of a host of artificial machine languages or ‘pseudo codes’.

1950年至1951年间,出现了许多人造机器语言或“伪代码”。

“In the early 1950’s Betty Holbertson’s Sort-Merge Generator was a first attempt towards using a computer to write programs and inspired a whole family of other program generators.”

“在1950年代初期,贝蒂·霍尔伯森(Betty Holbertson)的排序合并生成器是尝试使用计算机编写程序并激发了其他整个程序生成器家族的首次尝试。”

In 1951 the first textbook for programming came over from England. It was called “The Preparation of Programs for a Digital Computer,” authored by Wilkes, Wheeler and Gill.

1951年,第一本编程书籍从英格兰传来。 它由Wilkes,Wheeler和Gill撰写,被称为“数字计算机程序的准备”。

It discussed ‘assembly routine’, referring to: “…a piece of code which would combine a set of subroutines and allocate storage as blocks of relocatable addressed called ‘floating addresses’.”

它讨论了“汇编例程”,指的是: “……一段代码,它将组合一组子例程并将存储分配为可重定位寻址的块,称为”浮动地址”。”

In 1951, Grace Murray Hopper working on Remington-Rand’s UNIVAC I came up with what she called a ‘compiling routine’, as the act of translating ‘pseudo-code’ into a complete set of machine language instructions.

1951年,格雷斯·默里·霍珀(Grace Murray Hopper)在雷明顿-兰德(Rimington-Rand)的UNIVAC I上工作,提出了她所谓的“ 编译例程 ”,作为将“伪代码”翻译成一整套机器语言指令的动作。

In 1952, Millie Coss came out with the ‘Editing Generator’ taking arithmetic operations and printing an output readable by managers and other humans.

1952年,米莉·科斯(Millie Coss)推出了“ 编辑生成器 ”,可以进行算术运算并打印出可供管理人员和其他人读取的输出。

Friedman described the 1952 development of an AUTOCODE system by Alick E. Glennie as a link to the ‘third generation’ of software. It was a primitive, highly machine-dependent algebraic compiler that translated algebraic statements into the machine language of the Manchester Mark I.

Friedman将Alick E. Glennie在1952年开发的AUTOCODE系统描述为与“第三代”软件的链接。 它是一个原始的,高度依赖于机器的代数编译器 ,将代数语句转换为曼彻斯特马克一世的机器语言。

第三代软件-程序语言 (Third software generation — procedural languages)

In 1945, a theoretical programming language was developed in Fed. Rep. Germany by Konrad Zuse, called Plankalkul (programcalculus), although this went unnoticed until about 1972.

1945年,美联储开发了一种理论编程语言。 Konrad Zuse的德国共和国称为Plankalkul(程序演算),尽管直到1972年才被人们注意到。

In Italy Corrado Bohm’s doctoral dissertation from 1951 describes a system that defines every statement as a special case of the assigned statement, for example S would be equivalent to ‘set the program counter to the value of the variable S’.

在意大利,Corrado Bohm于1951年发表的博士论文描述了一种系统,该系统将每个语句定义为所分配语句的特殊情况,例如S相当于“将程序计数器设置为变量S的值”。

The first algebraic compiler is considered to be for MIT’s WHIRLWIND computer designed by Jay Forrester and Ken Olsen. It was the first 16-bit minicomputer capable of parallel processing and real-time computing. It was demonstrated in spring 1953 and up and running January 1954.

第一个代数编译器被认为是由Jay Forrester和Ken Olsen设计的MIT的WHIRLWIND计算机。 它是第一台能够并行处理和实时计算的16位微型计算机。 它在1953年Spring演示,并于1954年1月投入运行。

In 1955, Grace Murray Hoppe’s programming team began to develop an algebraic programming language that users some English keywords.

1955年,格雷斯·默里·霍普(Grace Murray Hoppe)的编程团队开始开发一种使用一些英语关键字的代数编程语言。

In 1957, it was released as MATH-MATIC, and it executed inefficiently. In 1957 IBM finally delivered the compiler for FORTRAN. It was increasingly accepted in the computing community.

1957年,它以MATH-MATIC的形式发行,执行效率低下。 1957年,IBM最终交付了FORTRAN的编译器。 它在计算社区中越来越被接受。

In 1958, FLOW-MATIC was released and became an important factor in the subsequent design of COBOL.

1958年,FLOW-MATIC发布,并成为后续C​​OBOL设计中的重要因素。

FORTRAN(公式翻译系统) (FORTRAN (FORmula TRANslating System))

In 1954, John Backus led an IBM team of researcher (later named the Programming Research Group) to design and develop automatic translators of mathematical formulas into IBM 704 machine code. They would accept nothing less than something as efficient as their hand-coded counterparts. Their overriding concern was efficiency, as according to Friedman it may be more likely to be accepted by the coding community. Language design aspect was handled quickly. Described by Friedman: “…in the manner of a chore that had to be completed before the ‘real’ work (the design of the compiler) could be done.”

1954年,约翰·巴科斯(John Backus)领导了一个IBM研究人员小组(后称“编程研究小组”)来设计和开发自动将数学公式转换为IBM 704机器代码的工具。 他们所接受的无非是与手工编码的同行一样高效的东西。 他们最关心的是效率,因为根据Friedman的说法,编码社区更可能接受它。 语言设计方面很快得到处理。 弗里德曼(Friedman)表示: “ ...在完成“实际”工作(编译器的设计)之前必须完成一件繁琐的工作。”

FORmula TRANslating System,or FORTRAN was released in 1954 with a large part of the document devoted to the justification of the system, including an optimistic expectation that FORTRAN would eliminate coding and debugging.

公式翻译系统或FORTRAN 该版本于1954年发布,其中很大一部分文件专门讨论了系统的合理性,其中包括乐观地期望FORTRAN将消除编码和调试。

In 1958, FORTRAN compilers were released for the IBM 709 and the 650; in 1960 for the 1620 and 7070. The versions were not necessarily identical and a program written on one computer did not necessarily produce the same result on another.

1958年,为IBM 709和650发布了FORTRAN编译器。 1960年是1620和7070的版本。版本不一定相同,在一台计算机上编写的程序不一定会在另一台计算机上产生相同的结果。

In 1961, FORTRAN compilers were made available for other computers (UNIVAC, Remington-Rand LARC and ALTAC).

1961年,FORTRAN编译器可用于其他计算机(UNIVAC,Remington-Rand LARC和ALTAC)。

In 1964 there were more than 40 different FORTRAN compilers on the market. It must be said that it was not machine-independent language, and computer differently on different computers.

1964年,市场上有40多种不同的FORTRAN编译器。 必须说这不是机器无关的语言,并且在不同的计算机上计算机也不同。

In 1958 FORTRAN II was released, followed by FORTRAN III and FORTRAN IV in 1962. FORTRAN IV was the standard for the language until FORTRAN 77 was released in 1978.

1958年发布了FORTRAN II,随后于1962年发布了FORTRAN III和FORTRAN IV。直到1978年FORTRAN 77发行时,FORTRAN IV才是该语言的标准。

LISP(LISt处理器) (LISP (LISt Processor))

During the years 1956–1958 an interactive, applicative language was designed at Darthmouth by John McCarthy.

在1956年至1958年间,约翰·麦卡锡(John McCarthy)在达特茅斯(Darthmouth)设计了一种交互式的,可应用的语言。

In 1959, this was later implemented at MIT with a reference manual published in 1960.

1959年,该方法随后在麻省理工学院实施,并于1960年出版了参考手册。

LISP is based on lambda-calculus, and unlike other languages it was designed for symbolic formula manipulation. Friedman argues it became the ‘lingua franca’ (medium of communication) for the artificial intelligence community.

LISP基于lambda微积分,与其他语言不同,它是为符号公式操纵而设计的。 弗里德曼认为,它已成为人工智能界的“通用语言”。

She lists some innovative features as the following:

她列出了一些创新功能,如下所示:

  • The function as the basic program unit.该功能作为基本程序单元。
  • The list as the basic data structure.该列表作为基本数据结构。
  • Dynamic data structures.动态数据结构。
  • Facilities for ‘garbage collections’.“垃圾收集”设施。
  • Use of symbolic expressions as opposed to numbers.使用符号表达式而不是数字。
  • Recursion.递归。
  • Conditional expression as control structures.条件表达式作为控制结构。
  • The ‘eval’ function for interactive evaluation of LISP statements.用于交互式评估LISP语句的“评估”功能。

ALGOL(算法语言) (ALGOL (ALGOrithmic -Language))

In 1958, a committee held meetings in Zurich to design a universal high-level programming language. It featured European representatives from GAMM (German association for applied mathematics and mechanics), and the Association for Computing Machinery. One of the members of the committee was John Backus, who had led the FORTRAN development group.

1958年,一个委员会在苏黎世举行了会议,以设计一种通用的高级编程语言。 它吸引了来自GAMM(德国应用数学和力学协会)和计算机协会的欧洲代表。 该委员会的成员之一是约翰·巴科斯(John Backus),他曾领导FORTRAN开发小组。

One of the goals was to facilitate communication and exchange in the international computing community alongside the practical goal to bring a compiler to Europe (they were still hand-coding). One of the reasons a new language was desired was that FORTRAN was a proprietary IBM product. Adopting FORTRAN would therefore somewhat mean buying only IBM machines, and there was a wish for IBM not to dominate in Europe.

目标之一是促进国际计算社区中的交流与交流,以及将编译器带到欧洲的实际目标(他们仍然是手工编码)。 要求使用新语言的原因之一是FORTRAN是IBM的专有产品。 因此,采用FORTRAN可能意味着仅购买IBM机器,并且希望IBM不在欧洲占据主导地位。

The language was first named IAL, for International Algebraic Language ,and eventually renamed ALGOL (ALGOrithmic -Language). The first version was known as ALGOL 58.

该语言最初是用于国际代数语言的IAL,后来更名为ALGOL(ALGOrithmic -Language)。 第一个版本称为ALGOL 58。

The committee met again in Paris in 1960 to improve the language and eliminate weaknesses.

该委员会于1960年在巴黎再次举行会议,以改进语言并消除弱点。

“The influence of ALGOL60 on programming language design, and on the development of computer science in general, has been nothing less than profound.”

“ ALGOL60对编程语言设计以及整个计算机科学的发展产生了深远的影响。”

Friedman lists a few innovative features:

Friedman列出了一些创新功能:

  • BNF (Backus Normal Form), metalanguage for programming language definition.BNF(Backus范式),用于编程语言定义的元语言。
  • The programming language as an object of study rather than just a means towards an end.编程语言是学习的对象,而不仅仅是达到目的的手段。
  • Used as a publication language for algorithms.用作算法的发布语言。
  • Block structure and localised data environments.块结构和本地化数据环境。
  • Nesting of program units.程序单元的嵌套。
  • Free-format program code.自由格式的程序代码。
  • Explicit type declerations.显式类型清除。
  • Dynamic memory allocation.动态内存分配。
  • Parameter passing by value and name.通过值和名称传递的参数。
  • If /then/else and begin/end to delimit compound statements.如果/ then / else并开始/结束以分隔复合语句。
  • Scoping rules.范围规则。
  • Declaration of local variables.局部变量的声明。
  • Parameters passed by name, value or reference.通过名称,值或引用传递的参数。

COBOL(面向商务的语言) (COBOL (COmmonBusiness-Oriented-Language)

In 1959, another group met under the oversight of the Department of the Defense in the United States to discuss developing a ‘common’ programming language.

1959年,另一个小组在美国国防部的监督下举行会议,讨论开发一种“通用”编程语言。

“This group, composed of about 40 members, represented computer manufacturers and users from industry, universities, and government and became known as the CODASYL Committee(COOnferenceon DAta SYstemsLanguages).”

“该小组由大约40名成员组成,代表计算机制造商和行业,大学和政府的用户,并因此而成为CODASYL委员会(COOnferenceon DAta SYstemsLanguages)。”

It was in the interest of both computer manufacturers and the government to design a language that could work on different machines.

设计一种可以在不同机器上运行的语言符合计算机制造商和政府的利益。

In April 1960 a language called COBOL was made.

1960年4月,开发了一种称为COBOL的语言。

Unlike FORTRAN the language started out relatively ‘machine-independent’.

与FORTRAN不同,该语言开始时相对于“机器无关”。

For many first and second generation programming was poorly understood by most and considered as Friedman says: a ‘black art’.

对于许多第一代和第二代编程,大多数人都不太了解,并被弗里德曼说成是“黑手艺”。

Important innovations in COBOL according to Friedman are the following:

Friedman认为,COBOL的重要创新如下:

  • The record data structure.记录数据结构。
  • File descriptions and manipulation facilities.文件描述和操作工具。
  • Machine independence of data and program descriptions.机器与数据和程序描述无关。
  • Equal emphasis on data descriptions in the Data Divisions and the operations in the Procedure Division.同时强调数据部门的数据描述和程序部门的操作。
  • Influence of English in the use of verbs, clauses, sentences, paragraphs, sections, and divisions.英语在动词,从句,句子,段落,部分和格的使用中的影响。
  • A relatively natural language styles, including noise words for readability.一种相对自然的语言样式,包括用于可读性的干扰词。
  • The overall effort towards a language that would produce self-documenting program code.对一种会产生自文档程序代码的语言的总体努力。

They started an important trend toward data-oriented languages. Friedman argues this has culminated in the proliferation of database management systems, query languages, and database-centred high-productivity programming tools and environments.

他们开始了面向数据的语言的重要趋势。 弗里德曼认为,这最终导致了数据库管理系统,查询语言以及以数据库为中心的高生产率编程工具和环境的激增。

There was a widespread availability of COBOL compilers partly due to government involvement:

COBOL编译器的广泛使用部分是由于政府的参与:

“…the Department of Defense sent a strongly worded letter to all computer manufacturers advising them that if they wanted to continue to sell computers to the Department of Defense(the largest computer contracter and endower of research grants) they had better put a COBOL compiler on it.”

“……国防部给所有计算机制造商发送了一封措辞强烈的信,通知他们,如果他们想继续向国防部出售计算机(最大的计算机承包商和研究经费的支持者),最好将COBOL编译器放在它。”

Friedman comments that FORTRAN, COBOL and LISP were among the most used programming languages at the time of writing (approx. 1990).

弗里德曼评论说,在撰写本文时(大约1990年),FORTRAN,COBOL和LISP是最常用的编程语言。

巴别塔→1960年代和1970年代 (Babel → 1960’s and 1970's)

“The decades of the 1960s and the 1970s saw a truly amazing proliferation of programming languages.It was this hubub of activity that Jean Sammetin 1969 likened to the Biblical Tower of Babel.”

“ 1960年代和1970年代的数十年间,编程语言的确令人惊奇地泛滥。正是这一活动的兴致,让·萨米特(Jean Sammetin)1969年将其比作《圣经》的巴别塔。”

APL (A Programming Language). Defined and introduced to the public in 1962 through a book by Kenneth Iverson at Harvard, who took part in designing this. It required a special keyboard and did not become widely used.

APL(一种编程语言) 。 1962年,由哈佛大学的肯尼斯·艾弗森(Kenneth Iverson)撰写并参与设计的一本书定义并向公众介绍。 它需要特殊的键盘,并未得到广泛使用。

SNOBOL (StriNg Oriented symBOlic Language). First implemented in 1963, it was designed by researchers at Bell Laboratories as a string manipulation language. The implementation was actually named SEXI (String EXpression Interpreter), but it was apparently considered unacceptable. The name of the language was a humorous jab at acronyms: SNOBOL (StriNg OrientedsymBOlicLanguag). SNOBOL4 was released in 1968 designed for third generation computer hardware, it treats patterns as data objects. The unique feature was its facility for string and pattern matching.

SNOBOL(面向StriNg的符号语言) 。 它于1963年首次实现,由贝尔实验室的研究人员将其设计为字符串处理语言。 该实现实际上被命名为SEXI(字符串表达式解释器),但显然被认为是不可接受的。 该语言的名称是一个幽默的缩写,缩写为SNOBOL(StriNg OrientedsymBOlicLanguag)。 SNOBOL4于1968年发布,专为第三代计算机硬件而设计,它将模式视为数据对象。 独特之处在于它可用于字符串和模式匹配。

BASIC (Beginner's All-purpose Symbolic Instructional Code). Code ran in 1964, and the language design was intended to introduce students in non-scientific disciplines to computing. Simplicity was chosen over compiler efficiency, and clear error messages were provided.

BASIC(初学者的通用符号教学代码) 。 代码运行于1964年,语言设计旨在向非科学学科的学生介绍计算机。 选择简单性而不是编译器效率,并提供了明确的错误消息。

PL/1 (Programming Language/one). Released 1966, intended as the ‘language to end all languages’, but not as popular as IBM had hoped. Compilers were inefficient and unreliable. It has been criticised as a language to big, as it tried to include every conceivable element of language design.

PL / 1(编程语言/一种) 。 1966年发布,旨在作为“终止所有语言的语言”,但没有IBM希望的那样流行。 编译器效率低下且不可靠。 由于它试图包含语言设计的所有可能元素,因此已被广泛批评为一种语言。

Logo. Developed over the years 1966–1968. Designed specifically for mathematics education, used experimentally in classrooms. Logo is very similar to LISP. It includes ‘turtle graphics’, for teaching kids geometric principles.

徽标 。 1966年至1968年间开发。 专为数学教育而设计,可在课堂上进行实验性使用。 徽标与LISP非常相似。 它包括“海龟图形”,用于教孩子们几何原理。

FORTH (fourth-generation language). Charles H. Moore wanted a language efficient enough for scientific and engineering applications, yet allow for faster programming using fewer lines of code. Two (apparently) conflicting design goals it seems. According to Friedman it cannot be considered a fourth generation language today.

FORTH (第四代语言)。 查尔斯·H·摩尔(Charles H. Moore)希望这种语言对于科学和工程应用程序足够有效,但允许使用更少的代码行来加快编程速度。 看起来两个(显然)矛盾的设计目标。 根据Friedman的说法,今天不能将其视为第四代语言。

SIMULA. Designed in 1962 by Kristen Nygaard and Ole-Johan Dahl at the Norwegian Computing Center under contract with Univac. Motivated by a wish to simulate applications — a technique of operations research successfully used in a number of diverse areas. This language introduced the ‘class concept’, an important abstraction for object-oriented programming.

SIMULA 。 由Kristen Nygaard和Ole-Johan Dahl与Univac签订合同,于1962年在挪威计算中心设计。 出于希望模拟应用程序的动机-一种运筹学技术已成功应用于许多不同领域。 该语言引入了“类概念”,这是面向对象编程的重要抽象。

Pascal (named after 17th century French philosopher and mathematician Blaise Pascal). The revision of ALGOL68 (from ALGOL60) was not popular, as it was needlessly big and awkward. One of the ‘dissenters’ Niklaus Wirth designed Pascal, which was first implemented in 1970. Friedman argues that Pascal designed for use in education stood out: “…in opposition to a trend”. A trend of complicating a language with features so no user could expect to know all of them.

Pascal(以17世纪法国哲学家和数学家Blaise Pascal的名字命名) 。 ALGOL68(来自ALGOL60)的修订版不受欢迎,因为它不必要的大而笨拙。 尼克劳斯·沃思(Nicklaus Wirth)设计的“异议者”之一是帕斯卡(Pascal),该工具于1970年首次实施。弗里德曼(Friedman)辩称,为教育而设计的帕斯卡(Pascal)脱颖而出:“……与趋势相反”。 一种使功能变得复杂的语言的趋势,因此没有用户可以期望了解所有功能。

C. Kenneth Thompson and Dennis Ritchie developed C for coding the routines in a UNIX operating system. C was an extension of B (also designed by Thompson) that drew on an earlier language BCPL. C created the notion of a portable operating system. Friedman argues that a concise syntax makes C programs difficult to read, understand, debug and maintain.

C. Kenneth Thompson和Dennis Ritchie开发了C语言,用于在UNIX操作系统中对例程进行编码。 C是对B(也由Thompson设计)的扩展,它借鉴了较早的语言BCPL。 C创建了可移植操作系统的概念。 Friedman认为,简洁的语法会使C程序难以阅读,理解,调试和维护。

Modula-2 (MODUlar LAnguage/two). Descendant of Pascal, intended for large systems. The module facilitates information sharing, encapsulating code in clearly delineated pieces.

模组2 (模组语言/两个)。 Pascal的后代,适用于大型系统。 该模块有助于信息共享,将代码封装在清晰划定的部分中。

Ada. Proposed in 1980 and standardised in 1983 it had similar intents as PL/1 (language to end all languages) and similar success.

艾达 它于1980年提出并于1983年标准化,其意图与PL / 1(终止所有语言的语言)相似,并且取得了类似的成功。

After the announcement of FORTRAN with the report in 1954 there were a great deal of languages that attempted to: “…tame the electronic computer for high-level use by humans in every application area.”

在1954年发布FORTRAN报告后,出现了许多语言试图: “……使电子计算机成为人类在每个应用领域的高级使用方式。”

Friedman has been so kind as to draw a model of some of the influences between the different languages:

弗里德曼(Friedman)很善良,可以为不同语言之间的一些影响建立模型:

Model by Friedman
弗里德曼模型

第四代软件-声明性语言 (Fourth software generation — declarative languages)

“The von Neumann-typeof computer architecture, while serving as catalyst for a generation of programming languages may also, it appears, be guilty in large part for the degree of stagnation we have seen in the conceptual development of programming language technology.”

“冯·诺依曼型计算机体系结构虽然可以作为一代编程语言的催化剂,但在很大程度上,我们在编程语言技术的概念发展中所遇到的停滞程度似乎也是有罪的。”

What Friedman refers to is the stored program in memory locations with a single counter in a flow of sequence instructions. Programming languages relying on this prior paradigm (procedural) architecture tend to be:

Friedman所指的是在顺序指令流中带有单个计数器的存储位置中的存储程序。 依赖此先前范例(过程)体系结构的编程语言通常是:

  1. Statement-oriented (assuming sequential execution of a limited number of operations).面向语句(假定顺序执行有限数量的操作)。
  2. Composed of vast numbers of lines of code. Debugging is arduous and lengthy.由大量的代码行组成。 调试工作艰巨而漫长。
  3. Maintenance is time-consuming and costly.维护既费时又昂贵。

Friedman argues that this next paradigm is declerative:

弗里德曼(Friedman)认为,下一个范式是容忍的:

“A fourth generation language is declarative, i.e. its instructions to the computer concentrate more on what is to be done rather than on describing in detail how to do it.”

“第四代语言是说明性的,即它对计算机的指令更多地集中在要做什么,而不是在详细描述如何做。”

Fourth generation seeks to optimise human labour over computer time.

第四代寻求在计算机时间内优化人工。

Frequently aimed at a non-technical user in a particular application area.

通常针对特定应用领域中的非技术用户。

Some of the trends according to Friedman are:

根据Friedman的一些趋势是:

  • Declarative language.声明性语言。
  • Packaged software.打包软件。
  • Integrated packages.集成软件包。
  • User-friendly interactive environments.用户友好的交互式环境。
  • Query languages.查询语言。
  • High-productivity programming tools.高生产力的编程工具。
  • The integration of languages.语言的整合。
  • Programming tools (editor, linker, translators, file handler and user interface within a single interactive system).编程工具(单个交互式系统中的编辑器,链接器,翻译器,文件处理程序和用户界面)。

She mentions that not all systems are non-procedural and the classification is arbitrary.

她提到并非所有系统都是非过程性的,并且分类是任意的。

In 1961, the statistical package BMD (BioMeDicalpackage) is developed at the University of California Berkeley and implemented in FORTRAN on the IBM 7090.

1961年,统计软件包BMD(BioMeDicalpackage)在加利福尼亚大学伯克利分校开发,并在FORTRAN中的IBM 7090上实现。

In 1967, Arthur S. Couch developed DATATEXT at Harvard University aimed at social scientists.

1967年,Arthur S. Couch在哈佛大学开发了针对社会科学家的DATATEXT。

PROLOG (Programming in LOGic). Implemented in 1972 in ALGOL-W for the purpose of natural-language processing. Since 1981 it became associated with Japan’s Fifth Generation Project.

PROLOG (以逻辑编程)。 1972年在ALGOL-W中实现,用于自然语言处理。 自1981年以来,它与日本的第五代计划相关。

OPS (Official Production System). A production-system or rule-based language used in the field of artificial intelligence. OPS5 released in 1977.

OPS(正式生产系统) 。 人工智能领域中使用的一种生产系统或基于规则的语言。 OPS5于1977年发布。

Smalltalk. Designed and implemented at Xerox Palo Alto Research Center (PARC) as the software component of: “Alan Kay’s legendary Dynabook, a notebook-sized personal computer for the non-technical user.” The environment was important: mouse for selecting and pointing; graphical user menus and so on. Steve Jobs used this approach with the Apple Computers Lisa and Macintosh operating system.

闲聊 。 在施乐帕洛阿尔托研究中心(PARC)上设计和实现,它是以下软件的组件:“艾伦·凯(Alan Kay)传奇的Dynabook,一种非技术用户的笔记本大小的个人计算机。” 环境很重要:鼠标用于选择和指向; 图形用户菜单等。 史蒂夫·乔布斯(Steve Jobs)在Ap​​ple Computers Lisa和Macintosh操作系统上使用了这种方法。

Query languages. Made to make databases accessible to people with minimal training, query languages were developed to be user-friendly. SQL was developed for SystemsR and several other ways to query. SQL was designed at IBM and marketed in 1979 by Oracle.

查询语言 。 查询语言旨在使人们受过最少的培训就可以访问数据库,因此开发了查询语言以使其易于使用。 SQL是为SystemsR和其他几种查询方式开发的。 SQL是在IBM设计的,并于1979年由Oracle推向市场。

Friedman argues:

弗里德曼认为:

“A fourth-generation high-productivity tool is largely non-procedural, user-friendly, and problem-oriented.”

“第四代高生产率工具主要是非过程性的,用户友好的和面向问题的。”

Further, she says that these systems have been centred around a database and include components of a database management system.

她还说,这些系统已经集中在数据库周围,并且包括数据库管理系统的组件。

Software began with humans forced to ‘think’ in code for a specific machine.

软件始于人类被迫“思考”特定机器的代码。

At the time of writing Friedman already argues that computers can ‘think’ or act to some extent like human beings.

在撰写本文时,弗里德曼已经论证了计算机可以像人类一样“思考”或采取某种行动。

Linda Weiser Friedman’s article is a fascinating read and I do of course recommend that you read it in full rather than my limited summary.

琳达·维泽·弗里德曼(Linda Weiser Friedman)的文章引人入胜,我当然建议您完整阅读而不是只限于我的摘要。

I hope you enjoyed this article!

希望您喜欢这篇文章!

This is #500daysofAI and you are reading article 467. I am writing one new article about or related to artificial intelligence every day for 500 days.

这是#500daysofAI,您正在阅读文章467。我连续500天每天都在撰写一篇有关人工智能或与人工智能有关的新文章。

翻译自: https://medium.com/@alexmoltzau/the-history-of-early-programming-languages-1b4067f624a1

计算机编程语言历史


http://www.taodudu.cc/news/show-3280086.html

相关文章:

  • python编程语言的优点-为什么一定要学习python语言
  • 为何说Lisp是有史以来最牛的编程语言?
  • 初学者去哪学计算机,零基础学习编程从哪学起
  • 怎样才能学好一门编程语言?要怎样去学习才算成功?成为一名合格的程序员
  • lnx的导数证明
  • 求导公式总结
  • android studio logcat你怎么不就出来了呢
  • C语言之自然对数ln(x)的导数
  • 复合函数求导
  • 常见函数求导及求导法则
  • 微积分基础之求导
  • 【Leetcode】276. Paint Fence
  • 常用求导公式
  • Softmax函数求导
  • python求导
  • 函数求导简介
  • 求导公式
  • 快速求导函数
  • 隐函数求导例题
  • Softmax Regression损失函数的求导
  • 复合函数求导经典例题_复合函数求导练习试题.doc
  • 用计算机求导,求导公式?
  • 超过4亿人 中国拥有全球规模最大中等收入群体
  • 财富阶层4等级,你属于哪一级?
  • 《中国历代政治得失》-钱穆
  • 2022-2027年中国快时尚行业发展监测及投资战略研究报告
  • 中国新消费时代:年轻人成消费主力,引领时代发展
  • 『经济论坛』 [经济杂谈]看看你属于哪个阶层?中国阶层报告 2009第一版。
  • 美国的工薪族阶层只承担全国个税”总量的5%
  • [转]阶层分析

计算机编程语言历史_早期编程语言的历史相关推荐

  1. tushare获取沪深300指数历史_从Tushare获取历史行情数据

    从Tushare获取历史行情数据,分为两种,一种是后复权(daily_hfq)数据,一种是不复权(daily)数据,获取到的数据存储在MongoDB数据库中,每个集合(collection)中,数据字 ...

  2. 查看mysql数据库历史_查看mysql数据库历史

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  3. 个别软件无法联网_个别编程语言对软件开发的贡献

    个别软件无法联网 我已经厌倦了博客文章和论坛咆哮,他们指出为什么一种编程语言比另一种更好. 我不介意将语言进行比较以帮助了解它们的不同之处,或者甚至是出于特定原因在特定情况下认为一种语言更好时,我也不 ...

  4. plc-st编程语言学习_这就是您可以学习所有编程语言的方式,是的-“全部”

    plc-st编程语言学习 "我应该首先学习哪种编程语言?" 许多初学者在开始学习编码时都会遇到这个常见问题. "哪种是最好的编程语言?" 在学习了一些语言之后, ...

  5. Python基础——计算机组成原理、操作系统概述、编程语言的由来、编程语言分类、python介绍、 安装Cpython解释器、 第一个python程序

    文章目录 一 引子: 1.1 什么是语言?什么是编程语言?为何要有编程语言? 1.2 什么是编程?为什么要编程? 二 计算机组成原理 2.1.什么是计算机? 2.2.为什么要用计算机? 2.3.计算机 ...

  6. 新高考不选物理可以学计算机吗,新高考物理学不好选历史可以吗?附高考不选物理的后果...

    选择科目 测一测我能上哪些大学 选择科目 领取你的专属报告 > 选择省份 关闭 请选择科目 确定 v> 随着新高考在各省市的大力推行,物理和历史科目逐渐成为广大考生的关注热点.有些学生的理 ...

  7. 史上最全编程语言列表_你掌握了哪些?

    原文链接 计算机编程语言可用于将指令传达给计算机.下面可能是史上最全编程语言列表,我将它们分为以下几类,你掌握了哪些? 解释型编程语言 函数式编程语言 编译型编程语言 过程式编程语言 脚本编程语言 标 ...

  8. 2019年四月计算机语言排名,2019编程语言排行榜_编程语言排行榜2019年4月 TIOBE编程语言排行榜2019年最...

    编程语言排行榜2019年4月 TIOBE编程语言排行榜2019年最新版 JPG,600x549,231KB,273_250 编程语言排行榜2019年4月 TIOBE编程语言排行榜2019年最新版 JP ...

  9. 计算机720p进制,历史频道《人类大历史 Big History》第1季全17集 英语中字 720P高清纪录片...

    由 历史频道<人类大历史 Big History> 第1集 我们都知道人类无法离开空气. 第2集 淘金热 Gold Fever 这一集提出了人类为什么为金痴狂的问题,并发现我们迷恋金子有着 ...

最新文章

  1. 常考数据结构和算法:合并有序链表
  2. python 学习DAY03
  3. java版b2b2c社交电商spring cloud分布式微服务:服务消费(Ribbon)
  4. Enjoy Android
  5. IOS之使用纯代码push ViewController
  6. 【高斯消元】球形空间产生器(luogu 4035/金牌导航 高斯消元-1)
  7. 服务端增加WCF服务全局异常处理机制
  8. Linux下NTP时间同步客户端配置
  9. deeply understanding Binary tree--二叉树
  10. golang之正则校验(验证某字符串是否符合正则表达式)
  11. c语言strTrimed函数用法介绍,TRIM函数
  12. Jquery Highcharts 选项配置 说明文档
  13. java信鸽推送_记录腾讯信鸽推送服务java
  14. winform之控件在Panel中居中
  15. 【网络工程】什么是7类网线7类线与超6类线的区别以及它的应用场景
  16. 建设银行对银行系金融科技转型的战略与思考
  17. 第83节:Java中的学生管理系统分页功能
  18. 《大数据架构和算法实现之路:电商系统的技术实战》——2.4 案例实践
  19. java第九章第一题_Java第九章第五题
  20. IEEE Access 投稿

热门文章

  1. 关系数据库SQL面试排名前100道问答题
  2. Windows上GAWK的使用(一)
  3. JavaScript下载文件下载 [Blob]
  4. OA办公软件哪个好用?
  5. 近期读书计划(2018.9.11~)
  6. 盗版软件中国肆虐,微软/Adobe不能承受之痛
  7. AccessibilityService 辅助功能
  8. 励志文章:追梦的青春,不放弃
  9. U盘只剩下一个快捷方式,解决办法
  10. PDF格式转换器哪个好用