移山之道

关注软件开发技术和管理的社区网站

欢迎光临 移山之道 登录 | 注册 | 帮助
in 搜索

关心

移山之道 作者

顶级程序员的心得 Coders at Work (IV)

( 第一第二第三部分 )

Coders at Work”,   对15 位顶级程序员的采访, 总共600页。 看似冗长的问答中有不少精辟的言论。 我摘录了一些关于挑选,面试程序员,优秀程序员的特点,和程序设计的句子。下面是 最后 3 个程序员的心得,和我的几句解释:

 

Coder

What they say about good programmer, interview, and design

My interpretation

 

Fran Allen

first woman winner of Turing Award

Software process:

did software-development process save the IBM/360 project?

it's was absolutely necessary,  but it was painful for the software people to [adjust to] design reviews, design specs, all of this stuff.

 

good programmer:

basic threshold: find out what they're excited about.

if they can't get enthusiastic about something,  they're not going to get charged up in a group.

软件流程:

因为IBM/360 项目的软件部分遇到了很大的困难,那时候还没有什么成文的 "软件工程", Fred Brooks 把管硬件的经理们调来,让他们来管软件部门, 因为硬件是一个相对成熟的产业 - 芯片设计,测试,等等。 这些“不懂软件”的同志们参考硬件产业, 建立了软件工程的基本流程。

从一个成熟的产业中学习,是很有效的办法。 现在我们还可以从软件工程的一些术语中看到硬件的影子 - 例如 smoke test 冒烟测试。

 

好的程序员:

热情 (前面 Ken 同学也谈到了这一点)

Bernie Cosell

czar of PDP-1

pioneer of APPANET,  the core of the later internet

advice to programmer:

write a lot of programs.

there is very few inherently hard programs. if the code looks very hard, that's almost always an indication that it was poorly thought thruough.   if you have complicated code, put it in an encapulated place.

programs are meant to be read. 

avoid premature optimization

find talented programmers:

whether they have the kind of inquiring, curious, precise kind of mind.  quickness of learning, interested in lots of different things, and kind of broadly based.

[carefully chosen] puzzle can gives you a glimmer as to how they organized something to approach it.

给程序员的建议:

写很多程序。

世界上难的问题/程序很少, 如果一个人的代码看起来很难,这通常意味着程序员没有想清楚。 如果你必须用很复杂的代码,把它包装起来。

程序是用来给人读的。

避免过早优化。

优秀程序员:

应聘者有没有刨根问底,好奇心, 准确的思维?  能快速地学习么? 是否对很多东西都有兴趣? 是否有很广泛的基础?

[仔细挑选的] 智力题能让你看到应聘者是如何组织材料,解决问题的。 

Donald Knuth

TAOCP, TeX and METAFONT, literate programming

... Awards | 1998 Recipient Donald Knuth

 

Knuth 在学术界的影响

How I learn programming – basically taking one program that i made up myself and sitting at a machine over a period of some weeks, and kept getting it to work a little better and a little better.

Q: Should every programmer be able to read TAOCP?

A: I sometimes wonder if I can read them.

but even an algorithm like a balanced tree ot AVL tree, i don't use it in m own programs unless i know that it's going t obe a really big tree.

what do you use?

i use an ordinary binary search tree with a little trick for randomizing it that i just put it. 

...

已发表 2009年12月26日 12:12 作者 关心

评论通知

如果您想在帖子更新时接到邮件通知,请先登录。这里

订阅帖子评论使用 RSS

评论

 

匿名人士 说:

读到Donald Knuth的见解,竟然只有省略号,期待相关内容~

很多见解与《代码大全》中所述的不谋而合~

ps:这个网站对chrome支持不是太友善:)

十二月 28, 2009 11:36
 

匿名人士 说:

Knuth 的见解看英语也看得懂吧...

十二月 28, 2009 12:54
 

关心 说:

找时间要测试一下 chrome ...

我们测试过 FF, 基本上没有什么大问题。

十二月 28, 2009 18:40
 

loveisp 说:

可能是由于我英文和计算机的知识都不够吧,有些句子看不太懂。盼您指点一二。

P570 L4 Knuth说The things that I leave out are where somebody has a data structure that saves a factor of log log n only when n gets bigger than two to the million.里面的bigger than two to the million何解?此段中后面又提到if computers were godlike, then we could have algorithms that are faster,又是什么意思?总的感觉像是Knuth对在仅节省log log n时间复杂度的算法上面纠缠不清比较不满,但是具体细节还是不太明白。

P571 段落5 Knuth说Or if it hasn't, it should说的是他的书里现在还没有关于不变式的内容,但是以后会有吗?

P575 段落8 I just printed out a small subset of a large collections of subroutines that are all written in C that are pretty much state of the art for manipulating BDDs,这是什么意思?我怎么感觉没头没脑的一段话,Knuth干吗要把这些subroutines打印出来?布尔决策图在这里又是干吗的?这一段的意思我倒是大概能明白,说的是传统的结构式编程风格。

P578 最后四段 Knuth一开始说的put subtle stuff in your program里的subtle stuff指的就是能提高性能但是晦涩不清的东西吗?literate programming为什么会shine?这一段我都不太明白什么意思。还有后面两段,您知道prose在literate programming里代表什么吗?

耽误您时间了,谢谢。

十二月 29, 2009 17:09
 

关心 说:

