绝地(2005年6月、7月写的,现在我已经有了比文章描述的更成熟的思想,欢迎大家指正)

绝地

 

绝地
——分析现行软件生产发展问题
 
2005 6 月、 7
 
 
         本文主要从发展的角度,从一个大的方面,就现行的主要软件技术做出概括性的分析,总结其特点和缺陷,最后得出结论:如果现行软件的开发和应用体系得不到根本的改变,就会导致软件发展走向绝地。在本文的后面,我会提及一些可行的软件改革思路,在以后我的文章中将会有对于软件根本变革技术的详细探讨,并且提出一种可以使软件走出绝地的技术革新的思想。
         以下每个章节都描述了软件的发展、问题和特点,以成语作为每个章节的标题,除了增加在表述上的生动,主要是希望这些成语可以准确的概括其对应章节的内容
 
美国每隔10年进行一次全国性人口大普查。你大概无法想象,1880年的美国人口普查数据,用人工处理整整花了7年才完成各项统计工作;更糟糕的是,当时全世界各国向北美的移民迅速增加,人口的激增使得政府忧心忡忡地预估,1890年的普查数据必须花费10年以上的时间——也就是到了1900年,下一次人口普查开始的时候,上个阶段的普查数据也许还没有处理完毕呢!这个预估结果对美国人口普查局来说,无疑是重重压在心上的一块大石头,因为政府的重大决策及建设考量都需要以普查结果作为根据,例如:在哪铺设铁路较适当?医院该建在哪里比较好?每一区该选出几位民意代表?要是没有人口普查结果作为参考指标,该叫政府当局如何编列预算、如何推动公共事务呢?为了尽快解决这个问题,美国人口普查局举办了一项比赛,公开征求最快速处理资料的办法。重赏之下必有勇夫,专职统计员Herman Hollerith 以自行发明的卡片计算器在这项比赛当中得到冠军。你知道这个卡片计算器多厉害、多勇猛吗?即使1890 年人口总数虽比上一个10年多了1200万,这项机器却只花了3年时间就将所有人口普查的数据处理完毕, 甚至不到上次统计所花7年时间的一半呢!这项机器果然节省了处理资料的宝贵时间,也解决了当时人口普查局遇到的难题。后来这位Herman Hollerith在1896年成立了一家报表机公司Tabulating Machined Company (简称TMC),即现在众所皆知、闻名全球的计算机公司IBM的前身。
 
第一章 生逢其时
         在很多有关西方的神话里经常会出现这种情况:一个你熟悉而亲近的人,突然会在一个月夜变成毫无人性、凶猛无比的狼,这就是人狼。面对人狼的威胁,人类找到了绝对杀死人狼的方法——银弹,使用银制的子弹可以射杀人狼。近些年来,在包括软件在内的很多工业领域内,都会有一些专家和学者俄热衷于把积累到一定复杂程度的问题比作人狼,而把解决这个问题的方法比作银弹。
 
18 世纪末、 19 世纪初,世界在经历了工业化和城市化的洗礼后,生产力得到了很大的提高,然而人们在进行工业控制,城市规划等诸多方面却遇到了计算上的瓶颈。当人们在对大量数据信息进行筛选、归纳、统计等工作时,使用传统手工计算完成的结果很难让人满意,结果往往造成生产上的滞后。我们这个世界从来不缺少能人义士,当世界面临难题的时候,这些人就会像 Superman 一样挺身而出。所以,当时一批 Superman 就开始研究通过机器或者电器来替代部分人工计算的途径,以提高复杂计算的可用性。本文开头的人口普查事例就是在这种背景下发生的。
从现在看来,当年那些 Superman 的行为给今天带来了翻天覆地的变化!很明显,当年人工计算所遭遇的瓶颈已经被计算机解决了!而且计算机所带来的变化还远不止这些……如果说人工计算的瓶颈是一群凶猛的人狼的话,那么计算机就是一种不错的银弹,我们用这种银弹杀死了大量的人狼。
1
         计算机(包括硬件和软件,不过计算机初期软件和硬件的界限不明显)的出现,就好像人类在面临人狼威胁时,一颗适时射向人狼的银弹,所以我说是“生逢其时”。计算机的出现,也标志着一个时代开始了——电器时代。
 
