关于计算机发展史:
关于计算机发展史,大体经历了从一般计算工具到机械计算机到目前的电子计算机的发展历程。
公元前2500年,算盘已经出现;
1694 年,德国博物学家 戈特弗里德·莱布尼兹建造了“步进计算器”。 关于步进计算机,就是利用了巧妙的机械结构,包含了一连串的可以转动的齿轮,每个齿轮10个齿,表示0-9的数字,当一个齿轮转满一圈后旁边的齿轮的会转一圈,这样就可以做加法,相反,反向转就可以做减法。同时,乘法和除法也是可以的,就是将加法和减法转换成连续的加减法而已。
1822年,英国科学家查尔斯·巴贝奇设计了"差分机"模型;1991年,才被现代科学家根据手稿建造完成。利用差分原理,它能提高乘法速度和改进对数表等数字表的精确度。
1890 年,美国科学家为了解决人口普查中的计算问题,发明了“打孔卡片制表机”。
1943年,英国制造了第一个大规模使用“真空管”的计算机 —— 巨人一号,用于破解纳粹通信密码,这一成功直接促成了著名的“诺曼底登陆”。
1945年,第一台电子通用计算机在“宾夕法尼亚大学"完成建造。这就不得不提到我们的两位祖师爷,图灵和冯诺依曼两位大佬,关于通用型计算机,其愿景是图灵提出,其设计实现是冯诺依曼完成。
......
关于冯诺依曼体系:
CPU是计算机最核心的部分,进行算术运算和逻辑判断。关于CPU最重要的指标,就是“主频”2.9GHz,其描述了CPU的运算速度,可以近似的视为每秒钟能够执行29亿条指令。
其中输入设备,包含了键盘、鼠标、麦克风、摄像头等等。
其中输出设备,包含显示器、音响等等。
关于CPU基本工作流程:
关于加减乘除运算:借助于二极管等设备的特殊物理性质,可以构建一些门电路:与门、或门、非门。输入1或者0这样的电信号,通过这几个门电路且根据相同为0相异为1这样的规则来计算出与或非的值。两个比特位相加就构成了半加器,三个比特位相加就构成了全加器,半加器和全加器就构成了加法器,就可以针对两个二进制的数字进行运算了。有加法器,可以算加法,也可以算减法(补码),同时也可以算乘法(连续相加)和除法(连续相减)。
CPU工作流程:
CPU 眼中只有指令,没有其他的概念。cpu从内存读取一条指令并放在寄存器中,然后寄存器中的指令经过译码,译成这条指令是哪种操作和操作数,然后CPU通过寻址操作从内存中读取操作数到寄存器中,暂时保存起来。运算单元通过指令中的操作码,对寄存器中的数进行操作。最后修改指令计数器,决定下一条指令的地址。cpu再重复以上步骤,处于内存代码段的指令被逐个的执行,直到程序结束为止。
关于编程语言:
世界上的编程语言种类繁多,大概可以分为三个大类:
1.机器语言
是二进制指令,CPU能够识别这种指令。
2.汇编语言
通过简单的单词作为助记符,代替二进制指令。每一个机器指令,都对应到一条汇编语言。厂商在设计CPU之初就设计好了“指令集”,CPU能够支持哪些指令以及这些指令要怎么工作。不同的CPU有不同的架构体系,所支持的“指令集”也是不一样的。即使是同类架构,不同的版本,指令集也是不一样的,这就导致了汇编语言不一样。所以,在学习汇编语言的时候,一定要针对具体哪个架构下的汇编语言。
3.高级语言
高级语言有很多,比如C、C++、C#、Java、JavaScript、PHP、Python.....。C++是在C的基础上做了改进,所以多了两个加号,C++是追求极致性能的。C#又是在C++的基础上做了改进,所以又多了两个加号,C#和SQL Server都是微软搞的,前期微软为了搞捆绑销售,C#和SQL Server都只支持Windows,后来觉醒了,也能够支持跨平台了,但是已经晚了,目前的市场份额基本已经被占完了。Java和JavaScript(JS)并没有任何联系,在JavaScript诞生之初,Java是当时最火的语言,为了蹭一波热度,才有了这个名字。其中PHP在2000年代初,是网站开发最好的选择,当初号称自己是世界上最好的编程语言(梗)。下面重点介绍一下Java的前世今生:
Java诞生之初是用来做嵌入式开发的,做一款智能面包机,但是因为种种缘故没能成功。
然后就是搞了网页开发,开发动态网页,实现用户和网页之间的动态操作。那么这个时候JS也就诞生了,为了蹭热度起名JavaScript。后来Java遭到微软封杀,是因为微软在当时搞了一个浏览器IE,在当时是最强的浏览器。为了扶持自家的编程语言VBScript,就封杀Java,且IE和Windows进行捆绑销售的。但是VBScript没有能够成长起来,JS渔翁得利了,一跃成为前端开发最主流的选择了,一直到30年后的今天,JS又快被微软终结了,微软的TypeScript逐渐在取代JS了,终将蹭着被蹭啊!但是Java并没有被打倒,把重点放到了后段开发和嵌入式开发(手机程序)。在当时,诺基亚和摩托诺拉这些功能机也能够安装第三方程序,但是嵌入式开发(手机程序)这个方向好景不长,直到2007年乔布斯发布了苹果手机,移动互联网的时代开始了,诺基亚和摩托诺拉这些传统厂商很快就凉了,Java在这个方向也就凉了。在后端开发这个方向,当时也不只只有Java,还有PHP、ASP(微软)、Python等等,当时这些语言也逐渐显示出疲态了,因为做一些简单的网站还比较好,但是网站越来越复杂,且当时都是把界面和业务逻辑混合到一起写的,所以就越来越力不从心了。随着时间的推移,开始重新布局了,在移动端方面,安卓上面的原生开发应用的语言选择了Java,很快安卓就成为了世界上第一大操作系统。这安卓赚钱的阶段还有一个小插曲,当时oracle已经把Java收购了,因此oracle看人家赚钱了,就控告谷歌,索要天价版权费,后面谷歌败诉,但是谷歌已经在搞下一代移动端操作以及搭载新一代编程语言,后面发展如何就拭目以待了。Java在后端重新发力了,随着Spring社区的崛起,给Java后端开发注入了新鲜的血液,一跃成为后端开发最主流的语言之一。