>  P570 L4 Knuth说The things that I leave out are where somebody has a data structure that saves a factor of log log n only when n gets bigger than two to the million.里面的bigger than two to the million何解?此段中后面又提到if computers were godlike, then we could have algorithms that are faster,又是什么意思?总的感觉像是Knuth对在仅节省log log n时间复杂度的算法上面纠缠不清比较不满,但是具体细节还是不太明白。

我也是这样理解的。

他前一段也说了:

我想探索那些和程序员的实际工作相关的领域,而不是学术的一些顶端边边角角 (most academic cachet).

所以,他没有收录的是某人提出的一个数据结构,能节省 log (log n), 这么小的节约只有在 n 大于 2 的 百万次方 (2 to the million) 的数量级才有用。

>if computers were godlike, then we could have algorithms that are faster.

如果计算机像神一样 (永远不会出错,要处理海量数据),那我们可以向它提交更快的算法。

十二月 29, 2009 22:11
 

关心 说:

> P571 段落5 Knuth说Or if it hasn't, it should说的是他的书里现在还没有关于不变式的内容,但是以后会有吗?

Seibel 问他,他花了10年时间写TeX,这对他的书有什么样的影响。

Knuth 回答,在非学术的环境中用结构化的编程 (10年写了一个实用的TeX 程序),充分(正面)地影响了我在新书中描述算法的方式。  如果影响还没有发生的话,它应该发生 (of if it hasn't, it should).

十二月 29, 2009 22:19
 

关心 说:

> P575 段落8 I just printed out a small subset of a large collections of subroutines that are all written in C that are pretty much state of the art for manipulating BDDs,这是什么意思?我怎么感觉没头没脑的一段话,Knuth干吗要把这些subroutines打印出来?布尔决策图在这里又是干吗的?这一段的意思我倒是大概能明白,说的是传统的结构式编程风格。

我认为这是和上几段呼应的。  他打印的subroutines 是 literate programming 的subroutines, 他打出来之后,就能理解他以前写程序的想法,他想说明的是 - it's just way better than any other method I know.

十二月 29, 2009 22:25
 

关心 说:

>  P578 最后四段 Knuth一开始说的put subtle stuff in your program里的subtle stuff指的就是能提高性能但是晦涩不清的东西吗?literate programming为什么会shine?这一段我都不太明白什么意思。还有后面两段,您知道prose在literate programming里代表什么吗?

我没看过TAOCP, 也没写过 literate program, 我在研究生的时候读过一些相关的分析和评论,但现在都忘了。  :-(

我认为prose 指的是 literate program 中的文字, literate program 的核心就是把程序描述成散文一样 - prose 的本意就是散文。

Knuth 的意思是 prose (散文) 更能描述程序中的subtle 的部分,优化和历史变化。

这些回答都是我自己肤浅的看法。我对于Knuth 同学的研究是外行,只是看个热闹。 有待专家指正。

十二月 29, 2009 22:35
 

loveisp 说:

谢谢您~~对我的理解帮助很大~

再问您三个问题,希望不会打扰到您~

一个是P571 Para.6 最后两句,toy programs是说TAOCP第1,2,3卷里的程序吗?number and quantity代表什么?是不是说他没写大型程序前,他写的那些toy programs有助于他更多地关注数学本质?

还有一个是P571 Para.7 最后两句,They'll be a little bit less hedgy,hedgy这个词好像很少用,是说写作时较少束缚、思路更开阔了吗?in the whole thing说的是他写书的这整件事吗?是不是说他从此写书更有自信了?

最后一个还是上面的第三个问题,那些打印出来的subroutines真的是literate programming的吗?that are all written in C 和 that are pretty much state of the art for manipulating BDDs 又是什么意思?我怎么觉得这一段说的还是传统的结构化编程呢?好像说结构化编程也能凑合使,为下一段文学编程的转折做好铺垫。

谢谢哈~~方便的话可不可以加我msn: forever_purple@live.cn  主要是想多请教您一些问题。当然不方便的话也OK。

十二月 30, 2009 6:47
 

小飞 说:

why chrome?

yishan.cc even works pretty well in Opera and Opera Mini !!!

btw: I only finished Zawinski part. There is a documentary called "Code Rush", which records the last days of Netscape and the found of Mozilla.org, watching how a big giant browser company die is interesting...

十二月 30, 2009 11:43
 

关心 说:

> 一个是P571 Para.6 最后两句,toy programs是说TAOCP第1,2,3卷里的程序吗?number and quantity代表什么?是不是说他没写大型程序前,他写的那些toy programs有助于他更多地关注数学本质?

我想不同程度的人的 toy program 不一样, 你的其他问题很难 :)  要猜测 Knuth 的言外之意很不容易。 我还是别瞎猜了。

再说一句,多看看别的书,也许后来你回过头来,原来不懂的东西就恍然大悟了。

一月 2, 2010 14:26
 

匿名人士 说:

四月 26, 2010 14:07
 

匿名人士 说:

五月 1, 2010 19:17

说说您的看法?

(必填) 
(可选)
(必填) validate code
(必填) 
发表

About 关心

邹欣 - 曾写: 《移山之道》,《编程之美》(合作) 。 在写: ppt, email。 想写: 《编程之美 - 实战中的设计》...

联合

Powered by Community Server (Personal Edition), by Telligent Systems
访问计数:     京ICP备06016978号
王屋村村民除了看yishan.cc, 还浏览下列网站.