计算机和编程语言的发展历史

article/2025/9/6 19:16:13

计算机的发展历史

在第二次世界大战中,美国政府寻求计算机以开发潜在的战略价值。这促进了计算机的研究与发展。1944年霍华德.艾肯(1900-1973)研制出全电子计算器,为美国海军绘制弹道图。这台简称 Mark I 的机器有半个足球场大,内含500英里的电线,使用电磁信号来移动机械部件,速度很慢(3-5秒一次计算)并且适应性很差只用于专门领域,但是,它既可以执行基本算术运算也可以运算复杂的等式。

1946年2月14日,由美国军方定制的世界上第一台电子计算机“电子数字积分计算机”(ENIAC Electronic Numerical And Calculator)在美国宾夕法尼亚大学问世了。ENIAC(中文名:埃尼阿克)是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的,这台计算器使用了17840支电子管,大小为80英尺×8英尺,重达28t(吨),功耗为170kW,其运算速度为每秒5000次的加法运算,造价约为487000美元。

第一台计算器
1、第1代:电子管数字机(1946—1958年)

(1)硬件方面,逻辑元件采用的是真空电子管,主存储器采用汞延迟线电子管数字计算机、阴极射线示波管静电存储器、磁鼓、磁芯;外存储器采用的是磁带。软件方面采用的是机器语言、汇编语言。应用领域以军事和科学计算为主。

(2)特点是体积大、功耗高、可靠性差。速度慢(一般为每秒数千次至数万次)、价格昂贵,但为以后的计算机发展奠定了基础。

2、第2代:晶体管数字机(1958—1964年)

(1)硬件方的操作系统、高级语言及其编译程序。应用领域以科学计算和事务处理为主,并开始进入工业控制领域。

(2)特点是体积缩小、能耗降低、可靠性提高、运算速度提高(一般为每秒数10万次,可高达300万次)、性能比第1代计算机有很大的提高。

3、第3代:集成电路数字机(1964—1970年)

(1)硬件方面,逻辑元件采用中、小规模集成电路(MSI、SSI),主存储器仍采用磁芯。软件方面出现了分时操作系统以及结构化、规模化程序设计方法。

(2)特点是速度更快(一般为每秒数百万次至数千万次),而且可靠性有了显著提高,价格进一步下降,产品走向了通用化、系列化和标准化等。应用领域开始进入文字处理和图形图像处理领域。

4、第4代:大规模集成电路机(1970年至今)

(1)硬件方面,逻辑元件采用大规模和超大规模集成电路(LSI和VLSI)。软件方面出现了数据库管理系统、网络管理系统和面向对象语言等。

(2)特点是1971年世界上第一台微处理器在美国硅谷诞生,开创了微型计算机的新时代。应用领域从科学计算、事务管理、过程控制逐步走向家庭。

UNIX操作系统和C语言的由来

早期的操作人员是通过带有孔的纸带将程序输入电脑进行编译(对纸条打点),后面出现了汇编语言,操作人员每人一个小册子(指令小册子),开发人员非常非常辛苦

二进制语言:

  1. 0000,0000,000000010000 代表 LOAD A, 16

  2. 0000,0001,000000000001 代表 LOAD B, 1

  3. 0001,0001,000000010000 代表 STORE B, 16

汇编语言:

汇编语言

  • UNIX操作系统产生

1、20世纪60年代,贝尔实验室的研究员Ken Thompson(肯·汤普森)发明了B语言,并使用B编了个游戏 - Space Travel,他想玩自己这个游戏,所以他背着老板找到了台空闲的机器 - PDP-7,但是这台机器没有操作系统,于是Thompson着手为PDP-7开发操作系统,后来这个OS被命名为 - UNIX。Thompson(肯·汤普森)发明了UNIX

Unix

2、1971年,Ken Thompson的同事D.M.Ritchie(DM里奇),也很想玩Space Travel,所以加入了Ken Thompson,合作开发UNIX,他的主要工作是改进Thompson的B语言。

最终,在1972年这个新语言被称为C,取BCPL的第二个字母,也是B的下一个字母

C语言

D.M.Ritchie(DM里奇)发明了C语言

3、1973年,C主体完成。Ken Thompson和D.M.Ritchie迫不及待的开始用C语言完全重写了UNIX。此时编程的乐趣已经使他们完全忘记了那个“Space Travel”,一门心思的投入到了UNIX和C语言的开发中。自此,C语言和UNIX相辅相成的发展至今。

C语言作者

