从零开始,计算机编程语言简史 您所在的位置:网站首页 计算机编程那种语言实用 从零开始,计算机编程语言简史

从零开始,计算机编程语言简史

2024-07-09 10:53| 来源: 网络整理| 查看: 265

计算机语言总的来说分为机器语言,汇编语言,高级语言三大类,而这三种语言也恰恰是计算机语言发展历史的三个阶段。其中,汇编语言几乎成为了每个科班学生的噩梦。

我希望从计算机语言编程语言的发展历史中,了解每一种编程语言在哪个历史时代背景中独特的魅力、它为什么而诞生、为什么能够推动计算机科学界的前进。

同时,我更愿望从这些编程预言的发展历史中,找到编程语言们的核心特性与共性,深度理解编程语言的底层原理和实现思想,构建自己的编程语言知识体系。

文章目录 机器&汇编语言高级语言的诞生大佬来了:C语言面向对象C++JavaPython 先来一波高级编程语言发展图:

在这里插入图片描述

机器&汇编语言

1946年2月14日,世界上第一台计算机ENAC诞生,使用的是最原始的穿孔卡片。这种卡片上使用的语言是只有专家(机器)才能理解的语言,与人类语言差别极大,这种语言就称为机器语言。

其实,机器语言就是由0和1两种元素组成。所谓的穿孔卡片也就是一条纸带,上面充满了0和1的序列,ENAC就是通过读取这种序列,来实现计算的。机器语言也就成为了第一代计算机语言。

由于第一代计算机语言(机器语言)的特性(人类根本没法看懂),导致了许许多多的问题,例如,对于程序编程员的要求极高(像我这种面向百度编程的人,就算了);运算结果出错了,根本没法排除…

于是,汇编语言诞生了。汇编语言用助记符代替了操作码,用地址符号或标号代替地址码。这样就用符号代替了机器语言的二进制码。汇编语言也称为符号语言。比起机器语言,汇编大大进步了。至少,人类可以直接从汇编语言中看懂它,知道它实现了什么功能。

尽管还是复杂,用起来容易出错,但在计算机语言发展史上是机器语言向更高级的语言进化的桥梁。

高级语言的诞生

当计算机语言发展到第三代时,就进入了“面向人类”的高级语言。也就是说,可以直接用人类能够看得懂的字符进行编程 —— 编写机器能够直接运行的程序。但是,要注意,机器运行的还是二进制的机器语言,只是人类在编写好高级语言后,将它转换成了机器语言而已,请看下图。 在这里插入图片描述

第一个高级计算机语言:Fortran 诞生于1957年,由IBM设计,是世界上第一个真正的面向人类的计算语言。

运行于IBM704计算机上。 支持:变量(变量名最多6个符)、if和do语句、格式化IO。 不支持:数据类型声明单独编译子程序。 Fortran的设计思想基于冯诺依曼体系结构式命令式语言的鼻祖。

在其后的几年间,Fortran还发布了新版本。

Fortran Il发布于1958年,主要对Fortran I的编译器做了优化,并支持了单独编译的子程序。Fortran IV发布于1962年,并在1966年被标准化为Fortran65,这也是第一个Fortran的标化版本。1978年的Fortran77是非重要的标准化版本,这时的Fortran语已经大量的引进了其他计算机语言的持中,例如字符串处理、逻辑判断、带else子句的if语句等·Fortran的最新标准化版是Fortran2008。

早年间重要的编程语言:

