用路径依赖原理来看待Linux和Windows的关系


近日在CSDN上有几篇关于Linux无法替代Windows的文章。还有些文章是讲XX语言将会取代XX语言的。有的文章旁征薄引(不是博),有的主观臆断,当然,还有胜者,讲不出道理,破口大骂的。好不热闹!

不巧的是,我这两天去书店,无意中翻到了一本书,书名好像叫《生活中的99个法则》。而且我一翻开书的那一页,正好就是讲“路径依赖”原理的。其实这个原理之前就有所闻,只是没在意而已。看到这个文章,联想到CSDN上近日正在争论的一些技术问题,觉得利用这个原理可以很好的解释这些技术问题。

那么,什么是“路径依赖”原理呢。

明确提出"路径依赖"理论的是道格拉斯·诺思。他由于用"路径依赖"理论成功地阐释了经济制度的演进规律,从而获得了1993年的诺贝尔经济学奖。

诺思认为, 路径依赖类似于物理学中的"惯性",一旦进入某一路径(无论是"好"的还是"坏"的)就可能对这种路径产生依赖。某一路径的既定方向会在以后发展中得到自我强化。人们过去做出的选择决定了他们现在及未来可能的选择。好的路径会对企业起到正反馈的作用,通过惯性和冲力,产生飞轮效应,企业发展因而进入良性循环;不好的路径会对企业起到负反馈的作用,就如厄运循环,企业可能会被锁定在某种无效率的状态下而导致停滞。而这些选择一旦进入锁定状态,想要脱身就会变得十分困难。

先举个有趣的例子:你知道吗,美国航天飞机燃料箱的两旁有两个火箭推进器,它们的宽度是4.85英尺。那么,它们为什么是4.85而不是5.0或者4.5呢?因为这些推进器造好之后要用火车运送,路上又要通过一些隧道,而这些隧道的宽度只比火车轨道宽一点,因此火箭助推器的宽度由铁轨的宽度所决定。那为什么铁轨的宽度是4.85英尺宽呢?原来,早期的美国铁路是英国人修造的,而这些英国工程师原来是建造电车的,而电车的轮距宽度就是4.85英尺。那电车的轮距宽度为什么按4.85英尺这个标准呢?原来,最开始时,做电车的人是做马车的。那做马车的人为何以4.85英尺为马车的轮距呢?因为那时的马车由两匹马拉动,而两匹马屁股的宽度就是4.85英尺。

看看, 路径依赖原理所产生的影响有多大,今天世界上最先进的运输系统的设计,在两千年前便由两匹马的屁股宽度决定了!

再看看跟我们有关的例子,关于我们手下的键盘的。现在大家使用的键盘,几乎全部是QWERT布局的。可能很多人认为,这样的布局一定是经过了前人进行科学分析,按最坐打字习惯和打字效率确定下来的。而事实上不然。我们现在所用的键盘,其布局来源于早期的英文打字机键盘。在那时,Q、W、A、S这几个键是使用频率比较高的,特别容易坏。所以设计者就将Q、W、A、S这上键放在了键盘的左上角,以便于维修更换,从而形成我们现在所用的键盘布局。而最近这几年的科技发展,有专家根据人体工学原理,设计了更加顺手和方便的键盘,用这种键盘,甚至可以提高打字速度30%以上。但经过几年的发展,这种键盘几乎都没有人在使用。因为人们习惯心理的影响,不愿意采用新式的键盘,反而觉得旧式键盘更顺手。这里面,就是路径依赖理论所描述的不好的路径,在这种路径下,事物(情)被锁定在某种无效率的状态下而导致停止向好的路径发展。

最后我们回过头来看看,为什么总有人说Linux无法取代Windows呢。我想,这里面很大可能就有“路径依赖”原理在里面做怪。

Windows自1985推出以来,已经有超过20年的历史。特别是自Windows95以来,Window几乎统治了世界上90%的PC机,拥数以亿计的用户群。特别是,Window的操作方式、使用习惯,几乎已经根深蒂固。大家都知道,电脑里有C盘、D盘、E盘...,执行程序从“开始”菜单里执行。管理文档可以在资源管理器里进行。而按F1可以随时得到帮助。双击一个图标是开启文件或程序。最重要的是,Windows摒弃了硬生生的命令行的操作界面,让普通大众也能简单的使用电脑。

