前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数字化 IT 从业者知识体系 | 计算机软硬件发展与演进

数字化 IT 从业者知识体系 | 计算机软硬件发展与演进

原创
作者头像
学习中心
发布2023-03-28 11:08:57
8300
发布2023-03-28 11:08:57
举报

本文作者:何文强 — CODING 高级解决方案架构师 具有一线互联网、物联网独角兽、全国股份制银行、新型智慧交通等跨行业从业经历,历任Java 开发高级工程师、DevOps 技术专家、高级研发经理等职,对微服务、敏捷、DevOps、容器技术有深刻的理解和丰富的实践。

 计算机硬件发展史 

人类文明史上经历了三次工业革命:18 世纪 60 年代 — 19 世纪中,以蒸汽技术为代表的第一次工业革命;19 世纪下半叶 — 20 世纪初,以电力技术为代表的第二次工业革命;20 世纪四五十年代到现在,以原子能、电子计算机、空间技术和生物工程为代表的第三次工业(技术)革命。

电子计算机作为第三次工业革命的主要代表之一,极大提升了人类的生产力;加速推进了人类社会的文明进程;深刻改变了人类的生产生活方式。

在科学技术是第一生产力的今天,计算机技术深刻影响和改变我们的生产生活。作为计算机技术从业者的我们,正在共建信息技术产业,共享信息技术红利。通过对计算机发展与演进的了解,有助于我们能够更好的了解计算机发展历史,掌握计算机发展规律;有助于我们更好的提升技术格局,增强行业认知,促进个人职业生涯良好健康发展。

图片
图片

1946 年,人类历史上第一台真正意义上的电子计算机的出现,标志着人类进入第三次工业革命。电子信息时代的到来,以计算机为代表的的新技术极大解放了社会生产力,丰富了生产关系,促进了新兴产业发展,加快了信息流通。

计算机硬件大体经历了大型机时代、小型机时代、PC 机时代、虚拟机时代和云主机时代。

大型机时代

图片
图片

图中人物为 IBM 大型机之父吉恩·阿姆达尔

20 世纪 60 年代(1960s),以电子管计算机和晶体管计算机为代表的的大型机开始出现,并开始在国防、航空、医疗、科学探索等领域替代人类进行繁重的计算任务。大型机大体上可分为电子管计算机和晶体管计算机。其中,第一带电子管计算机的运行速度大约为 5000 次/秒,第二代晶体管计算机运行速度得到跨域式提升,达到 100000 次/秒(100 KIPS)。

大型机使用专用的处理器指令集、操作系统和应用软件,是硬件+专属软件的有机整体。因软硬件的深度结合,大型机具有高可靠性、稳定性和安全性等特点,但同时大型机价格昂贵(通常在数百万美金至数千万美金不等),耗能高,运算速度慢阻碍了计算机在各行各业的蓬勃发展。随着电子信息技术在各行各业的逐渐应用和普及,对价格低廉、算力强劲的计算机的诉求越来越强烈。技术和商业催生了小型机的诞生和发展。

小型机时代

图片
图片

20 世纪 70 年代(1970s),中小规模的集成电路迅猛发展,为高性价比计算机奠定了坚实的技术基础和经济基础。一种介于 PC 机和大型机之间的高性能计算机开始出现,并开始在金融、保险、能源、教育、政务等行业并广泛接受和使用。小型机采用 RISC(精简指令集)、MIPS(基于RISC的指令集架构)等专用处理器,支持 UNIX 等计算机专用系统,操作系统和计算机硬件解耦,无需专属软件与硬件深度绑定,极大降低了小型机的生产成本(价格在数万美金至数十万美金不等,相较于大型机的数百万至数千万美金,已大幅下降),价格相对于大型机大幅下降(同等算力下,约下降 10 到 100 倍),能效比大幅提升(消耗同等电量的情况下,算力提升数十倍至数百倍不等)。

由于小型机具有良好的经济效益比和大幅提升的算力,深受严重依赖手工算力行业企业的喜爱,基于计算机取代手工算力开始成为各行各业的共识,计算机的应用范围得到极大的扩展,影响力进一步扩大。随着计算机技术的进一步发展以及行业对计算机性价比、经济效益比、能效比要求越来越高,一种比小型机更加轻量、价格更加低廉、能效比更低的 PC 机开始出现,使得计算机开始广泛服务于各行各业,加快了信息化的进程,并深刻影响着当今计算机架构的发展。

