找回密码
 注册创意安天

读《C专家编程》

[复制链接]
发表于 2010-4-4 15:28 | 显示全部楼层 |阅读模式
图书馆有本《C专家编程》,但似乎没有被人读过。这是本值得翻一翻的书。

理解C语言,最重要的在于认识它的设计思想及优劣。


C与Unix是相辅相成的,两者的思想也几乎一致。

比如,C强调一切由程序员实现,也因此,程序员需要保证自己程序的准确。malloc了内存,需要delete,而没有runtime的垃圾回收;在数组操作中,不对下标进行越界检查,如果要程序稳健,就自己实现吧。伴随着这些不便的,是程序员对程序无比精确地掌控,你永远都能(至少理论上能)了解自己的程序做了什么。

而要理解C语言的优劣,则需要先对其他语言有所了解(毕竟优劣都是相对的)。优点主要是对比C之前的语言,如它的祖宗BCPL,以及在早期广泛使用的Pascal、Fortran。缺点主要可以对比后来的语言,尤其是面向对象的C++、Java(但需要注意的是,C++对C的缺陷一部分予以了改进,一部分予以保留,其主要考虑是兼容性)。

当然,在“现代”,我们更会注意的是C的缺点。

认识到C有很多缺点,是很重要的(想起很多崇拜C并认为它无所不能的同学)。但具体了解有哪些问题,是更重要的吗?我并不这么认为,因为绝大部分问题仅在极端的情况下出现,只要我们保持了较好的编程习惯,大部分问题都不必在意。对喜欢钻牛角尖或者想参加混乱编程比赛的同学,顺便推荐一本《C陷阱与缺陷》。

然而,我觉得《C专家编程》给我最有意义的认识是,C的设计原则主要是两点:贴合底层硬件、易于实现编译器。

比如,C的基本数据类型,全是底层硬件支持的,在早期,甚至都没有浮点数这一类型(难以想象吧?)。

比如,C中不允许函数嵌套函数,就是出于编译器更易实现的原则。

体会到了这两点,就能对C为什么出现那些缺陷,有个全新的认识。

最后再说一下数组和指针。以前对它们的区别确实体会不深,看了《C专家编程》后有了一些感性的认识。话说,从编译器实现的角度来理解它们,真的是太爽了。

闲扯了一堆,似乎没有涉及具体的技术细节,也许会有同学失望。总之,建议大家有空的时候翻一翻这本小薄书,即便是多了点滴认识,都是好的。
发表于 2010-4-4 20:14 | 显示全部楼层
业界最经典的一句话  --- 真正的程序员用C,聪明的程序员用Delphi!~
      世上没有十全十美的事物,同理也没有十全十美的程序,每门编程语言的优缺点各有不同,对于程序员来说也是萝卜白菜各有所爱!
      武当派创始人张三丰张真人在太极拳心法里间接的告诉我们,天下没有最厉害的武功,最厉害的是人的心,只要招式随心而变,武功与心意合二为一,便可无招胜有招!倘若在写程序时,能达到这种程度,那说明在编程方面也达到了一定的境界了!
回复

使用道具 举报

发表于 2010-4-7 14:46 | 显示全部楼层
张三丰与太极拳和老子与道教的关系是一样的
回复

使用道具 举报

发表于 2010-4-14 23:08 | 显示全部楼层
那應該學什麼好?
回复

使用道具 举报

发表于 2010-5-14 12:22 | 显示全部楼层
应该好好看看,读了就知道现在的C编译器设计上实际是残缺不全的。没有做足够的静态检查
即便 -ansi -pedan ...
kidrane 发表于 2010-4-8 14:09


pc-lint 9.00 有没?8.00对unicode编码的文件支持好差……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册创意安天

本版积分规则

Archiver|手机版|小黑屋|创意安天 ( 京ICP备09068574,ICP证100468号。 )

GMT+8, 2024-11-29 13:28

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表