信息技术发展简史(3)
发布于 2021-11-18 16:24 ,所属分类:软件编程学习资料
这篇文章主要是受朋友邀请,去给一个公司做了一次信息技术相关的培训,培训内容没有明确要求,所以就自己制作了一份关于计算机基础知识的PPT。在PPT的第一章节,我简单讲述了信息技术的发展简史,这部分内容也算是对自己过去所看过的相关知识的一次思考和整理。讲的过程中受到时间限制,很多想法没能展开,于是想着将它们写出来,也算是对该问题理解的一次备份,可以作为后期思考的参考。由于过去所看过的内容比较杂乱,因此无法在文章中全部罗列出来,以下所有的内容仅代表我此时此刻的个人观点,不做对错评判。如果你在看文章时,有不同的想法,欢迎在文章下面留言,共同讨论进步。
前言
在信息技术发展简史(2)中,我们看见了科技力量是如何推动人类前行。信息技术作为科技发展的一部分,从原子世界过渡到虚拟世界,计算机的出现,第一次让人类制造的工具可以代替大脑工作。这篇文章我们就来更细致的看看,计算机是如何变成我们生活中不可获取的一部分?信息技术的未来又将去往何方?
听到数学两个字,你有没有脑袋一紧的感觉?因为众所周知的原因,原本一门既有趣又实用的学科,变成了许多人学生时代的噩梦。人类文明的发展离不开数学,或许在文字和语言发明之前,人类就已经学会了记数,他就像是人与生俱来的能力,不知道你是否还记得自己小时候掰着手指头数数的模样。
生活中的数字经常会发生变化,例如你去超市买苹果,口袋里有10块钱,买了3个苹果花掉了其中的6块,自己还剩下4块。回到家里,你拿起一个苹果就开始往嘴里放,桌上的袋子里就只剩下2个苹果。到了晚上,爸爸妈妈回到家,你把剩下的苹果一人一个递在他们手里,这样你们3个人刚好每人分到一个苹果。为了得到前面所说的钱和苹果数量变化以后的结果,人类发明了加减乘除的四则运算。
人类因为生来就有10根手指,所以使用十进制进行计算就是再自然不过的事。但是在自然界中,阴阳之道才是世间万物的普遍规律。
1679年,一个名叫戈特弗里德·莱布尼茨的人,发明了一种只使用0和1两个符号进行记数和运算的二进制记数系统,这与中国《易经》中的部分思想不谋而合,他还为此写了一篇名为《论只使用符号0和1的二进制算术,兼论其用途及它赋予伏羲所使用的古老图形的意义》的论文。此外,他还特地制作了一个纪念章献给公爵,上面刻写着拉丁文:“从虚无创造万有,用1就够了”。当时的他无论如何也想象不到,他的理论会给未来的世界带来多大的影响。
不知道你有没有听说过亚里士多德经典的三段论,“如果所有人都是必死的,并且所有希腊人都是人,那么所有希腊人都是必死的。”,以及进一步的推导,“所有人都是要死的,苏格拉底是人,所以,苏格拉底是要死的。”,这就是逻辑学中的演绎推理。
当你在学习数学时,经常会使用它进行公式推导。在现代人看来,数学和逻辑是自然而然密不可分的东西。然而,在很早之前,数学的作用就只是用来计算,它和逻辑学还是相互分割的两件事。
1854年,一个名叫乔治·布尔的英国数学家突发奇想:人的思想能不能用数学表达?也就是能不能用数学的形式来表达上面所写的三段论?为此,他发表了一篇里程碑式的论文,其中详细介绍了一种代数化的逻辑系统,后人称之为“布尔代数”。他所提出的这种逻辑演算,将在未来的电子电路设计中起到基础性作用。
数理逻辑的出现,加快了数学乃至科学发展的脚步。时间继续往前走,很快一位名叫艾伦·图灵的天才少年即将登场。
1900年,在巴黎举行的第二届国际数学家大会上,希尔伯特做了一次堪称数学史上影响最为深远的演讲,题目是“数学问题”。在演讲中,希尔伯特列举了23个他认为最具重要意义的数学问题,这些问题被后人称为“希尔伯特问题”,其中的第十个问题与解方程有关。这个问题是问,对于任意多个未知数的整系数不定方程,要求给出一个可行的方法(verfahren,德文),使得借助于它,通过有限次运算,可以判定该方程有无整数解。简单点来说,这个问题就是在问,哪些问题是可以通过“算法(algorithm,英文)”计算得出答案?
在之后的30年中,许多数学家都在寻找该问题的答案,始终没有取得任何实质性进展。这种状态没有一直延续下去,很快几个不同国度的人在差不多的时间点,找到了完全不同且又相互等价的答案。美国逻辑学家丘奇发明了Lambda演算来定义了这种“算法”,法国逻辑学家哥德尔提出“一般递归函数”作为对这种“算法”的定义。
此时的图灵却在思考另外一个问题,什么样的运算可以用机器来完成?在图灵的研究接近完成时,他在导师的提醒下,发现了丘奇与哥德尔所定义的那些“算法”与他的抽象计算机可以计算的函数恰好吻合,于是他把这一结果作为附录加进了自己那篇重要的论文《论可计算数及其在判定问题上的应用》中。他在里面提出了在现代被称为“图灵机”的模型,为现代计算机的发明奠定了理论基础。他还在接下来的二战中通过自己制造的“图灵机”,协助盟军破译了德国密码系统“英格玛”,从而扭转二战战局,为战争减少了大量人员的牺牲。
图灵的天才并不仅限于此,他在战后所发表的另外一篇重要论文,直至今日也还启发着信息技术某个重要领域的发展。不幸的是,因为自己的同性恋倾向,他在当时遭到迫害,使得他的职业生涯尽毁。1954年,图灵因食用浸过氰化物溶液的苹果而死亡。1966年,计算机协会为了纪念这位现代计算机科学的奠基者,设立“图灵奖”,用于奖励对计算机事业作出重要贡献的个人。图灵奖也是计算机界最负盛名的奖项,有“计算机界诺贝尔奖”之称。
有了以上的理论支撑,现代电子计算机即将诞生。可以说,在计算机出现之前人类的所有发明创造,都只是替代了人类大脑之外的其他身体部位的工作,大脑作为人类引以为豪的存在,慢慢地也将被计算机逐步替代。
早在现代计算机发明之前,人类就已经发明过许多不同的工具来帮助自己进行计算。对中国人而言,最为熟知的就是算盘。之后,人们通过机械的形式发明过各式各样的计算机,它们都有一些共同的缺点,运算速度慢、操作复杂、容易损坏、维修困难等等。
1937年,克劳德·香农发表了名为《继电器与开关电路的符号分析》的论文,其中香农的理论奠定了数字电路的理论基础。而他之后所发展出来的《信息论》,将信息看作是和长度,重量这些物理属性一样,是种可以测量和规范的东西,由此对信息的量化、存储和通信等发展起到关键性作用。除了科技应用,《信息论》还可以扩展到学习本身,因为你每天学习所获取的知识也是一种信息。
同年11月,贝尔实验室的乔治·斯蒂比兹发明了用继电器表示二进制的设备,它是第一台二进制电子计算机。而大家所公认的第一台通用电子计算机,是1946年美国宾夕法尼亚大学研制的ENIAC。冯诺依曼由于曼哈顿计划的工作需要,偶然中了解到ENIAC的研制后,也加入到设计研制中,并在这过程中提出“冯·诺伊曼结构”,为现代计算机的发展指明了道路,被誉为“现代计算机之父”。
现代电子计算机的发展大致经历了4个阶段,电子管计算机->晶体管计算机->中小规模集成电路计算机->大规模和超大规模集成电路计算机。在整个发展过程中计算机的体积越来越小,寿命越来越长,性能越来越强,能耗越来越低,应用越来越广泛。
1971 年,Intel 公司设计了世界上第一个微处理器芯片 Intel4004,并以它为核心组成了世界上第一台微型计算机 MCS-4。
作为Intel 创始人之一的戈登·摩尔在1965年提出了著名的“摩尔定律”,他提出“集成电路芯片上所集成的电路的数目,每隔18个月就翻一番”。这也意味着相同价格的电脑,每隔18个月性能就会提升一倍。相对的,同样性能的电脑,每隔18个月价格就会便宜一半。这也预示着,在未来计算机的使用者,会从有钱的政府或是科研机构人员,变成世界各地的所有人。在这个过程中,一个名叫史蒂夫·乔布斯的人即将步入世界的舞台。
乔布斯出生后就被交由别人领养,受到养父的影响,他从小就对机械设备和电子仪器感兴趣。高中时,通过朋友介绍认识了另外一个技术达人斯蒂夫·沃兹尼亚克。两人制作了一个名叫“蓝盒子”的盗打电话设备,赚到了人生中的第一桶金。
进入大学后,由于对学校教授的固定课程不感兴趣,以及家庭经济困难的原因,他早早就从大学辍学。但他没有离开学校,而是跑到各处的教室中选修自己感兴趣的课程。之后他远赴印度,艰苦旅行了七个月,寻找精神导师。1975年,从印度归来后,受到沃兹尼亚克的影响,他预想到了个人计算机的商业价值,在自家的车库中与沃兹尼亚克成立了苹果公司,他们制造了世界最早商业化的个人电脑,称为Apple I。
好景不长,他因为某些原因被董事会逐出了自己创办的苹果公司。离开苹果后,他没有因此一蹶不振,反而无心插柳的收购并壮大了一家即将在未来改变整个动画产业的公司,皮克斯。之后,由于苹果公司自身经营每况愈下,他又被重新请回公司担任CEO,不久的将来,他将推出一款跨时代的产品,彻底改变所有人的日常生活。
以上所提到的主要是指计算机硬件,硬件只是计算机的物理基础,而想要利用计算机去解决实际的问题,就需要另外一个重要的组成部分,计算机软件。
计算机软件是通过编程语言来实现。在计算机出现的早期,它主要被用来解决一些特定的计算问题。程序猿直接通过机器语言进行编程,也就是莱布尼茨所创造的0和1 。机器语言符合计算机运行的需求,但是不便于人类自己查看。随着摩尔定理发展,计算机的性能越来越强,各种不同的计算机硬件被生产出来,而用机器语言开发出来的软件却无法在不同硬件上运行,这时为不同的硬件进行软件开发就成为一件让程序猿头大的事。
为了解决此问题,1957年IBM公司开发出一种名为Fortran的编程语言,也是世界上第一个被正式采用并流传至今的高级编程语言。它的一个主要目标就是让编程语言不再过度地依赖某种特定的机器或环境,可以在不同的平台上被编译成不同的机器语言,从而实现平台独立。
之后共有几百种高级编程语言被设计出来,每种编程语言有着各自的特点和擅长的方向。如果你了解过一些编程语言知识,一定听说过C语言主要用于操作系统和编译器等底层开发,Java和PHP适合用于做Web系统,Objective-C和Swift用于iOS 应用,现在大火的人工智能应用主要使用的是Python语言。值得一提的是,Python还在2021年10月超越了在TIOBE编程语言流行度排名榜上,长期霸榜前两名的C语言和Java,荣升第一。
高级编程语言自身也经历了两个阶段的发展,也从早期的面向过程的语言转变为如今的面向对象的语言。
由于早期的编程语言主要是由美国人所编写,因此大部分编程语言使用的符号是他们的母语,英文。如果你是一个程序猿,相信你一定被周围的亲戚朋友问过这样的问题,是不是必须英语好才能学编程?事实上,编程语言类似于其他人类语言,文字只是代表某个概念的符号。除了有英文的编程语言,也有许多中文的编程语言。与人类语言不同的是,人类语言是用于人和人之间进行交流,编程语言是用于人和机器之间进行交流。学习编程并不需要你懂英语,而是需要你有良好的逻辑思维能力。别忘了上面所说的,计算机的底层就是数理逻辑。
高级编程语言解决了软件开发的问题,但在早期的计算机市场中,软件往往都是和硬件捆绑在一起进行销售,当时的程序猿还没能认识到软件所独有的商业价值。如果你开发出一个软件程序,必须去跪舔各个计算机厂商购买你的软件预装在他们的计算机中,你才能获得收益。其中也包括之后创建微软公司,连续13年成为《福布斯》全球富翁榜首富的比尔·盖茨。
比尔·盖茨通过与IBM等电脑公司合作,为它们编写MS-DOS操作系统起家。他曾在1976年发表过一篇名为《致爱好者的公开信》,信中写到“有谁会在没有任何报酬的情况下来做这些专业的工作?什么样的爱好者可以为他的产品投入三人年的开发时间,并且发现所有的错误、编写文档以及无偿发布这个产品?”。他预见到未来软件将对信息产业所带来的影响,同乔布斯类似,他也大学辍学,成立微软公司,将软件产业化。从此以后,程序猿成为了改变世界的一群人。
有了个人计算机,人类一部分需要依赖大脑的工作得以解放。与大脑进行计算时既慢又容易出错相比,计算机的计算既快速又精准,可以说是大脑完美的替代品。因此,人类也将计算机称呼为“电脑”。早期的电脑就像人一样,可以独立完成交给它的计算任务。不同的是,人与人之间可以通过信息进行交流,相互之间还可以合作完成同一项任务。如何能像人类一样,组建一个计算机之间可以互相交流的计算机网络,就成为下一个信息技术发展的重要阶段。
最早的计算机网络,主要是利用通信线路将多台终端设备(显示器键盘等)与计算机主机相连接,可以多人同享当时还很昂贵的计算机资源。
1969年,美国在加利福尼亚大学洛杉矶分校、斯坦福大学研究中心、加利福尼亚大学圣塔芭芭拉分校、犹他大学这四个地点,创建了四个节点之间的ARPANET。这也成为未来互联网的雏形,此时的计算机网络实现了计算机主机之间的通信。
在ARPANET的基础上,计算机网络接入的设备逐步扩大,范围越来越广。1989年,英国科学家蒂姆·伯纳斯-李发明了万维网,也就是大家通常所说的互联网,它是由许多互相链接的超文本组成的系统。1990年,他又推出了世界上第一个网页浏览器和第一个网页服务器,数据共享变成为了计算机网络的重要功能。
此时此刻,我正在使用浏览器去访问世界上最大的,也是免费的百科全书—维基百科—作为这篇文章的主要资料来源。在维基百科上,没有像其他媒体那样的固定编辑人员,它是由许多不同国家的人,通过互联网自由协作编辑完成。从万维网诞生开始,人类的日常生活就将发生翻天覆地的改变。
通过互联网,数据的传输脱离了原子介质。对大部分人而言,软盘、光盘、硬盘都成为了昙花一现的存在。通过互联网,你能直接搜索并下载到各种需要的软件、游戏和影视剧。通过互联网,你不再打电话,而是通过QQ和许多认识或是不认识的人在线聊天。通过互联网,你可以足不出户就购买到各类商品。通过互联网,你可以在各个门户网站、论坛、贴吧中了解世界每天都在发生着什么。
通过互联网,乔布斯利用苹果公司开发的iTunes音乐商店和iPod音乐播放器,改变了整个音乐产业的商业模式。紧接着,他又将电话、iPod和网络链接设备融合为一部掌上计算机,这个跨时代的产品被他称为iPhone。它就像是一个时间黑洞,通过上面提供的各种APP,吞噬了人类一天之中的大半时间。
天亮时,你被手机自带的闹钟APP叫醒。洗漱完毕,出门吃早餐后,你通过支付来付钱。来到公交站台,上车时你通过云闪付支付车费。来到公司楼下,你打开钉钉打卡上班。坐在办公桌前,你打开看一看大家都发了些什么。上班过程中,你使用和钉钉与朋友同事进行交流。中午吃饭,因为天气太冷你不想下楼,打开美团外卖看看今天吃点什么。吃完午饭,趁着午休时间,你打开抖音快手视频号刷了几个有趣的短视频。下午上班,你使用腾讯会议参加了个产品需求分析会。晚上回到家一切收拾完毕,你终于能够躺在床上放松一下,打开爱优腾追几集新剧,约上朋友玩几把王者农药,打开读书看看还未读完的小说,之后关灯睡觉,结束了一天的生活。
如果说PC时代,通过电脑开机和关机你还能将线上和线下世界进行明确的区分,当iPhone出现以后,这个可以随身携带的小东西就像是你身体的一部分,帮助你彻底把线上和线下连通,你的生活不在区分现实世界与虚拟世界。人类社会的发展进程,也从现实世界一步一步向虚拟世界发生迁移。
与互联网一同发展的,还有一种与商业化软件相反,推动着软件行业发展的重要力量,开源软件。开源是指免费提供可用于修改和重新分发的软件源代码,任何人都能对它进行查看、修改和分发。在所有开源软件中对世界影响最大的,是一个名叫林纳斯·托瓦兹的芬兰程序猿所开发的两个软件。
计算机上的软件大致分为两种,操作系统和应用软件。程序猿为了让自己在开发软件时,不用去考虑不同硬件所带来的差异性,他们想出了在硬件之上开发一种名称操作系统的软件,由操作系统统一向下管理硬件设备,向上为其他应用软件提供处理接口。其中最广为人知的就是大家电脑上用的,微软公司所开发的Windows操作系统。除此之外,其他设备上使用最多的,就是由林纳斯·托瓦兹所开发的Linux操作系统,你每天所使用的安卓手机的核心就是它。Linux的出现本身,就是一段长期被人津津乐道,关于操作系统与开源精神的故事。
除了Linux操作系统之外,林纳斯·托瓦兹在2005年开发了另外一个重要的源码管理工具,Git。不久之后,一个通过Git进行版本控制的软件源代码托管服务平台Github,成为了目前世界上最大的代码存放网站和开源社区,也是所有程序猿最大的宝库。
如果把计算机看作一个人,他就像人类一样在不断的进化。从最初只能完成基本加减法的单细胞生物,一步一步的变化为能完成各种任务的复杂生物。从个人独立工作,变为团队作战,在将团队扩展到全球范围。但是它的进化还远没有结束,之前所有的进化都需要依靠人类协助来完成,他还缺少了人类眼中最为重要的智能,从而完成自我进化。
对大众来说,人工智能似乎是最近几年才听到的一个新名词,实际上它的发展历史是和计算机发展同步推进的。
时间需要重新回到当年那位天才少年艾伦·图灵遭受迫害自杀之前,他在解决完上一个问题之后并没有停止思考。1950年,他发表了另外一篇重要的论文《计算机器与智能》,在论文的开头他就提出了一个新的问题,“机器能思考吗?”。紧接着,他没有直接回答这个问题,因为想要直接回答这个问题,首先你必须对什么是机器和什么是思考下定义,而通过文字所定义出来的东西,都会与机器和思考本身相差甚远。于是,他设计了一个游戏,用于回答另外一个等价的问题,如何判断机器能像人一样思考?这个游戏在现代被称为“图灵游戏”,也是被当做判断机器是否具有智能的经典测试。
想象一下,你每天在微博上会看见各种信息,感觉它们都是和你一样的人,拿着手机发表着自己对世界的看法。假如我现在告诉你,你所看见的信息中,有一半是机器完成的,你能够将它们和人类发的信息区分开吗?再想象一下,当你在玩游戏时,会不会在某些时刻无法分辨出面前的对手究竟是人类,还是机器?
机器学习的核心在于算法,而机器学习的算法粗略来划分大致经历了3个阶段。
第一阶段称为“专家系统”。它是通过人去为机器编写规则,告诉它如果怎么样,就该怎么样。例如,想要机器读懂文字,进行语音识别或是翻译,就需要告诉机器不同语言之间的语法规则。想要机器下棋,就需要告诉他棋的规则和下法,他再凭借自己的计算能力穷举出所有可能的情形,找出最优的解法。1997年IBM的“深蓝”系统就是通过这样的形式,击败了当时的国际象棋世界冠军卡斯巴罗夫。
这个阶段最大的问题是,人类告诉机器的规则是基于各种实际情况所总结出来的经验知识,但是这些经验知识并不能涵盖现实中的所有情况,机器如果遇到了规则之外的案例,就不知道如何去解决它。
第二阶段称为“学习算法”。它不在直接告诉机器运行的规则,而是想让机器基于某些算法,像人类一样自己通过实际案例去学习。例如,想要机器识别出图片中的数字时,会将一堆带有数字的图片交给机器,然后告诉它这张图片上是0,那张图片上是1,另外一张图片上是2,这样机器会基于某些统计规则,自己学会不同数字之间的规律。
对于“学习算法”与“专家系统”的比较,世界著名的语音识别和自然语言处理的专家弗莱德里克·贾里尼克,当年还在IBM 实验室研究语音识别系统时开过一个著名的玩笑,“我每开除一名语言学家,我的语音识别系统错误率就降低一个百分点。”
“学习算法”的问题是,当人类需要向机器去描述一个东西时,就要将这个东西抽取出一定的特征,再通过这些特征去告诉机器它是什么样。例如,你要向机器描述你长什么样?你可能会说,你有两只眼睛,黑色的瞳孔,一个高鼻梁,一张大嘴和黄色的皮肤。这种方式就回到了图灵当年所说的那个问题,人类所抽取的特征往往都是不够精准的,一旦你只通过这些特征去描述一样东西时,就必然会丢失掉特征之外的其他信息。
第三阶段称为“深度学习”,其中最核心的是使用深度神经网络算法。神经网络算法并不是现在才出现的新事物,它早在人工智能研究之初就已经产生。当人想要让机器获得智能时,最自然的想法就是让机器模拟人的大脑进行学习。所以神经网络算法就是想让机器模拟人的神经元结构,从最原始的数据中自我提取特征进行学习。
这种算法有一个很大的问题是,十分耗费计算资源。过去,一旦对机器构建的神经元数量太多,或者让它学习的数据量太大,以当时的计算机性能就无法正常计算出结果。一直到今天,由摩尔定律所代表的单个计算机性能的提升,以及云计算技术的发展,满足了“深度学习”的算力要求。而互联网应用所带来的数据量的极快增长,满足了“深度学习”的数据要求。所以,当今天的人在原有神经网络的基础上,增加了神经元的数量和层级,再交给它足够多的学习数据时,它所达到的效果超越了过去所有的学习算法。
其中最著名的案例便是,2013年由Jeff Dean和吴恩达等人组成的谷歌大脑团队,通过深度学习技术,成功让16000台电脑学习1000万张图片后,在YouTube视频中“认出”了猫。
在这之后,谷歌收购的DeepMind公司所开发出的AlphaGo系统,在围棋比赛中接连战胜韩国李世石九段和世界排名第一的中国柯洁九段,征服了人类自以为是的人类智力在人工智能面前的最后一个堡垒。
事实上,在许多单一领域中,人工智能技术早已超越人类的水平。由此所带来的直接影响是,大量的工作岗位由机器取代了人类,这种替代的范围在未来也会越来越广。并且这种改变会从工作慢慢影响生活,在未来需要人类自己完成的事情也会变的越来越少。
信息技术的发展到此并没有停止,反而走的越来越快。当互联网出现的第一天起,人类就在现实世界之外建立起了一个全新的虚拟世界。就在几周之前,全球最大的社交网络公司Facebook改名为Meta,正式进军最近大火的Metaverse,元宇宙。
虽然目前对于元宇宙还没有一个明确的定义,但大部分人都将它设想为一个不同于现实世界的平行宇宙。它会是一个去中心化的,有许多公司和个人在里面自我经营的空间,里面拥有全新的资产和经济运行模式,个人在其中可以拥有区别于现实的全新身份。它可能会是史蒂文·斯皮尔伯格所指导的电影《头号玩家》的模样,也可能是基努·里维斯出演的经典科幻电影《黑客帝国》的样子。
此时此刻,你可以思考两个问题。什么是真实?人的本质又是什么?假如你就是希拉里·普特南所假象的那个,放置在装有营养液的缸里,维持着生理活性的大脑,你所认为的世界只是计算机通过神经末梢向大脑传递和原来一样的各种神经电信号,此时的你所体验到的世界其实是计算机所制造的一种模拟现实,你真的能意识到自己生活在一个虚拟的世界中吗?
九千多字,超过了自己的写作的最长记录,在现在能全部看完的估计也不会有多少人。
这篇文章最初的设想是以 计算机——>互联网——>人工智能 为线索展开,写的过程中发现每一个点又会涉及复杂的网络联系,随便一个扩展点都可以单独写成一篇文章甚至是一本书。最终,只能将自己熟知的,并且认为其在计算机发展中起到关键作用的人和事写进去。和整个计算机的发展相比,文章中的内容只是沧海一粟。
如果你在看完文章后,对计算机的原理或是发展感兴趣,还是推荐你观看Crash Course出品的《计算机科学速成课》。你既可以将它作为科普视频,也可以将它当做计算机科学入门教程,下面是这门课在B站上的观看地址。
https://www.bilibili.com/video/BV1EW411u7th
相关资源