PC 机时代

图片
图片

20 世纪 80 年代(1980s),大规模集成电路开发出现并迅猛发展,以 X86 架构(英特尔志强系列处理器)为代表的小型机开始出现并迅速成为服务器领域的霸主,在大规模集成电路的加持下,算力。同时 X86 架构也广泛应用到家用 PC(英特尔奔腾和酷睿系列处理器)领域。PC 机采用 CSIC(复杂指令集计算机)处理器,相对于小型机,PC 机具有运行速度快,价格低廉、能耗低等特点。PC 机的处理速度通常可达到 1000000 次/秒(1 MIPS)以上,价格在数千美金至数万美金不等,性价比和能效比再次发生质的飞跃。

计算机在更多的行业得到更加广泛的应用,许多新的商业模式和新技术企业开始井喷式涌现,生产力和生产关系得到重塑,生产要素得到发展和创新。更重要的是,计算机开始进入寻常百姓家,超越生产力工具的范畴,成为人们生活的一部分,极大改变了人们的生产生活。

虚拟机时代

图片
图片

20 世纪 90 年代(1990s),超大规模集成电路的发展成熟以及互联网的出现,企业对算力的提出了更高的要求,同时为了进一步降低算力成本,通过提升服务器使用率来提高算力性价比,虚拟化技术开始出现,通过对硬件的虚拟化,提升服务器的使用效率成为 20 世纪 90 年代的计算机发展的主旋律。

虚拟化技术打破了计算机内部实体结构间不可切割的障碍,使用户能够以更好更灵活更高效的方式来使用这些计算机硬件资源。极大降低了计算机硬件的使用成本,进一步促进计算机在各行各业的深入融合与发展。虚拟机技术促进了云计算(2006)的出现,且成为目前火热的云原生技术的核心支撑。

云主机时代

图片
图片

2006 年,AWS EC2 云主机的发布标志着计算机进入云主机时代,拉开了云计算的帷幕。同时以酷睿处理器为代表的多核处理器开始出现,标志着计算机进入多核时代。云计算建立在 PC 机、虚拟机的基础之上,通过网络按需分配计算资源,并采用按量付费的方式,使得用户使用计算机资源就像使用水电煤一样,按需使用,开箱即用。资源配置更加弹性灵活,更好满足企业的弹性化IT需求。同时云计算通过分布式计算和虚拟化技术,提高了 IT 资源的使用率。云计算使得计算机资源变得更加廉价、弹性、可靠,极大降低企业的 IT 基础设施建设投入成本,成为企业加快构建技术竞争力,加快企业务交付能力,构建技术竞争壁垒的重要手段。

 计算机语言发展史 

图片
图片

机器语言和汇编语言

伴随着计算机硬件的发展、迭代、演进,计算机编程语言也在不断的与时俱进。若把计算机算力比作生产力,那计算机语言就是生产关系。正如每一次生产力的改变都需要新的生产关系与之匹配一样,每一次算力质的飞跃都会伴随着计算机新语言的诞生和发展。

在大型机时代(1960s),产生了以机器语言和汇编语言为主的计算机语言,例如Fortran语言(1957)、Lisp语言(1958)、BASIC语言(1964)、B语言(1969)等。机器语言(二进制语言)是计算机能直接运行的语言;汇编语言(符号语言)不能直接被计算机识别,需要编译。这两种语言都是面向计算机的语言,同属于计算机低级语言,和具体机器的指令系统密切相关,机器语言用指令代码编写程序,汇编语言用指令助记符来编写程序。

面向过程的高级语言

在小型机时代(1970s)出现了以 C 语言(1972)为代表的计算机高级语言,同时也出现了 SQL(1978)等有重要影响力的语言。相较于机器语言和汇编语言,这些高级语言为用户提供了一种既接近自然语言,又可以使用数学表达式,还相对独立于机器的工作方式。这些高级语言有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,且更容易学习和掌握。

面向过程的语言使得编程任务明确,具体步骤清晰,编程效率高。面向过程的高级语言的出现和发展极大降低了计算机的编程成本,加快了软件交付速度,为计算机在各行各业快速普及和赋能提供了重要的能力支撑,很好的匹配了生产力的关系。

面向对象的高级语言

PC 机时代的面向对象语言

