历久弥新的编程书之——C专家编程

有些专业书,即便不是专业人士,甚至完全不懂书里的概念和逻辑,也能看得津津有味。说明了:作者是个有意思的人,文笔不错。比如《资本论》,即便书里说的经济学已经末路,那些振聋发聩的判断句,拿来放在作文里,还是有如天神下凡一般震撼。

本书英文原版Expert C Programming Deep C Secrets——“深深的C语言秘密”没有翻译出来,看似是一本面向高级读者的高冷书籍,但只要看看前言,就发现作者平易近人就像跟你面对面唠嗑一样。反例是当年红极一时“深入浅出”系列,故作高深和云山雾罩,恐怕是台湾知识界从“民国范”里继承过来的一贯做派。

天下谁人不识君的C语言

C语言是我国是理工大学专业必修课,甚至被某些文科专业列入必拿学分。有人说落后了,应该讲讲与时俱进的比如Java/Python等等。这个观点有两个问题:作为基础,能将计算机体系结构、操作系统、数据结构、算法等核心概念传达给学生,就是合适的方案。而C语言的抽象层次——作为高级语言里低级语言)正好能将这一切融会贯通,堪称完美。

第二所谓时效,不外乎为了让学生一毕业就能凭手头本事找到对口工作。然而产、学、研这三种机构永远存在时差,所以教育,还是受人以渔最重要,只要有了自学能力,面对什么样的新知都能轻松应对。而“半年培训,包分配工作,月薪八千起”的各种培训班,在通晓套路的HR那里,都属于直接过滤掉的关键字。

炙手可热和细水长流

生产领域,一些框架和工具会突然间窜红,一段时间内刷爆所有论坛头条,但“其兴也勃焉,其亡也乎焉”,很快就在更加“小鲜肉”的崛起中默默无闻了。十几年前的例子有桌面应用开发基础MFC,和它的竞争对手VCL;基于python的CMS产品Zope/Plone。

近几年因为生产力大幅提高,更新换代加快,例子就更多了,就拿前端构建工具:自从node.js必备包管理工具npm诞生后,项目构建就可以通过npm script来完成:

"scripts": {
"demo": "./demo.js"
}

缺点是什么都要自己写。很快grunt就出现了,提供各种目标依赖关系,可以用插件,将构建自动化框架完整搭建出来。然而有人嫌它配置文件Gruntfile.js太臃肿,出品了gulp,完全以io流为基础,配置文件大小可以减少1/3。但万变不离其宗,只要了解了Unix系统Make工具的用法,这些工具都能很快掌握,因为基本逻辑都是一样的。

为什么以前端开发为例?因为js的易用性和v8引擎的助推,社区非常活跃,新工具和库层出不穷。“三天不学习,赶不上xxx”对前端开发者不是玩笑,而是事实。这也使社区风气变得激进,和BSD社区“只要它不挂,我就不动它”的理念正好相反:underscore不好使吗?但我一定要fork一个lodash出来,而不是在原软件基础上优化性能——爱重新造轮子可能是程序员的职业病。

程序员的自我修养

医生只要掌握了某种病症的治疗方法,除非有划时代的革新出现——比如青霉素——直到这个医生给职业生涯最后一个病人治疗,都可以使用。而且以往病例还可以作为经验加成。还有律师和判例、老师和教案,投入的精力,不会轻易成为沉没成本。而信息科学支撑下的互联网环境,各种工具、知识的完全折旧周期是两年——如果两年不在第一线工作,再回来的时候就发现完全不认识了。

所以有程序员哀叹,当年为什么没去医学院或者法学院,真是男怕入错行啊......

“以上全错”。

我们面对的事物并不是物理学里抽象成的质点,而是有体积有温度的实体。具体分析,每个行业都可以分成“里子”和“面子”,对应基础知识和上层应用。比如医生律师的病例和判例,实际上是“面子”,真正不变的“里子”,是生物学和法律。而互联网业的基础,是计算机科学,计算机科学的“里子”,还是上面说的“计算机体系结构、操作系统、数据结构、算法”。这些知识在量子计算真正靠谱之前,也是一辈子受用的。

而飞速更新的“面子”,比如github上海量的工具库和应用框架。对待这些,“工作需要,我才研究”。赶时髦每天体验HN和PH上每一款新货,估计看都看不过来。

还是说说书

作为教材,选取方向很重要,是告诉学生怎样才能不出错,还是指明实际应用中应该怎么做,对学生的塑造完全不同。前者很可能让学生纸面考试能得高分,然而面对纷繁复杂的实际应用,还是不知道应该怎么做。而后者源于生产,做“看程序写结果”习题估计还是会错误百出,但解决具体问题时,往往成竹在胸。“看程序,写结果”——“你要敢这么写程序就开了你”,相信tech lead们看到谭版C语言教材的习题后都会这么敲打团队成员。

具体到C语言,前面说了是作为融会贯通体系知识的完美切入点。但具体到每一项知识,比如内存指针,编译器链接器等等,学习曲线还是相当陡峭的。即便一个C语言30年老用户,也不一定能认出每一个陷阱。本书并不是教材,然而随手翻翻,除了写作风格让读者如沐春风,每每还能温故知新。只要“里子”巩固了,更新“面子”,还不是手到擎来?

你可能感兴趣的:(历久弥新的编程书之——C专家编程)