我们都可以在相关讲述人类文明发展的历史或者哲学书上找到关于人类发展有关时代的归纳,如新(旧)石器时代、铜(铁)器时代、机器时代等,但是很难找到有关电器时代的说明和描述。关于电器时代,是我对我们现在这个时代的一个称呼,大家只要明白意思就可以了,如果你们觉得电器时代不合适,那么就用你们觉得合适的词汇替换掉你们所读到的“电器时代”。这里,请暂容我这么称呼。
 
         计算机应用的核心,归根结蒂还是软件的应用,硬件只是一个不可缺少、相辅相成的基础。所以我们在这里讨论计算机应用的时候,主要是讨论软件的发展(如果你们要看硬件的应用,《电脑报》、《电脑爱好者》这些报纸杂志都是不错的推荐)。
 
第二章 道可道,非常道
老子说“道可道,非常道”,拿到现在来看,和黑格尔的“存在即合理”比较类似,他们都有这两层含义。
第一层含义:没有什么东西可以一下子出现,都是经过一定过程的发展而来。如果没有人类冶金和火药方面的知识积累,银弹就根本不会产生;也许上帝懂,但就算上帝告诉我们银弹可以杀死人狼,我们在没有生产上积累的情况下,也绝不会制造出银弹,我们甚至不知道什么是金属银,什么是子弹。
第二层含义:就算有个东西可以一下子出现,那么如果只是单独的看这个东西,不和人和其他东西发生联系,那么这个东西的存在毫无意义。银弹本身就是个金属银制的头尖的东西,仅此而已,毫无意义;进一步和枪联系起来,就是个有杀伤力的子弹了,但和普通的子弹用处一样,除了材料就没有其他特别之处了;在进一步和人狼挂上关系,其意义就不可同日而语,甚至还有些神圣——杀死人狼的唯一利器。
 
一方面,我们的软件技术不是突然产生的,而是经过了好几个时代(从旧石器时代,或者更早开始,在经历了新石器时代、铜(铁)器时代、机器时代后,直到现在的电器时代)的人类生产积累才产生的。另一方面,我们的软件技术也不是用来杀龙的,而是确确实实,可以在人类生产中使用的技术。
 
什么是杀龙的技术?中国古代有个人,经过了一些努力,终于学到了杀龙的本领,但是待他学成之后,别人告诉他,世界上没有龙,他的本领是根本没用的。所以,我们可以得出结论,掌握杀龙本领的人都不是Superman,最多是个Stupidman。
 
         因此,软件技术是人类生产发展的结晶,而且已经融入到人类生产的方方面面。如果我们独立的把软件技术的发展步骤呈现出来,我们可以发现,这些步骤非常类似人类所走过的,从旧石器时代到现在电器时代的历程。

