狂人C:程序员入门必备
本书面向所有的C语言初学者,并假定读者不具备任何编程经验。甚至,读者只要具备中学的文化程度,就完全可以把这本书作为自学教材,来学习C语言程序设计。
尽管如此,本书的内容却又是全面详尽而又不失深度的。因此本书对于拥有了一定C语言编程知识和一定编程能力的读者(比如那些通过了某某等级考试但却恍然发现自己根本不懂得编程的大学生们)来说,也具有相当的参考价值。因为本书在某些方面和某种程度上,针对的是国内C语言学习中存在了多年的积弊和流行甚广、积非成是的曲解及误区。
本书的内容并非仅限于讲解C语言的语法,同时也涉猎了怎样用C语言进行思考并解决在实际使用过程中可能遇到的诸多问题。
C是什么
C语言是一种强大、高效、优美的程序设计语言。自20世纪70年代问世以来,不但一直深受专业人士的重视,而且赢得了无数业余爱好者的青睐。同样,C语言也普遍地被认为是一种极佳的程序设计入门的教学语言。
最初,C语言是作为一种程序员的工作语言而出现的,实用、简洁、高效、表达力强、可移植性好是其公认的基本特征。
C语言的处女作是计算机史上具有里程碑意义的操作系统——UNIX(1)。UNIX的两位作者还因此获得了1983年的图灵奖(2)。评审委员会对UNIX的评价是:“UNIX系统的成功在于它对一些关键思想所作的恰如其分的选择和精悍的实现。UNIX系统关于程序设计的新思想和新方法成了整整一代软件设计师的楷模”。而完成这种“精悍的实现”以及描述“程序设计的新思想和新方法”的就是C语言。
此后,C语言迅速地成了软件业最重要的一种程序设计语言,独领风骚,风靡一时。后来的多数操作系统都是用C语言编写的,同时C语言也成了编写其他应用软件的首选语言。
C之近亲
20世纪90年代,从C语言发展、衍化出了C++、Java等程序设计语言,它们都与C语言有接近或相似之处(3)。这些语言目前在软件业也都具有很重要的地位,然而这并不妨碍C语言本身仍然是软件行业的一种主流语言。事实上,在某些领域,如嵌入式系统开发等,C语言始终是一种不可替代的工具语言。
精通C语言是掌握C++等语言几乎必然的基础和前提。精通C++而不懂C语言者,未尝闻之。因为在某种意义上,可以不太精确地说,C是C++的子集,C++是对C的扩展。
类似的,一个精通C语言的人,只要树立了面向对象编程的思想,过渡到掌握Java语言并没有什么本质的困难,但反过来从Java语言转到C语言就很难说了。原因在于,Java语言是一种面向虚拟机的语言,它隐藏了真实机器的细节;而C语言则是面向真实机器的。就目前来说,C语言是最接近于机器语言的高级语言之一。
为何学C
C语言更接近于机器语言的这一特点,不仅决定了它的代码效率很高,而且使得它在作为一种教学语言时,能使学习者更为深刻地理解计算机的工作机制以及程序的本质。无疑,这将为学习者的软件职业生涯打下坚实的技术基础。
在程序的结构上,C语言易于体现结构化程序的设计思想。使用C语言更容易写出可靠、易懂的代码。同时,C语言不像Pascal那么严格、刻板,相反,C语言是一种充满着自由气息的语言。这种自由体现在它的创造能力之中:丰富的运算,强大的构造新数据的能力和对思想清晰、简洁、自然的表达方式。
然而自由并不是没有代价的,这种代价就是需要对错误保持永远不懈的警惕。编程需要清晰的概念、缜密的逻辑和精确的描述。而使用C语言编程尤其如此,因此C语言无疑是培养学习者软件职业素质和塑造核心技术能力的极好素材。
C语言是简洁的,但却是有力的;C语言是平易朴实的,但却是优美雅致的。只要你愿意,你总是能够通过C语言从容不迫地表现出你的创造力,这就是C语言的魅力。然而,这并不是轻而易举就能做到的。所以使用C语言编程既是一种美的体验,同时又是一种对个人智力的挑战和提升。