计算机历史(语言系统时代)

语言系统时代:

  unix系统 c语言:

  自从IBM360开创了系统与硬件分离,系统逐渐作为一个单独的概念被人所认识和研究,当时麻省理工 通用公司和贝尔实验室希望研发一个可以在任何计算机上运行的系统,但是最终项目失败了然而贝尔实验室工作人员Ken Thompson在失败的项目基础上研发出了unix系统。并为了研发unix系统而发明了c语言。之前我们说过计算机底层的逻辑电路是是使用二进制来进行运算的,即如果你希望编写一段程序让计算机执行,你必须想办法把你的程序用十进制数字表达,然后翻译成二进制,然后让计算机执行这个程序,最终计算机输出二进制结果,然后你需要将二进制结果翻译成十进制,然后得到你的结果。这是机器语言,然而后面随着计算机的不断普及,人们写的程序越来越多,二进制编写程序的方式太过于繁琐,于是就出现了汇编语言,汇编语言相对于二进制而言是使用了部分英文字符取代了二进制,开发人员只需要使用指定的汇编命令编写好程序,然后会有专门的编译器将汇编命令翻译成二进制语言,交由计算机执行。

  而Ken Thompson在研发unix系统的时候发现使用汇编语言还是太繁琐(随着项目的不断增大,语言本身也需要进化)。于是Ken Thompson在汇编语言的基础上发明了C语言。c语言相对于汇编语言的优势 只要是对两者都有使用过自然会体会到c语言的优势在哪里,C语言是第一个专为大型系统而设计的语言。而这个系统就是unix,unix是第一个通用性系统,后面的mac os和linux都是借用unix而来。unix和c语言的贡献不可言喻,他们分别开创了各自领域的神话,从c语言开始高级语言层出不穷,从unix开始操作系统层出不穷。

  linux系统 c++:

    c语言为设计unix系统而诞生,但是当非常大的项目在使用c语言的时候依然会面临一些问题,比雅尼·斯特劳斯特鲁普在贝尔实验室的大规模编程研究部门工作,专门研究大规模编程,他研究改进了c语言,开发出了C++,它具有如下的优点:

      友好性:易读 语言简洁 编写风格自由

      模块化:可移植 可重用 命名空间

      面向对象:类别、继承、抽象

      高效:运行效率高,高效安全

    unix系统一开始是免费的,但是当人们意识到他的商业价值的就开始进行独自占有,不允许别人私自使用unix系统,但是在一些大学需要开始教授系统方面的知识的时候,他们需要有一个系统给学生演示,在芬兰的一所高校,一位教授为了让学生了解操作系统,于是自己开发了一套类unix操作系统,然后供学生学习研究,最终托瓦尔兹在研究教授的系统之上开发出了linux内核,并发布到网上供别人完善。linux系统开创了一种在软件世界开源自由免费的精神。这只是计算机漫长发展历史中两种不同精神的较量,如果看到前文,我们会发现,法拉第在研究电磁理论的时候没有携带任何功利主义的色彩,同样在赫兹身上也没有严重的功利色彩。但是在后来马可尼 爱迪生身上我们发现一种将技术作为专利谋取暴利的精神,再到后面IBM与贝尔实验室。一直到现在 软件世界关于免费开源与暴利赚钱两种模式的对立,换句话说 比尔盖茨真的是伟大的吗?他在显示世界因为首富而被人尊重,但是如果查看历史长河,有很多人自愿的放弃了这种暴富的机会。这至少说明一件事情,不是所有的事情都是依靠金钱可以解决的,不是所有的是非都以金钱作为衡量标准的。

  Java虚拟机 java:

    在C++开创了大规模编程的风格之后,使得大型复杂软件的开发成为可能,但是事情到了90年代又有了变化,因为市面上流行window电脑 同样流行苹果电脑,同时sun公司希望进入物联网领域,希望可以给家电编写程序,使得家电更加智能。很显然 人们选择了C++,但是这个时候他们发现 他们面对的是不同的硬件,有的是电视 有的是冰箱,有的洗衣机,不同的硬件环境需要编写不同的程序,为了解决这个问题,sun公司发明了java虚拟机,Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。这样工作人员只需要使用java语言来编写程序即可,这个时候就诞生了java语言。java语言的诞生就是为了抹平不同平台的差异性。但是很显然 sun公司在物联网领域失败了,硬件生产商并未对此产生极大的热情。因为他们认为,在所有人对 Oak 语言还一无所知的情况下,就生产硬件产品的风险实在太大了,所以 Oak 语言也就因为缺乏硬件的支持而无法进入市场,从而被搁置了下来(既然90年代物联网已经失败了,如今火热的物联网是如何解决硬件生产商的问题的?)。就像每一个语言的诞生都是为了解决一个问题一样,java语言的诞生是为了抹平不同的平台的差异型,这就是java虚拟机。也是从这里开始语言的诞生不再是为了改进语言本身的问题,而是为了解决特定领域的问题才诞生的,所以讨论java和c++哪个好没有意义,因为两个语言所要解决的问题不一致。

  浏览器 javascript:

    java推崇的一次编写 到处运行最终在硬件厂商那里碰了壁,大多数的硬件厂商依然选择c++或者c语言来开发他们的硬件程序,但是在互联网领域java却大放异彩。网景公司与sun公司合作,允许人们使用java为网景的浏览器开发程序,但是当网景公司希望将java运用于html中 以便操控html元素的时候 他们发现java语言太复杂了,嵌入java语言 会导致整个浏览器变得复杂,他们仅仅需要一些简单的语言 以完成用户的响应即可,最终网景开发出了javascript,同时使用自身浏览器作为javascript的解释器,因为javascript的简单性,使得网景浏览器嵌入javascript不需要太复杂的改动。

  

 

你可能感兴趣的:(计算机历史(语言系统时代))