人类生产方式
软件生产方式
旧石器时代
人类对天然的石头或者兽骨进行简单的加工,然后靠这些工具猎取动物和采集可食用的植物来生活。旧石器时代后期出现了智人。
机器语言
符合 计算机的硬件特点的机器语言,由 0 1 组成,直接在硬件上运行,只经过专业人员的简单加工,开发困难,但是代码效率高,占用内存小 。逐渐在后期出现了专门给机器输入 0 1 的程序员。
新石器时代
人类的文化大大提高,对天然的石头或者兽骨进行比较精细的加工,而且可以有意识的创造新的物品,如陶器等。
汇编语言
程序员对机器应用的大大提高,他们无法再忍受 0 1 的枯燥,汇编语言作为 机器语言的一种助记符出现了。汇编语言和机器语言之间没有本质的区别,但是专业人员通过比较人性化的语言组织了 0 1 的组合,开发效率显著提升
- 铁器时代
人类发现怎样融化铜,怎样加入锡使其坚硬。普遍使用金属,文化也提高了,斧、匕首、矛、剑等工具都制造出来了。
青铜资源的稀少,而铁大量存在,青铜让位于铁,战争武器和战车也大量出现,人类逼近并且很快进入真正有史的时期。分工和交易逐渐出现。
高级语言
计算机的硬件发展飞速,使之有能力处理越来越复杂的应用,机器 / 汇编语言已经无法胜任,而且硬件关键元件价格的降低,使程序员不需要在程序降低内存占用,节省运算时间上花太多的精力,这样,各门高级语言便接二连三地出现了。高级语言更加接近人类自然语言,而且由于在操作系统层上运行,在功能和效率上远远的超过了机器 / 汇编语言。
开发人员数量的增多以及对功能的追求,代码级别甚至是二进制级别的复用、分工等因素的到了重视,使开发人员可以站在其他人的肩膀上进行开发。软件的开发得到了迅速的普及和应用。如各种图形库、运算库等,以代码或者二进制( DLL 等形式)实现复用。
机器时代
随着人类从繁重的体力劳动中解放,生产、文化等诸多方面都得到了大大的发展,人口数量急剧增加,分工和交易增强,社会进入巨大的变革。
面向对象
高级语言和库的使用简化了开发,但是随着大量的大型软件的开发,其不易进行管理和相互协同工作等缺点暴露了,面向过程终究被从面向对象所代替。开发人员可以进行更加高效的开发和管理,从而使整个软件业开始溶入人类生产的方方面面。面向对象,也开启了分布式技术的大门。
电器时代
多数的生产都被自动化所替代,人类的生活得到了大大的提高,需求也随之大大增加,人类更加注重分工和协作,流水线、全球化采购等生产方式大行其道。
中间件
随着网络应用的兴起和分布式技术的发展,组件在各种应用中大展身手。开发人员逐渐把各种应用中的功能抽象出来,封装在组件中,实现了一种流水线组装应用的开发方式。各种各样的全球标准应运而生。

1
从表 1 可以看到,我们的人类整体的生产方式的发展,和软件技术的发展有很多共同的特点,然而他们有共同的特点并不是一个偶然。首先,这是因为我们的软件技术先行者,在研发新的软件技术的过程中,很多人都是潜意识的参照了人类生产方式的发展模式,比如面向对象就起源于我们对世界事物的认识;中间件起源于企业标准零件的生产和组装。另外,就是因为随着人类需求的不断增长,应用也不断的复杂,原来的技术不再适用,一些先行者就会总结原来技术的不足之处,创造出新的技术以适应发展,这是人类生产方式的一个发展规律,软件的发展规律也是如此。比如汇编语言在面对着复杂应用的尴尬时,开发人员就开发出了高级语言。今天中间件的发展,明天一定也会遇到应用上尴尬,那时必定会有新的技术出现(我会在其他文章专门说明)。
 
第三章 层出不穷
    计算机科学家布鲁克斯(Frederick Phillips Brooks,Jr.)说:“没有一种单纯的技术或管理上的进步,能够独立地承诺在十年内大幅度地提高软件的生产率、可靠性和简洁性”,据以此,再结合布鲁克斯没有银弹的结论,其实我们可以这样理解:银弹是存在的,不过和药丸一样具有保质期(布鲁克斯说这个保质期是十年),过了保质期的银弹自身也会变成人狼,这时候这种银弹就射杀不了与其同一类银弹变成的人狼,那时候,我们必须去寻找新的银弹。
 
说道银弹和人狼,我们所面对的情况就有趣多了。每当新的银弹出现后,人们便会大量使用新的银弹解决原来对不了的问题;然后人们会发现,当频繁的使用这种新的银弹一段时期后,这种新的银弹就会变得无效,而且自身也会变成人狼。比如在软件生产领域,当人们发现高级语言比汇编语言可以编写更加大性和复杂的应用时,人们都普遍转向高级语言,然而在过了一段时间后,随着应用的越来越复杂,人们又发现高级语言支撑的系统也变得和当初汇编语言难以开发和维护,接下来,人们又把面向对象的思想容入的高级语言中,很多问题又解决了……
所以每当一种新的生产方式产生之后,很多旧的问题都会迎刃而解,但是人类又会向更加复杂的应用前进,总有一天,这种新的生产方式也会在越来越复杂的应用面前变成人狼,人类又需要去发现更加新的生产方式作为杀死人狼的银弹。从表 1 我们可以看出,就人类生产方式而言,每个时代都是前一个时代的银弹。这种更替象无限向上延伸的阶梯,人类正一步一步踩着这些阶梯进步。
         每次生产方式的更替,都代表着应用又复杂到了一个新的层次,人们的需求也更加深化了一个层次,人类的发展也更进了一步。
 
