我们都是计算机。
写在前面
当今互联网时代,你有没有感觉生活节奏越来越快?万物互联,网络上新奇技术和现象层出不穷,稍不留心就被时代甩出几条街…号称脑力界最强的围棋,去年的李世石和今年的柯洁都败给了人工智能AlphaGo,很多人担心未来人工智能会不会取代人类或者干脆灭掉人类…
这一切,全部归因于强大的计算机…
最近得空又翻了翻计算机原理相关的书籍,趁机拉出来思考思考。
一言蔽之,计算机本质就是用机器来存储和运算二进制表示的数据,依靠着各种算法实现各种功能。计算机能模拟人类行为,主要是靠数据和算法。这里稍作解释:
- 人类的随机行为可以用随机数实现(如蒙特卡洛等随机数方法)
- 人类的行为的可能性大小可以用发生过的数据的概率来计算
- 人类的记忆可以用大数据存储类比
所以《锵锵三人行》名嘴窦文涛不禁对吴军博士感叹:我们人类是不是也是一种精密的算法啊?!其实,我们的肉体和灵魂就是在生物体内的一套电化学信号的刺激下行动的。是不是很可怕?我们还有独立人格吗?
有人说:“这怎么可能?我能控制我自己的行为,我是我自己的主宰。”这里我不置可否,我只陈述几个现象:
- (低级 - 生理)冻得身体瑟瑟发抖
- (中级 - 生理+思想)温饱思淫欲
- (高级 - 宇宙)你(没错,说的就是屏幕前的你)现在可以继续看我这篇文章或者现在就关掉不去看(你觉得你有决定权)…
稍作停顿,上面的第3条你觉得是主观还是客观?(此刻思考10秒钟…)
在你作出决定之前我无法预测,但无非就是两种可能性:看或不看。这里我们复习一下“薛定谔的猫”:
盒子里的猫是死是活,我们无法预测,但可以确定的有两种可能性,而且只有打开盒子后才能知道哪种情况发生了…
没错,你的选择(无论你觉得是主观还是客观)也可以通过科学理论用数学的方式来描述!
不过,我今天想讨论的不是这些。
如何让自己更牛逼
计算机是由我们人类中的极少数极少数人 —— 比例上来看可能连千万分之一都不到 —— 发明并持续研究完善出来的东西。所以,我们从计算机上可以学到的,其实是极少数极少数聪明人的思维方式和方法论。
我们要向计算机升级一样进化
我们可以做个简单的类比:
- 每个人的大脑里都有一个属于自己的操作系统
- 每个人都有一套属于自己的 I/O (输入/输出)体系,有一套自己的运行处理机制
- 人和人之间很不一样,有的人处理器(大脑反应)更强大一些,有些人的内存(记忆力)更大一些,有些人的硬盘(身边的资源)更大一些,有些人的显示器(面相)更漂亮一点,有些人的打印机(说话书写)比较高效,有些人配置了网卡所以可以连网(从外界吸收或输出东西),有些人不连网(死宅内向),有些人的带宽很足,有些人的带宽很小,有点人在互联网上,有的人在局域网里…
这世上没有完美的操作系统(没有完美的人),每个操作系统都或多或少有它的局限 —— 就算它有优势,也不能彻底消灭 bug。操作系统是一点一点演进的,bug 要不断消灭的,旧的 bug 被消灭了,新的 bug 总会出现,遇到一个就要想办法处理一个。当然也有些方法论,就是:有些 bug 先忍着,然后找个机会一并消灭掉;一些 bug 在升级操作系统的时候因为整个机制变了,所以那些 bug 就自动消失了…
这是特别诡异的事情,人们一向认为自己比机器聪明,整个社会也在宣扬机器是不可能超越人类的,可事实上,绝大多数人真的比机器落后太多了,无法相信地落后。
我们今天用的每台电脑都是完整的,每时每刻拿在手上的手机都一样是完整的。它们都有完整的组件,处理器、输入输出设备、内存、硬盘、联网设备… 你再看看人,很多人的处理器是残疾的,输入输出设备是不完善的,内存小到没用的地步,硬盘甚至根本就没有(不会记笔记、不会用图书馆的人),至于连网设备,真的很差,甚至真的还不如没有(有的人上网就“中毒”沦落了)…
最关键的是,也比较搞笑的是:
绝大多数人的操作系统竟然是从不更新的!
从不!
大多数人所使用的操作系统其实是两千年前的,比如他们会自然而然地坚信“眼见为实”这个古老的原则,不懂“间接证据”的使用方法和判定方法… 又比如很多操作系统完全没办法识别“中西医结合”根本就是一个无法格式化的概念。
粗糙、原始的操作系统的主要特征是,它越差,就越自洽,漏洞百出却又能持续运转,最关键的是,它没有任何自动升级的机制。
计算机进化比较快,没几天打开电脑就提醒你打补丁升级系统;手机各种 App 甚至有过之而无不及…我们再回头看下自己:今年的我和去年的我相比在哪些方面成长了?有哪些观念改变了?你别说你还不如去年呢…
向计算机一样与人相处
不同的操作系统之间的通讯,是需要共同的协议支撑的,不使用共同的协议的计算机之间没办法通讯。在互联网上,最常见的协议是 TCP/IP 协议。TCP/IP 协议的运行机理大致如下:
网络上有很多台计算机(A ~ Z)相互联网,它们之间使用相同的协议传输数据…
- A 若是需要传输数据给 Z,那么之前需要 A 与 Z 握手三次,才能确定连接有效…
- A 必须先把数据切分成若干个小的数据块,然后逐一传输出去…
- A 送出的每个小数据块,到达 Z 的路径每次都可能并不相同:不一定是直接的 A-Z,可能是 A-B-X-Z,可能是 A-X-C-Z,也可能是 A-B-C-Z… 反正是个各自相通的网络么,所以,无论选择什么路径,只要能够到达就可以…
- Z 一旦收到了小数据块,会发出回执,A 收到上一条回执之后就会发出下一条,若是在设定的时间窗口中未获得回执,则判定传输失败,放弃继续传输…
- 直至所有数据块全部发送完毕,A 收到所有收据之后,再发出一个“发送完毕”的消息(这个消息也会返回一个收据),Z 在另外一端再把所有数据块按照顺序拼起来,形成一个完整的数据…
从这个机理中我们学会了什么?跟家人沟通的时候,我们不妨给自己定几个小规矩:
- 我要做好至少尝试确认三次是否真的可以开始沟通;
- 沟通有很多种方式,不能局限在特定的某种方式上;
- 我要有个办法确认每次沟通确实成功;
- 如果事儿足够大,我就会切块,分步沟通;
- 总而言之每个环节上都一定要有清楚的确认机制…
很多事儿,其实很复杂,想要一下子说明白,一下子让对方想通,是很难的,甚至是不可能的。那怎么办?必须把整个事情提前拆分好,分清楚主次,分清楚先后,然后一件一件地来,并且在这过程中,还要反复确认确实沟通成功才能进行下一步…
沟通有很多种方式啊,起码至少有直接沟通和间接沟通两种罢?自己讲不通,可以请别人帮忙啊!上一步对方都不接受,那就不能推送下一步了啊!怎么办,只能等啊…一直不接受怎么办?你接受沟通失败这个事实呗,还能怎么办?
看,其实,很多的时候,所谓的耐心、所谓的沉得住气,其实是学识 —— 学识决定一切。
家人之间的沟通,同样是需要协议的存在的。而这协议是需要双方共同建立,且共同遵守的,否则还沟通什么呢?
看下别人为什么吵架。其实道理都是一样的…
- 底层概念差异
- 主次不分
- 价值观不同
- 立场不同
- 历史不同
- 无仲裁
这里还有个细节:
- 沟通成功的关键在于:双方都是讲道理的人(就是肯遵守协议的人)。
人和计算机比起来,简直弱爆了。也许像有些人说的那样,计算机永远不能超越人类,因为人类有灵魂… 可大多数人不仅没有灵魂没有独立思想,人云亦云,连每个组件(中央处理器、内存、硬盘、显示器)都破破烂烂的…
但,无论哪两台计算机想要沟通,双方都要共同遵守相同的协议。协议有很多种啊,POP,IMAP,TCP/IP,FTP,HTTP,UDP,ICMP,BitTorrent… 在不同的场景下,不同的需求下,就要使用不同的协议… 不开通某种特定协议的计算机,就不能参与某种特定的沟通…很有启发罢?
高级的操作系统(比如多任务操作系统)与低级的操作系统(比如单任务操作系统)沟通是很困难的,因为对于高级操作系统来说,“向下兼容”不仅很困难,干脆是一种不可能克服的拖累 —— 当然,事实上,“向下兼容”只不过是良好愿望而已,事实上根本做不到。
所以,在选择伴侣的时候,最好…
- 寻找同级别的操作系统;
- 要升级就大家一块儿升级…
人们经常开玩笑,“三观不和最伤感情了…”,其实真的不是玩笑。的确如此,从某个角度望过去,所谓的三观,就是在说操作系统的一部分。
当然,“三观”是个特别社会主义的词汇,好像最初来自于马克思:世界观、人生观、价值观…据说,2009 年的时候,胡锦涛同志升级了他的操作系统,提出了一个“新三观”(马爷爷的三观就变成了“老三观”或者“旧三观”):事业观、工作观、政绩观…不过,好像胡锦涛同志的三观跟我们老百姓关系不太大。
虽然,最底层的文件传输是可以跨操作系统完成的,可是,绝大多数应用程序,并不是多系统通用的。台式机上能用的,智能手机上可能不行,能跑在 DOS 上的,基本上不可能在 Windows 上跑(反之亦然),能跑在 Windows 上的可能并没有 Mac OS 版本(反之亦然),即便 Mac OS 和 Linux 是同宗的操作系统,依然有大量的应用软件并不通用…
在选择伴侣的时候,貌似绝大多数人并不关心那最核心、最重要的“操作系统”,而是只关心其它的方面 —— 他们误以为重要的方面。这就是症结所在。比如,“门当户对”,其实就可能是为了找到“合适的、可兼容的操作系统”,只不过,这种方法论,不直接,不本质,也不够朴素,所以总是出现各种差错,酿成各种悲剧。
一切的鸡毛蒜皮喋喋不休,都发生在低级的、协议混乱的操作系统之间。有时高级的操作系统,可能会不小心与低级的操作系统“吵”起来,最终一定是高级的那个吃亏…不信你也仔细观察一下,你最终会得到一模一样的结论。
不要跟傻X争论,他们会把你拉到他们的世界里,用他们多年的丰富经验迅速捣毁你的一切…他们凯旋不用归,而你就惨了,回不来了…
幸运的是,每个人都可以主动升级自己的操作系统,差别只不过是,自己是否意识到,自己愿不愿意,自己是否有意愿主动持续地升级…当然,有人已经“无法升级”,但说实话,绝大多数情况下,这是他们自己造成的。
说到这里,现在总结下来,倒也简单了,不吵架或者逐步减少吵架频率的方法论无非是:
- 共同创建协议,
- 共同遵守协议,
- 共同升级协议…
当然,身边还有很多原本应该很亲近但实际上却不那么亲近的人 —— 亲戚。不知道为什么,我发现亲戚竟然是最难与之共同成长群体,也许是现代人的生活结构发生了变化罢。另外一个群体也是如此,老同学 —— 明明心里有那么多的亲近之感,但确实早就失去了共同成长的机会。那怎么办?
计算机世界里还有一个概念:虚拟机。
在电脑上,最初的时候,我用的是 VMWare,现在用的是 Oracle 的 VirtualBox。需要使用 Windows XP 时代的软件的时候,就开个虚拟机,在里面跑一套旧系统,在那个虚拟机可以运行外面跑不动的老软件。
这样一来简单了:应该在自己的大脑里也多创建几个虚拟机才对啊!这真是非常先进的方法论!—— 说多少遍都不过份:向计算机科学学习思考,等同于向地球上最聪明的人学习思考…
于是,读几本关于星象、星座的书。遇到喜欢这些概念的人,必须沟通的话,就开个虚拟机,跑个跟他们一样的操作系统…
果然皆大欢喜。更进一步,琢磨了一下亲戚长辈的思考模式,然后专门为他们做一套“虚拟机镜像”,在一些必须跟他们相处的环境里,打开这个虚拟机…
不能容错的系统肯定是脆弱的
今天的计算机科学里有一个重要的概念:
容错(Fault tolerance)
( https://en.wikipedia.org/wiki/Fault_tolerance )
如果一个系统不能容错,那么它就是脆弱的。因为任何一个在现实世界里运转的系统所面对的,必然是一个不完美的、不理想的、各种意外频繁发生的现实世界。有一点错,就直接停止运转,那系统基本上就是个废物。
从这一点上来看,绝大多数人在没有恰当训练之前,不懂得容错,就基本上跟废物差不多。看看那些易怒的人罢。有一点差池,他们就暴跳如雷,大脑充血,系统完全瘫痪… 这不是废物是什么?其实他们比废物还可怕。暴怒的人不大像一个失灵了的冰箱,坏了也就坏了,暴怒的人更像失控的火车,要冲出轨道,毁掉停下来之前撞到的一切…
也就是说,我们最好给自己的操作系统设置一定的容错机制。比如,遇到貌似不能沟通的人(操作系统不同),多想想,就知道起码有以下几个选择:
- 直接停止沟通(注意不要引爆自己的情绪进而浪费时间)
- 只沟通能沟通的(为了节省自己的时间精力)
- 换个方式沟通(开个虚拟机玩玩?)
- 伪沟通…(为了避免引爆对方的情绪浪费自己的时间)
你看,这就是给自己创建了“容错机制”之后的效果和好处。
工程学里有一个概念叫“冗余”(Redundancy)。
所谓冗余设计,就是为了能够让一个机器(或者系统)在非正常情况下也能运转,要把一些关键的组件安放一个以上… 万一其中一个坏了,机器依然能够正常运转,甚至可以在机器的运转过程中修复或者替换那个坏掉的组件。
大型货车有很多轮子,并且还常常是每一组由两个轮子并列构成,就是这种设计思想的应用。所有轮子同时坏了的可能性几乎没有,因为某个单个的轮子坏掉,完全不影响大型货车的正常功用。这样的设计使得系统更为可靠。
细想想,我们人类自身就是个“冗余度”很好的设计,我们有很多重要器官都是有一个以上的,比如肺、肾、手、足等等。所以,摘掉一个肾、断了一只手、少了一条腿、瞎了一只眼、掉了一只耳朵、少了几根手指或者脚趾… 这些本质上来看都不大影响一个人继续生活。
不仅我们自身就是个“冗余度”很强的设计,放眼望过去,整个世界也是个冗余度很强的设计,不是吗?从这个角度望过去,那句话是对的:
- 这地球不是少了你就不运转了!
是啊,多个正确的你我,少个错误的他或他们,又怎样呢?绝大多数情况下,其实这世界还是一样的,它从来都是以不完美甚至千疮百孔的状态持续运转…
现在,我们知道了:
有容错能力的系统更为强壮,有冗余度设计的系统运转更为持久…
那我们应该怎么做呢?
想明白这个道理之后,我们就应该别太在意遇到的人们身上有这样那样的缺点了,即便是有些之前实在令我们厌恶的缺点,我们也尽量尝试着忽视它们 —— 因为我们想把自己打造成一个容错能力很强的系统。
实践过程中这是很难的。除了因为这样做的时候通常要么显得虚伪、要么显得无原则(这两个都是很讨厌的性格特质),更是因为这么做多少有点感觉浪费时间。必须适应一段时间才能深入理解一个事实:
- 一切更为健壮的都要耗费更多的成本。
是啊,别的车只有四个轮子,你却要给自己搞八对轮子,肯定便宜不下去啊!实践一段时间,好处还是很多的。
比如,我自己不仅反对中医,也讨厌中医,甚至一度认为“怎么可以相信一个竟然蠢到相信中医的人呢?”
可等我打开容错模式之后,才“发现”另外一个可能让之前的我无比震惊的事实:相信中医的人群里,也有很多聪明人(其中的一些肯定比我聪明),也有很多有趣的人(其中的一些肯定比我有趣),反正我在他们身上学到了很多东西 —— 不管是正向的学习,还是反向的研究。
有了容错机制之后,最重要的收获是:
学习范围广了,思考更为深入了。
这很容易想象,一个更为健壮,一个更为强大,一个更为可靠的系统,当然走得更远,做得更多,长得更快…
另外一个经验是:
容错是自己的事儿。
至于那个“错”,尽量别公开。这跟计算机一样,“遇错报警”,以便及时处理,这确实是容错机制中常用的手段;但计算机是遇错向自己的系统报警,而不是向别的系统报警,道理也很简单,对别的系统报警没用啊!一般来说,公开不见得有好处,甚至有坏处 —— 这么明显会做会阻碍你更多的“容错”的实践和机会。
当然,有些事情除外,有些错,容不得…
写在后面
说明:文中摘录了部分李笑来文字。( http://zhibimo.com/read/xiaolai/reborn-every-7-years/A12.html )