在 PC 机时代(1980s),随着算力的进一步提升,计算机技术在商业环境中进一步渗透。以 C++ 为代表的面向对象的高级语言开始出现,同时面向特定领域的语言例如 Erlang(1986)、Perl(1987)语言等。相较于 1970s 的编程语言,1980s 的语言更加强大,并增强了语言结构设计,引入模块化思维。相较于面向过程的编程语言,面向对象的语言具有结构清晰、模块化和结构化程序,更符合人类思维方式等优势;同时具有易扩展、易维护、代码重用率高等特点,但相对于面向过程,面向对象编程语言也有运行速度慢,消耗资源多等缺点。

web 时代的面向对象语言
图片
图片

1989 年,蒂姆.伯纳斯.李发明了万维网(WWW),1990 年底世界第一个网页浏览器和网页服务器的问世(web1.0),推动了万维网的正式生效,成为互联网出现和发展的核心及关键。互联网的出现彻底了人们信息获取、沟通、交流等方式,各种新的商业模式成为可能。计算机技术成为这些企业竞争的核心,编程语言在这一时期得到空前的发展和繁荣,深刻影响和主导计算机语言的未来发展。互联网的出现导致编程语言的加速进化和变革,当今主流的语言在这一时期被发明(排名前十的语言有 5 种在 1990s 被发明),深刻影响着未来计算机软件技术的发展。例如 python(1991)、Visual Basic(1991)、ruby(1995)、java(1991 称为 oak,1995 升级为 java)、javaScript(1995)、PHP(1995)等主流语言都在这个时期被发明,并主导者互联网的发展。

图片
图片

面向函数和移动操作系统的高级语言

在千禧年的第一个十年里(2000s),开始进入以社交、内容为核心 web2.0 时代。在 web1.0 时代,人们只能被动的浏览内容;web2.0 时代,允许用户在虚拟社区中生成内容,并通过社交媒体的对话进行交互和协作。互联网用户规模达到十亿级别,对计算机硬件和编程语言提出了进一步的要求,面向对象的语言得到了进一步发展和补充,例如 C#,F# 语言等;同时面向函数的语言开始出现例如 Scala(2003)、Go(2007 诞生、2009 开源)语言等开始出现,有效填补面向对象语言的一些不足。

2010s 时代,开始进入以移动互联网为核心的 web3.0 时代,互联网用户规模达到三十亿级别,面向移动操作系统的编程语言开始出现并迅速发展壮大,例如面向安卓操作系统(Android)的 Kotlin 语言、面向苹果操作系统(IOS)的 Swift 语言;同时安全和性能问题在计算机语言中得到越来越多的关注,Rust 和 TypeScript 语言在两者安全和性能方面得到较好兼顾。web1.0 时代的面向对象的语言开始在服务端大放光彩,并占据着服务端语言的主导地位,引领互联网时代计算语言的发展。

 软件危机史 

图片
图片

计算机硬件、编程语言与软件危机的关系

图片
图片

计算机硬件(生产力)的发展和计算机语言(生产关系)的发展是密切相关的,且与生产要素(市场、商业)相互交织。在信息技术发展史上,每一次生产力(算力)的跃迁都会激化与生产关系(计算机语言)的矛盾,且不可调和,并以(软件)危机的形式呈现。

第一次软件危机

信息技术发展至今,大致发生了三次软件危机。第一次软件危机发生在 1960s~1970s,小型机的出现以及中小规模集成电路的成熟,算力得到大幅提升,同时计算机技术在金融、保险、能源、教育、政务等行业并广泛接受和使用,采用机器语言和汇编语言编写的程序具有门槛高,维护难等不足,无法工程化和商业化,导致第一次软件危机爆发(1968),软件危机爆发催生了软件工程和面向过程的编程语言(C 语言,1972)。编程语言从面向机器面向符号转为面向人,将底层机器指令与人隔离开来,大幅提升软件的生产效率,有效缓解了第一次软件危机。

第二次软件危机

第二次软件危机发生在 1980s~1990s,随着 PC 机和虚拟化技术的发展,大规模集成电路的成熟,计算机算力再次得到跨越式发展,同时信息技术在众多行业得到广泛应用,成为企业竞争力的一部分。特别是进入 1990s 互联网时代依赖,信息技术以前所未有的快速在更大范围、更加深入的普及和发展。面向过程的编程语言在设计结构、模块化和结构化方面的不足被放大,逐渐成为阻碍信息技术发展的一大障碍。适应 web 时代的面向对象的编程语言开始出现,算力和编程语言再次得到跑匹配适应,第二次软件危机有效化解。

