Knuth访谈:老将出马,一个顶俩
大家追潮流追的也不少了, 也看看比大牛还大牛好几倍的家伙怎么说; 听见些不同的声音, 总比铺天盖地全是流行歌曲, 要强一些; 别搞得好像一些明星加商业宣传, 就代表了真正的计算机科学家的看法和发展趋势似的。 其实很多时候, 我们认为的大势, 总是那几个人或几个团体再表演罢了; 我真正担心的, 是在那些似是而非的学问上花费过多的精力, 最后才发现都是一场空。
如果不知道D.E.Knuth是谁, 可以自己Baidu/Google/Yahoo/Live(排名不分先后)一下。 原文很长, 截取并胡乱翻译了三段, 关于单元测试 、 极限编程两个时髦东西的, 和关于可重用代码这一面向对象一直所关心的主题的。 这老人家也只是发表一下看法, 并没有说为什么, 但是呢, 我觉得可以当一个警钟敲了一下, 有没有道理的, 权当一个提醒, 一个敦促自己思考的契机吧。
另外, 那些对流行不感冒的兄弟, 也不用觉得自己太落后了, 至少肯定比明星梯队权威的人和你一样土; 问题的关键是写出像样的软件, 不是么? 闲话不多说了, 原文: http://www.informit.com/articles/article.aspx?p=1193856
关于单元测试
the idea of immediate compilation and "unit tests" appeals to me only rarely, when I’m feeling my way in a totally unknown environment and need feedback about what works and what doesn’t. Otherwise, lots of time is wasted on activities that I simply never need to perform or even think about. Nothing needs to be "mocked up."
及时编译和"unit tests"的主意对我来说只用在很少的情况, 比如当我完全不熟悉环境, 需要搞清楚啥能转啥不能转的时候。 另外, 在好多根本不需要干甚至根本无需了解的事情上, 会浪费大量的时间。没啥是需要被"mocked up"地~~
关于极限编程
I hate to duck your questions even though I also hate to offend other people’s sensibilities—given that software methodology has always been akin to religion. With the caveat that there’s no reason anybody should care about the opinions of a computer scientist/mathematician like me regarding software development, let me just say that almost everything I’ve ever heard associated with the term "extreme programming" sounds like exactly the wrong way to go...with one exception. The exception is the idea of working in teams and reading each other’s code. That idea is crucial, and it might even mask out all the terrible aspects of extreme programming that alarm me.
虽然我更讨厌让他人的敏感神经感到不快, 不过我也不喜欢回避问题——扔出那些软件方法论经常搞得跟宗教信仰似的。 我首先我提出一个警告, 任何人没有理由关心一个像我这样(权威或者牛B, 凡是括号里是翻译者自己加的)的计算机科学家或数学家如何看待软件开发; 然后咱们来说说这事: 几乎我听见的每一件和极限编程相关的事情, 都肯定的走在了错误的小路上, 除了一个例外。 这个例外是在团队中工作, 并且互相读代码的主意。 这个主意很关键, 以至于它(的优点)能够掩盖所有那些极限编程中让我警惕的恐怖方面。
关于可重用代码
I also must confess to a strong bias against the fashion for reusable code. To me, "re-editable code" is much, much better than an untouchable black box or toolkit. I could go on and on about this. If you’re totally convinced that reusable code is wonderful, I probably won’t be able to sway you anyway, but you’ll never convince me that reusable code isn’t mostly a menace.
我也必须坦白对可重用代码, 我有很强烈的偏见。 对我来说, 可更改的代码代表了更多的东西, 而且比一个不能深入的黑箱或者工具箱要好得多。 我可以继续下去。 如果你仍然信服可重用代码很棒, 我也不见得抓着你的脑袋使劲儿晃(让你清醒), 不过你也甭想让我相信可重用代码不是一个很不咋地的东西。 (在这里, 可重用代码, 应该代表的是编译之后的成果; 那些可以拿到源代码, 并可以自己改的, 属于可更改的代码,在这篇文章前面, 高老爷子对开源还是很看好地)
关于并行编程高老爷子也有些不一样的见解, 太长了, 就不原文贴出了。 不得不说虽然他年纪大了, 一些话还是有启发性的。 嗯不过这些话如果换我说, 估计就成骂街了。 真是老将出马, 一个顶俩。 不过也许有人要问, "廉颇老矣, 尚能饭否"了吧?
翻译的比较草, 有啥问题就留言, 不过我暂时不参与对错的讨论了。 要问我的感觉,关于上面三段, 我觉得他比较极端一些, 但是我还是部分的, 或者在一些句子上, 大部分的, 认同他的看法的。 另外就是, 这仅仅是一个访谈, 可能缺乏论据和论证, 不过如果看过Knuth的书(虽然我反对他的书是一般程序员的“必读”项目)就知道, 他是一个严谨的人, 敢这么说, 就一定是有自己的思考和认识的。 否则他也犯不着如此尖锐不是? 有时候我觉得, 包围我们的世界, 似乎是个虚假的世界, 如果不经常四处溜溜, 好像周围就让某些言论充斥了似的, 这很不好。 我以后会多注意反潮流的文章, 并介绍给大家, 也希望其它和我一样心存疑虑的人, 共同完成这项工作。
嗯, 更多的, 就没啥看法了。