源于数学的计算机语言:Lisp。诞生于1950年。主要发明人是约翰·麦卡锡。通用科学计算语言:Algol。在Fortran I的基础做了扩展,并兼谷了当时其他语言的一些特性,成为了程序设计思想的集成。通用商务语言:COBOL。COBOL语言于1960年发布。注意真对商务应用。语言的设计理念是:“数学程序应该用数学记法来写,数据处理程序应该用英语匀来写"。商务应用显然属于后者,所以COBOL语言看起了就像是全大写的英语。跨领域语言:PL/I。诞生于1964年,是跨科字计算和商务应用领域的计算机语言。正交设计:Algol68。发表于1968年,第一个引入正交化设计的既念,以及用户目定义数据类型。初学者(文科生)的语言:BASIC。诞生于1971年,设计的主要目的是:使得计算机言可以被非理工科生使用(当时理工科字生使用的Fortran和A|gol60很难被文科生掌握)。这样的设计目的使得BASIC非常适台于初学者。学院派语言:Pascal。诞生于1971年,重大影响来自于程设计教学。在工业界也有广泛的使用。 大佬来了:C语言

有人说,C语言是世界上最好的语言,也有人说,C语言是世界上最重要语言,还有人说,,,(不吹逼,反正它很牛逼)

故事,要从MULTICS的项目说起。

该项目由**美国电话及电报公司(AT&T)、通用电器公司(G.E.)及麻省理工学院(MIT)**计划合作开发一个多用途、分时及多用户的操作系统,也就是这个MULTICS,其被设计运行在GE-645大型主机上。贝尔实验室中的有个叫 Ken Thompson 的人,他为 MULTICS 这个操作系统写游戏了个叫“Space Travel”的游戏,在 MULTICS 上经过实际运行后,他发现游戏速度很慢而且耗费昂贵。Ken在退出这个项目以后。他为了让这个游戏能玩,所以他找来Dennis Ritchie为这个游戏开发一个极其简单的操作系统。

Unix的诞生。

对于ken Thompson和Dennis Ritchie写出的那个操作系统,就是后来大名鼎鼎的Unix。当时是1969年8月。到了1973年的时候,Ken Thompson 与 Dennis Ritchie由于一些原因,决定重写Unix系统。他们用一个叫BCPL的语言开发,他们整合了BCPL形成B语言,后来Dennis Ritchie觉得B语言还是不能满足要求,就是就改良了B语言,这就是今天的大名鼎鼎的C语言。自那以后,Unix和C完美地结合成为一个统一体,C与Unix很快成为世界的主导。

C语言与Unix有这千丝万缕的关系,可以说,没有Unix,就没有C语言。 如果你要真正的了解C语言,就必须了解Unix。请参考这篇文章:你不知道的过去 - Linux 系统发展史小览 (与Unix区别科普文)

C语言。

BCPL,诞生于1967,是剑桥大写,它的祖先是1962年诞生于同一所大学的CPL语言。B和汇编一样数据类型就是机器字这极大的限制了B程在不同位数的机器之间的迁移。B的这种不可一致性寻致了C的产生。C语言就是B的改进版本,同样以BCPL基础。C语言浯法中对操作符的大量灵活的使用,极大的影响了后来的一批程序语言。 面向对象

面向对象的鼻祖,是Smalltalk。诞生于1980年,是第一个完全支持面向对象编程的语言。 它有这以下的面向对象特性:

Smalltalk源于SIMUAL 67,完善并定义了消息发送和对象继承关系。在Smalltalk中,所有的数据都是对象:消息的发送者,消息的接送者,消息的结果。对象的类型是类,类中可以定义方法、属性等。 C++

一句话说明白: C++诞生于1983年,是在C的基础上,又附带着面向对象的特性。

由 **Bjarne Stroustrup **于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。最初,这种新语言被称为“带类的C(C with Classes)”。

1983 年,“带类的C”加入虚函数、函数和运算符重载、引用等概念后,正式定名为“C++(C plus plus)”。

1985 年,C++ 最权威的著作、由 Bjarne Stroustmp 撰写的《C++程序设计语言》(The C+ + Programming Language)第一版发布。

1989 年,C++ 2.0 版发布,加入了多重继承、抽象类、静态成员、常量成员函数等概念。1990 年,又加入了模板、异常处理、名字空间等机制。

