您的位置:首页 > 编程语言 > C语言/C++

我们都可以学好C语言

2010-10-18 20:11 239 查看
现如今面向对象语言方兴未艾,脚本语言又来势汹汹。和Java和Python这些年纪尚轻的新语言比较起来,C语言绝对是老前辈了。我们都知道C语言诞生在上个世纪六七十年代,而且它不像C++或者Java那样面向对象,它是一种面向过程的的语言。于是很多人开始怀疑,学习C语言还有用吗?

一般大学里绝大多数理工科专业都开设C语言课程。C语言是中国计算机等级考试的一门考试科目,就是冲着通过那个考试很多人也难以避免要和C亲密接触一下了。但是,抛开应付考试这种功利的想法来看的话,C到底还有没有市场呢?答案非常显然。C非常非常重要,国外某些机构每月/季度/年,都会发布全球计算机语言排行榜。各大榜单上,C语言一直处在傲视全雄的位置。任后来语言来势汹涌,依然难以撼动C的地位。C之所以这么强大,尽管它缺乏面向对象的许多特性,但它的优势也无法被取代。例如,C的高效性,对底层的控制能力等等。如果你认真的学习了C,并掌握了它的精髓,你会对此越发透彻的认识。

对于很多C的初学者来说C其实并不好学。因为它与底层之间的密切联系,使他在某些地方更接近机器的思维方式,而非人的。所以向指针这种东西就成了C的一个难点。另外,C特别灵活,它总是优先默认程序员们总是对的,所以它在语法要求上相对宽松。这对功力不足的人来说是非常危险的,某些将会导致系统崩溃的错误可能就潜藏于此。那我们该如何去学好C呢?其实学习任何一门计算机语言,大体上需要注意的地方都是差不多的,比如认认真真地看书,多上机实践等等。那么这里关于共性的问题我们就不多谈了,来说些有特性的部分吧。

真正要将C的优势发挥到极致,必须要加深对计算机的理解,因为C与底层联系紧密,所以你要对计算机内存、缓存、数据编码和表示等许多细节了如指掌,不然的话一些稍有点深度的代码就会让你满头雾水。好了,我们举一个简单的例子,请同学们看下面这段程序,你看明白下面这段程序的执行目的了吗?



如果看不懂,可以在计算机上运行一下,没错,你会惊异的发现,这段程序的运行结果就是输出语句“a=5;”在内存中的“机器码”。这非常微妙,因为指针赋予C访问内存的能力,我们才能从中获取机器码01序列。当然这段程序的运行需要条件,开发环境变化之后0040D788也可能会变化(这个地址仅仅是在我的计算机上实验的结果),更多有深度的代码都还在计算机里睡大觉呢。

另外,读书是必须的。一本好书可以引导你尽快学到真本事,可以让你避免误入歧途。但是书太多了,我们太容易烟花缭乱了。我们最多看到的C语言书籍是谭浩强的《C程序设计》,现在应该出到了第3版,发行量据说超过1000万册(因为很多大学选用它当教材)。从我上学的时候,学校里就已经在用这本书了。这本书帮你过计算机二级应该是够了,但是要学到真本事,这本书就太初级了。所以我个人并不推荐使用这本书。当然如果你的专业不是学计算机相关方向的,这本书应该比较适合你。而我这里谈的应该是面对科班学生的。C语言详解(第5版),美国Jeri
R.Hanly和Elliot B.Koffman 编写。这是一本畅销世界的经典教材,内容详实、选例精当。但是这本书主要是面向在UNIX或LINUX下编写C程序的读者的,所以有些系统调用,对于中国学生不是非常容易接受。所以给学习带来了一定的难度。相对而言,Kernighan和Ritchie编写的c程序设计语言则更适合中国学生阅读,这也是一本享誉世界的经典C语言书籍,有兴趣的读者不妨看下。

我和李召恒老师也联合编写出版了一本C语言书籍《C语言参悟之旅》,这本书对读者的层级要求比较宽松,初学者和有一定C基础的读者都可以从书中得到提高。本书几经锤炼,在完稿之际业内八位知名专家联合推荐,其中中国航空工业西安航空计算技术研究所原总工程师、陕西省软件行业协会常务理事、西北工业大学博士生导师吴广茂研究员欣然为本书作序推荐。相信这本书可以成为同学们学习C语言时的一本非常不错的参考书。另外,作为提高和拓展阅读,林锐和韩永泉编写的《高质量程序设计——C/C++语言》将是非常不错的选择,这是国人编写的少见的非常优秀的计算机图书。

希望每位同学都能学好C语言,更欢迎各位同学针对C学习过程中的遇到的问题和感想同我交流。当然,直接把学校布置的编程作业丢给大本营老师的方式,我并不推荐。少数个别同学会在留言板上贴一大段的C程序编程题,然后直接希望大本营的老师帮他完成作业。希望大家能够多动脑,多动手,更珍惜与大本营中各位老师交流的宝贵机会。中山先生给中山大学留下的校训中,就有“慎思、审问”一条,我相信“会提问”本身也是一个人个人素养的体现。

============================================

向同学们推荐我编写的一本学习数据结构与算法的不错的书《C++数据结构原理与经典问题求解》http://product.dangdang.com/product.aspx?product_id=20385620
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: