徜徉の小溪 发表于 2013-1-26 13:36:20

如何像计算机科学家一样思考

<span style="color: #333333; font-family: 'Microsoft Yahei', Arial, Helvetica, sans-serif; font-size: 13px; line-height: 17px; background-color: #f0f0f0;">系列名称:如何像计算机科学家一样思考(How to think like a computer scientist)
包含版本:C++、JAVA、Python
我很喜欢这种教育方式~
附录A:程序开发计划
  如果花费了大量的时间在调试上,很可能是因为没有一个有效的程序开发计划。
  一个典型的不好的程序开发计划就像这样:
    1. 编写一个完整的方法。
    2. 编写更多的方法。
    3. 编译程序。
    4. 花一个小时来找语法错误。
    5. 花一个小时来找运行时错误。
    6. 花三个小时来找语义错误。

  显而易见,问题出在头两步。如果写了一个方法甚至很多方法都不调试,那么得到的代码可能已经多得让你无法调试了。 如果遇到这种情况,唯一的解决办法就是删除代码直到再次获得一个可以工作的程序,然后再慢慢将程序增加回来。编程新手往往不希望这么干,因为他们精心编写的代码实在是太宝贝了。可是为了高效的进行调试,你不得不残忍起来!
  下面是一个较好的程序开发计划:
    1. 从一个能做一些直观事情(比如打印一些东西)的程序开始。
    2. 每次增加少许几行代码,并且每次改动都测试程序是否正确。
    3. 重复前两步直到程序满足预期的要求。
  每次改动后的程序都应该产生一些验证新添代码的可见效果。这种编程方式能节省许多时间。因为一次只增加少许几行代码,所以容易发现语法错误;程序的每个版本产生一些可见的结果,这就使你能不断测试自己头脑中关于程序是如何工作的模型。如果头脑中的模型是错的,在写出一大堆错误代码之前你将面对矛盾(并且也有了改正的机会) 。
  这种方式的问题是常常难于找出下手的地方并得到一个完整正确的程序。我将通过开发一个名为isIn 的方法来演示这种方式。 这个方法取一个字符串和一个字符为参数, 返回一个布尔值: 如果字符出现在字符串中就返回 true否则返回 false。
  1. 第一步,写一个尽量短但可以编译、运行并做一些可见的事情的方法:
<div class="wp_codebox" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: #110000; width: 568px; background-color: #f9f9f9; padding: 0px; border: 1px solid silver;">public static boolean isIn (char c, String s) {   System.out.println ("isIn");   return false; }
页: [1]
查看完整版本: 如何像计算机科学家一样思考