序
杨氏语录:为初学者选择C语言而不是别的语言,其最重要的理由是:C语言不把你当作傻瓜,并且假定你是一个勤奋、负责、耐心、细心和有品味(指活儿干得讲究)的人。
学习编程能够带给你什么
提出这个问题不是要为“为什么要学习计算机程序设计”找到答案,而是因为很多读者是在不了解情况的条件下被迫面对这个问题的。也就是说,很多读者所选择的专业要求他/她学习计算机程序设计。我也是在这种情况下面对这个问题的,而且我是在不清楚答案的情况下去学习计算机程序设计的。大学三年级时我们学习的是Pascal语言,这在当时对于我这个农村学生来说,的确是一个不小的挑战,因为我读中学的年代还不是“计算机要从娃娃抓起”的年代。
然而,不愿服输的性格使我坚持了下来,并且对计算机很有兴趣,一直走到今天,做起了讲授计算机专业基础课的大学教授(撰写本书时,我已经教授N个礼拜啦)。可以说,设计计算机程序很对我胃口,因为这项工作要求我完全独立地思考问题!编程问题往往不存在唯一的解,你可以先找到一个解,还可以继续对这个解进行优化。这会让人很有成就感。
编程不是按照公式进行计算,很多教材还会有错误。不过这没什么,我们完全可以利用计算机编程检验到底什么是正确的,这就容易使我们摆脱本本主义,而且我们也很容易获得与高手或者老师讨论的资本。
编程还训练人的逻辑思维能力和规则感,最主要的是它训练人的逻辑思维习惯,提高逻辑思维的缜密度。因为逻辑上的含混会导致你的程序“发疯”或“犯傻”,给你丢脸。不容忍含混对于任何搞研究的人来说都是一个很重要的素养。
去创造一些可检验的东西并有机会去检验它,是一种充满科学理性的生活方式。因为要检验,我们才要准确描述那个东西,所以才无法容忍含混,才不会陷于概念辨析和思辨而无法自拔。这算是我最深刻的体会了。这种理性就是科学理性。这种理性精神让你时刻检验你自己或者他人经验的有效性,并有助于降低生活和工作中的风险。
“接受—怀疑—猜想—检验”的过程是一个很过瘾的精神享受过程,因为它彻底凸显了人存在的本质—追逐自由!它虽然不代表人类精神生活的全部,但是这种精神享受给人带来的快感只有那些有过类似经历的人才能领会。
还有,编程会使你的精神进入到计算机世界中,并开始接触到与你同样聪明或者比你更聪明的人,与他们交往本身就是一笔财富。
总之,我独立思考的习惯、对科学理性的尊重和批判意识都与计算机程序设计的经历有着很深的渊源。当然,并不是只有学习计算机程序设计才会具有这些人格特征,我只是说,学习计算机程序设计有助于形成这些人格特征。
为什么是学习C语言而不是别的
的确,现在几乎没有人用C语言去编写真正的商用软件,而是使用C++、Java或者C#等语言来完成商业软件的开发。那么我们为什么还要学习C语言呢?直接学习那些商用语言岂不是更加有用?
但是我的建议是,最好不要直接学习这些语言,而应该先学习一门入门语言,为学习这些商用语言打下基础。C语言绝非浪得虚名!之所以大多数高校将它作为入门语言,是因为它对程序员的训练是完整全面的,而且它缩短了程序员与学习商用语言的距离。C语言的学习经验使得程序员很容易掌握其他任何计算机语言。C语言的调试经验也很容易移植到其他语言中。
曾几何时,大学计算机专业将Pascal语言作为计算机专业的入门语言。然而现在大多让位给C语言,这足以说明C/C++语言的成功。很多其他计算机程序设计语言的后起之秀在句法的设计上都自觉或不自觉地与C/C++语言相一致或者相似。仅仅这一点,我们就有理由将C语言当作入门语言。由于C++语言的知识含量也很大,很难在一门课程中同时学习C语言和C++语言,所以大多数大学将C语言作为入门语言。
计算机的内部世界完全是人造的世界,对于这个世界的描述是无法使用自然语言的。要想控制计算机,人必须采用单独创造的语言来描述人类的意图,这种描述还必须被翻译成机器指令才能够被计算机执行。这些人造语言中,C语言是佼佼者,它是一种功能强大而又灵活好用的编程语言。
然而,这些在我看来还不算是最重要的理由!为初学者选择C语言而不是别的语言,其最重要的理由是:C语言不把你当作傻瓜,并且假定你是一个勤奋、负责、耐心、细心和有品味(指活儿干得讲究)的人。这里的傻瓜是指只知道读书考试的那种人。而我们大学生被当作傻瓜已经很久了!
我相信我们中国的大学生们都是很勤奋的,但是普遍缺乏独立思考习惯和足够的耐心、责任心和细心,当然品味更需要在大学里培养。
C语言的学习不是一个简单记忆句法格式的过程,而是一个提高程序设计素养的过程。C语言的句法非常灵活,这给程序员一个很大的自由发挥空间,但是自由和责任从来都是一体的,享受多大的自由就需要负多大的责任。C语言程序中需要很多合法性的检查,但是C语言编译器并不做这种检查,而将这个任务交给了程序员。同时指针、数组的使用,使得程序的调试变得繁杂起来,这些都需要程序员耐心地调试,缜密地思考并不断总结经验提高自己的设计能力和培养自己优良的编程风格,而不是照搬其他高手的作品。
每一个成功的C语言程序员都是具有独立思考、勤奋、耐心、细心、负责等人格特征的人。当然,成为一名优秀的程序员并不是学习C语言的必然结果,而是程序员自己的选择。人的本质是自主选择,人创造了他自己的本质,虽然这种自我塑造受制于特定的社会历史条件。
超越自我就是成功!超越自我才是成功!
你准备好了吗
如果你没有读书的冲动,没有准备好耐心和勇气,就不要拿起书!C语言的掌握不是死读书的结果,而是在读书之后,思考、上机调试和潜心尝试的结果。所以,下面的建议对你绝对有用:
● 避免单独学习,寻找固定的学习伙伴一同学习,这是自觉维护学习动力的做法;
● 与其苦思冥想,不如动手尝试;
● 与其问老师,不如编写小程序检验你的猜想;
● 学习C语言需要你的智力正常、态度异常!也就是刻苦!
● 加强记忆的技巧—画概念图
相信我,学习C语言一定是痛苦并快乐的过程!C语言虽然是一种挑战,但无需严肃。这不是一个严肃的时代。放轻松点,不就是一种人造语言嘛。学习原本就不应该是一种严肃的事情,我们要以平和的心态对待学习,并不时地自觉培养自己的好奇心和兴趣。这个自觉性的高低决定了最终的学习结果。