第三次软件危机

第三次软件发生在 2005,Intel 发布多核处理器,改变了以往单核架构模式下通过提升主频来提升算力的方式,算力再次得到大幅提升,同时信息技术的应用场景和商业环境发生巨大变化,web 时代持续迭代演进(web2.0 和 web3.0 被相继提出),面向海量的互联网用户和广泛的技术商业场景,对象多核架构(Go 语言)、面向安全(Rust 语言)、面向移动操作系统(Kotlin 和 Swift)的语言被发明和流行起来,成为互联网时代的新语言。

 总结 

图片
图片

计算机硬件发展经历了大型机 -> 小型机 -> PC 机 -> 虚拟机 -> 云主机的发展历程;计算机语言经历了机器语言 -> 汇编语言 -> 面向过程的高级语言 -> 面向对象的高级语言 -> 面向函数和面向移动操作系统的高级语言。每一次计算机算力(生产力)的跨越式提升和市场商业(生产要素)重塑扩展,都给软件实现带来前所未有的压力和不可调和的矛盾,软件危机在意料之中不可避免的爆发了。为了解决危机,计算机语言(生产关系)必须比配计算机硬件和市场商业相匹配,使得信息技术革命得以继续高歌猛进,深刻改变世界的生产生活格局。

但是自第一次软件危机(1968,同时也产生了软件工程)爆发以来,面对软件应用的日益普及;软件能力边界的不断扩大;市场商业诉求的强劲驱动;软件工程化和规模化成为软件危机需要解决的另一个重要挑战,这个挑战是编程语言无法解决的,需要更加系统化的软件知识体系和能力建设来保障软件交付更加快速、可靠、可控、可持续。

图片
图片

何文强根据对业界的理解将整体内容分为三个实践,四个方面。三个实践分别为:

云原生技术为代表的技术实践;以 DevOps 为代表的工程实践;精益敏捷为代表的管理实践。四个方面分别是软件开发方法、应用技术架构、应用部署与管理软件交付与协作。软件开发方法主要从瀑布软件开发 -> 敏捷软件开发 -> 精益产品开发的发展与演进;应用技术架构主要从单体架构 -> 垂直架构 -> SOA 架构 -> 微服务架构 -> 服务网格架构 -> 无服务器架构 -> 分布式多运行时架构的发展与演进;应用部署与管理主要从物理机部署 -> 虚拟机部署 -> 容器部署的发展与演进;软件交付与协作主要从 ITIL -> CMMI -> DevOps 的发展与演进。

图片
图片

《数字化 IT 从业者知识体系》背景

数字化和可持续发展是中国企业未来发展的两大主题,掌握数字化知识,具备数字化能力,应用数字化技术是我们 IT 从业者未来核心竞争力所在。《数字化 IT 从业者知识体系》的初衷是为 IT 从业者提供的系统性的数字化知识体系,内容涵盖管理实践、工程实践、技术实践三个层次,涉及软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四大方面。

在接下来的《数字化 IT 从业者知识体系》系列文章,何文强将从软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四个方面,为大家进行逐一分享介绍:

1. 软件开发方法主要包括瀑布、敏捷、精益等;

2. 应用技术架构主要包括微服务架构、服务网格架构、无服务器架构、分布式多运行架构等;

3. 应用部署与管理主要包括但不限于虚拟化技术、容器技术与容器编排等;

4. 软件交付与协作主要包括但不限于 CMMI、ITIL、DevOps 等。

相信该知识体系有利于 IT 从业者构建丰富的技术体系、全面的技术视野和系统的能力建设。欢迎大家前往《数字化 IT 从业者知识体系》话题进行详细阅读。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  计算机硬件发展史 
    • 大型机时代
      • 小型机时代
        • PC 机时代
          • 虚拟机时代
            • 云主机时代
            •  计算机语言发展史 
              • 机器语言和汇编语言
                • 面向过程的高级语言
                  • 面向对象的高级语言
                    • PC 机时代的面向对象语言
                    • web 时代的面向对象语言
                  • 面向函数和移动操作系统的高级语言
                  •  软件危机史 
                    • 第一次软件危机
                      • 第二次软件危机
                        • 第三次软件危机
                        •  总结 
                        相关产品与服务
                        容器服务
                        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档