网上对苹果iOS7操作系统中最新暴露出的一个严重安全漏洞的讨论读起来十分有趣。是什么导致了这样一个弱者的bug?下面是网友们总结出的几个原因: 用C语言很难写出正确无误的程序,, 苹果公司的程序员不用心, 编码风格中允许忽略大括号, 苹果公司里没有正规的代码审查, 使用了goto语句….
2001年,出生于荷兰的计算机大师、 图灵奖获得者Edsger W. Dijkstra给德州大学预算委员会写信,力劝不要将计算机入门课程改为Java。不幸的是,学校最终还是用Java课程替换了Haskell。相关联的,麻省理工的计算机程序结构和分析课程(6.01)中的Scheme语言也被Python语言替换掉。
我有一个朋友,他在一家小公司工作,这家公司最近换了经理。老经理由于资深程序员的辞职且无法招到替补而被派去顶替空缺的开发角色。而新经理缺乏管理程序员的经验。事实上,他们公司的任何一个资深程序员都可以随时拍屁股走人,而且在一个星期里就能找到一个比现在高出30-40%工资的新工作。
年轻的程序员,由于缺少经验,常常不知道这样的事实:写代码只占一个软件出品过程中很小的一部分。借用Frederick Brooks著名的《人月神话》一书里专业的描述:它只是一个软件程序诞生的开始。
Plan-9是一个很棒的、很先进的,而且完全是全新实现的Unix系统,它的目的就是要最终解决Unix最初的诺言:一切皆为文件。你听说过这套系统吗?没有?那好,下面就是为什么。
我们都听说过这样的故事:某某公司将要开发一套大型的先进的ERP系统。这套系统将要取代三分之一的公司里现有的软件系统,可以消减二分之一的费用,每个人都会因此受益而高兴。但现实中,这个项目超期2年还未完工
软件开发的成败更多的是在于人,而不是技术。当从大学毕业时,我以为,只有精通了各种技术才能成为一名伟大的程序员,以为人件管理技术是经理们的专属领地。但事实却给我好好的上了一堂课。
当一个人在完成一件体力工作时,你很容易评估他是否在努力的工作。你可以观察他的物理动作,看他流了多少汗水。你还可以看到他工作的成功:砖墙在砌高,地面上挖的坑在变大。
我们的工作经历多样而广泛,从财富50强企业到硅谷创业公司,从全新到代码库到30年的老古董。下面的这些特征,不仅是对我们,我想对广大的软件开发者也都代表了一个非常理想的工作环境。
“我需要”,“小问题”,“立刻”。你激怒我了。你的每个词都激怒我了。这种情绪很难翻译成英语表达,但在荷兰,有些人就是用这种方式要求你。
宗罪(Seven deadly sins),13世纪道明会神父圣多玛斯·阿奎纳列举出各种恶行的表现。这些恶行最初是由希腊神学修道士庞义伐草撰出8种损害个人灵性的恶行,分别是贪食、色欲、贪婪、暴怒、懒惰、伤悲、自负及傲慢。
这是一篇痛斥,我真的很生气。我不是一个社交型的生物。我不想整天时间或大部分时间、甚至一小部分时间坐在另外一个程序员边上编程——即使是经过测量发现这样会提高我的开发效率。就是因为这不是我喜欢的工作方式。它会毁了我对生活的感觉,毁了我的工作环境。
我不理解为什么人们会对面向对象编程和函数式编程做无休无止的争论。就好象这类问题已经超越了人类智力极限,所以你可以几个世纪的这样讨论下去。经过这些年对编程语言的研究,我已经清楚的看到了问题的答案
问“如果两个程序都这样做会怎样?”也是一种非常有用的甄别一个功能特征或设计想法是否合理的好方法。配合“设想如果可以这样”,它们能成为一个漂亮的组合拳。下面是几个例子: