学习C语言之前需要学习什么?
程序员之路——如何学习和掌握C语言
程序员之路——如何学习C语言
学习C语言不是一朝一夕的事,但不是十年就能掌握的。如何以最小的代价学习和掌握C语言是本文的主题。请注意,即使是“最小成本”也绝不是捷径,而是意味着在最短的时间内获得最多,也意味着要经历一个艰辛的过程。
第一,读一本好书,否则还不如不读。
所有初学者面临的第一个问题是:如何选择教材。良好的开端是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会给你分配一本很差的C语言教材。幸运的是,你可以重新选择。
著名教授谭浩强出版了一本书《C语言编程》,据说发行量超过400万册。据我所知,很多学校都会推荐这本书作为C语言教材。虽然我的名字(谭浩宇)和教授只有一字之差,但我极其坚定地要黑他的书。这本书不是为计算机专业的学生写的,而是为需要参加计算机等级考试的其他专业的学生写的。这本书的主要缺点是:示例程序非常不专业,教不出编程应该掌握的思维模式;程序风格相当不好,会养成乱涂乱画代码的坏习惯;
Kernighan和Ritchie的《The C ProgrammingLanguage》(中文译为“C编程语言”)是经典之作,但旧版本的很多内容已经过时,与现在的标准C语言相差甚远。大家一定要看最新版本,不然还不如不看。另外,即使是最经典、最权威的书籍也不可能面面俱到,所以手边放一本C语言参考手册是很有必要的。C语言参考手册是CReferenceManual,是对C语言标准的详细描述,包括了大部分C标准库函数的细节,可以算是标准C语言的最佳参考书。顺便说一下,最新的C编程语言是
按照C89标准,而C语言参考手册描述的是C99标准,两者之间可能会有一些出入,建议按照C99标准学习。还有一本书《C与指针》,也写得相当不错。英文名是“Pointers onC”,特别强调指针的重要性,这是本书的一个特色。但是,这本书不太适合初学者。如果你学过C语言,有一些C语言基础但不是很扎实,可以试试这本书。相信只要懂了指针,C语言就不再神秘了。
如果你已经吃完了一本C语言教材,还想更进一步,那么有两本书是一定要看的。第一本是C Traps andPitfalls,一本很薄的小册子,内容非常有趣。需要说明的是,这本书是20多年前写的,里面提到的C语言的很多缺陷都得到了改进,但了解一些历史也不是坏事。然后你可以挑战专家编程。顾名思义,这本书相当难。一旦你仔细阅读,理解透彻,你就可以放心地在简历上写上“精通C语言”了。
记住一个原则,不要看你目前看不懂的书,那是浪费生命。如果你不懂,那你一定是缺少了一些必要的基础知识。此时,你要仔细分析你需要补充什么,然后去书店找关于这些内容的书。只有把基础知识补上,再回来学习,才能真正事半功倍。
第二,Unix/Linux还是Windows是个大问题。
不同的编程环境会造就不同思维的程序员。Windows程序员大多依赖集成开发环境,如VisualStudio,而Unix程序员更喜欢Makefile和console。显然,集成开发环境更容易使用。学习Windows上的C语言,只需要了解几个基础就可以了。
Ben的Visutal C++工具栏按钮可以开始写Hello。
世界!在Unix下,你需要一些控制台操作的基础知识。可能有人觉得Unix环境更简单,但是习惯的力量很大。大家对Windows的基本操作都比较熟悉,专门为了学习C语言而安装一个Unix系统,似乎有点不划算。
对于一个只知道Windows基本操作,连DOS是什么都不知道的新手来说,尽快做一些有意思有意义的事情是最重要的。用C语言写一个小程序远比学习重要。
ls和cat之类的命令很有意思。除此之外,要专注于C语言本身,我们不得不暂时忽略一些东西,比如编译链接的过程,Makefile的编写方法等等。
所以建议初学者考Visual C++ 6.0(不是Visual C++)。NET)或者DevC++作为主要的学习环境,并且永远不要太纠结IDE的使用技巧,因为以后肯定要转向Unix环境。Visual C++6.0简单易用,调试直观,但其默认编译器对C标准支持不好,而DevC++使用gcc编译器,对C99标准支持较好。对了,现在很多大学还在用Turbo C2.0作为C语言课程的实验环境,这是相当不可取的。原因之一是TC2.0对C标准的支持很少,二是TC2.0编译的程序是16位,这对于以后理解32位程序会造成很大的麻烦(当然,用djgpp之类的东西可以让TC 2.0编译32位程序,但那也太多了。
学完一本C语言的教材,必须转向Unix平台继续学习。几乎所有的C语言高级课程都是基于Unix平台的(比如C专家编程)。转化的过程就是痛苦。
苦,需要面对各种复杂的命令,完全不同于Windows平台的思维模式,但是痛苦是值得的。Unix和C都诞生于* * *,Unix的思维方式和习惯更符合C语言。在Unix下,你可以找到无数优秀的源代码让你读得津津有味,你可以轻松地查阅某个库函数的在线手册,还可以看到最好的代码风格。
归结为一句话:对于C语言初学者,建议使用Windows系统和集成开发环境。准备“大师”方向时,请先转Unix平台。
三、万事俱备,即东风。
已经选择了书,并且已经配置了环境。正所谓万事俱备,只欠自己的努力。请从书的序言开始,认真阅读教材。很多人喜欢直接从第一章开始读,这是不对的。前言是作者对全书的概括性介绍。作者一般会告诉你需要什么基础才能顺利看完这本书,可以帮助你检查自己是否具备基础知识。看完序言,还需要浏览目录,了解书的整体结构,顺便给自己安排一个学习计划。
学习C语言,一定要注意每一个细节。必须自己敲书上的示例代码。只有编译执行后的输出和书上的一致,才算学完了一个例子。如果不符,一定要认真查找原因。出了书中的例子,我还得“创造”一些例子。比如在学习运算符优先级的时候,我可以写几个相同的表达式,把括号放在不同的位置,看看有什么不同的行为,比如*p++和(*p)++,或者a = b == c,(a = b) == c和a = = (b = =)。自己抄的书里的例子,改造后的例子,自己创造的例子,都要认真分类保存,并在源代码里写一个简短的注释,说明这个例子的意图。
例完了,还有练习。建议初学者独立完成所有练习,然后对比答案的代码,看看自己的代码有哪些不足,再尝试修改自己的代码。很多人不重视习题,这是一个很大的错误,因为作者通常在习题中讲解一些重要的道理,而不是简单的检验之前的知识。
也许你觉得学起来太慢了,其实不然。认真学习就不用回去了。后来学的时候发现前面没想通。那真是得不偿失。一般来说,看完整本书,不管是原封不动地从书上抄下来的,还是自己心血来潮写出来的,都要完成几千行甚至上万行代码,这对以后继续学习是一笔财富。以我自己为例。在看《Windows核心编程》的时候(只看了3/4的内容),除了照抄书上的代码,还写了很多例子。一个* * *有5574行(unix下wc工具统计)。过了很多天,Windows的系统编程我很久都记不住,但只要花几分钟把之前的代码翻出来了,我就又知道了。就是这个原因,好的记忆力不如烂的文笔。
认真阅读,认真抄写源代码,独立完成习题并做进一步的实验,最后把所有代码都留下来作为自己的经验和财富。绝对是辛苦的工作,事半功倍。当然,这种方法只适合学习需要掌握的技能。如果不是学C语言,要具体情况具体分析。