而在很多Windows用户的观念中,Linux有着一个Dos一样的操作界面,必须打命令才行让电脑做事,有些人可能刚装好没几分钟,只是觉得操作习惯上的原因,就放弃了Linux。在他们看来,Linux只是一些所谓高手摆Cool的工具。所以,由于路径依赖原理,很多人坚守在旧的思维模式和观念里面。

突破路径依赖法则,不是没有办法。最重要的一点就是人的“毅力”和“恒心”。不要因为某些新兴事物不习惯,不对胃口,就拒之千里。很多人怕放弃已有的东西、已经熟悉的知识技术、生活习惯等等,担心新事物会带来这样的、那样的“风险”。没有毅力和恒心,是无法从旧的“路径”中走出来的。

再者, 要创造一个相似的“路径”,让人们可以轻松的从一个“路径”过渡到另一个路径。这两天刚装了Fedore 5,它是由Red Hat社区维护的一个开源Linux版本。安装盘有3G多内容。装的时间也比较长,花了1个多小时。安装完后,简单操作了一下,觉得现在的linux已经有很多方面在向Windows学习了。比如,有类似开始菜单的工具栏,有安装/删除软件的程序,有类似Office的OpenOffice可用,其操作界面与Office已经没多大区别了。我试着插入我的U盘,想试试Fedore5可不可以自动识别U盘。可喜的是,它很快检测到了U盘,并在桌面上显示了相应的程序图标来浏览U盘内容,我想,Linux开发者们,正在挖掘一条栈道,让Windows用户可以从Windows大船过渡到Linux绿洲。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是设计模式一套被反复使用、多数人知晓的、经过分类编目的、代码 设计经验 的总结;使用设计模式是为了 可重用 代码、让代码 更容易 被他人理解、保证代码 可靠性;设计模式使代码编制  真正工程化;设计模式使软件工程的 基石脉络, 如同大厦的结构一样;并不直接用来完成代码的编写,而是 描述 在各种不同情况下,要怎么解决问题的一种方案;能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免引
单一职责原则定义(Single Responsibility Principle,SRP)一个对象应该只包含 单一的职责,并且该职责被完整地封装在一个类中。Every  Object should have  a single responsibility, and that responsibility should be entirely encapsulated by t
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强烈推荐。原文截图*************************************************************************************************************************原文文本************
适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以相互合作。
策略模式定义了一系列算法族,并封装在类中,它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,它是针对软件开发中经常遇到的一些设计问题,总结出来的一套通用的解决方案。
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
迭代器模式提供了一种方法,用于遍历集合对象中的元素,而又不暴露其内部的细节。
外观模式又叫门面模式,它提供了一个统一的(高层)接口,用来访问子系统中的一群接口,使得子系统更容易使用。
单例模式(Singleton Design Pattern)保证一个类只能有一个实例,并提供一个全局访问点。
组合模式可以将对象组合成树形结构来表示“整体-部分”的层次结构,使得客户可以用一致的方式处理个别对象和对象组合。
装饰者模式能够更灵活的,动态的给对象添加其它功能,而不需要修改任何现有的底层代码。
观察者模式(Observer Design Pattern)定义了对象之间的一对多依赖,当对象状态改变的时候,所有依赖者都会自动收到通知。
代理模式为对象提供一个代理,来控制对该对象的访问。代理模式在不改变原始类代码的情况下,通过引入代理类来给原始类附加功能。
工厂模式(Factory Design Pattern)可细分为三种,分别是简单工厂,工厂方法和抽象工厂,它们都是为了更好的创建对象。
状态模式允许对象在内部状态改变时,改变它的行为,对象看起来好像改变了它的类。
命令模式将请求封装为对象,能够支持请求的排队执行、记录日志、撤销等功能。
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 基本介绍 **意图:**在不破坏封装性的前提下,捕获一个对象的内部状态,并在该
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为
享元模式(Flyweight Pattern)(轻量级)(共享元素)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结