Chinaunix首页 | 论坛 | 博客
  • 博客访问: 806891
  • 博文数量: 87
  • 博客积分: 2571
  • 博客等级: 少校
  • 技术积分: 726
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-19 15:04
个人简介

重新开始,做回自我,爱拼的男人最牛!

文章分类
文章存档

2021年(2)

2020年(3)

2019年(17)

2014年(1)

2011年(1)

2010年(63)

我的朋友

分类: C/C++

2020-02-06 15:19:54

计算机的发展历史
在第二次世界大战中,美国政府寻求计算机以开发潜在的战略价值。这促进了计算机的研究与发展。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语言的由来
早期的操作人员是通过带有孔的纸带将程序输入电脑进行编译(对纸条打点),后面出现了汇编语言,操作人员每人一个小册子(指令小册子),开发人员非常非常辛苦


二进制语言:


0000,0000,000000010000 代表 LOAD A, 16


0000,0001,000000000001 代表 LOAD B, 1


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

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


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

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


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


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),它看上去很可能成为未来的主宰。

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


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


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


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只需要一天;越是离机器远的语言,运行效率越低,开发效率越高,一般称之为高级语言,越是离机器近的语言,运行效率越高,开发效率越低,一般称之为低级语言,低级和高级仅仅指的是语言距离机器的远近;早期由于计算机硬件性能低,大家对程序的要求比较严格,但随着计算机的不断发展,硬件性能的大规模提升,程序本身影响运行效率的因素越来越轻微,项目越来越大,开发效率成为很重要的指标,而且高级语言更易于学习,可读性也远远高于低级语言,这也是面向对象语言流行的原因。


————————————————
版权声明:本文为CSDN博主「AFinalStone」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/abc6368765/article/details/83990756

阅读(1591) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~