▲ 知乎上的同学抱怨学C语言很痛苦
C语言初学者如果没有找到合适的图书教材,在开始的阶段的确会非常难受。就像上面图中的同学一样,不仅没有思路,照着一些示例去写也是错误百出。既不会调试,也看不出关键问题出在哪儿,学习积极性遭受极大的打击。
那么真正的新手,比如刚进大学完全没接触过编程的学生要怎么去学习C语言呢?
今天小异就以一本在海外被许多理工院校选择作为专业课教材的《C语言程序设计》为例,和大家一起讨论如何让C语言学习变得简单。
▲印度多所一流理工大学在用的教材
01
印度多所理工大学选作教材
被翻译成为中、英等众多语言
让初学者学习C语言变得简单可不是一件简单的事,但是这本经典的《C语言程序设计》做到了,并且成为多所理工院校的教材和参考书,被翻译成为中、英、日、韩等多国语言出版。
海外多地区畅销,获好评无数
在Amazon上,这本书的英文版Let Us C 17Th获多数读者的满分评价,当前评分4.5(满分5)。绝大部分评价认为本书是“学习C语言最好的书之一”“适合初学者的最佳图书之一”“初学者的杰作”等,毫不吝啬地献上了自己最真诚的赞美。在这些读者中部分是学生,部分是其他对C语言感兴趣的人,但他们都有一个共同的特点——都是初学者。
▲ Amazon上读者对于本书的评价
这些初学者对这本书的评价用得最多的词是“简单”:内容通俗易懂,简单明了,对初学者来说不用思考太多就能很快理解书中的概念、示例和题例。
也正是因为如此,包括印度两大一流高校IIT(印度理工学院)和NIT(国立理工学院)在内的许多印度理工院校,都使用了本书作为相关专业的教材或者参考书。
▲ NIT Trichy(国立理工学院Trichy校区)关于专业参考书的说明(2017年)
自第一版开始,本书全球印刷发行就早超过300万册了(2017年统计销售达到近400万册),按照印度国内的媒体的统计,本书是当代印度书籍中卖出去最多的——不包括那些没有版权的经典图书。而且除英语外,还被翻译成中文、日文、韩文、印地语、古吉拉特语等语言,在中国、印度、美国、日本、新加坡、韩国等地区出版,并且销量可观,很受欢迎。
本书成为一代经典,对印度IT教育行业做出极大贡献,很大程度上要归功于其作者亚沙万特·卡内特卡尔。
专业的编程教育者
他本科和硕士的专业都是机械工程,在印度理工学院坎普尔校区读书的时候,专业需要接触了大量的计算机操作,还学会了当时流行的FORTRAN IV和COBOL语言。离开学校后的首次创业受挫,他听从印度国家银行的一位经理的建议,开设了计算机培训中心。
▲ 沙万特·卡内特卡尔2017年的办公室
这个过程中他意识到自己的计算机知识其实并不太够,在一边教别人的同时,也一边进行自我教育,疯狂地学习编程知识。一次偶然的机会,他买了C语言之父丹尼斯·里奇的C Programming Language来读,然后爱上了C这门相对BASIC来说更简洁的语言。当他拿这本书给学员们看的时候,得到的回答是看不懂——那会儿他萌生出了写书的想法,只是一直没去实施。
在给Express Computer杂志专栏供稿将近5年之后,他开始撰写Let Us C最初的版本。经过整整一年的时间,他终于将书写完,并送到德里排版(当时本地没有排版软件),之后发行立马受到了读者们的欢迎,在印度流行起来。之后,为了紧跟日新月异的技术发展,满足读者的需求,本书几乎每年都要重新编辑出新版。
此之后,他陆续出版了近40本关于C++、Java、C#、嵌入式系统等方面的书籍,为印度的计算机教育提供了丰富的教材和参考书。
由于他在创业、专业及计算机教育方面的优异成就,被印度理工学院坎普尔校区授予了久负盛名的“杰出校友奖”。同样的原因,他还被微软连续5年授予“最佳.NET技术撰稿人”和“最有价值专家”称号。
▲ 沙万特·卡内特卡尔被授予“杰出校友奖”
02
他让C语言学习变得更简单
他一直以来秉承的观点就是:(我)会学习、教授和写作任何自己感兴趣的东西。而本书能成为自己最受欢迎的书,且销量惊人,他认为最大的原因在于C语言的简单。不过,这个简单可不仅表现在编程语言之上,更表现在整本书的写作风格之上。
简单直白轻松易懂
他在写专栏作品的时候,就经常收到读者的反馈,知道什么是他们喜欢的,什么是他们想看的:简单易懂的内容才是大家的最爱,高深难理解的并不受欢迎。同时,他也知道了如何从头开始向一群从未接触过它的读者介绍一门新的技术,如何处理那些容易卡壳的知识点。
所见即所得,这五个字贯穿了整本书。
从最基本的概念,到作为示例的代码,还有作为辅助解释的图例,所有的内容都透露出一个信息:简单直白。这些内容并不是为了炫技,也不是为了表现专业而成的啰唆,全都只是用最简单的内容说明最直接的信息。没有拗口的概念,没有复杂的代码,也没有看不懂的图示。
比如C语言中允许使用哪些字母、数字和特殊符号?他直接一图流就解释完毕,没有任何多余的信息。
▲ C语言中使用的字母、数字和特殊符号
他认为学C语言和学英语有很多相似之处,并且完全没有大部分人想象中的那么难。
▲ 作者认为关于学C语言和学英语相似
没有废话,简单直接,通俗易懂,这就是本书的最大特点。不需要有编程经验和计算机知识,基本上只要认识字和有最基本的数学知识就能看懂书中的内容。
就像他说的:
你不能以一个100行的程序作为开始,然后(向读者)解释,没人会对这个有耐心的。应该从最小的工作开始,先写一个5行的程序,然后是10行的程序,最后才是100行的程序。
在最开始的阶段抓住人是非常重要的,作为第一个障碍应该设置得让人更容易跨过去,所以简单是非常有必要的。
章节习题巩固知识
但是不少时候说得再简单,也会有人表示听不明白,看了几遍之后还是表示迷迷糊糊。作者认为这种情形是很常见的,并不需要过多地担心。解决方法也非常简单,搭配章节末尾的习题来回顾章节内容,通过观察和思考题目对章节中关键的知识点做进一步定位和巩固。
比如这一个习题:下面哪些是非法的变量名?为什么?
▲ 习题示例
很明显,这个题目的知识点是C语言中变量名。然后应该先回忆书中关于变量名的创建规则是什么,实在想不起来了,再回去翻书找到对应的章节内容,查看具体的描述。在这里的关键是“变量名的第1个字符必须是字母或者下划线‘_’”,对照题目中的每个选项,就能找出哪些是错误的了。
大部分时候,章节练习题都是对章节内容的一个总结。让读者能够知道这章在讲些什么,在做题的过程中了解自己对于知识的掌握情况。同样的,这过程也是巩固加深自己对于对应知识点的认识和理解。
再有难度一点的习题,则是理论知识转化成为实践能力的一种方式。通过练习题目,读者能够将之前所学的知识点,应用到实际的程序中去——当然可能只是几行代码而已,但那也是真正能够运行起来的程序。因为学习C语言最终的目的是为了解决问题,那些工程问题对于初学者来说过于复杂,习题的形式则很好地成为代替,帮助读者初步认识到C语言的实际用途。
有了清晰的目标,学习进程也会更顺利。
课后笔记帮助备考
当然,这些还不够,本书中的另一大贴心利器让C语言的学习变得更为简单——课后笔记!
考试之前,什么复习资料是最吃香的?那当然是学霸的课堂笔记!里面精确地记录了老师讲的关键知识点,大大精简了要复习的内容,复习效率成倍增长!而本书中的课后笔记栏目则做得更彻底,这可是老师给的章节笔记,真正的圈重点,不是“我讲的都是重点”那种坑人的话!
▲ 课后笔记的示例
俗话说得好,好记性不如烂笔头。记性再好,也不如把那些关键的信息用笔或者其他形式记录下来,要用的时候记忆可能会丢失或者出错,笔记却不会变。而老师亲自圈的重点,做的课后笔记,那含金量就更上一个档次了!
这部分的精华内容,不仅能够帮助读者更好地掌握章节知识,还能够在考试、答辩之前提供非常大的帮助。对于在校学生来说,有了这本书,考试什么的还有什么好怕的?关键信息一目了然,重点概念简洁清晰,查漏补缺一个笔记全搞定。
本书简直是为学生量身定做!
03
契合高校课程设置
新增面试章节
不仅是这种有特色的栏目,整本书的内容安排也是根据学校课程,和学生需求定制的。
作者在以前的某个版本中对章节进行了重新整理,如果使用本书作为C语言程序设计的教材,那么用22节课(每节课1小时)就可以完成本书的学习,每节课正好讲授一章的内容!这种合理的安排能够让读者的学习之路变得非常顺利。
不少图书的章节安排就没有考虑到这点,章节内容多寡不一,可能前面三四章的内容还抵不上后面一章的内容。那样学起来就会时快时慢,很容易卡住,有的章节十几分钟学完,有的章节要几个小时才能完全理解,体验比较差。
这种具有针对性的内容设置,就比较科学,提升读者的学习体验,成为一本真正的专业课程教材。也正是这种科学的设置,印度那么多的理工院校才会使用本书作为学校计算机专业课程的教材或者参考书。
同样的,学生迟早会接触到面试这一程序。为了能够帮助读者顺利度过面试获得想要的好结果,作者未雨绸缪地在书中为此做了预演。
▲ 作者关于面试的讨论
他结合真实的C语言程序设计面试题目,在后面部分新增了“面试常见问题”的一个章节,其中包含78个面试常见的C语言问题。当然,还有对应的答案——只给问题不给答案也太不负责任了。这个章节的设置发挥了实际的作用,不少读者在读完这章后告诉作者,里面的问题让他们受益匪浅,在他们面试的时候发挥了不小的作用。
学习编程最重要的是动手。
所以在本书中,他还在每一章节增加了新的栏目内容——程序,里面包含了该章节所讨论主题有关的非常有意思的程序。这些程序可以作为一个课外拓展,帮助读者更深、更清晰地认识C语言。而这些代码还附带了输出结果,读者可以自己学着自己构建程序,看最终结果是不是与书中相同。
▲ 作者在指针章节后的设置的程序内容
书中的这些代码都可以从异步社区的图书对应页面进行下载,自行动手调试。
04
配套习题解答
丰富资源再度助力学习C语言
作为一本专业教材,更多的教辅资源那是必须要有的。其中能帮助本书发挥更大效果的《C语言程序设计 习题解答》,是本书的必备伴侣。
▲ 《C语言程序设计》习题全解答!
作为本书的配套习题集,这本《C语言程序设计 习题解答》在帮助我们巩固基础知识的同时,还能够全方位地检验自己在做本书中习题的正确性。通过对习题的思考和实践,再参考习题解答,可以改善和开拓我们的学习和解题思路。
当然,教学PPT这种重要的教学资源也是少不了的。它不仅能够辅助老师进行授课教学,还能够作为我们学生读者自学、复习的一大宝贵资源!
除了这些常规资源之外,购买本书还会附赠程序员面试电子书、思维导图、在线编程练习环境、源代码和C语言程序员快速参考卡片!一站式搞定C语言的学习和实践使用。
05
一本好的教材
可助初学者轻松踏上编程之路
编程语言的教材选择非常重要,每天都有大量学生吐槽自己学校使用的教材又老又不靠谱,难懂无趣,简直是磨灭自己学习编程的积极性!
而这本《C语言程序设计》历经17次更新,几乎每年都要根据C语言的发展而重新编写,符合实际需要,满足学生读者对新技术的追求。同时,整本书的简单易懂,也能够让学生读者快速跨越编程的初始障碍,轻松地踏上编程之路。
▲简单是这本C语言教材最朴素的评价