跟在天才后面学打怪
-------(读《Exceptional C++》有感)
今天想结合C和C++的学习历程,介绍一下几位牛人,以及学习的些许感悟。在我眼里,牛人==英雄,而推动人类历史发展的从来都是少数的牛人/英雄。当然你或许很不习惯这种说法,因为我们小学时的《思想道德》书一直在强调着两个观点“集体的事再小也是大事,个人的事再大也是小事”,“摒弃个人英雄主义”。“集体主义”和“个人英雄”是“表面”意识形态的问题,就像权力理论上是大家的,其实还是小家的,这东西大家知道就行了,讨论起来没啥意思,也不利于社会和谐。废话少说,赶紧切入正题,下面先介绍几位直接、间接给社会做出很大贡献的牛人
首先是丹尼斯·里奇(Dennis Ritchie),在哈佛大学获得学士学位,并在哈佛以肄业生资格学习物理,以研究生资格学习应用数学,1967年进入贝尔实验室,C语言之父,UNIX发明人之一,1983年图灵奖获得者,1999年美国国家技术奖章获得者。C语言目前是使用最广泛的计算机编程语言,对现代的编程的语言如 C++,C#, Java, JavaScript, Objective-C等拥有极大的影响。几乎可以肯定的说,这些现代语言就是在C语言的基础上发展的。C语言简洁、生动、准确,一出现便以摧枯拉朽之势俘获了无数程序员的芳心,更引来很多物理、数学天才“弃暗投明”到计算机领域。如果把写程序解决问题看成打怪,那么C语言无疑就是一套非常犀利的武器,让程序员披坚执锐,加魔加血,攻击力和防御力都大增。当你拿着C语言像斯巴达勇士一样站在温泉关前杀退一个又一个敌人时,你一定会感激那位白胡子老者,纵然他已经离开人世。
在贝尔实验室,丹尼斯·里奇有一位同事叫比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup), 1979年获得剑桥大学计算机科学博士学位,C++之父。比雅尼发明了C++,写下了它的早期定义并做出了首个实现,设计了C++主要的辅助支持环境,并且负责处理C++标准委员会的扩提案。此外他还写了一本C++的经典教材《The C++ Programming Language》,不过这本书感觉对初学者来说有些艰深,另一本经典教材《C++ Primer》对C++初学者来说更容易上手。C++在语句语法上和C语言几乎一样,但它是一种面向对象的语言,泛型编程语言。C++中的模板功能使工程在编译器能完成很多工作,能提高不少运行效率。从直观上看C++比C多了类和容器,正是这两者让C++比C更加健壮,也让程序员变得更加自由。在工程中程序员根据需要,有针对性的写一个类,无疑可以有效的避免代码重复,也让代码的维护变得更加容易。如果把程序员比作作战的勇士,那么C++就像一个牛逼的军火商,勇士在不同的作战环境下,可以根据需要,迅速的制造一些有针对性的武器。这无疑是相当犀利的。
你是否还记得,在高中时,学校总是组织各种月考与周考,其中有些出题老师总喜欢出些有陷阱的题,然后不怀好意 的等着大家往里跳。每次考试之后,很多同学会大声疾呼“没注意”,自然是跳进挖好的坑里了,不过,每次跳进陷阱之后,我们也变得更加“聪明”,对某些经常设陷阱的知识点理解得也更加透彻,老师美其名曰:“查缺补漏”。这是一种极其高效的学习方法--“从错误中学习”,最近在软件工程课的读书名单中选了一本聂雪军翻译的《Exceptional C++》,看过之后,觉得这本书的大致育人理念就是如此了。作者在其中广设机关,一不小心就会跳进去,没办法,只能一页一页的跟着他在C++各种Exception的风暴中突击前行,有惊无险 的安全着陆。有时,你不得不想设计这么多陷阱的人是怎样一个精明,古怪的家伙。
书上作者署名Herb Sutter,就维基百科了一下,结果就石化了,作者Herb Sutter是C++标准委员会的主席,出了一系列的Exceptional C++方面的书。不禁感慨自己真是孤陋寡闻。于是就想到豆瓣上看书评,一搜发现,评论竟然少于10条,看来国内读者不多啊。
在书的序言中,Scott Meyers(又一位让人膜拜的大牛)这样说“这是一本写给已经熟悉C++----熟悉C++的一切----的人看的书。从语言特性到标准库组件再到编程技术,本书从一个主题跳到另一个主题,总是使你处于些微失衡的状态,总是确保你专心致志。”好吧,连大牛都承认看这本书有些许失衡了,我只能说这是一本“痛并快乐着”的书,“痛”是因为在这本书中我是逢陷阱必跳进去,“快乐”是这本书有详细的解释,在你跳进陷阱之后会给你一个向上攀爬的梯子。每次有时间,当成小说来翻一翻这本书,被虐之后总会有不同的收获,摸爬滚打之间对C++也有了更深的理解。想起和朋友一起学习轮滑的过程,“摔得越多,学的越快”一直挂在大家的口头,不禁欣然。
Written by 李明磊