软件生产方式的更替更加明显,也更加快速。计算机发展的初期,我们直接使用计算机的语言(机器语言)控制计算机进行计算。我们发现,可以通过计算机完成很多手工计算难以胜任的计算,在此基础上我们又不知满足的让计算机完成更加复杂的计算,直到机器语言不能胜任,这时候我们又连续的的研发了汇编语言、高级语言等。这种无止境的不满足使新的技术不断作为银弹出现,新的技术带动了计算机的发展,反过来又激发人类使用计算机完成更加复杂的计算。
        
2
我们现在最新的软件生产技术就是中间件,就算现在流行的 MDA 等技术也都是构筑在中间件之上的。图 2 中,中间件变成的人狼有个问号,其意义在于:现在中间件应用主要在商用领域大行其道,但在其他要求高效率、高透明等领域中就变得毫无办法,而且就算在商用领域,其不足之处也越来越明显,这个我们在本文后面的分析中可以看出。
 
第四章 百花齐放
斧头已经被使用了成千上万年,然而现在自动化机械发达的年代里,这个古老的工具现在仍然被频繁的使用,未来似乎也不会准备退出舞台。
今时今日,当我们有些同行在争论是通过UML2.0还是DSL来实现MDA的时候,我们另外有些同行却还在一边使用汇编、C/C++等语言开发,一边对J2EE以及.NET进行盲人摸象般的揣测,惶恐而不知哪儿来的庞然大物。其实他们也不需要知道,因为对于他们的工作,汇编、C/C++等语言已经可以胜任。
 
对于新技术的第一印象,我们很多人往往会觉得新技术完全会取代原来的技术,而现实却不是这样,至少大部分不是这样。现在最新的软件生产方式已经有了 .NET J2EE, 甚至是 MDA ,但是使用汇编语言和高级语言的却还大有人在,而且这些生产方式在某些方面的应用还是不可替代的,如现在很多嵌入式的系统开发中,还使用汇编和 C 语言;在很多电信级的通信应用中,还是使用一些面向对象的语言,如 C++ 等。
这样,新老技术之间就产生了普遍的并存现象,我们往往可以看到,现在的很多 IT 企业一方面在招聘懂 J2EE 的人才,另一方面却还在招收懂汇编和 C/C++ 的人才,为什么会这样?因为术业有专攻,新技术是完成一些老技术难以胜任的新的需求而产生,就比如前面的美国人口普查,老的手工计算也能完成,但是不能符合要求,卡片计算器作为新技术解决了这个问题。
随着新技术的不断出现,我们在实际生产中就会有越来越多的技术选择,这真让人觉得幸福,就像我们可以选择吃柠檬味还是草莓味的冰淇淋一样。但是,等一下,这可不像选择吃冰淇淋这个简单。“生存还是毁灭,是个问题”,在选择使用怎样的技术去实现需求时,一定会有一个或多个最适于去实现需求的技术,但选择错了,结果可能会是杀鸡用牛刀,花大钱办小事,甚至是根本不可能完全实现需求。比如,现在要实现一个一般的商用网络多层系统, J2EE 或者 .NET 等基于 Web 多层技术是个不错的选择;但如果有人使用应用层私用通信协议,以及 C++ 、多线程和 Socket 通信等技术来完成,从成本、周期以及维护等因素上考虑,那很可能是个不归路。
3
 
第五章 山穷水尽
         大家都看过走钢丝,一个专业的杂耍家从钢丝的这一头走向那一头,通过长长的平衡木保持平衡,有时候还会做出一些高难度的动作。但即便是专业的杂耍家,偶尔也会从高高在上的钢丝上摔下来,幸亏他们大都有保护措施,不是被低下的安全网接住,就是被他们身上的安全带吊住。
 
         试想一下,如果让我们普通的人去走钢丝,而且没有保护措施,这会有什么后果?我想,这和一家传统企业使用我们某些软件厂商的 ERP 系统的后果是一样的。不相信吗?下面我给你一一道来。
 
第一节三个阶段
         对于软件的使用者来说,软件使用什么样的技术,软件是什么人开发的,其实都无关紧要,使用者关心的仅仅是:软件能不能用,就是软件的功能、效率、界面等是否达到要求。就现在的最复杂的企业应用来说,即使有人使用 C 语言,甚至是汇编语言去实现一个 ERP 系统,只要能够符合企业的要求,那么这个系统仍然能够为企业所接受。
从开发者的角度看去,软件的技术和人才就十分的重要,因为关系到软件的成本、周期的重要因素。所以,不会有正常的开发者使用 C 或者汇编语言去开发复杂的 ERP 系统。但是,随着模块化的软件生产的出现,开发者使用 COM J2EE .NET 等高级技术去实现复杂的 ERP 系统也变得可行。从软件的总体发展来看,技术的发展侧重于开发者,侧重于如何实现低成本、高效率的开发;对于使用者而言,技术的意义仅在于新的技术可以实现更复杂的应用需求。其实,软件技术的发展,主要侧重于提高开发人员的效率,降低开发的成本。
         以下我把软件的发展总结了三个阶段,在这个发展过程中,技术逐渐加重了对开发者的偏重,而在使用者毫不知情的情况下,逐渐牺牲了他们的利益。这三个阶段我所总结的都是主流的一些商用技术,而非对每个阶段的每个技术都面面俱到。
 
l         早期
         最早的软件应用,其实连操作系统也没有,开发者直接通过机器语言和计算机交流,这能最大化底层硬件所能提供的效率,但是,开发和操作的难度都很大,而且能够实现的需求也过于简单。这期间,计算机只出现于大专院校以及一些专业的机构,使用和开发都需要非常专业的人士。
4
         从图 4 我们可以看到,在这个时期,只有熟知整个计算机硬件结构体系的人才能够运用计算机。实际上,运用这个时期的计算机,是通过直接输入指令(机器语言)到计算机,计算机不需要任何编译过程,就可以直接执行这些指令。当然,这个时期的计算机应用非常狭窄,使用者需要把需求不断简化和抽象过后,才能被应用在计算机上。而且,这些需求主要集中在一些数理研究方面。
 
l         中期
随着计算机的普及,软件的应用也逐步溶入到人类的生产应用中,软件体系逐渐完善,形成了其独有的一门学科。这时候,主流的软件的开发和应用都建立在操作系统之上:开发者使用操作系统提供的功能接口( API )以及语言(如 C/C++ Pascal 语言等)的逻辑表述进行开发,使用者通过操作系统提供的人性化界面(比如图形化、鼠标、触摸屏等)操作软件。这时候,随着开发和使用门槛的降低,开发者和使用者也分离开来,开发者在数量上也形成了一种叫做程序员的职业。
5
         如图 5 所示,这个时期的计算机硬件和操作系统进行了紧密的结合,这种结合而且是可扩充的。操作系统就像计算机硬件的代理人,我们只要掌握操作系统就能够控制计算机,而不再需要熟悉底层的硬件体系结构。开发人员可以通过各种人性化而且高效的编程语言(如 C/C++ Pascal 等语言)来表述更复杂的应用,这些表述通过编译器就可以转换为底层的执行代码。这个时期的计算机应用对使用者来说,主要变化在于:计算机普及了,可以应用在很多方面,而且可以进行很多复杂的应用。
 
l         现在
         随着互联网的应用,以及分布式技术的发展,软件全面的应用到了人类生产的方方面面。软件的技术五花八门,软件的开发者本身也被迫进行了不同的分工细化,如嵌入式程序员、数据库程序员、 Web 程序员等。同时,整个世界也出现了形形色色的计算机使用者,比如职业游戏玩家,职业网络写手,网站策划等职业。计算机的应用已经成为人类从事生产的基本技能。
6
         如图 6 所是,和以往不同的是,现在的软件应用强调的是分布式,而不是以往的单机。分布式,就是很多计算机通过网络连接协同工作。开发者不再需要熟知操作系统体系,但需要熟悉分布式应用体系,如 J2EE 架构、 .NET 架构等,以及要知道如何生产一些基本功能组件,然后把这些组件通过框架组合成一个分布式应用。对于使用者,他们感到的变化就是:原来单机上的复杂应用,逐渐向网络上转移,可以和其他很多使用者共同协调的使用软件。
 
