《疯狂的程序员》经典语录
《More Programming Pearl》和《Hints for Computer System Design》中的名句大赏《More Programming Pearl》一、编码如果还没想清楚,就用蛮力算法。——Ken Thompson不要使用反正弦和反余弦函数——你总能用优美的恒等式,或者是计算向量点积来更好地解决问题。—— Jim Conyngham在存储日期中的年份的时候,请使用四位数字。—— David Martin避免使用不对称结构。—— Andy Huber代码写的越急,程序跑得越慢。—— Roy Carlson你用英语都写不出来的东西就别指望用代码写了。—— Peter Halpern如果代码和注释不一致,那很可能两者都错了。—— Norm Schryer如果你发现特殊情况太多,那你肯定是用错方法了。—— Carig Zerouni先把数据结构搞清楚,程序的其余部分自现。—— David Jones
下面是英文原文
When in doubt, use brute force. ——Ken Thompson Avoid arc-sine and arc-cosine functions - you can usually do better by applying a trig identity or computing a vector dot-product. —— Jim ConynghamAllocate four digits for the year part of a date: a new millennium is commg.—— David MartinAvoid asymmetry.—— Andy HuberThe sooner you start to code, the longer the program will take. —— Roy CarlsonIf you can't write it down in English, you can't code it. —— Peter HalpernIf the code and the comments disagree, then both are probably wrong. —— Norm SchryerIf you have too many special cases, you are doing it wrong. —— Craig ZerouniGet your data structures correct first, and the rest of the program will write itself. —— David Jones二、用户界面
尽可能让用户界面风格保持一致和可预测。—— 匿名用户计算机生成的输入通常会让一个原本设计接受手工输入的程序不堪重负。—— Dennis Ritchie手工填写的表单里有20%都包含坏数据。—— Vic Vyssotsky80%的表单会要你回答没有必要的问题。—— Mike Garey不要让用户提供那些系统已经知道的信息。—— Rick Lemons所有数据集的80%中,有95%的信息量都可以用清晰的图表示。—— William Cleveland下面是英文原文
[The Principle of Least Astonishment] Make a user interface as consistent and as predictable as possible. —— Contributed by several readersA program designed .for inputs from people is usually stressed beyond the breaking point by computer-generated inputs. —— Dennis RitchieTwenty percent of all input forms filled out by people contain bad data. —— Vic VyssotskyEighty percent of all input forms ask questions they have no business asking. —— Mike GareyDon't make the user provide information that the system already knows. —— Rick LemonsFor 80% of all data sets, 95% of the information can be seen in a good graph. —— William S. Cleveland三、调试
在我所有的程序错误中,80%是语法错误,剩下20%里,80%是简单的逻辑错误,在剩下4%里,80%是指针错误,只有余下的0.8%才是困难的问题。—— Marc Donner在系统测试阶段找出并修正错误,要比开发者自己完成这一工作多付出2倍的努力。而当系统已经交付使用之后找出并修正错误,要比系统测试阶段多付出9倍的努力。因此,请坚持让开发者进行单元测试吧。—— Larry Bernstain不要站着调试程序,那会使得你的耐心减半,你需要的是全神贯注。—— Dave Storer别在注释里陷得太深——注释很可能会误导你,你要调试的只是代码。—— Dave Storer测试只能证明程序有错误,而不能证明程序没有错误。—— Edsger Dijkstra新系统的每一个新用户都可能发现一类新的错误。—— Brian Kernighan东西没坏,就别乱修。 —— Ronald Reagan如果我们没能力修好它,我们就会告诉你它根本没坏。—— Walt Weir修正程序错误的第一步是要重现这个错误。—— Tom Duff下面是英文原文
Of all my programming bugs, 80% are syntax errors. Of the remaining 20%, 80% are trivial logical errors. Of the remaining 4%, 80% are pointer errors. And the remaining 0.8% are hard. —— Marc DonnerIt takes three times the effort to find and fix bugs in system test than when done by the developer. It takes ten times the effort to find and fix bugs in the field than when done in system test. Therefore, insist on unit tests by the developer. —— Larry BernsteinDon't debug standing up. It cuts your patience m half, and you need all you can muster. —— Dave StorerDon't get suckered in by the comments - they can be terribly misleading. Debug only the code. —— Dave StorerTesting can show the presence of bugs, but not their absence. —— Edsger W. DijkstraEach new user of a new system uncovers a new class of bugs. —— Brian KernighanIf it ain't broke, don't fix it. —— Ronald Reagan[The Maintainer's Motto] If we can't fix it, it ain't broke. —— Lieutenant Colonel Walt WeirThe first step in fixing a broken program is getting it to fail repeatably. —— Tom Duff四、性能
程序优化第一法则:不要优化。程序优化第二法则:还是不要优化。—— Michael Jackson对于那些快速算法,我们总是可以拿一些速度差不多但是更容易理解的算法来替代它们。—— Douglas Jones在一些机器上,间接寻址比基址寻址要慢,所以请把结构体或者记录中最常用的成员放在最前面。—— Mike Morton在一个非IO密集型程序中,超过一半的运行时间是花在不足4%的代码上的。—— Don Knuth在优化一个程序之前,请先用性能监视工具找到程序的“热点”。—— Mike Morton当你为了加速,把一页代码变成几条简单的指令时,请不要忘了增加注释,以使源码的行数保持为一个常量。—— Mike Morton如果程序员自己模拟实现了一个构造比编译器本身实现的那个构造还要快,那编译器的作者也太失败了。—— Guy Steele要加速一个IO密集型程序,请首先考虑所有的IO,消除那些不必要的或冗余的IO,并使余下的部分尽可能地块。—— David Martin最快的IO就是不IO。—— Nils-Peter Nelson那些最便宜、最快而且可靠性最高的计算机组件压根就不存在。—— Gordon Bell把一个本来就错了的程序变得更糟糕绝不是你的错。—— Bill McKeemanLisp程序员知道所有东西的值,却不知道那些东西的计算成本。—— Alan Perlis下面是英文原文
[The First Rule of Program Optimization] Don't do it. [The Second Rule of Program Optimization - For experts only.] Don't do it yet. —— Michael JacksonThe fastest algorithm can frequently be replaced by one that is almost as fast and much easier to understand. —— Douglas W. JonesOn some machines indirection is slower with displacement, so the most-used member of a structure or a record should be first. —— Mike MortonIn non-I/O-bound programs, less than four per cent of a program generally accounts for more than half of its running time. —— Don KnuthBefore optimizing, use a profiler to locate the "hot spots" of the program. —— Mike Morton[Conservation of Code Size] When you turn an ordinary page of code into just a handful of instructions for speed, expand the comments to keep the number of source lines constant. —— Mike MortonIf the programmer can simulate a construct faster than the compiler can implement the construct itself! then the compiler writer has blown it badly. —— Guy L. Steele, Jr.To speed up an I/O-bound program, begin by accounting for all I/O. Eliminate that which is unnecessary or redundant, and make the remaining as fast as possible. —— David MartinThe fastest IO is no IO. —— Nils-Peter NelsonThe cheapest, fastest and most reliable components of a computer system are those that aren't there. —— Gordon Bell[Compiler Writer's Motto - Optimization Pass] Making a wrong program worse is no sin. —— Bill McKeemanLisp programmers know the value of everything but the cost of nothing. —— Alan Perlis五、文档
如果一句话反过来就必然不成立,那就根本没必要把这句话放进文档。—— Bob Martin当你试图解释一条命令、一个语言特性或者是一种硬件的时候,请首先说明它要解决什么问题。 —— David Martin一个 { 规格说明、设计、过程、测试计划 } 如果不能在一页A4纸上写明白,那么这个东西别人就没法理解。—— Mark Ardis纸上的工作没结束,整个工作也就还没结束。—— 匿名下面是英文原文
[The Test of Negation] Don't include a sentence in documentation if its negation is obviously false. —— Bob MartinWhen explaining a command, or language feature, or hardware widget, first describe the problem it is designed to solve. —— David Martin[One Page Principle] A {specification, design, procedure, test plan} that will not fit on one page of 8.5-by-11 inch paper cannot be understood. —— Mark ArdisThe job's not over until the paperwork's done. —— Anon六、软件管理系统的结构反映出构建该系统的组织的结构。—— Richard Fairley别坚持做没用的事情。—— 匿名前90%的代码占用了90%的预定开发时间,余下的10%代码又花费了90%的预定开发时间。——Tom Cargill只有不到10%的代码用于完成这个程序表面上的目的,余下的都在处理输入输出、数据验证、数据结构维护等家务活。—— Mary Shaw正确的判断来源于经验,然而经验来源于错误的判断。—— Fred Brooks如果有人基本上做出了你想要的东西,你就没必要自己写一个新程序,就算你非写不可,也请尽可能地利用现有的代码。—— Richard Hill代码能借用就借用。—— Tom Duff与客户保持良好的关系可以使生产率加倍。—— Larry Bernstain把一个现有成熟程序转移到一种新语言或者新平台,只需要原来开发的十分之一的时间、人力、成本。—— Douglas Jones那些用手做就很快了的事情,就不要用计算机去做了。—— Richard Hill那些能用计算机迅速解决的问题,就别用手做了。—— Tom Duff我想写的不只是程序,而且是会写程序的程序。—— Dick Sites计划好抛弃一个原型,这是迟早的事情。—— Fred Brooks如果开始就打算抛弃一个原型,那恐怕你得抛弃两个。—— Craig Zerouni原型方法可以将系统开发的工作量减少40%。—— Larry Bernstain拼命干活无法取代理解。—— H William下面是英文原文
The structure of a system reflects the structure of the organization that built it. —— Richard E. FairleyDon't keep doing what doesn't work. —— Anon[Rule of Credibility] The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time. —— Tom CargillLess than 10% of the code has to do with the ostensible purpose of the system; the rest deals with input-output, data validation, data structure maintenance, and other housekeeping. —— Mary ShawGood judgement comes from experience, and experience comes from bad judgement. —— Fred BrooksDon't write a new program if one already does moie or less what you want. And if you must write a program, use existing code to do as much of the work as possible. —— Richard HillWhenever possible, steal code. —— Tom DuffGood customer relations double productivity. —— Larry BernsteinTranslating a working program to a new language or system takes ten percent of the original developmefit time or manpower or cost. —— Douglas W. JonesDon't use the computer to do things that can be done efficiently by hand. —— Richard HillDon't use hands to do things that can be done efficiently by the computer. —— Tom DuffI'd rather write programs to write programs than write programs. —— Dick Sites[Brooks's Law of Prototypes] Plan to throw one away, you will anyhow. —— Fred BrooksIf you plan to throw one away, you will throw away two. —— Craig ZerouniPrototyping cuts the work to produce a system by 40%. —— Larry BernsteinFurious activity is no substitute for understanding. —— H. H. WilliamsAlways do the hard part first. If the hard part is impossible, why waste time on the easy part? Once the hard part is done, you're home free.Always do the easy part first. What you think at first is the easy part often turns out to be the hard part. Once the easy part is done, you can concentrate all your efforts on the hard part.Plagiarism is the sincerest form of flattery. 抄袭是最真诚的恭维。——《编程珠玑2》第六章
《Hints for Computer System Design》Butler W. Lampson, Digital Equipment CorporationP.S. 文章太长了,估计再写18页,更新了也估计没人看,就留个烂尾工程吧。看到这里以后有需要催更的同志就留言催一下,每催更一次我更新一条吧 T T (2019年11月5日)Separate normal and worst caseDo one thing wellDon't generalizeGet it rightDon't hide powerUse procedure argumentsLeave it to the clientKeep basic interfaces stableKeep a place to standPlan to throw one awayKeep secretsUse a good idea again
Divide and conquer
Safety first
Shed load
End-to-end
Make it fast
Split resources
Static analysis
Dynamic translation
Cache answers
Use hints
Use brute force
Compute in background
Batch processing
Log updates
Make actions atomic
Make actions atomic
Use hints
///
NOTHING BUT STORY TELLING 2019
#《戴蓓会客厅》第十三期
Special Topic :daibei vs Cai Zhisen
——
——————
///
戴蓓会客厅 13
NOTHING BUT STORY TELLING
戴蓓vs蔡志森 TAlk
三维家 S2B 家居工业互联网
他说,自己就是个做软件的
他又说,要成为全球最大家居工业互联网平台
这想法听起来大得有点疯狂
一件普通卫衣、旧牛仔裤、寸头、戴眼镜
在三维家的办公室里
你很难将蔡志森和其他几百名程序员区分出来
▼
2000年 毕业于华南理工大学机械工程系的潮汕青年蔡志森,进入了一家叫圆方软件的公司,从此与家居行业结下了不解之缘。
2013年 蔡志森和他的三位兄弟徐明华、黎保生、肖永创,共同创立三维家。6年之后,这个初创期只有10来个程序员的小公司,拥有1300名员工,成长为中国家居行业最大的软件供应商之一。
2018年3月 三维家获红星美凯龙B轮3亿战略投资,并于9月正式发布“至爱智家”S2B整装共享平台,宣告三维家从软件企业向平台型企业转型。蔡志森口中的“工业互联网平台”野心正呼之欲出。
2019年开年 “剃光头中。。。”,蔡志森的签名换成这四个字,这距离2014年第一次转折期剃头事件,已五年有余。每逢公司重要转折点,他就会憋着狠劲,逼自己一把。蔡志森说,上半场,做了营销工具,设计工具,生产工具、数控系统;竞争的下半场,要做行业的水和电,做家居产业的路由器,技术和数据赋能更多家居企业实现百亿千亿目标。
在充满各种不确定性的2019年,这个毫不掩饰自己野心的疯狂程序员蔡志森,又面临了怎样的挑战?
削发明志,意味深长。
///
人们借助语言沟通交流
借助语言传递的信息构筑我们身边的世界
包装自己,抵达他人
人类可以搭乘太空船去月球
却没办法看穿每个人心里的宇宙
我们说,也听别人说,信息从不稀缺
但真实和真心却无可避免得越来越稀缺
我们试图剥离由语言和标签构筑的误会
呈现一个更趋近于真实的TA们
Nothing But Storytelling
纪录这个时代值得记录的人
——戴蓓
特约播出:
深度内容合作媒体:
青舍QingHouse
家具微新闻
知了Home
《戴蓓会客厅》往期回顾
第十二期|陈俊:“独角兽”搅动市场!
第十一期|寻美记 奇遇台湾
第十期|殷智贤 被套路的生活方式品牌
第九期|蔡明:孤独行者
第八期|原研哉:一个不拿流行当资源的人
第七期|赵瑞海:家居“蒙面歌王”
第六期|陈耀光:理想的岛屿
第五期|戴昆:一枚设计圈深水炸弹
第四期| 许超:一只让世界五金顶级品牌颤抖的中国轮子
第三期| 赖正镒:从台湾到大陆,他实现99%人想要的隐世理想
第二期|车建新:“90后”新晋全球Mall王
第一期 | 梁志天: 我早已习惯接受争议
如果没和新浪签约的话,你自己可以删除。方法是,先删除章节,然后删除卷。这样就彻底删除了。你试试看。 友情提示:请你在提问的页面提供这篇小说的链接,就是打开这个小说,将地址栏中的网址复制到这里,编辑就会为你删除,另外还需要提供你的通行证号,然后耐心等待,经常将你的问题向前挪动,为了让编辑早日看到你的问题。 如果三个工作日得不到修改可以再提,这样问题就提前了,如果依然得不到解决可以拨打编辑部电话01058983865 把你的新浪通行证【即id在你的个人中心里查找】和作品链接写进你的补充问题 里
1.要么做第一个,要么做最好的一个。
2.什么是鸡肋课?就是每个人都在自己课表的这门课旁边标注一个“可旷”或者“选修”。
3.什么程序优化啊,都抵不上有钱,有钱就是最好的优化。说什么“效率就是金钱”,其实“金钱就是效率”。
4.中国人和外国人很大不同就在于外国人总想热衷于第一时间把自己的新发现公布出来以此向广大人民群众展示自己的水平。中国人往往喜欢把自己的新发现阴在心里,自己偷偷垄断享用。唯恐被第二个人知道。公布出去,相关部门肯定马上解决。
5.所谓好的病毒就是要:“持续时间特别长,波及范围特别广,破坏力特别大。”
6.能进别人系统偷东西,那就是小偷;能进别人系统又不偷东西,那就是黑客。
7.当你不是黑客的时候,总说:“我是个黑客”。当你真正成为黑客的时候,你往往会说:“我不是黑客”
8.程序员是值得尊敬的,程序员的双手是魔术师的双手,他们把枯燥无味的代码变成了丰富多彩的软件……
9.指针,是C语言最复杂的东西,也是C语言的灵魂
10.正如美女都不在大街上逛一样,高手根本不在群里混。美女去哪里了?多半在私家车里,高手去哪里了?多半在写程序。
11.所以说做程序员,要做就得做高手,做什么都不重要关键的是做成牛人。成了牛人就不一样了,掌握公司的核心技术,老板感随便让你走人吗?你一周随便去一个公司或者创业,对他都是极大的压力。
12.一个人静静的坐在电脑前写大卖的感觉,那是什么感觉?那就是武林高手闭关修炼的感觉。
13.天空一声巨响,老子闪亮登场。
14.资本家啊,精于成本计算。难道就没想到雇佣十个劳动生产率为0的人,就算雇佣车成本是10。也顶不上一个劳动生产率为1,雇佣成本为10的人,因为前面的那10的成本可是完全打了水漂啊。
15.巴依把阿凡提喊来想奚落他,问到:“一边是金钱,一边是道德,你选择什么?”阿凡提想都没想立刻回答:“要钱!”巴依哈哈大笑:“你阿凡提原来也是个俗人呀!如果是我,我会选择道德。”阿凡提回答:“对呀,尊敬的巴依,人缺什么就会选择什么!我选择钱,是因为不缺道德,缺钱,而您选择道德,正好说明您有的是钱但是缺德呀!”
16.所以从某种意义上说,电影好不好看,并不是电影本身好不好看,而是跟谁看。
17刘备只懂一个道理:老婆如衣服,兄弟如手足,衣服断尚可续,手足断安可续?所以,说实话,在你最困难的时候,兄弟才是最可靠的,兄弟才永远不会抛弃你。”
18.一本好书,就像高级武功秘籍一样,哪怕只从里面领悟个一招半式,功力提升起来都是惊人的,眉超风学的那半生不熟的九阴真经就是证明。
19.所以练武功和写程序一样,不在乎你修炼了几十年还是几百年,也不在乎你少林武当娥眉拜了多少门派,关键是你有没有把一门武艺炼到出神入化的境界。学武艺,最忌讳总想着去追求大而全,你要明白,其实只需要“打狗棍法”这么一招,就足够你掌舵丐帮,受用终生。
20.记住,女人都是假的,狗才永远不会背叛你,狗是唯一爱你比爱自己还多的东西。
21.我觉得疯狂没什么不好,十九世纪初,当时的科学理论认为凡是比空气重的东西都不可能长时间飞行,所以他们认为莱特兄弟是疯子。可最后疯子赢了,正因为有他们这些疯子,今天我们才能坐飞机,才能放卫星。疯子都是不要命的,怕死的怕不怕死的,不怕死的怕不要命的,所以疯子的力量大啊!在我看来,程序员只有一种――疯狂的程序员。
22.提升功力大低有两种方法,一是自己不断写代码,不断完善,不断把自己的代码写好,二是看牛人的代码。牛人的代码实在太高深了,一句看似平凡的语句,也许背后都蕴含着惊天地泣鬼神的智慧。现在你看不出什么端倪,等十年八年之后,你猛然醒悟:啊,原来大牛的代码竟是如此博大精深!
23.我就是看不惯你那读书人的样,经常做出一副搞技术天底下最大的样子。技术再好又如何啊?归根到底还不是要到市场上来,这就是所谓的“科学技术转化为生产力”
24.对男人来说钱什么都不是,但是你没钱,你就失去了让她了解你的机会。对女人来说漂亮什么都不是,但是你不漂亮,你就失去了让他了解你的机会。
25.现在的女人面临的最大的敌人是啥?不是别的女人,她们最大的敌人是电脑。搞IT的就不说了,他们的女人起码有80%很想砸电脑。其他行业的呢?要是男人迷上了游戏,迷上了上网怎么办。所以女人们,现在就得考虑:如果有一天,我们必须和游戏一起争夺男人,我们该怎么做?
26.人不怕被识破也不怕丢脸,怕就怕被当场识破和当众丢脸。
27.大四的招聘会,如果我也参加,但不是去参加招聘而是去招聘人,那该有多好
28.你要是交了很多钱,你就是上帝,就是VIP。叫你VIP实际上是叫你VERY IMPORTANT PIG !为啥?因为你老给人家送钱,所以你就是VIP。
29.虽然说“顾客就是上帝”,现在好多顾客也确实在付过钱后把自己当成了上帝。东西验收是你签的字,钱我也拿了,老子现在就是上帝!
30.本来大学生就能解决的却一定要让研究生来解决,这叫“对工作重视”;本来一个人就能做的却一定要让三四个人甚至一个小组一起上,这叫“人多力量大”。
31.人就是如此,哪怕你某一方面牛上天了又如何?你还不是有不懂的地方。比尔•盖茨不会拍戏,张艺谋不会唱歌,周杰伦不会写程序。
32.男人,最重要的是什么?一定要信守自己的承诺。如果你没把握做到,最好就不要去承诺,你什么也不承诺,至少别人不会看不起你。
33.禅宗里有段名言,说我们在修炼禅宗之前,山脉就是山脉,河流就是河流;我们在修炼禅宗的时候,山脉不再是山脉,河流不再是河流;等我们修炼完禅宗后,山脉又复为山脉,河流又复为河流。
34.为了追求“幸福”,不得不放弃自己的梦想,回到现实中来,回到自己一直鄙视的庸俗中来。
35.力的作用是相互的,你打别人有多疼,自己的手就有多疼。与其大家都疼,还不如最开始就不要下手打。
36.写程序并不是一辈子都只是写代码。IT这一行是相当广博的,不管你是男的还是女的,不管你技术是初级、中级还是高级,你都能在这行中找到你自己合适的位置。如果你真的用心了,它带给你的会是一生的回报。
37.你知道国际象棋三原则是什么吗?
Careful,Careful,Careful。
38.“现在,最重要的是,我们要好好研究一下如何才能把技术变成钱,否则,我们就永远只是IT界挖沙的民工。”
39.找个好工作就像找个林志玲般性感漂亮的女朋友。一份优越的白领工作,在很大程度上是用来向别人炫耀的。
40.男人的工资,和女人的年龄差不多。没钱的时候,最忌讳别人追问自己的工资待遇。可男人的工资,又和女人的年龄不一样。女人要是年轻,别人问她年龄,她自然敢大方地回答。男人的工资呢?要是高了,还是怕别人追问。
41.“疯狂的程序员”绝对不是靠狂妄和拼命的程序员,而是能够脚踏实地、持续努力的程序员。一个程序员真正做到了这两点,技术上去之后,唯一能够限制他的只有想像力,到那个时候,才算“疯狂的程序员”,这种程序员啊,才能令竞争对手无比恐惧。
42.技术其实还是我们最需要的东西,以前我们没有过硬的技术,所以疯狂地追求它。现在呢?有了一点技术,便觉得技术不那么重要。如果这样放任下去,等到我们失去技术的那一天,一定会后悔莫及的!
43.永不放弃!永不放弃又有两个原则,第一个原则是:永不放弃!第二个原则是当你想放弃时回头看第一个原则:永不放弃!
源地址:http://blog.csdn.net/luqin1988/article/details/7975850