这么多年来,我学过和使用过的开发语言也不少了,可真正用得好一点的就只有
C。有一段话很流行,直到现在类似的想法还影响了很多人。“做程序员,学 习
程序语言最重要的是学习编程思想,而不是学习那种语言”。我曾经把这段话奉
为经典。在做程序员的初期,频繁更换编程语言,这是一个重要原因,另一个重
要 原因是,如果不会新的语言,就显得落后了。因此流行的语言基本都涉及过,
买书的钱都以千计。随着代码数量的增加,经验的增长以及对于业务了解程度的
深入, 自然产生了一些想法、思路和设计。
我举的一个例子,开发过数据库的人大概都有所体会。数据库应用中常常需要构
造 SQL 语句,但在程序中写 SQL 语言以及对返回结果集的处理,这往往是 个体
力活,特别是在嵌入式 SQL 的编程中。重复地拷贝一段颇长代码,再修改一点点,
整个程序大量的篇幅都耗在这上面了,维护起来也比较困难。我想很多人都 针
对此想过了很多的方法来简化这些甚是无趣的操作。我也想过好些方法,其中一
个方法比较有趣。在 C 语言中有一个很常用的函数是 int sscanf(const char
*str, const char *format, ...),用起来颇为简便。我想仿照这个函数的来处
理 SQL 语言的 select,因此就定义了一个获得一条记录的函数:
ifx_select(const char* sql,…); 使用起来非常简便:
int id;
char name[16];
…
if(ifx_select(“select id,name from users where id=10”,&id,name)==0)
…
这是一个很好的点子,也是很好的编程思想。但开工后,我发现我实现不了。虽
然这段代码看上去很简单,但它包含的东西却不少:变参数的处理,指针及其 内
容的赋值,错误处理,数据类型判断与分析等等。这些东东都学过,但在实际工
作中却不能灵活运用,想法和思路自然实现不了。类似的现象不仅仅大量出现在
程 序设计中,在现实生活中也比比皆是。
由此,下决心好好补了补课。把教科书又翻了几遍、阅读了很多开放源码的程序、
在平时的编程中投入一部分精力到 C 本身的研究中,经常感叹,原来 C 语言 还
可以这样用。随着对语言本身(语法、技巧、组合等等)的越来越熟悉,自己的
很多思路和想法也得以顺利实现。到目前语言和思想已经密不可分了,以上的代
码 自然搞定了。当然这是一个长期的过程,不可一蹴而就。时间一般以年计算。
讲了这么多,我的观点也很明确,编程的语言和编程的思想同样重要,扎实的编
程语言功底是编程思想得以顺利的实现的基础,二者缺一不可,相互制约也相 互
促进。就象人的灵魂和肉体。对于一个人来说,若只管灵魂而不管肉体,那是
“鬼”;如只管肉体而不管灵魂,则会被称为“行尸走肉”。基本工具都用得不
好, 用得不熟,很难期待会出现一个好产品;有一个好的编程想法,却因为编