第二节两个问题
         从以上的三个阶段的总结,我们可以看到以下两个发展中的严重问题:
 
l         软件执行所基于的层次越来越多
发展到第三个阶段,如图 6 所示,一个企业应用系统竟然有 5~6 层。层次的增多,除了是为了应对应用范围扩大,还为了开发者的便利,开发者在理想的分工细化下,当然乐于见到这种情况,但是现实是:一方面开发者需要学习更多的知识,而且新旧知识的更替越来越快,开发者学习的压力越来越大;另一方面,层次越来越多,而每个开发者却都只能控制 1~2 层的开发,致使整个系统的可控性变差,如果出现问题,往往很难知道出现在那一层。
对使用者而言,当然乐于见到软件可以辅佐越来越多的生产环节,但他们却不知道自己身在高危处。一方面,由于没有 100% 完美的软件,所以层次越多,系统越复杂,可控性就越差,只要一层出现问题,那么整个系统都会出现问题,而且层次越多,出现的问题就越大。使用者如同站在摩天大楼的顶端,然而“高处不胜寒”,摩天大楼随时都面临着飞机撞击等因素的致命威胁。也难怪很多软件厂商吹嘘的 ERP 如何有用,然而在实际的企业应用中,却鲜有成功,当然,失败还有其他很多因素造成。
7
怎么会这样?哪里出现问题了?
 
l         应用的范围越来越广
作为一个开发人员,也许你留神到身边出现了的越来越多的文档,去看看 ISO IEEE IETF 等这些专业人士的协会吧,你会看到无数的协议和规范文档,而且它们还在不断增加和升级。如果你会认为这些协议和规范已经包括了、,或者至少包括了大部分的计算机应用,那么你就大错特错了,这些文档其实只归纳了所有计算机应用中被挖掘的少量的可以共享的部分,还有大部分应用都处在私有化开发的状态。也许你认为 J2EE 是个不错的应用框架,但是对于要求高效率的电信级通讯系统来说,它并不适用,当然,如果将来得服务器都使用的是 Java 字节码的 CPU 那就另当别论了;也许你认为现在中间件体系的通信机制逐渐统一到 HTTP/SOAP ,可以实现异构的中间件体系间的无逢连接,看上去很好,但是你能期望繁琐而又低效 HTTP/SOAP ,能够应用在后 PC 时代的击用电器相互之间的通信上吗?……看来好像那些协会总结了很多协议和规范,并且解决了很多问题,但是,我们面对越来越复杂的应用,实现起来却愈加力不从心。我不否认这些协会的功劳,事实上,他们对计算机产业有很大的积极作用。
而且,后 PC 时代已经到来,机顶盒、 xBox 、各种信息化家电等等,难道我们还希望这些东西还像 PC 一样开发、一样使用?
怎么会这样?又是哪里出现问题了?
 
第三节一个本质
         石器时代的石头工具落后于铁器时代的铁制工具,为什么?无非是铁更加耐用、更加适合进一步加、更加……深入一步,就是在实际使用中,铁的品质要强于石头。普通人和刘翔同时在110米跨栏起跑线出发,为什么刘翔先到达终点?因为刘翔的身体素质好于普通人。从这两个例子来看,上面那两个问题就不奇怪了,答案就是:我们现在主流软件体系的本质,在我们现在的生产发展过程中,暴露出了越来越多的缺点,在它变成人狼前,我们需要有更先进本质的革新软件体系。
 
我们现在主流软件体系的本质是什么呢?其实无非就是固化的二进制块。一旦开发者完成软件的开发后,这个软件就作为拥有固定功能的二进制块,使用者在这些固定功能范围内使用这个二进制块。随着软件复杂的加大以及开发的简便,这个二进制块在横向被分布在越来越多的计算机上;在纵向被分成越来越多的层次;在体积上变得越来越庞大;在使用上变得越来越复杂……。这种本质的软件体系,在发展到一定阶段后,就会产生量变到质变的哲学变化,也就会从银弹变成人狼。
银弹到人狼的变化,现在正在发生。越来越多的层次、越来越多的模块、越来越复杂的组合机制……毫不知情的软件使用者在那些为了商业利益而吹嘘的软件公司引导下,面临着越来越大的风险,这难道不像蒙着眼睛的人走在钢丝上吗?
8
 
