Thinking In C Zuo Zhebruce Eckel
Bruce Eckel,软件开发大会C++与Java组主席,并被称为“这个行业的明星”。 (图)Bruce EckelBruce Eckel
Bruce Eckel从1986年至今,已经发表了超过150篇计算机技术文章,出版了6本书(其中4本是关于C++的),并且在全世界做了数百次演讲。他是《Thinking in Java》、《Thinking in C++》、《C++ Inside & Out》《Using C++》和《Thinking in Patterns》的作者,同时还是《Black Belt C++》文集的编辑。他的《Thinking in C++》一本书在1995年被评为“最佳软件开发图书”,《Thinking in Java》被评为1999年Java World“最爱读者欢迎图书”,并且赢得了编辑首选图书奖。 个人简介
Bruce Eckel (born July 8, 1957) is the author of numerous books and articles about computer programming. He also gives frequent lectures and seminars for computer programmers. His best known works are Thinking in Java and Thinking in C++, aimed at programmers wanting to learn the Java or C++ programming languages, particularly those with little experience of object-oriented programming. Mr. Eckel was a founding member of the ANSI/ISO C++ standard committee. Eckel has since made both the forementioned books available for all to download freely.[1] However, his most recent book - the 4th edition of Thinking in Java - is no longer available in a free electronic form.
Some of Eckel's recent titles:
Thinking in Java, 4th Edition, Bruce Eckel, Prentice-Hall PTR, February 10, 2006. ISBN 0-13-187248-6 Thinking in C++, Vol. 2: Practical Programming, 2nd Edition, Bruce Eckel and Chuck Allison, Prentice-Hall PTR, November 1, 2003. ISBN 0-13-035313-2 目录
* • Bruce Eckel,功勋卓著的机会主义分子
* • Bruce Eckel谈Python、Java、Flex及RIA
* • Bruce Eckel:PHP的魅力和不足
* • 参考文献
Bruce Eckel,功勋卓著的机会主义分子 编辑本段回目录
Bruce Eckel原本是一位普通的汇编程序员。不知道是什么因缘际会,他转行去写计算机技术图书,却在此大红大紫。 (图)Bruce EckelBruce Eckel
他成功的秘诀不外乎两点:超人的表达能力和捕捉机会的能力。他最早的一本书是1990年代初期的《C++ Inside & Out》,随后,在1995年他写出了改变自己命运的《Thinking in C++》。
如果说这本书充分表现了他作为优秀技术作家的一面,那么随后他写作《Thinking in Java》并因此步入顶级技术作家行列,则体现了他作为优秀的机会主义分子善于捕捉机会的另一面。写作中擅长举浅显直接的小例子来说明问题,语言生动,娓娓道来,特别适合于缺乏实践经验的初学者。
因此《Thinking in Java》俨然成为天字第一号的Java教科书,对Java的普及与发展发挥着不可忽略的作用。不过公允地说,Bruce Eckel的书欠深刻。
比如在“Thinking in…”系列中对设计模式的解说就有失大师水准。这一方面是因为书的定位非常清晰,另一方面也是因为Bruce太过分心赶潮流,未能深入之故。TIJ之后,他预言Python将火,就匆匆跑去写了半本《Thinking in Python》。
后来Python并未如期而旺,于是他也就把书稿撂在那里不过问了,机会主义的一面暴露无遗。我们也可以善意的猜测一下,他的下一个投机对象会是什么呢?Ruby?.NET?MDA?总之,是什么我都不奇怪。 Bruce Eckel谈Python、Java、Flex及RIA编辑本段回目录
作者 Jon Rose 译者 张龙 发布于 2009年5月9日 上午11时17分 (图)Bruce EckelBruce Eckel
在本文中InfoQ有幸采访到了Bruce Eckel以了解其对RIA前景的看法及目前所从事的工作,因为他最近与人合著了一本书,名为First Steps in Flex。
首先InfoQ问到Bruce最近在忙什么呢:
前不久在滑雪的时候我把腿摔坏了,因此过去的9周我一直在恢复。此前一直都没受过什么伤,这也算是一个新体验吧,我做了外科手术、全身麻醉以及各种恢复治疗 ——太多新体验了。尤其是全身麻醉,我用了好几周的时间才从中恢复过来,真的。我就呆在那,无所事事,脑子的反应速度也变慢了,在最后恢复过来时,我才真切的感觉到意识的存在。在无所事事的那段时间内,你真的会想去做些事情。
此前我就问过自己“我现在想要做些什么呢”,在腿摔坏后这种感觉尤为明显。继续从事着之前所做的事情已经无法满足我的心愿了——我想干点有意思的事情。
我开始编写关于Python书籍的一个主要原因就是我发现自己最喜欢做的还是咨询工作,这个工作经常需要和很多公司打交道,而这些公司当中有一些已经决定采用Python了(我想肯定也有不少公司开始使用动态语言,但我的经验主要还是在Python上)。这个工作极具挑战性,每天我都感觉像是在前苏联一样 ——他们不会对我进行搜身检查,但也差不了多少,在我去浴室的时候总有人陪着我(因为腿受伤了)。但这些公司的技术经理还是坚持使用Python而不管我的兴趣所在(然而,现在我知道了负责Python提交的公司的作用和有决断力的个人对其的推动力之间的差别了)。
一般来说,愿意使用 Python进行开发的公司文化一定是很开放且享受这么做的。有些公司坚持使用某种语言的原因仅在于它能提供一些“直接(directing)”的特性(策略性不强的一些人称其为“束缚与铁律”特性),这种公司更多的是希望降低风险而不是进行挖掘或是不断试验。当然在很多情况下,降低风险是必要的,但我却觉得这么做不太爽。快速试验与边缘挖掘才是我的兴趣所在,在我的印象中,选择Python的公司更倾向于我的这种做法,我也很愿意与这样的公司合作。
也就是说我又回到了“过去为自己工作的那种状态”以便与那些公司进行合作。写写书,在各种会议上发表演讲。虽说这种工作方式不是我发明的,但到目前为止,我还没有找到其他更适合的方式。 (图)Bruce Eckel著作Bruce Eckel著作
当然了,我还一直在为Open Spaces events进行创作,同时这些创作也让人感到满意。在一场研讨会之后(整整一周我都在不停的说,同时大量的试验也让人精疲力竭,这么做的目的是为了让与会者都能步调一致的进行学习,你可能会觉得这有点傻),我简直是身心俱疲,短时间内绝不想再来一次了。但在Open Spaces event上的演讲结束后,我总是感到非常失望并且下周也不想再演讲了。我想知道如何才能实现双赢。这也是James Ward和我编写“First Steps in Flex”一书的原因之一,为了让我们的“Flex Jams”在市场上打开名号。
前几年我一直活跃在当地的剧院中。 Crested Butte里充满了众多富有才华的人们,我们也组建了一个活跃的theater group,要想让自己的作品在其中站住脚可不是那么容易的事情——目前我已经在5、6个剧目中一显身手了。上一个叫做“Into the Woods”,此前我可没演过音乐剧,但最后还是出演了“长发女王”。加上“灰姑娘”一剧,我们上演了最甜美的二重奏,这么说可能不太恰当,因为很多其他演员的工作要比我们更辛苦。我的伙伴王子刚刚从戏剧学校毕业,他学的是声学专业——他的母亲是伦敦歌剧院的首席女主角——因此要想赶上他对我来说可是个挑战。但这整个经历中最值得称道的地方是能与这么多认真且专业(虽然只是大家在业余时间打造出的产品)的人们一同工作实在是可遇不可求。这也让我对团队有了更深刻的认识,能成为卓越团队的一分子是件多么高兴的事啊。 (图)Bruce EckelBruce Eckel
随即我开始阅读大量关于软件团队和工作方式的书籍。这倒不是因为我觉得自己要成为团队经理了,而是因为理解团队对于一个咨询师来说是个重要的技能,这也是这么多年来我一直在不懈追求的东西。
剧院所做的一件事就是加上了当地作者所编写的10分钟长的剧本,我也这么做了好几次。我已经开始编写大型的剧本同时还参加了当地的一个writing group。过去的几年中我参加了各种小说讲习班,发现小说要比其他文学作品难写的多(可能这就是为什么每年只有5,000部小说出版但却有50,000 个散文书出版的原因所在吧)。
过去几年我参加了绘画讲习班, 所以现在也开始学习绘画了(我觉得参加好的讲习班是种习惯;从中能学到不少东西,但同时也希望这些经验能对自身改进起到帮助作用)。在我参加的上个讲习班中,老师总是强调“我们不是用刷子在画布上绘画 ,而仅仅是在平面上绘制一些标记而已”。我觉得这对我来说极大地降低了绘画的入门难度,不用担心画的正确与否。做就行了。我发现信手涂鸦要比循规蹈矩的画更好玩。不得不说的是我还没有掌握绘画的精髓,最大的问题在于我做事情有些太谨小慎微了,生怕将好的东西搞糟了。 (图)Bruce Eckel著作Bruce Eckel著作
最近的一件事就是我设计了Pycon 2009大会的T-shirt,上面的画是我画的(一个抽象的易经22卦,代表了“优雅与美丽“)。遗憾的是,因为我的腿伤无法参加今年的大会了,但有人告诉我,我画的画有些超现实主义。
我觉得这些经历对软件世界是非常有帮助的。多做试验,多多探索,而不是呆坐在那傻想着,这么做会对项目的进展起到非常大的帮助作用。 接下来,Bruce与我们一起分享了其最近发布的Flex新书:
”First Steps in Flex“是我与James Ward合著的,他可是个Adobe Flex布道者。我们想写点东西以便让程序员能够轻松上手Flex,因此这本书很小巧,也没几章。这么做可以帮助大家集中精力于关键的事务上;翻开它你会有这种感觉”这章可真短,搞定它没问题“。下一章也如此...整本书非常简练,为了达到这个目的我们需要将那些读者完全不需要了解的内容去掉并坚持其本质特性。通过这种方式,人们可以漫步在书中,同时感觉自己可以完成一些事情了,但他们却不会深陷于大量的信息中。这花费了我们大量的时间和精力将Flex的精华抽取出来,但对于结果我是非常满意的。 (图)Bruce Eckel著作Bruce Eckel著作
之后,InfoQ向Bruce问到他对当前的RIA前景有何高见:
我觉得最重要的事情就是RIA是个真实的东西,而不仅仅是Adobe制造出来的术语。人们已经接受了这样一个事实:HTML/CSS和一点点的 Javascript并不会对这么多的Web应用起到颠覆性的作用(当然了,尽管在很多情况下这是正确的处理方式)。用户对丰富及更具响应性Web应用的期望越来越高,而站点却无法提供这些体验,同时也无法对付Web那些古怪的问题,这时你就需要在一个高质量的平台上编程了。
我越来越感觉到我们所陷入的浏览器“标准”始终无法统一起来,也无法让我们信赖,甚至连可用性都没法保证。看看CSS吧,从概念上讲它很棒,但却无法让我们在浏览器上进行一致的编程。HTML本身更是乱的一团糟。并没有什么标准的方式来包含头(headers)和脚(footers)(是的,SSI可以做到这一点,但它总是依赖于特定的服务器配置,而我们却不能这么做),这样人们转向了PHP,接下来采取了我们称之为“比Perl要好的东西”,而这仅仅是由于它不会令让我们过早的陷入到麻烦当中(我使用过PHP,但仅仅是使用过而已)。 (图)Bruce EckelBruce Eckel
底线就是:我们需要在浏览器和RIA之间加上一个中间层;浏览器技术始终无法独挡一面。甚至连GWT这样的技术也仅仅是降低了平台依赖性问题而并不会消除该问题。与Ajax一样——我们仍需手工调整代码以便其能够工作在多个浏览器上。工作量虽然少了,但这毕竟不是我想做的事情。既然加上一个中间层就能完全消除这个问题,那为何还浪费公司的资源在这些问题上呢?
我是个Flex迷,因为所有平台都支持Flash player。Silverlight宣称支持Linux,但我不知道其支持力度如何。毕竟过去微软对于非Windows平台的支持并不尽如人意。Mac 平台上最新版的Office尚不能使用Windows系统上的宏,而宏对于我来说是非常重要的,这也导致了很多问题,不仅仅是我,其他人也一样。尽管微软有着这样那样的借口,但谁管你呢?你只能任人摆布。如果微软宣布不再支持Mac版的Silverlight,那他们肯定也会有借口。如果Linux对其的威胁变大时,他们也一定有理由说你无法在Linux上使用Silverlight了,谁管你?如果你过于依赖他的话,我只能说霉运离你不远了。 (图)Bruce Eckel著作Bruce Eckel著作
我注意到Netflix使用了Silverlight进行视频点播,不过到现在为止我还无法在Mac上的Firefox中使用该功能——可能过不久该功能就会出现,但如果不出现呢?Netflix会丧失大量用户,同时他们可能已经丧失一些Linux用户了。Adobe也是一家大公司,他们也可以变来变去,但他们却支持所有的平台,而微软却有一个操作系统要推销。Silverlight的设计很棒,他们从Flex上也汲取了不少精华。我觉得有竞争是好事,这样会刺激Adobe更加努力。但如果你问我更喜欢Flex还是Silverlight的话,我会说“放着好好的东西不用,为什么要冒险使用微软的东西呢?” 接下来,InfoQ问到对于用户界面来说,工业界不断转向客户端运行时是不是件好事呢:
绝对是件好事;我现在就在干这事呢。但我忘记说JavaFX了。在JavaPosse Roundup 09上,我们用dojo编写了少量代码,而Dick Wall用Flex(借助于James Ward的帮助)和JavaFX(借助于Tor Norbye的帮助,他就在JavaFX团队)实现了其“Flubber”应用。其实这些东西就是在我家完成的,不过由于刚刚做完手术,正在恢复中,我没法给出太多的细节。但给我留下深刻印象的是使用这两种语言可以实现同样的效果。我觉得用Flex实现更简单一些,但JavaFX的实现结果还是给我留下了深刻的印象。还有,JavaFX看起来很像是ActionScript,但却对语言增加了一些更灵活的改进,我觉得这会对ActionScript产生小小的冲击,好事一桩。 (图)Bruce EckelBruce Eckel
之后,InfoQ问到Flex要想取得成功,是否需要借助于Java的帮助:
我认为Flex-to-Java桥非常重要,但Sun却不对其提供支持,太差劲了。在这件事上,Adobe也好不到哪去。有一些开源的工具可以实现这一点,同时我认为还需要更多的商业公司来支持这些开源项目。即便他们不招人或是不完全支持,但看在钱的份上这么做也是有好处的。我觉得只要有人能从这些项目中赚到钱就会有很多公司开始支持他们了。能够简化该过程的任何事情都会让所有人受益无穷。 InfoQ又问到,除了Java以外还有哪些语言能与Flex搭配使用:
我所完成的大多数项目都是使用Python作为Flex后端的。有几种方法可以实现这一点,但Twisted程序库对Flex通信提供了直接的支持,同时还是异步的,很完美。
Ruby也支持与Flex的通信。我觉得动态语言是非常棒的后端,通过他们你可以做到最好——实现真正的快速开发,包括漂亮的UI与后端的业务逻辑。 最后,InfoQ问到Bruce最近是否还在从事着Java方面的工作:
偶尔做点设计上的咨询,仅此而已。
我感觉“Thinking in Java”到第四版也就差不多了——到现在为止我基本上已经重写了四次,到上次写完后我觉得应该差不多了。所以我不打算再写新版本,不过我还会以附录的方式对第四版提供支持,增加一些自从第四版之后新出的重要细节和语言特性。但我希望社区能为这本书作出贡献,因此我发布了该书的电子版。这么做能否号召起社区就是另一回事了——这也是我对待Python这本书的方式,或许到那时我能想出更好的办法来处理这些事。 Bruce Eckel:PHP的魅力和不足编辑本段回目录 (图)Bruce EckelBruce Eckel
编者按:在编程领域有不少堪称经典著作,其中包括《Thinking In C++》和《Thinking In Java》,它们的作者是著名的计算机科学作家Bruce Eckel。近日这个编程大师联系编程语言Java、Perl和Python,分析了老牌经典编程语言PHP的优缺点,下面让我们一睹为快。 (图)Bruce Eckel著作Bruce Eckel著作
计算机科学作家Bruce Eckel
PHP的魅力所在
提起老牌经典脚本语言PHP,我们不禁会联想到它的一个令人印象深刻的特点,即上手快,你无需对这个语言进行深入广泛的了解就可以使用它开始编程。在我们知道的语言中,没有几个语言能把这种特点体现的淋漓尽致。与之相对应的另一个极端是Java语言,即使你写一个简单的hello world程序也需要掌握不少Java知识,运行一个Web应用同样不那么简单。而这一切在PHP中是一件举手之劳的简单事情。
在编程能力方面,PHP只是比Perl表现好一点。Perl是一种古老的脚本语言。最初的Web应用大多是用Perl编写的,Perl很像C语言,使用非常灵活,对于文件操作和处理具有和C语言一样的方便快捷。
但是,由于Perl的灵活性和“过度”的冗余语法,也因此导致许多Perl程序的代码令人难以阅读和维护,记得在Web刚刚兴起的时候,当听到有人说将使用Perl编写大型应用的时候,我就知道他们面临的将是失败。
Perl的哲学思想是同一件事,总有不止一种方法来解决,结果造成了大量难读难懂的程序。对于规模较大的系统来说,Perl编写的维护成本相对更高,另外Perl对于CPU的消耗似乎较高,效率似乎有一些不足。 (图)Bruce EckelBruce Eckel
相比来说,PHP却已经创建了一些更大型的应用,例如大名鼎鼎的开源CMS系统Drupal。我的一个朋友Nancy Nicolaisen表示她希望搭建一个旅游网站,我建议她看一下Drupal。她听取了我的建议并最终选择了它,只进行了轻微的改动就使她的网站上线了,用她的话来说,这个用户社区吸引她的地方是它的强大和易用。
而且PHP允许初学者可以直接针对他们感兴趣的功能进行编程,而无需花费大量的时间来学习编程理论和实践。你只需要编写代码并通过网页来查看效果就可以了。
PHP的不足之处
但是这同时也是这个语言的问题所在。你经常会发现很多使用PHP编写出的代码错误百出,但这些代码往往却被人们互相拷贝,却没有人去认真分析研究它们。这些代码通常是由那些习惯互相借鉴拷贝代码的程序员所编写,这些代码质量低劣的原因是这些程序员通常不习惯问为什么,不喜欢弄清楚原理,只管拿来就用。 (图)Bruce EckelBruce Eckel
在我第一次想深入了解这个语言的时候,我希望看到一些关于文件锁定的示例,结果尽管看到了非常多,但却没有一个是正确的。正如事实已经证明的那样,PHP主要是与数据库搭配使用,数据库来处理所有一致性问题,因此多数人只关心从数据库中存取数据,而不用再去必须考虑底层的问题。但是这个语言不仅仅可以处理与数据库交互的上层问题,同样也可以实现与文件系统之间交互的底层问题。我的感觉是,在PHP社区中多数人只关心如何得到一个好的结果,而没有多少人关心它的真正实现原理,因此才出现了这种错误的倾向。
后来推出了PHP 5,与以前版本相比有了不小改进,但是它主要是增加了一些从C++和Java中提取出来的功能,但是人们只是到处找来一些新功能,但却没有仔细的分析每一个增加的功能,及其对这个语言的影响。
相比之下,根据我对Python语言多年的观察,在过去10多年中它增加的每一个新功能都经过反复的分析和推敲。时间将会证明谁对谁错,或者PHP社区将会知道如何来处理这些功能,但是我对此深表怀疑。
在最近一段时间里,我一直使用PHP来实现我新建立的站点。之所以选择它的关键是,我只用它来进行一些简单的开发。举个例子来说,PHP让你可以解决非常弱智的HTML问题,例如你不能在HTML中包含文件的问题。PHP可以轻松做到这一点,而且可以让我轻松的在整个站点之间实现我的设计,而且有时候我们只需要实现一些小东西并将其嵌入在页面中,PHP实现起这些东西来非常简单。
但是,我发现随着要完成的任务复杂度的提高,更好的选择是选择使用Python,因此PHP更适于处理简单的任务。
Python 的内核非常精简,功能非常丰富,它提供了一个良好的程序构建基础。综合了C和C++二者的优点,只要采用合适的结构和方式,便可对Python程序进行无限的扩充。当然,它也有自己的不足之处,例如有的朋友抱怨Python对规则表达式的支持不如PHP中强大。
From: http://wiki.chinalabs.com/index.php?doc-view-132009