2007-12-22

程序随笔 - 1

这个礼拜最费神的事是写出一个基于内部开发包进行用户验证的Linux-PAM module,有挑战性的活儿都让老外给做了,咱也就是用一下人家的API而已,说到PAM,这或许是我来公司后做的第一件比较需要用脑子的工作。

遇到一些诡异的问题,毕竟一个module和一个``hello world'' program还是有些区别的,主要区别在于运行时环境。一筹莫展之际老外给了个简单却中肯的解决办法,让俺咬牙切齿狠拍脑袋追问自己为啥就没想出来。上周末向libxr的作者发了第二个补丁,也是相当nice的一个伙计,接受了我的patch,然后指出patch里的小问题。

我一直认为程序设计是个令人头疼的问题,特别是它到了一定的规模,并且需要分工合作的时候。程序需要高精确性,不然一个小bug或许就会让它崩溃,但程序员的思维却不会总是很严密,所以程序里总有bug;程序实际上是程序员自己的思想表达,程序员之间需要沟通以避免误解,但有时候这种沟通会很难。

对于C程序员来说,valgrindsplint可谓是必备利器。如果它俩没有对你优美的作品没有任何抱怨,那么,恭喜你,大道有成了!个人而言,我倾向于增量开发,一个简单的实现后便把测试代码写好。用svn或者hg把这些代码管理好,在check-in之前确保valgrind不会抱怨内存泄露。然而这些在某些时候也只是理想而已,因为最无奈的或许便是程序员多数都有很紧的schedule,一级一级的Boss盯着,搞不好还要Matrix,混口饭吃的确不容易。
  1. Design最重要 -- 它决定了你以后工作在天堂还是在地狱;
  2. 搞清一些潜在的假设,并且一定要写下来,多数情况下这些假设会变得不成立;
  3. 增加新的代码新的功能之前,确保自己检查了所有的假设,考虑了尽可能多的影响;
此文作为第一篇程序随笔。想来以前还教过《C程序设计》,其实没有任何``设计''可言。

0 Comments:

发表评论

<< Home