第六章 柳暗花明
         环游世界也许是您的向往,但是您不得不频繁的更换交通工具,去完成旅行,这是个麻烦。好的,现在我告诉你,有这样一个交通工具:当你面对着不限速的高速公路时,它能变成高性能的跑车;当你面对的是广阔的海洋,它又能大马力的游艇;也许你正在经过一个战乱的地方,它为了保护你的安全,会变成装甲车;也许你正在交通拥堵的路上,它为了节省你的时间,会变成一个飞行器……毫无疑问,这个万能的交通工具,它在哪里?哈哈,在我的脑子里。这当然不是在吊你们的胃口,我想说的是,很多困难的东西,都可以通过我们的想象力去解决,不过实现起来却是十分的困难。
         软件和硬件像是两个狼狈为奸的骗子:软件骗我们发展需要不断更好的硬件,硬件发展又骗我们开发了更庞大、更复杂的软件。不过,结果是好的,我们的生产力不断的得到发展。每当感觉到软件技术的穷途末路的时候,其实就是软件技术在正告我们:技术需要革新了! 而且,“山穷水尽疑无路,柳暗花明又一村”,我们的智慧没有绝路。
 
         我们从图 10 可以看到,我们的软件发展已经走过了人类历史相近的 5 个过程,软件的发展的 5 个过程可以说是在我们无意识下参照了人类历史走过的 5 个过程。然而,软件的发展却快得多,软件发展的 50 年就走过了人类发展 50000 多年的历史。中间件以后会是什么技术呢?很明显,软件发展的阶段和人类发展的阶段在同一起跑线,似乎无可参照了。
 
9
 
         我们的智慧在传统受到的最大限制,其实就是我们人类的想象力,一般来说,只要我们的想象力可以达到,我们的软件就可以实现。所以,在软件接下去的发展中,我们更多的应该是通过自己的想象力,而不是参照人类社会的发展来解决问题。我们为什么不能产生软件中的万能交通工具呢?
 
         前面我说,发展到现在的软件体系的本质是固化的二进制块,其实也暗示了:我们的技术革新需要从本质去改变,改变作为固化的二进制块的本质。其实软件体系之所以是固化的二进制块,主要还在于我们潜意识中参照了人类制造工具的特点,人类制造的任何工具,从远古的简单石器到现在的复杂机器人,其实都是固化的功能块:一旦被制造出来,就拥有了固定的功能。很多人想象过魔球、万能球之类的东西(这些东西功能不固定,可以根据咒语在一定范围内变成任何东西),这些东西很难实现,绝大多数人也不会相信这些东西会在现实中存在。但是软件和我们实物工具不一样,它可以实现这些东西。如果让我说出我让软件走出绝路的方法,那就是让软件改变固化的二进制块的本质,变成活化的二进制块
软件的革新技术,应该拥有更加优秀的本质。一方面,整个软件的执行应该拥有简单而且高效的结构,比如 2~3 层结构就不错;另一方面,应该给软件开发带来新的活力,可以使人类同计算机的交流方式变得多种多样。
因此,这个软件的革新技术,应该是整个软件领域内一个不同于固化二进制块,用有活化特性的基础性新技术。在应用上,它应该拥有 2~3 层结构、执行效率高、可维护性高、用户使用成本低等特点;在开发上,它应该提供很好的扩充性,可以支持各种个性化的开发方式,不仅提高的开发的效率,而且可以使普通的计算机使用者也能开发软件。
如果 PC 的普及结果是“让每个人桌面上都拥有电脑,让每个人都会使用电脑”,那么这个革新技术所带来的结果就应该是:“让每个人都能开发电脑”。
10
 
         这当然不是真的结束,只是这篇文章的结束。
我在写这篇文章的时候,其实自己已经有了一项软件革新技术比较成熟的新思路,就是上面所说的“活化”,而且进行了初步的实现,换句话说,就使我已经初步实现了软件领域的万能交通工具。关于这项技术,我将会在其他专门的文章有详细描述。如果有好奇心强的同行或者有远见的投资者对此感兴趣,联系我,我随时可以给你们演示,十分期待与你们的交流与合作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值