Web Analytics

2006IT书讯之经典重现篇

我想最近最忙的应该是各大网络书店了,一本本好书真是如’雨后春笋’般出现在各大书店的’书架’上,这也让我们这些做程序员的过了把书瘾!还等什么呢,掏钱包,把书抱回家读吧,都是经典!下面一一道来。^_^ ...

March 31, 2006 · 3 min · Tony Bai

追求'lint-clean'

到底需不需要编译器之外的独立的静态代码检查工具呢?这个问题’仁者见仁,智者见智’。但是有一个结论我想大家都会认可,那就是越是在开发周期早期发现的Bug,修复它所付出的代价就越小。而像lint这样的静态代码检查程序恰恰是让Bug在早期阶段’显露原型’的绝佳工具,而追求’lint-clean’[注1]境界的代码也向来是专家级程序员的嗜好。别忘了在’C专家编程’一书中曾经提到Sun OS的内核一直是保持’lint-clean’状态的,这就是榜样!还等什么?赶快学呀!^_^ ...

March 31, 2006 · 4 min · Tony Bai

C语言也重构

所谓的重构是这样的一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。重构是一种有纪律的、经过训练的、有条不紊的程序整理方法,可以将整理过程中不小心引入错误的机率降到最低,本质上说,重构就是[在代码写好之后改进它的设计]。– Martin Fowler 重构,一种改善代码’体质’的方法’。 — 侯捷 重构是上进程序员每天的进行式。是一项工程而不是靠着天份挥洒的艺术。– 侯捷 如果有人说’重构’仅仅限于Java语言或者其他面向对象的语言,那他就大错特错了。按照Martin Fowler的诠释,’重构’就是一种代码整理,而且是在保持接口功能不变的一种代码整理,这样的话每种语言都可以’重构’,也许’重构’在你平时的工作学习中已经不知不觉地发生了,只是你还没有认识到那是’重构’罢了。自从从大学毕业后我就一直在’把弄’C语言,对C语言也算是’情有独钟’了,所以自然而然的就开始探索和积累C语言的重构方法。这里个人能力毕竟有限,并不能穷尽所有方法。 ...

March 28, 2006 · 9 min · Tony Bai

当数组作参数时

C语言中的数组和指针总保持着’千丝万缕’的联系,这里仅针对数组作为函数实参时的情况做些说明^_^。 C语言中的数组可分为一维数组和多维数组两类,而多维数组中又以二维数组最为常见。这里也仅针对这一维数组和二维数组作简要说明。 ...

March 27, 2006 · 2 min · Tony Bai

'right-left'规则再举例

闲暇时翻阅’C专家编程’,再次看到对C语言变量声明的理解一节,遂想起我曾经写过的那篇利用’right-left’规则分析复杂的C语言变量声明的文章’C复杂声明解析’,发现其中的例子的对比性不够强,所以决定再用一篇短文来再阐述。 ...

March 26, 2006 · 2 min · Tony Bai

理解C复杂声明之'优先级规则'

第一次看《C专家编程》一书时关于其采用的’优先级规则’分析C复杂声明时看得很糊涂,在理解’right-left’规则分析C复杂声明后,再回过头来看’优先级规则’,居然发现它们的异曲同工之妙^_^。 其实’优先级规则’的分析过程极其类似’right-left’规则,下面首先摘录’优先级规则’的’口诀’,然后再’一招一式’的细致讲解^_^。 ...

March 26, 2006 · 5 min · Tony Bai

如果让我面试C程序员,我会问

我有这样的一个习惯,就是看书的时候总是喜欢自问自答,这不周末第二次温习’C专家编程’一书,便有了如下若干问题,明为提问,实则是在提醒自己好好想想这些问题,如果大家有兴趣,也可以给出你自己的答案,如果觉得琢磨不透,可翻看’C专家编程’一书,或多敲几次键盘,自己试上一把! ...

March 26, 2006 · 3 min · Tony Bai

GCC警告选项例解

程序员是追求完美的一族,即使是一般的程序员大多也都不想看到自己的程序中有甚至那么一点点的瑕疵。遇到任意一条编译器警告都坚决不放过。有人会说:我们可以使用比编译器更加严格的静态代码检查工具,如splint。这个建议也很不错。不过lint工具使用起来较繁琐,有时候还需要记住一些特定符号并插入到你自己的代码中才行,门槛较高,这也让很多人止步于此。那么我们就从此放弃么?不,如今的编译器做得都很好,它可以帮助我们的找到绝大多数可能出现问题的代码,前提是你要学会控制编译器去找到这些问题代码,而熟悉编译器的警告选项恰恰是体现控制力的好方法。当你可以自如控制编译器警告输出的时候,你就算是’入道’了,同时你对语言的理解也更进一步了。 ...

March 14, 2006 · 10 min · Tony Bai

Kernel 'head.S'

After being decompressed, the kernel image starts with another ‘startup_32′ function included in $(linux-2.6.15.3_dir/arch/i386/kernel/head.S’. This ‘head.S’ is the second one in linux source package, which is also called ‘kernel head’. And it is exactly what we want to describe in this artical. ...

March 2, 2006 · 3 min · Tony Bai

Compressed 'head.S'

_Why do we do this? Don’t ask me.. Incomprehensible are the ways of bootloaders. _ — comments in arch/i386/boot/compressed/misc.c There are two ‘head.S’ in linux source package. One is in $(Linux-2.6.15.3_dir/arch/i386/boot/compressed and the other one is in $(Linux-2.6.15.3_dir/arch/i386/kernel. The first one will be analyzed in this artical. Before we go ahead, let’s show a news of linux, that is ‘Army leans toward Linux for FCS(Future Combat System)’. ...

February 25, 2006 · 3 min · Tony Bai