• 编程珠玑阅读笔记03


    某一程序员试图让另一名程序员确信某段代码是正确无误时,所使用的主要工具通
    常都是测试用例:手工输入然后执行该程序。那是一个功能强大的工具:它适用于检测
    bug,使用简单,也好理解。然而,这样做很显然需要程序员对程序有很深的理解。如果
    对程序没有很好的理解,那他们决不能先行编写出程序来。程序验证的好处之一就是它
    为程序员提供了一门语言,程序员可以用它来表达对程序的理解。
    在本书的后面,尤其是第9、11 和14章,在开发各种精细的程序时,我们将应用到
    验证技术。编写代码时,我们将使用验证语言来解释每一行代码:在勾画每一个循环的
    不变式时验证技术尤其有帮助。程序文本结尾的重要解释将作为断言;确定现实世界中
    的软件应该包含什么样的断言是一门艺术,这门艺术只能从实践中学来。
    验证语言经常用在代码第一次编写之后, 并且在代码走查期间开始执行。测试期间,
    如果违反了断言语句的话,那将指明出现bug了:对违规形式进行分析你就知道该如何
    排除某一bug 而不会再引入另一个bug。请注意,当你在调试、修改代码或错误的断言
    语句时,要完全地理解代码,抵御那种“改变代码,只要能让它运行起来就行”的冲动。
    下一章讲述了断言在程序测试和调试中扮演的几种角色。断言在程序维护期间很关键:
    当你捡起以前从没有看过,而且几年来也没有其他人看过的代码时,程序状态断言对我
    们理解程序很有帮助。
    这些技术仅仅是编写正确程序的一小部分;保持代码的简单性通常是正确性的关键。
    另一方面, 有些熟悉这些技术的专业程序员给我的感觉是:当他们构建一个程序时,难
    的部分通常先通过,而错误往往就在容易的部分。这在我自己的编程经历中太常见了。
    当他们碰到难的部分时他们就会耐下心来,成功地运用那些功能强大的正规技术。而在
    那些容易的部分,他们往往会回退到古老的编程方式中,因而得到的结果也是老的。以
    前我还没有碰到过这种现象,自己碰到过之后才相信这种现象。这种难堪的现象也是对
    经常使用这些正规技术的一个良好触动。

    David Gries所著的(The Science of Programming》是一-本在编程验证方面相当出色
    的入门书。这本书在1987 年由Springer-Verlag出版社以平装本出版。它先从逻辑开始
    说起,继而对程序验证和开发进行了正规介绍,最后讨论了常见语言的编程问题。在本
    章中我已设法勾画了程序验证的好处;大多数程序员可以有效使用验证技术的惟-方法
    就是学习诸如Gries所著的那样的书籍。

    个人感受:程序检验是软件开发中的重要一环,不能合适通过检验的程序不是好程序,

    我以前不太注意程序的稳定性,总是想敲完就行,太注重速度而没有注重稳定性。以后我要

    多注意程序的稳定性,不怕改bug。

    解决方案:以后要多对程序进行检验,不能怕改bug

  • 相关阅读:
    弹窗
    [转]JNI字段描述符“([Ljava/lang/String;)V”
    [转]JNIEnv解析
    [转]"error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
    [转]Linux下如何查看版本信息
    [转]apt-get 与 yum的区别 (转)
    我的tesseract学习记录(二)
    [转]pkg-config的用法
    [转]linux 创建连接命令 ln -s 软链接
    如何写makefile
  • 原文地址:https://www.cnblogs.com/XiaoGao128/p/13052261.html
Copyright © 2020-2023  润新知