Ken Thompson(left)和D.M.Ritchie(right)

  • 类C语言起源、历史

C语言、C语言的起源以及类似C语言的编程语言的历史简直不要太漫长,我简单总结列表如下:

CPL(Combined Programming Language) - 1963
CPL是1963年剑桥大学发明的

BCPL(Base Combined Programming Language) - 1967
剑桥的Matin Richards 对CPL做了简化,推出了BCPL

B(B Programming Language) - 1969
贝尔实验室的Ken Thompson(肯·汤普森) 对BCPL又做了改进,设计出了简单的且接近硬件的B语言,并用B语言写了第一个UNIX OS

C(C Programming Language) - 1972
贝尔实验室的另外一个人Dennis MacAlistair Ritchie(D.M.Ritchie - DM里奇)在B的基础上设计出了C语言。C 保持了B的优点(精炼、接近硬件),又克服了他的缺点(过于简单,数据无类型)

C++(C plus plus Programming Language) - 1983
还是贝尔实验室的人,Bjarne Stroustrup(本贾尼·斯特劳斯特卢普) 在C语言的基础上推出了C++,它扩充和完善了C语言,特别是在面向对象编程方面。一定程度上克服了C语言编写大型程序时的不足。

Java(Java Programming Language) - 1995
Sun公司的Patrick Naughton的工作小组研发了Java语言,主要成员是James Gosling(詹姆斯·高斯林)

C#(C Sharp Programming Language) - 2000
Microsoft公司的Anders Hejlsberg(安德斯·海尔斯伯格)发明了C#,他也是Delphi语言之父。

浏览器和JavaSript的历史

1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,

轰动一时。
但是这是一款名副其实的浏览器–只能浏览页面,浏览器无法与用户互动。比如你登录一个网站输入完用户名点击提交的时候。浏览器并不知道你是否输入了,也无法判断。只能传给服务器去判断。

网景浏览器

1、计算机的越来越好的同时,网上冲浪也越来越流行时,对于开发客户端脚本的需求也逐渐增大。此时,大部分因特网用户还仅仅通过 28.8 kbit/s 的调制解调器连接到网络,即便这时网页已经不断地变得更大和更复杂。而更加加剧用户痛苦的是,仅仅为了简单的表单有效性验证,就要与服务器进行多次地往返交互。设想一下,用户填完一个表单,点击提交按钮,等待了 30 秒的处理后,看到的却是一条告诉你忘记填写一个必要的字段。

2、网景急于解决浏览器与用户交互这个问题。当时解决这个问题有两个办法,一个是采用现有的语言,比如Perl、Python、Tcl、Scheme等等,允许它们直接嵌入网页。另一个是发明一种全新的语言。这两个选择各有利弊。第一个选择,有利于充分利用现有代码和程序员资源,推广起来比较容易;第二个选择,有利于开发出完全适用的语言,实现起来比较容易。到底采用哪一个选择,网景公司内部争执不下,管理层一时难以下定决心。

3、就在这时发生了一件大事,1995年Sun公司将Oak语言改名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。

Java语言

4、网景公司动了心,决定与Sun公司结成联盟。它不仅允许Java程序以applet(小程序)的形式,直接在浏览器中运行;甚至还考虑直接将Java作为脚本语言嵌入网页,只是因为这样会使HTML网页过于复杂,后来才不得不放弃。

5、总之,当时的形势就是,网景公司的整个管理层,都是Java语言的信徒,Sun公司完全介入网页脚本语言的决策。 因此,Javascript后来就是网景和Sun两家公司一起携手推向市场的,这种语言被命名为"Java+script"并不是偶然的。

6、此时,34岁的系统程序员(布兰登·艾奇)Brendan Eich登场了。

JavaSript的作者

7、1995年4月,网景公司录用了他。Brendan Eich的主要方向和兴趣是函数式编程,网景公司招聘他的目的,是研究将Scheme语言作为网页脚本语言的可能性。Brendan Eich本人也是这样想的,以为进入新公司后,会主要与Scheme语言打交道。

8、仅仅一个月之后,1995年5月,网景公司做出决策,未来的网页脚本语言必须"看上去与Java足够相似",但是比Java简单,使得非专业的 网页作者也能很快上手。 这个决策实际上将Perl、Python、Tcl、Scheme等非面向对象编程的语言都排除在外了。

