写在前面的话
我的兄弟Todd今朝正在举办从硬件到编程规模的事情转变。我曾提醒他下一次大革命的重点将是遗传工程。
我们的微生物技能将能制造食品、燃油和塑料;它们都是洁净的,不会造成污染,并且能使人类进一步透视物理世界的机密。我认为对比之下电脑的进步会显得微不敷道。
但随后,我又意识到本身正在犯一些科幻作家常犯的错误:在技能中迷失了(这种工作在科幻小说里常有产生)!假如是一名有履历的作家,就知道绝对不能就事论事,必需以工钱中心。遗传对我们的生命有很是大的影响,但不能十分确定它能抹淡计较机革命——或至少信息革命——的影响。信息涉及人彼此间的相同:简直,汽车和轮子的发现都很是重要,但它们最终亦如此罢了。真正重要的照旧我们与世界的干系,而个中最要害的就是通信。
这本书或者能说明一些问题。很多人认为我有点儿斗胆可能稍微有些傲慢,居然把所有产业都摆到了Web上。“这样做尚有谁来买它呢?”他们问。如果我是一个十分保守的人,那么绝对不这样干。但我确实不想再沿本来的老路再写一本计较机参考书了。我不知道最终会产生什么工作,但简直认为这是我对一本书作出的最明智的一个抉择。
至少有一件事是可以必定的,人们开始向我发送纠错反馈。这是一个令人震惊的体验,因为读者会看到书中的每一个角落,并揪出那些藏匿得很深的技能及语法错误。这样一来,和其他以传统方法刊行的书差异,我就能实时纠正已知的所有类此外错误,而不是让它们最终印成铅字,冠冕堂皇地呈此刻列位的眼前。俗话说,“政府者迷,傍观者清”。人们对书中的错误长短常敏感的,往往绝不客套地指出:“我想这样说是错误的,我的观点是……”。在我仔细研究后,往往发明本身确实有不妥之处,而这是当初写作时基础没有意识到的(查抄几多遍也不可)。我意识到这是群体气力的一个可喜的反应,它使这本书显得简直与众差异。
但我随之又听到了另一个声音:“好吧,你在那儿放的电子版简直很有创意,但我想要的是从真正的出书社哪里印刷的一个版本!”事实上,我作出了很多尽力,让它用普通打印机机就能获得很好的阅读结果,但仍然不象真正印刷的书那样正规。很多人不想在屏幕上看完整本书,也不喜欢拿着一叠纸阅读。无论打印名目有何等好,这些人喜欢是仍然是真正的“书”(激光打印机的墨盒也太贵了一点)。此刻看来,计较机的革命仍未使出书界完全走出传统的模式。可是,有一个学生向我推荐了将来出书的一种模式:书籍将首先在互联网上出书,然后只有在绝对须要的前提下,才会印刷到纸张上。今朝,为数浩瀚的书籍销售都不十分抱负,很多出书社都在赔本。但如回收这种方法出书,就显得机动得多,也更容易担保获利。
这本书也从另一个角度也给了我深刻的启迪。我刚开始的时候觉得Java“只是另一种措施设计语言”。这个想法在很多环境下都是创立的。但跟着时间的推移,我对它的进修也愈加深入,开始意识到它的根基宗旨与我见过的其他所有语言都有所区别。
措施设计与对巨大性的操控有很大的干系:对一个筹备办理的问题,它的庞洪水平取决用于办理它的呆板的庞洪水平。正是由于这一巨大性的存在,我们的措施设计项目频频失败。对付我以前打仗过的所有编程语言,它们都没能跳过这一框框,由此抉择了它们的主要设计方针就是降服措施开拓与维护中的巨大性。虽然,很多语言在设计时就已思量到了巨大性的问题。但从另一角度看,实际设计时必定会有另一些问题表现出来,需把它们思量到这个巨大性的问题里。不行制止地,其他那些问题最后会酿成最让措施员头痛的。譬喻,C++必需同C保持向后兼容(使C措施员能尽快地适应新情况),同时又要担保编程的效率。C++在这两个方面都设计得很好,为其赢得了不少的声誉。但它们同时也袒暴露了特另外巨大性,阻碍了某些项目标乐成实现(虽然,你可以责备措施员和打点层,但如果一种语言能通过捕捉你的错误而提供辅佐,它为什么不那样做呢?)。作为另一个例子,Visual Basic(VB)同当初的BASIC有关的细密的接洽。而BASIC并没有规划设计成一种能全面办理问题的语言,所以堆加到VB身上的所有扩展都造成了令人头痛和难于打点和维护的语法。另一方面,C++、VB和其他如Smalltalk之类的语言均在巨大性的问题上下了一番工夫。由此获得的功效即是,它们在办理特定范例的问题时长短常乐成的。
在领略到Java最终的方针是减轻措施员的承担时,我才真正感觉到了震憾,尽量它的潜台词好象是说:“除了缩短时间和减小发生结实代码的难度以外,我们不体贴其他任何工作。”在今朝这个低级阶段,到达谁人方针的效果即是代码不能出格快地运行(尽量有很多担保都说Java终究有一天会运行得何等快),但它确实将开拓时间缩短到令人惊奇的境地——险些只有建设一个等效C++措施一半甚至更短的时间。这段节减下来的时间可以发生更大的效益,但Java并不只止于此。它甚至更上一层楼,将重要性越来越明明的一切巨大任务都封装在内,好比网络措施和多线程处理惩罚等等。Java的各类语言特性和库在任何时候都能使那些任务垂手可得完成。并且最后,它办理了一些真正有些难度的巨大问题:跨平台措施、动态代码换取以及安详掩护等等。换在从前,个中任何每一个都能使你头大如斗。所以不管我们见到了什么机能问题,Java的担保仍然长短常有效的:它使措施员显著提高了措施设计的效率!
#p#分页标题#e#
在我看来,编程效率晋升后影响最大的就是Web。网络措施设计以前很是坚苦,而Java使这个问题迎刃而解(并且Java也在不绝地进步,使办理这类问题变得越来越容易)。网络措施的设计要求我们彼此间更有效率地相同,并且至少要比电话通信来得自制(仅仅电子翰札就为很多公司带来了长处)。跟着我们网上通信越来越频繁,令人震惊的工作会逐步产生,并且它们令人受惊的水平毫不亚于当初家产革命给人带来的震憾。
在各个方面:建设措施;按打算体例措施;结构用户界面,使措施能与用户相同;在差异范例的呆板上运行措施;以及利便地编写措施,使其能通过因特网通信——Java提高了人与人之间的“通信带宽”。并且我认为通信革命的功效大概并不光单是数量复杂的比特处处传来传去那么简朴。我们认为认清真正的革命产生在那边,因为人和人之间的交换变得更利便了——个别与个别之间,个别与组之间,组与组之间,甚至在星球之间。有人预言下一次大革命的产生就是由于足够多的人和足够多的彼此毗连造成的,而这种革命是以整个世界为基本产生的。Java大概是、也大概不是促成那次革命的直接因素,但我在这里至少感受本身在做一些有意义的事情——实验教会各人一种重要的语言!