登录 注册
首页
去他的算法内功基础,对于程序员,实用主义才是王道
2010-09-25 19:08:38 来自: figure9
Coders at Work的评论 5
提示: 有关键情节透露
Coders at work 书评
很早就在Amazon上看到过这本有些技术八卦性质的书,不过当时更期待的是O'Reilly的Masterminds of programming(中文译名编程之魂),毕竟我对程序设计语言更感兴趣一些,然而被其糟糕透顶的翻译(参照我之前对此书中文译版的评论)折磨了一顿之后,我是再也不会光顾此类书籍的中文版本了,既浪费钱也浪费精力。
不冲别的,就冲这本书后面的那三个Turing Award(Fran Allen, Ken Thompson, Don Knuth),每个自认为是程序员或者对计算机感兴趣的人就应该阅读一下此书,这三位神级的人物,基本奠定了计算机科学几乎所有方向上的基础:编译器,操作系统,程序设计语言,算法,数据结构。
而至于其它的interviewee,不是One-man army型的神级程序员(Jamie Zawinski,Brad Fitzpatrick,Joshua Bloch),就是某个编程语言的创始人(Guy Steele,Joe Armstrong,Brendan Eich)。至于interviewer自己,也是一个资深程序员外加Jolt Award图书的作者。这些都成为了这本书质量的保证。
在看了这本书之后,发现它并不像我当初想象的那样是一本技术人士的八卦图书。书里面讨论的更多的是编程的习惯,对当今程序设计方法或是程序设计语言的讨论,以及这些编程大牛在成为大牛的过程中的各种经历。很多东西都值得程序员或者是有志学习计算机科学的人借鉴。
书中给我印象最深的是第一个人物Jamie Zawinski:典型的实用主义者,老牌黑客,XEmacs和Netscape Navigator的创始人之一。他鄙视C++,认为设计模式就是一坨Crap(reverse,inverse,double-back-flip pattern,you mean a loop?),认为质量第二,进度第一;大学肄业只有高中文化程度,却被Peter Novig称为他所见过的最有天赋的程序员之一;不喜欢去修改别人的代码,认为自己推翻了重来更方便;他并没有阅读过很多计算机图书,也没有多么深厚的数学或是算法基础,绝大多数的计算机知识是自学或者是在项目中学到的,却一点也没有妨碍他成为世界上最顶尖的程序员之一。
所以那些动则就扯什么算法啊基础啊内功啊所谓的大牛们,请闭上你的嘴,条条大道通罗马。算法并不是编程的前提条件,数学也不会阻碍一个人成为优秀的程序员。至少在我看来,什么算法基础内功都是唬人的玩意,多编点能用的实用的程序才是王道,当然如果你是一个pure theroist的话就当我什么都没说好了。
比较有意思的是,书中的人物对C++的评价都是负面的,无论是自学成才的Jamie Zawinski,还是科班出身的Joe Armstrong,甚至是和Bjarne在同一个实验室工作的Ken Thompson,都认为C++是一门差劲的语言。Ken的一句话可以反映出这些大牛对C++的普遍态度:“It certaily has its good points. But by and large I think it's a bad language. It does a lot of things half well and it's just a garbage heap of ideas that are mutually exclusive.”也难怪有传言说Ken和Bjarne一直不和,就拿Bjarne的那几部大作来说,无论是C++程序设计语言,还是C++的设计与演化里面,Bjarne感谢了Ritchie感谢了Kernighan感谢了McIllory,却从来没有提到过Ken。
书里也有一些有趣的信息:身为C创始人之一的Ken因为没有通过Google的C语言能力测试而没有提交代码的权限(原因是Ken认为自己根本没有必要参加这种测试);Erlang的创始人Joe本身是一个学物理的phd,因为实验室没有经费生活无法维持才跑到Ediburgh的Machine Intelligence Lab学习CS。
我并没有买这本书的中文版的打算,根据这几年人邮出版的图书的定价,保守估计这本书的价格不会低于75元,而在Amazon上这本书不到20美刀就可以搞定。
此外,有了先前电子社那本编程之魂的教训,再加上这本书貌似是由多人翻译的,因而我对这本书的翻译没有任何期待。
你认为这篇评论: 有用 21 没用 4
19人推荐 推荐
2010-09-26 10:08:43 晨星
偶也被译文“咬”过,十年过去了,现在对所有中译本还有种怕怕的感觉。
2010-09-26 10:37:54 刘江
图灵的翻译是有保证的,因为对质量重视。多人翻译是因为涉及太多方面的知识,每一块选择背景合适的译者。翻译过程中,我们吸取了开源的方法,有多人讨论、审读、修改。也欢迎你参加:http://groups.google.com/group/turingbook
PS:说“Fran Allen, Ken Thompson, Don Knuth基本奠定了计算机科学几乎所有方向上的基础”太偏颇了。计算机科学是一部英雄辈出的史诗啊。
2010-09-26 10:48:18 alanguo
程序员都喜欢这么偏激的说话,正常,我指的是楼主
2010-09-26 11:26:55 大又鸟又鸟
我也讨厌C++,被折磨够了
2010-09-26 11:31:49 一生何求
程序 = 设计 + 算法。。。
2010-09-26 12:25:55 要不要这么绝望
不得不说LZ这题目取得有标题党嫌疑
2010-09-26 12:44:50 春晓的晓
15美刀怎么也得100元吧,100>75吧。。。
2010-09-26 12:52:04 figure9
@刘江
quote<PS:说“Fran Allen, Ken Thompson, Don Knuth基本奠定了计算机科学几乎所有方向上的基础”太偏颇了。计算机科学是一部英雄辈出的史诗啊。>
多谢指正
单看这句话的话确实有问题,所以我在后面把他们的方向写了下。
个人认为,以Fran对编译器的贡献,Ken对操作系统、程序设计语言的贡献,Knuth对算法,数据结构的贡献,说他们奠定了这些领域的基础并不为过。
对您说的那个group很感兴趣,以后会多关注的,Thanks。
2010-09-26 12:59:20 figure9
@晨星
quote<偶也被译文“咬”过,十年过去了,现在对所有中译本还有种怕怕的感觉。>
看有些中文译版的图书,需要把译文按字面意思翻译成原文,再把原文按自己理解翻译回来。
偶尔这么折腾一下还可以,但如果每页都有那么几处几十处需要这么整就太崩溃了。
所以有时看原版书会比看翻译版书的速度快,毕竟少了那个逆向翻译的过程。
2010-09-26 16:47:32 OxFAN
不知道高爷爷看了此书会作何感想..
2010-09-26 18:49:27 AKW
我觉得是算法好不一定会成为大牛,但是大牛一定数学好。不管是自学成才还是科班出身,真走到了那一步,应用数学绝对都是一流的
2010-09-26 20:13:11 figure9
@OxFAN
这本书里访问的最后一位人物就是Knuth,有时间的话可以阅读下
2010-09-26 20:31:32 figure9
@AKW
很难说数学对编程的作用到底有多大(当然某些领域里确实需要大量的数学知识,比如计算机图形),没有什么证据能表明良好的数学基础和优秀的编程能力这两者是相关的
很多所谓的大牛都推荐Knuth的TAOCP,说是把那本书看了就天下无敌之类云云,然而这Coders at work书中的大牛们,除了Knuth本人,没有一个人把TAOCP看完过,他们认为比起清晰的表达能力和对问题的理解能力,数学并不是那么重要。援引Armstrong的话来说:“If you're not good at English you would never be a good programmer”
2010-09-26 20:47:05 AKW
但是你尽管放心Armstrong的应用数学一定是程序员中的一流水准,他只是认为英语是成为优秀程序员的充分条件,我的意思是数学水平好是优秀程序员的必要条件。
我相信那帮牛人虽然没看完TAOCP,但是他们的算法素养一定是一流的,不需要再看了
2010-09-26 21:07:41 OxFAN
那得看一下..
ls的说法偶比较赞同..
2010-10-08 16:03:24 adora
嗯。。比较赞同@AKW
2010-10-10 01:02:51 leo
我感觉算法是在需要的时候才产生的,而不是用算法去解决所遇到的问题。细节问题,算法也解决不了,不信就看看算法导论,哪一个算法能够直接运行起来?现在的算法就是历史实践的总结。
2010-10-14 15:41:53 Liber
越看越迷茫。85后的程序员生错时代了吗?````
2010-10-20 15:31:21 天井
不能用个例能证明标题啊。。。作为一个普通程序员,不熟悉数据结构,算法连份好工作都难找。计算机科学越深入研究会越发现数学的重要性,不然大部分资质普通的人只能沦为码农
我感觉算法是在需要的时候才产生的,而不是用算法去解决所遇到的问题。细节问题,算法也解决不了,不信就看看算法导论,哪一个算法能够直接运行起来?现在的算法就是历史实践的总结。
2010-11-13 12:46:15 figure9
@rosemarychen
恩,非常赞同。
我这篇文章的意思就是反对刻意的去学习算法。
基础的算法在实践的同时自然就会了,高级的算法可以在有需要的时候深入研究。
2010-11-23 23:19:49 知北游
程序=指令+数据结构
2010-11-28 18:25:32 guancheng
我要站出来批评一下这篇评论的标题:“去他的算法内功基础,对于程序员,实用主义才是王道”
这个观点绝对是错误的。表面上这句话好像抓住了“实用主义”的大旗,但是楼主却借此抨击算法等基本功的重要性,太误人子弟了。就拿Google Fellow Jeff Dean来说,他绝对算得上是实用主义的大师了吧?可是如果你去看看他关于Google整个系统架构演变过程的讲座,你就会发现把Google的那些诸如MapReduce、GFS之类的看家法宝化繁为简之后都可以还原成最基本的算法、数据结构之类的问题!Google整个架构的发展也是根据需求的变化而产生的,MapReduce之类的不就是在遇到需要解决大规模并行编程这个问题时产生的实用的解决方案吗?没有扎实的基本功它能被设计出来么?哪一个大师没有扎实的基本功?哪怕是你说的Jamie Zawinski,如果他算法基本功没有十分纯熟他能被称为大师么?别以为他标榜实用他就没有扎实的基本功了。
我的观点是,想真正成为杰出的程序员,没有扎实的基本功是绝对不可能的,因为你会发现当你需要解决一个没有现成答案的问题时,你的基本功就是最可信赖的武器。所以,如果你不想只做一个码农,好好学好算法打好基本功是绝对值得的!当然,如果你只像做一个只能靠google搜索答案过活的程序员,就当我这话没说。
2010-11-28 20:42:01 AKW
首先ls说得不错。
==========================
2010-11-13 12:46:15 figure9
我这篇文章的意思就是反对刻意的去学习算法。
基础的算法在实践的同时自然就会了,高级的算法可以在有需要的时候深入研究。
====================================================
平时不注意学习算法,加强基本功,没有一定的数学基础等遇到问题的时候再去刻意钻研所谓的“高级算法”是根本来不及的,甚至是不可能的。
2010-11-28 23:36:44 figure9
回LS的两位:
你们所编写的实用程序中都能用到什么算法呢?除非你是算法工作者,否则9成以上的"算法"都是数组+排序+查找吧?用这些东西的时候你会自己写还是直接调类库?你能保证写出一个准确的bsearch或是qsort出来?
我的意思是在编写程序中学习算法,我也不否认算法的重要性,我只是认为没有必要把算法作为编程序的先行条件。
你们一直说要学习算法,加强基本功,好吧,那你们是通过什么途径来学习算法,加强基本功的呢?
2010-11-29 00:34:40 guancheng
诚然,80%的程序员只需要调用现成的算法库过活。当你面对的问题已经被前人通过算法库的形式解决了时你自然会觉得不用自己写qsort,不用自己写红黑树。但是,对于有志成为那前20%顶尖程序员的人来说,你会说算法、数据结构不重要么?
回到这本书的主题,毫无疑问这是一本大师传授经验的书。我想这本书的读者大都是有追求编程更高境界的诉求的,而你这个标题显然违背了本书的主题,所以我建议你改掉你这个标题。
中国的程序员普遍浮躁,难得有这样一本好书出来可以帮助大家知道国外的顶级程序员是什么样子的,怎么修炼出来的,你却在这里大声说”算法这些基本功不重要“,情何以堪?!虽然你评论本身内容不错,可是标题太误人子弟!你看看这本书,哪个大师不是编程十几二十年以上的?他们的基本功可能差么?!
> 我来回应 本评论版权属于作者figure9,并受法律保护。除非评论正文中另有声明,没有作者本人的书面许可任何人不得转载或使用整体或任何部分的内容。
在哪儿买这本书? · · · · · ·
>Coders at Work
作者: Peter Seibel
副标题: Reflections on the Craft of Programming
isbn: 1430219483
定价: USD 29.99
出版社: Apress
装帧: Paperback
出版年: 2009-09-16
书名: Coders at Work
figure9的其他评论 · · · · · ·
>全部评论(6)
© 2005-2010 douban.com, all rights reserved 关于豆瓣 · 在豆瓣工作 · 联系我们 · 免责声明 · 帮助中心 · API · 手机豆瓣 · 品牌俱乐部
分享到:
相关推荐
"实用主义学Python2019"是一门全面涵盖Python编程、图形界面开发、脚本编写、网络爬虫、机器学习以及数据分析的综合课程。这门课程旨在教授学员如何利用Python在实际问题中发挥高效能,尤其是在大数据处理和人工智能...
实用主义作为一种方法论,起源于美国,主要由查尔斯·桑德斯·皮尔士和威廉·詹姆斯等人发展。实用主义的核心观点在于强调实践和效果的重要性,而非理论本身。詹姆斯指出,实用主义并非预设任何特定的结果或信念,...
实用主义是一种西方哲学思潮,起源于美国,其核心观点是将信念和行动的实用性作为出发点和评价标准,追求实际效果的最大化。实用主义强调功利和实际效益,具有明显的功利主义和个人主义特征,认为那些对个人有实际...
"实用主义计时器"是一款专为办公室工作、学习以及考试场景设计的高效计时工具。这款软件以其简洁易用的界面和丰富的功能,旨在帮助用户更好地管理时间,提高工作效率,尤其是在面对考试或需要集中精力完成任务时。 ...
瓜哥的全套教程,很适合初学者学习建立自信 瓜哥的全套教程,很适合初学者学习建立自信
【社会实用主义思潮概述】 社会实用主义思潮起源于19世纪末的美国,主要由查尔斯·皮尔士和威廉·詹姆斯等人提出。这一思潮强调实践和实效性,认为真理的价值在于其实际应用的效果,主张人们应以实际行动和结果为...
【杜威实用主义哲学对教育情境的启示】 实用主义哲学,由约翰·杜威提出,对教育领域产生了深远的影响。这一哲学观点强调经验是个人和种族发展的核心,它源自有机体与环境的互动。在杜威看来,经验不仅是对环境的...
在当前的社会实用主义思潮影响下,高校大学生的实践动机呈现出新的特点和挑战。社会实用主义强调实际效果和效益,这种观念对大学生的思维方式、价值取向和行为选择产生了深远影响。本文将深入探讨这一背景下的心理...
腾讯的投资逻辑始终围绕着实用主义,以增强自身业务能力和拓宽生态系统为核心。在电子商务领域,腾讯意识到单纯依靠自有平台如拍拍网和第三方支付平台并不足以挑战竞争对手。因此,腾讯选择了投资策略,尤其是对垂直...
python入门,python图形界面开发+脚本+爬虫+机器学习+数据分析
实用主义的IT运维理念旨在简化复杂性,让运维工作随业务需求弹性伸缩,以高效、灵活的方式支持企业IT系统的稳定运行。通过优化流程、强化内外部合作,IT人员能专注于提供更具价值的信息化解决方案,助力企业业务发展...
在本项目"matlab开发-实用主义PowerPointImageConverterWindows"中,开发者创建了一个Matlab函数,该函数允许用户将PowerPoint演示文稿中的幻灯片转换为指定分辨率的图像文件,这在需要处理大量PPT内容或者进行自动...
本文将深入探讨使用C#编程语言实现自动更新的实例,以实用主义为指导,帮助开发者构建高效、易用的自动更新功能。 首先,自动更新模块的核心任务是在用户启动应用程序时检测是否有新版本可用,若有,则引导用户进行...
实用主义的电力信息化.docx
实用主义哲学对美国外交的影响.docx
美国高等教育的制度设计与实用主义哲学精神学习.pdf
本文所讨论的“极简实用主义图表PPT模板”正是针对这一需求,提供了一个既美观又功能强大的解决方案。 首先,这套模板的独特之处在于其极简的设计风格,这种风格强调的是“少即是多”,即用最简单的元素表达最丰富...
尤努斯的哲学:从高雅的经济理论走向实用主义,谢琼,,诺贝尔和平奖委员会将2006年度诺贝尔和平奖颁给孟加拉经济学家穆罕默德•尤努斯及其创办的格莱珉银行。尤努斯以扶贫为己任,通�
2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师...
为了适应这一需求,一套名为“极简实用主义PPT图表”的模板应运而生,这不仅是一套图表模板,它更是沟通的艺术和效率的体现。 “极简实用主义PPT图表”以扁平化设计风格为核心,这一设计理念源自于对现代设计潮流的...