9、Brendan Eich被指定为这种"简化版Java语言"的设计师。但是,他对Java一点兴趣也没有。为了应付公司安排的任务,他只用10天时间就把Javascript设计出来了。由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。如果Brendan Eich预见到,未来这种语言会成为互联网第一大语言,全世界有几百万学习者,他会不会多花一点时间呢?
总的来说,他的设计思路是这样的:
(1)借鉴C语言的基本语法;
(2)借鉴Java语言的数据类型和内存管理;
(3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
(4)借鉴Self语言,使用基于原型(prototype)的继承机制。
所以,Javascript语言实际上是两种语言风格的混合产物----(简化的)函数式编程+(简化的)面向对象编程。 这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。

语言的分类

  • 按照语言发展的过程来分

1、面向机器的语言:二进制,汇编

2、面向过程的语言:汇编语言,C语言,B语言,

3、基于面向对象的语言:最典型的就是C++语言,OC

4、面向对象的语言:Java语言,C#语言等

语言的发展

  • 按照类型的强弱来分

1、强类型语言:C语言,C++,Java 那变量的声明来举例子:定义变量必须指定变量的类型

2、弱类型语言:python,javaScript,Swift,kotlin

语法更加简单,更加易于学习,关键字也减少了

  • 按照需不需编译来分:

1、脚本语言:Cmd命令,数据库操作语言SQL,JavaScript

2、预编译语言:最典型的就是Java语言,首先生成Java汇编,然后通过虚拟机进一步转换成计算机可以识别的二进制汇编语言

3、编译语言:汇编语言,C语言,C++语言,

4、标记语言:Html语言,语言本身没有内容,只是起到辅助的作用,没有他也没问题,只不过影响美观

随着计算机的发展,计算机面临的需求越来越多,解决的问题也越来越复杂,更高的封装才能解决更加棘手的问题,开发效率也会更高,也更易于学习和开发;举个例子:汇编做一年的工作,C语言可能只需要半年,C++只需要三个天,phthon只需要一天;越是离机器远的语言,运行效率越低,开发效率越高,一般称之为高级语言,越是离机器近的语言,运行效率越高,开发效率越低,一般称之为低级语言,低级和高级仅仅指的是语言距离机器的远近;早期由于计算机硬件性能低,大家对程序的要求比较严格,但随着计算机的不断发展,硬件性能的大规模提升,程序本身影响运行效率的因素越来越轻微,项目越来越大,开发效率成为很重要的指标,而且高级语言更易于学习,可读性也远远高于低级语言,这也是面向对象语言流行的原因。


http://chatgpt.dhexx.cn/article/m7yKm8yf.shtml

相关文章

计算机编程语言(机器语言,汇编语言,高级语言)

计算机语言:计算机语言通常是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机工作的“符号系统”。 计算机语言通常分为三类:即机器语言,汇编语言和高级语言。 1. 机器语言 机器语言是用二进制代码表示的计算机能直接识别和…

pr cpu100%_pr是什么意思 pr的意思是什么

pr有很多种意思,常见的意思有项目评审、代表网站的等级、永久居留权以及视频编辑软件。 1、pr是项目评审(Project Review)英文的缩写。就是关于审查和批准项目计划,项目变更和工作进展评价的一个步骤。项目评审的输入、步骤以及它的输出结果取决于不同的…

Pr:基本声音面板

基本声音(Essential Sound)是一个多合一面板(简称为ESP),提供了一些简单的控件,可快速地用于统一音量级别、修复声音、提高清晰度,以及添加特殊效果等,引导编辑人员完成对话、音乐、…

01-认识产品经理:什么是合格的产品经理?其分类?岗位职责?能力素质?职业发展?

文章目录 引入1.1 合格的产品经理1.2 产品经理的分类按服务对象不同划分按产品平台不同划分按公司所属行业不同按工作内容划分按职级高低划分 1.3 产品经理的岗位职责产品的开发流程核心团队成员及其职责产品经理工作中常见误区 1.4 产品经理的能力素质专业技能(干得…

【PR篇】快捷键

文件 Ctrl Alt N 新建项目Ctrl O 打开项目Ctrl Alt O 在Brige 中浏览Ctrl Shift W 关闭项目Ctrl W 关闭Ctrl B 素材箱Ctrl S 保存Ctrl Shift S 另存为Ctrl Alt S 保存副本F5 采集F6 批采集Ctrl Alt I 从媒体浏览器导入Ctrl I 导入Ctrl M 导出媒体Ctrl Q 退出…

Pr:常用音频效果

音频效果的调整,通常需要使用耳机或高质量的监听设备才能听出差别。 效果面板的“音频效果”文件夹中存放着 40 多种声音特效,常用的有下面一些。 振幅与响度类 根据音频内容调整音量大小并达到响度标准要求。 增幅 Amplify 可增强或减弱音频信号。 动态…

搜狗PR是什么?怎么查看网站的搜狗PR值

搜狗PR是什么?怎么查看网站的搜狗PR值? 搜狗PR是什么? 搜狗PR值全称为搜狗PageRank(网页级别),是搜狗用于用来标识网页的等级、重要性的一种方法,是搜狗用来衡量一个网站的好坏的重要标准之一。 搜狗SR是类似于Google…

【PR 基础】新建序列

目录 一、新建序列 二、序列预设 三、设置 一、新建序列 在如下区域点击鼠标右键,选择 新建项目-》序列 或 点击工具栏中的文件-》新建-》序列 二、序列预设 (1)时基:就是指帧速率,也就是每秒播放帧的数量&#xf…

开发中时常提到的提交pr是什么意思?

在编程开发领域,PR是Pull Request的缩写,一般用于Git/SVN等版本管理软件中。 它的过程是这样的:比如你在GitHub上看到一个很牛X的项目,你fork到自己仓库后,再改动一些代码,然后可以向提交一个pull request…

开发中经常提及的Pr是什么意思?

标题在编程开发领域,PR是Pull Request的缩写,一般用于Git/SVN等版本管理软件中。 它的过程是这样的:比如你在GitHub上看到一个很牛X的项目,你fork到自己仓库后,再改动一些代码,然后可以向提交一个pull req…

pr 是什么——可以做什么

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…

Linux命令——uptime

这个命令的用法比较简单,但是很实用,可以查看系统的负载,以及机器运行的时间。 从左向右: 11:01:42 当前时间 up 2 days,15:49 当前机器运行了2天15个小时49分钟 3 users 当前机…

云原生之使用docker部署uptime-kuma服务器监控面板

云原生之使用docker部署uptime-kuma服务器监控面板 一、uptime-kuma介绍二、检查docker环境1.检查docker状态2.检查docker版本 三、下载uptime-kuma镜像四、部署uptime-kuma1.创建数据目录2.创建uptime-kuma容器3.查看uptime-kuma容器状态4.查看uptime-kuma容器日志 五、访问up…

Linux常用命令——uptime命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) uptime 查看Linux系统负载信息 补充说明 uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户…

Linux uptime 命令(75)

文章目录 1.命令简介2.命令格式3.选项说明4.常用示例5.拓展知识5.1 什么是系统平均负载5.2 系统平均负载多少时合理5.3 获取系统 CPU 核心数5.4 平均负载与 CPU 使用率的关系 参考文献 1.命令简介 uptime 用于显示系统总共运行了多长时间和系统的平均负载。 无选项 uptime 命…

Uptime-Kuma 一个轻量的开源监控工具

点击蓝字 关注我们 你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,有用的工具,不要忘记关注。 今天给大家介绍一个开源的监控工具 Uptime Kuma, 主要用来监控 Web 以及网络, 和 Prometheus 相比, 它是轻量的, Uptime Kuma 是…

开源监控服务uptime-kuma

好久没写文章了,刚好最近用了一个开源的监控服务,感觉蛮有意思的,记录一下 (一)安装 uptime-kuma安装方式有几种,这里当然是选择大家都爱的docker,一条命令搞定 docker run -d --restartalways -p 3001:…

LINUX uptime命令解读

每当系统变慢时,我们做的第一件事就是执行top或uptime,来了解下负载情况。 如下: 这里每一列输出的含义是什么呢? 19:40:29 //当前时间 up 3 days, 7:32 //系统运行时间 3 user …

Uptime Kuma一款开源监控工具

一、简介 今天介绍一个开源免费的监控工具 Uptime Kuma 简单实用。主要用来监控 Web 和网络, 和 Prometheus 不一样的是, 它是轻量的, 基于Node.js 和 Vue 3 开发,可以访问 https://demo.uptime.kuma.pet 先在线体验一下。有可监控 HTTP(s) / TCP / Ping / DNS 等…

【Linux】uptime命令详解平均负载

命令 ➜ ~ uptime 22:37 up 90 days, 21:45, 2 users, load averages: 2.91 3.46 3.81 具体含义 22:37:代表的是当前的系统时间,也即晚上10点37分。 up 90 days, 21:45:代表系统运行时间 2 users :当前两个用户 load averages: 2…