大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
目录
小时候,见过电子计算器,能很快完成计算,当时心想,计算器真是厉害,能提前存下所有数字的加减乘除结果。现在想来,很傻很天真。
后来,吵着闹着要买小霸王学习机,最后如愿变成游戏机,经典游戏“超级玛丽”和“坦克大战”至今历历在目:
后来,读初中,有了象征意义上的电脑课,穿着鞋套去电脑室,完全不会操作。有一次,把电脑弄死机了,吓得不轻,毫无耐心的梅老师,瞪了我一眼,直接把电源关了,然后回到他自己的电脑上,潇洒地听着任贤齐唱“让我悲也好,让我醉也好……”。那时,我知道了,电脑还能唱歌。对电脑的屏幕画面,也只有个模糊的印象:
那时的电脑显示器,真的很丑陋,在很长一段时间内,我一直误以为,这一大坨东西就是电脑的全部。其实,它只是显示器而已,远非核心部件。
高中以前,听到的概念都是电脑,大概是到了高中,才第一听说计算机这个名词,其实,他们就是一回事。有一次,我去一家互联网公司面试,司机指着我要去的那栋楼说: 里面都是搞电脑的有钱人。我挺诧异的,有没有钱我不知道,但那些搞计算机的互联网人,是搞电脑的吗?是修电脑的吗?
广义上讲,上面提到的电子计算器、小霸王学习机和初中见到的那些电脑,都是计算机。你现在拿在手上用于阅读的手机,也是计算机。总之,计算机无处不在。
要了解计算机,就应该了解计算机的发展过程, 去探索历史上那些精彩的事件和瞬间。本文仅从宏观角度,和大家一起,浮光掠影般了解一下计算机历史。
文中的部分图片来源于我的CSDN博客,部分来源于其他网络媒体,在此深表感谢。我们将以下图的框架来展开简述:
一. 手动计算机(远古时代—17世纪初)
很久很久以前,女同志白天忙采集,男同志白天忙打猎,昨日猎回几只羊,今朝逮回几只兔,都需要计数,这涉及到数的表示(即下一篇文章要讲到的编码)。
远古时代的人,也有十个手指,所以采用手指来计数,是很顺其自然的事情,这也就是十进制的来源。
小时候,我们学习十以内数字的加减,就是用手指来计数的,来看常见的表示:
我们来看下牛津词典对digit的解释:
手指和数字的关系,一目了然,我们也顺便学会了digit, digital, bit(binary digit)这几个单词。
想一下,手指计数有哪些不足?很显然,当数字变大后,手指个数就不够了。而且,古代的人,也需要吃饭睡觉, 某天逮回3只羊,用手指记录下来,吃个饭,还得保持手指计数的姿势,睡一觉后,手指松了,一切都忘了,这就尴尬了,得想其他办法。
很自然地,不要选用手指这样的“活物”来计数,用石头吧,毕竟石头不需要吃饭睡觉:
我找到了一个新东方的网页,介绍calculus这个单词,内容如下:
历史渊源,原来如此。顺便地,我们又很轻松地学了与数学、医学和计算机相关的单词,下次看到calculator, calculation, 岂会陌生?
想象一下,要把石头从北京带到深圳,该多麻烦。石头太笨重了,还是不好, 得想其他办法。
于是,人们想到用绳子来计数:
英语单词cord就是绳子的意思, record就是记录的意思,用绳子来记录嘛。从词源学来看,cord和record还是很有渊源的。这些单词,“总是看了不能忘”,卓依婷如是说。
用结绳计数的人,可能会深刻理解李煜说的“剪不断,理还乱”,“别是一般滋味在心头”:
不仅如此,绳子计数没法处理篡改的问题。昨天我从你那里借了3只兔,在绳子上打3个结,晚上回家后,我再偷偷解开其中的1个结。1个月后,我只还你2只兔子,你肯定不乐意的。这里的问题就在于, 你我双方没有可以用来核对的借条契约。
于是,古人采用了刻痕计数,有了刻痕,双方立下契约,劈成两半,每人一份,防止单方篡改:
上面我们提到的手指、石子、绳子和刻痕,主要用来计数,有了计数后,我们得对它进行加减乘除运算。有东西要表示,就涉及到计数,有数量需要变化,就涉及计算。
接下来,我们简要了解一下历史上那些有名的计算方法和工具。
中国的算筹,历史悠久。也有很多词语中包含筹,如觥筹交错,运筹帷幄等,现代管理学中还有一门“运筹学”的课程。所谓筹,就是竹子,就跟摆弄火柴棍差不多。算筹的具体算法不难,我们也无需做过多了解。图中那个挠头的人,是计算时遇到困难了吗?
再来看算盘,估计很多人见过,我家就有这个东西,“三下五除二”貌似尽人皆知。我虽然懂算盘算法原理和步骤,但不熟练。楼下培训机构有个“珠心算课程”,曾经探头去看了一眼,不怎么火热。来看看算盘长啥样子:
再来看纳皮尔筹,我琢磨了一下,道理很简单,本质就是“九九乘法表”,比如计算125*8,结果是1000,符合预期:
纳皮尔这个人,发明了对数,大家在高中肯定学过。大家应该记得这个符号:logaN, 那个N不仅仅指代正整数,也指代纳皮尔名字中的N. 后来,拉普拉斯说:对数的发明,以其节省劳力,而使天文学家的寿命增加一倍。伽利略说:给我空间、时间和对数,我就能创造宇宙。
对数的本质就是降维,把乘法除法转化为加法和减法。类似的做法是非常普遍的,傅里叶级数,傅里叶变换,拉普拉斯变换,Z变换,都是如此。以最常用的傅里叶变换为例,它把卷积运算降维为乘法运算,实现了积分向乘法的转换,使得计算复杂度大大降低,学过《信号与系统》的朋友,应该深有感悟。
稍微多想一下,是不是很多地方都类似呢?泰勒、麦克劳林都是深谙此道的高手。“狗哥”曾在他的博客中,也用大量的篇幅描述了“降维”。
再来看看由对数引出的滑尺计算,这个尺子是按照对数来制作的。很容易看出2*3=6,直接用尺子得到了结果,其背后的数学逻辑便是对数,log2+log3=log6, 所以2*3=6
今年国庆节,看了核潜艇之父黄旭华老先生获得了共和国勋章奖,在他的一个视频,有一把计算尺,在那个年代,就是靠类似的计算尺完成核潜艇计算的,挺不容易,挺打动人的。
无论是算筹、算盘、纳皮尔筹还是滑尺,都需要人参与具体的过程,参与每个计算细节。累就一个字,我只说一次。有没有这样一个工具:输入3和4,让工具自动得到7呢?没有,那就来制造这样的自动工具吧。
二. 机械计算机(17世纪初—19世纪末)
契克卡德是德国人, 他制作了一个计算钟,能实现自动计算,当时的工艺肯定没有下图这么精美,下图是后人做的复制品:
对于契克卡德计算钟,我们不做详细介绍,总之,它是个机器,里面有各种零件,能完成自动计算。
法国的帕斯卡,大家应该比较熟悉,就是搞压强的那个物理学家。著名的编程语言Pascal之名,正是取自帕斯卡,以纪念这位计算机先驱。帕斯卡自己制作了一个加法器,看着那些齿轮,真想去拧一拧:
德国的数学家莱布尼茨,就更有名了,也是个非常自负的家伙。大学高等数学中的“牛顿-莱布尼茨”公式,应该熟悉吧。还有莱布尼茨对于交错级数是否发散的判定方法,更是绝佳的思维。他敢跟牛爵爷叫板,还是有几把刷子的。另外,据说,莱布尼茨是受了中国阴阳太极哲学的启发,发明了二进制(下一篇文章会讲到),这是现代计算机计算的基础。莱布尼茨当时做了个机器,能做乘法:
在计算机发展史上,上面都是铺垫,直到巴贝奇差分机,才有了一些现代计算机理念的感觉。我们今天无需对巴贝奇差分机做详细了解和介绍,但作为现代计算机的鼻祖,巴贝奇为计算机奋斗一生的精神,一直鼓励着很多人。来看下巴贝奇差分机:
巴贝奇分析机更是思维超前,虽然最终没有实际制造出来,但闪烁着天才般的智慧和火花,很多理念与现代计算机原理非常相似,来看下巴贝奇分析机模型:
巴贝奇带着遗憾离开了人世,但给后人留下了宝贵的遗产。1832年,17岁的Ada参观了巴贝奇的差分机,并为之深深着迷。在巴贝奇去世后,Ada继续发扬光大巴贝奇的工作,为机器编程。Ada被认为是计算机历史上的第一个程序员,是个女程序员哈。美国国防部曾经花了10年时间研发了一种编程语言,在命名时,他们想到了Ada, 并以此命名,这就是Ada语言。Ada的父亲,是英国著名诗人拜伦,可曾记得他那经典的话:命运要我去流浪的地方还不少,去时还带着多少可叹的记忆;但我唯一的慰藉是我知道:最不幸的遭遇也不足为奇。
扯远了,回归正题。可以看到,在机械计算机时代,人们用各种方式来制造精巧的机器,让机器完成简单的计算,这是很大的飞跃, 因为它把人从具体的计算过程中解放出来了。以计算3+4=7为例, 人只需要关注输入的3和4,以及输出的结果7就可以了,具体的计算过程,由机器完成。
三. 机电计算机(19世纪末—20世纪40年代)
机械和机电的差别,从名字上就可以看出来。我们之前介绍的机械设备,都不是用电来驱动的。自18世纪中叶以来,物理学中的电学蓬勃发展,一些机器开始可以用电来驱动了。
美国宪法中这样一条规定:每10年需要做一次人口普通。1880的人口普查,花了7年的时间才得到结果。这就尴尬了,3年后,也就是1890年,还得再次普查。想一下,随着美国人口越来越多,会出现怎样的问题:前一轮还没普查完毕,后一轮又要开始了。
于是,他们开始想办法,尽量实现自动化,霍尔瑞斯发明的制表机,在众多方案中脱颖而出:
1890年的人口普查数据,是1880年的两倍,但总共却只耗时2年左右。当时,霍尔瑞斯的制表机并没有选择二进制,原因是:二进转换困难,二进制机器制作困难(下一篇文章将会讲二进制)。
人口普查后,霍尔瑞斯名声大振。在1896年,他开了个制表机公司。后来在1924年,公司改名为IBM, 响当当的名字,快100年了,IBM在每个时代节点,几乎都不落伍。有个师兄,在IBM工作,据说很高大上。
在第二次世界大战中,各国基于军事需要,大力投入了计算机的研究,但是,德国似乎不怎么看好计算机,希特勒更相信武器本身的威力。
祖斯(也有书翻译为楚泽),是德国著名的计算机先驱,在1935-1945这十年左右的时间,先后建成了Z1/Z2/Z3/Z4计算机,这些计算机时运不济,命途多舛,要么不被重用,要么被战火吞噬。
祖斯的Z1/Z2/Z3/Z4都很有创造性,比如,Z1验证了机器计算的可行性, Z2是第一台电磁式计算机, Z3可以用二进制控制,Z4能用穿孔纸袋输入和打印输出,甚至是处理条件分支。今天,我们很难再看到有关Z1/Z2/Z3/Z4的介绍了,在被历史尘封之前,让我们来看一眼Z1复制机的容颜:
在第二次世界大战中,德国不怎么重视计算机, 但美国就不一样了,各类计算机相关的研究如火如荼地进行。
史蒂比兹在自己的厨房,用二进制做实验,验证了二进制的可行性。我们在很多书上能看到Model K, 这个K就是kitchen,也就是厨房的意思,他老婆取名Model K. 实际上,他捣鼓的就是下面这个小实验(后面文章中,我们也会做类似的实验):
贝尔实验室的Model是一个系列,有很多不同的机型,比如Model I, 能完成远程通信,毕竟电话与通信是贝尔实验室的强项。这也为后来计算机网络的发展,奠定了关键的基础。关于Model系列,就不再介绍了。
哈佛大学也不甘落后,与IBM合作,制作了哈佛Mark系列,不过其总设计师艾肯却宣称哈佛Mark I是他一个人搞起来的,IBM的小沃森自然很恼火,最终不得不分道扬镳。来看下哈佛Mark机型之一:
哈佛Mark II是当时最大的继电器是计算机,有13000多个继电器。我们来看看继电器长啥样(读初三时,已经学过了,继电器的原理):
1947年9月9日,那是一个秋季的九九艳阳天,一个蛾子飞进了哈佛Mark II的一个继电器,导致继电器失效,机器无法正常工作,这就是历史上有名的bug事件,来看看柯林斯词典对于bug的解释:
在如今的软件开发中,大家常说的软件bug, 就是指软件有问题、缺陷或者漏洞,实际上,说的就是1947年的那只该死的蛾子。
四. 电子计算机(20世纪40年代—至今)
继电器虽然可以用来做计算机零件,但并不完美,它是机械的,反复移动,容易断裂,而且速度还很慢。于是出现了电子管(也称真空管),继电器能做的二进制功能逻辑,电子管都能做, 而且速度更快,快1000倍。来看看电子管长啥样:
当时,很多机电计算机由继电器构成,但到了1945年,电子管计算机基本上取代了机电计算机,来看看电子管计算机:
线路乱七八糟,操作计算机的方式就是插电线, 拔电线。那个时候的操作员,相当于我们今天的程序员,都是“编程”,操作计算机。不同之处是,那时候的操作工作很繁琐,需要耐心, 有很多女孩子加入其中,这样一来,男孩子也不愁找不到女朋友了。不像今天,程序员找个女朋友,费劲得很,可能是因为女程序员太少了。
电子管计算机固然快,但很昂贵,而且了解“爱迪生效应”的朋友,应该知道,电子管工作的时候,容易发热,动不动就被烧坏,这对于稳定性来说,是致命的。你好不容易写好一篇公众号文章,结果某个电子管烧坏了,整个计算机失灵,文章丢失,你要骂娘的。
鉴于电子管的缺点,人们开始研究新的器材。1947年,晶体管诞生了,学过模拟电路的朋友,应该很熟悉这个东西。来看下晶体管外形:
1956年,肖克利等人因为发明了晶体管而获得了诺贝尔物理学奖,当之无愧,晶体管改变了世界。肖克利本人名利双收,但想搞更多的钱,于是开始开公司,可是他属于那种智商很高,情商不咋地的人。肖克利手下的八个人,先后离开了他。肖克利自然不满,给这八个人扣了一个大帽子,即“八叛逆(The Traitorous Eight)”,来看下这八个大牛:
1957年,这八个人接受一家公司资助,成立了后来很有名的仙童半导体公司,上图的的字母F, 就是Fairchild, 意思就是仙童,学电子电路的朋友,应该基本都听说过这个公司,它被誉为是硅谷的西点军校,乔布斯就曾将其比作成熟的蒲公英,只要风一吹,其创新的精神,就像蒲公英的种子那样,四处飞扬,生根发芽。
然而,天下没有不散的筵席,他们后来又陆续离开了仙童半导体公司,进行新的创业,于是有了现在的Intel和AMD, 是不是很熟悉? 大家电脑中的CPU, 基本都是这两家的搞出来的。这里顺便说一下,摩尔是Intel的创始人之一,他提出了著名的摩尔定律,至今仍有效,并支配着硬件的发展。
貌似扯远了,让我们来继续看当时的晶体管计算机:
可以看到,尽管晶体管使计算机简化了很大,但图中的计算机仍然是庞然大物, 还能继续进行压缩压缩再压缩吗?得想想其他出路了。
1958年,就职于德州仪器公司的杰克基尔比,发出这样的疑问:为什么不在一块硅片上,制造多个晶体管和电子元件呢?这就是集成电路。1959年,肖克利八弟子之一的罗伯特诺依斯(Intel创始人之一), 也想到了同样的方法。他们后来为谁先发明集成电路而争论不休,现在普遍的观点是:他们独立发明了集成电路,可以说都是集成电路之父。
说到罗伯特诺依斯,背诵过乔布斯“Stay Hungry, Stay Foolish”的朋友应该记得,当年乔布斯被赶出苹果公司后,曾去找过罗伯特诺依斯和HP创始人之一的戴维帕卡德,估计是在一起喝喝酒,吐吐槽。
还是来看下集成电路芯片吧:
然而,这种集成度还远远不够,能不能在更小的芯片上集成更多的晶体管和电子元件呢?当然可以,这就是大规模和超大规模集成电路。
一块芯片,指甲那么大,居然集成了上亿个晶体管和电子器件,而且还要能正常稳定工作,每每想到此,就有种不寒而栗的感觉。当年占据整个房间大小的计算机,如今竟然被集成得这么小, 而且功能远远超过当时的计算机。这背后是数学、物理、化学、微电子学、电磁学、光学和量子力学等学科的功劳。难怪华为任总说:搞芯片,砸钱是不行的,要砸数学家,物理学家和化学家。
曾经在一次面试中,面试官问:怎么证明你对科研有兴趣?我说我经常看《半导体物理》杂志,然后双方又就纳米技术blabla了一番。我现在做着跟当时专业基本无关的东西,回想起自己学过的电子通信方面的知识,还是能唤起心中的涟漪。
曾经在知乎上看到一个问题:为什么硬件工程师的工资,整体不如软件工程师?里面给了一些很现实的原因,我觉得很有道理。虽然我现在不做硬件了,但心中始终有些硬件的情怀,拿着一个单片机开发板,就有种莫名的兴奋,看到FPGA板子,一定要去摸一下,买到了树莓派,玩得不亦乐乎。那些执着在硬件行业,执着于国产芯片研发的公司和人员,值得我们尊敬。我也始终相信,国产芯片必有出头之日,也必须要这样。老东家,好样的
讲到这里,似乎把计算机发展简史叙述了一遍,但仅仅是从计算机硬件角度进行的,并不是计算机发展历史的全部,甚至只是冰山一角。
从计算机科学上看,居然没有讲到计算机科学之父—阿兰图灵,没有讲到现代计算机之父—冯诺依曼,没有讲到信息论之父—克劳德香农。
从计算机型号上看,居然没有讲到ABC计算机,没有讲到ENIAC计算机, 没有讲到EDVAC计算机。
从计算机公司上看,居然没有讲到乔布斯创建的苹果,没有讲到比尔盖茨创建的微软,没有讲到坦福大学一对夫妇创建的思科。
从计算机整体上看,居然没有讲到软件发展,没有讲到操作系统,没有讲到Windows和Linux,没有讲到编译器和各种编程语言。
对了,连计算机网络这么的重要东西,也没有讲到。所以这篇文章是不完整的,也不可能在一篇文章中把所有的东西介绍完毕。有兴趣的朋友,可以去看一些书籍,了解更多精彩纷呈的计算机发展史料。我曾看过的计算机发展相关书籍和博文内容,主要如下:
1.《计算机: 一部历史》
2.《软件工程通史: 1930-2019》
3.《编码: 隐匿在计算机软硬件背后的语言》
4.《穿越计算机的迷雾》
5.《浪潮之巅》
6.《计算机文化》
7.《硅谷之火》
8.《信息简史》
9. 简书“逸之”系列:
https://www.jianshu.com/u/af8d5ddcb7c5
如果大家有好书,也请帮忙推荐给我。关于计算机发展的历史,先聊到这里了,我们下次见。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180579.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...