1998 年,ANSI(美国国家标准协会)和 ISO(国际标准化组织)联合发布了至今使用最为广泛的 C++ 标准,称为** C++ 98**。C++ 98 最为重大的改进就是加入了 “标准模板库”(Standard Template Library, STL),使得“泛型程序设计”成为 C++ 除“面向对象”外的另一主要特点。

核心特性:

C++的完全兼容C的情况下支持面向对象,从而使面向对象编程成为了命令式编程的一个子类,传统的命令式编程被叫做面向过程编程。因为对C的完全兼容,ASNI在1989年的标准化版本C89,合并的两种语言,叫做C/C++。C/C++的最终版本是1999年的C99。几乎吸收了当时被认为比较有效的计算语言特性:面向过程编程、面向对象编程、泛型编程、自定义操作符重载。C++语言特性直接支持四种程序设计风格:过程式程序设计、数据抽象、面向对象程序设计、泛型程序设计

同时代下的其他编程语言:

另一个对C进行面向对象拓展的编程语言:Object-C。脚本语言:Perl。发布与1987年,其起源于操作系统平台下的控制台(Shell)。 Java

Java语言可以说是世界上少有的核心语言之一了,它的独特性质支撑它在今天风靡整个互联网。成千上万的人投入它的怀抱,参与、使用Java开发。

Oak的诞生

SUN(Stanford University Networ(斯坦福大学网络公司) MicroSystems)在一定的商业背景下,在1991年成立了一个由詹姆斯·高斯林(James Gosling)领导,名为“Green”项目小组,目的是开发一种能够在各种消费性电子产品上运行的程序架构。该小组经历了一些尝试后,决定:对C++进行改造:去除了C++复杂的指针和内存管理,并结合嵌入式系统的实时性要求,终在1992年,他们开发了一种名为“Oak”的面向对象语言。

Java的出现

1994年,项目小组看到了浏览器在未来的发展前景,于是决定将OaK应用于万维网。在商业利益的催化下,Oka决定正式注册,但由于商标搜索显示Oak已被一家显卡制造商注册。于是1995年,Oak被改名为Java。1996年1月,第一个JDK-JDK1.0诞生。

计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。(即编译或解释:把高级语言转换成机器语言)

编译:将源代码编译链接成实际的计算机指令后再由计算机执行。解释:由解释器解释执行源代码。而Java却把这两种特性结合起来,做成了编译解释型语言。

因为它引入了Java虚拟机的概念,打破了以前的语言的与平台相关这一缺点:

Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

在这里插入图片描述

Python

1989,Guido von Rossum开发一个新的脚本解释程序,也就是Python。他希望新的语言Python能够满足他在C和Shell之间创建全功能、易学、可扩展的语言的愿景。

据说,Guido为了打发圣诞节的无趣,才想着开发了Python。Python这个名字来自Guido的喜爱的电视连续剧《蒙蒂蟒蛇的飞行马戏团》。

Python是面向对象的解释型脚本语言,同时,它也是编程语言中的新星,在当下的诸多领域发挥着重要作用,好比人工智能、深度学习领域,爬虫与大数据等等。

此外,还有许多著名的编程语言:

纯面向对象解释型脚本语言:Ruby。Web服务器脚本语言:PHP。浏览器脚本语言:JavaScript。注意一点的是它和Java没有任何关系!Microsoft家的.NET平台主语言:C#。

一些总结:

在经历的四年的编程语言学习后,我会发现,编程语言的发展是由复杂到简单的趋势,并且越来越“高级”。其中的复杂指的是程序员的开发难度,因为所有的复杂都被封装了。尽管这样,我还是觉得它的底层,或者说叫做封装的东西,依然十分重要。做一个简单的发展历史,从中窥见各类编程语言的共性和个性。我真正想要达到的是:从一门解释型脚本语言Python中,学会所有的脚本型编程语言;从一门编译型编程语言C/C++中,学会所有的编译链接型语言;从编译解释型编程语言Java,学会所有的编译解释型语言。最后,来一张高级编程语言的互联图: 在这里插入图片描述


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有