`
lijackly
  • 浏览: 71359 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

一些编程事实

阅读更多

我的程序员经历让我明白了一些关于软件开发的事情。下面是一些在编程中可能会让人感到诧异的事情:
一个程序员用了大约只用了10%-20%的时间来编码,而且大多数程序员,无论他的水平如何,其平均每天只有10-12行的代码最终会进入最终的软件产品中。这是因为,优秀的程序员会花费90%的时间来思考、调查、研究最佳的设计。而糟糕的程序员则会花费90%的时间来调试代码,并随意地改动代码并尝试让代码工作起来。
“A great lathe operator commands several times the wage of an average lathe operator, but a great writer of software code is worth 10,000 times the price of an average software writer.” –Bill Gates
“一个优秀的车工其工资是一个普通车工的好几倍,但是一个优秀程序员写出来的代码比一个普通程序员要值钱一万倍。——比尔盖茨”
一个好的程序员比一个普通的程序员多十倍的生产率。而一个优秀的程序员的生产率则比普通程序员多20-100倍。这并不是夸张(自从上世纪60年代的研究一直表明这是一个事实)。一个糟糕的程序员并不只是没有产出的——他们并不仅是完成不不工作,而且还会制造出大量的让别人头痛并要去解决的麻烦。

优秀的程序员花少量的时间写代码——那些代码都会出现在最终的产品中。那些花大量的时间写代码的程序员其实是很懒惰、很无知,或是很自大的,以至于不能使用已经存在了的解决方案来解决已有的问题。优秀的程序员精通于对通用的模式的识别和重用。好的程序员并不害怕持续地重构/重写自己的代码,直到达到最理想的方案。糟糕的程序员的代码基本上都缺少概念一致性,代码冗长,缺少层次和模式,所以,也就很难被重构。所以,重写他们的代码要比重构他们的代码要容易得多。
软件和其它一切事物一样,都遵循着一致性规则。持续得更改只会让软件变成一潭烂泥,其破坏了原始设计的概念一致性。软件产品变成泥沼是不可避免的事情,但是因为程序员不考虑软件概念一致性而导致软件产品更为快速地成为泥沼,这种速度快得可能 会在软件产品还没有完成时,软件产品已经变得没有价值。设计概念一致性的失败通常都会导致软件项目的失败(而第二大导致软件项目失败的原因则是发布的软件并不是用户想要的)。软件变成烂泥的速度正在呈指数级下降,太多的项目在被完结前都面临着激增的时间和成本。
一个 2004 研究报告 指出,大多数的软件项目 (51%) 都会在关键环节出问题。而15%的项目则是完全失败,当然,这比1994年有了很大的进步,当时完全失败的项目是是31%。
虽然,几乎所有的软件产品都有些开发团队,但其并不是民主的。通常,只有一个人负责设计,而剩下的人去实现细节。
编程是一个辛苦的工作。其是一个巨烈的脑力劳动。好的程序员24×7地在思考他们的工作,他们一般都在在洗澡和梦中编写软件中最重要的代码。因为最重要的工作只能在键盘之外完成,软件项目不可能因为加班或是加人来加快进度。
分享到:
评论

相关推荐

    斯坦福编程范式课件.rar

    Prolog是逻辑编程的代表,它通过查询数据库式的事实和规则来求解问题。 这门课程可能还会涉及泛型编程、元编程、并发编程等进阶主题。泛型编程允许编写可重用的代码,不依赖特定的数据类型,如C++的模板和Java的...

    7中编程语言

    掌握Prolog需要理解规则推理、逆向链式搜索以及事实和规则库的构建。它的核心在于通过查询和证明来解决问题。 4. **Ruby** - Ruby是一种面向对象的脚本语言,强调简洁和生产力。学习Ruby时,你需要了解其强大的面向...

    Linux串口编程详解

    RS-232的连结线中除去用来传入传出数据的电线,还有一些用来提供时序、状态和握手的电线。DB-25针脚定义中,包括了Earth Ground、TXD、RXD、RTS、CTS、DSR、DCD等针脚。DB-9针脚名称全名中,包括了TD、RD、RTS、CTS...

    编程和年龄的关系

    在北美州立大学计算机科学系的研究者Patrick Morrison和Emerson Murphy-Hill所进行的探索性研究中,他们通过对Stack Overflow数据的分析,试图给出一个基于数据和事实的客观答案。Stack Overflow是一个著名的程序员...

    WinSock网络编程.pdf

    它是由 Microsoft 等公司共同制定的 Windows 下的网络编程接口,主要是增添了一些异步函数,并增添了符合 Windows 消息驱动特性的网络事件异步选择机制。 WinSock 模型提供了 TCP/IP 传输层的接口,包括传输层应用...

    编程规范中兴编程规范_C#

    - 注释应简洁、准确,描述代码功能而非显而易见的事实。 - 避免过度注释,代码应自解释。 **错误处理** - 使用 try-catch-finally 语句来处理异常,确保资源的正确释放。 - 不应简单地忽略异常,除非有充分的理由...

    CLIPS专家系统编程实例

    以下是对CLIPS专家系统编程的一些关键知识点的详细说明: 1. **CLIPS基本结构**:CLIPS由两部分组成——事实数据库和规则引擎。事实数据库存储了系统中当前存在的数据,而规则引擎则负责根据预定义的规则对这些事实...

    visal prolog编程软件.zip

    Visual Prolog编程语言的特点在于其逻辑编程的基础,它使用谓词和事实来表达问题和解决方案。这种编程方式特别适合处理推理、搜索和规则引擎等领域的任务。由于其可视化特性,Visual Prolog使得学习和使用Prolog语言...

    并行编程原理及程序设计.pdf

    - **广泛的支持**:MPI已经成为并行编程的事实标准,几乎所有的高性能计算系统都支持MPI。 - **丰富的功能集**:除了基本的消息传递功能外,MPI还提供了高级功能如动态进程管理、并行I/O等,以满足更复杂的应用...

    prolog编程

    Prolog,全称为Programming in LOGic,是一种基于逻辑的编程语言。它的设计目的是为了处理复杂的逻辑问题,尤其适合于自然语言处理、人工智能和知识表示等领域。与其他编程语言不同,Prolog采用逻辑推理的方式来解决...

    Prolog编程简介Introduction to Prolog Programming

    文档的最新版本于2018年9月发布,修订了之前版本中的错误,并且作者还增加了一系列练习题,包括一些较为复杂的题目,可以通过扩展它们来完成小型的编程项目。 在内容上,文档分为以下几个部分: 1. Prolog基础...

    编程就业项目简历模板共9个

    - **量化成果**:尽可能用数字和事实来展示项目成果,如提高代码效率的百分比、用户增长速度等。 - **关键词优化**:根据招聘广告中的关键词进行优化,以通过自动筛选系统。 在压缩包中的9个简历模板,可能会涵盖...

    Linux音频编程.pdf

    OSS 是一个事实标准,支持 OSS 的应用程序能够在绝大多数声卡上工作良好。ALSA 是另一个可供选择的声卡驱动程序,它提供了一组内核驱动程序模块和相应的函数库,简化了应用程序的编写。 Linux音频编程指南涵盖了...

    lecun的可微分编程思想

    结合以上内容,我们可以得出一些有关可微分编程的知识点: 1. 可微分编程是深度学习中的一个重要概念,它将传统编程逻辑通过可微分数学模型表达,通过梯度下降等方法进行学习和优化。 2. Yann LeCun是深度学习领域...

    Linux音频编程指南

    但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序,同时还给出了一些常用的音频编程框架。

    39编程范式游记(10)- 逻辑编程范式1

    逻辑编程是一种基于逻辑学理论的编程方式,它允许程序员定义规则并陈述事实,然后通过推理寻找答案。与传统函数式编程不同,逻辑编程的核心是谓词逻辑,它强调的是描述对象间的关系而不是执行过程。 Prolog语言起源...

    编程修养(编程习惯养成).txt

    事实上,一个优秀的程序员应当具备一系列综合性的素养,这些素养涵盖了个人品质、团队协作能力以及专业技能等多个方面。本文将根据给定文件中的标题、描述及部分内容,详细阐述成为一名优秀程序员所需要具备的关键...

    调高编程能力的方法

    事实上,通过阅读优秀代码,可以更加高效地学习编程技巧和技术。这种方式不仅有助于提高编程能力,还能培养良好的编程习惯。 #### 三、选择阅读的代码 **1. 阅读你用得着的代码** - **插件或库文件**:从你正在...

Global site tag (gtag.js) - Google Analytics