第一个阶段从编程之初一直延伸到20世纪70年代中期。那个时代的编程书籍往往是IBM等大公司营销预算的副产品,继承了战后大多数工程书籍的枯燥做法。他们很好地达到了他们的目的,尽管他们几乎不被记住。我们在本系列的前一版中已经介绍了一个这样的例子;可以说,对这些大部头的处理针对的是不同的时代和不同的心态。
第一个时代的一个有趣的、持久的、虽然较晚的例子可能是Pascal的创建者Niklaus Wirth的经典著作“算法+数据结构=程序”;这是本系列中值得推荐的读物。
第二个时代堪称“你好,世界!”时代。它始于受人尊敬的Kernighan&Amp;Ritchie的“C编程语言”。在那个时代,大多数编程书籍,或者我敢说所有的书,都包含了某种“Hello,World!”第一章中的演示。通过控制台获取这些单词是大多数开发人员与大多数编程语言的第一次接触。Stroustrup的关于C++的书,Dave Thomas的关于Ruby的书,Kochan的On Objective-C的书,以及阿姆斯特朗的关于Erlang的书,都包含一个“Hello,World!”前几章的练习,或其中的一些变体;我将把寻找其他参考文献的练习留给读者。
这些编程书籍的结构为该领域的每个人所熟知;第一章重点介绍了语法的关键元素、编译和运行代码所需的机制和命令,以及接近尾声的一系列日益复杂的主题章节。文本和代码,冲洗并重复。
我承认我是这方面的罪魁祸首,我最少写过一本这样的书。让我向那些幸存下来的人表达我最诚挚的歉意。
有些人可能会争辩说,第三个时代是“有效”时代,Meyers的Efficient C++、Bloch的Effect Java或Wagner的Efficient C#等书就是旗舰例子。但我认为这些书,尽管它们很有用,但只是第二时代的产物,是一次亟需的升级。那么,我们可以说,那是编程书籍的2.5时代。
第三个时代实际上始于“Head First Java”的出版,并在2005年出版了第一本畅销书“Head First Design Pattern”。在这个时代,书籍不再是枯燥的页面序列,只有代码片段可以在附近的计算机上运行;它们的页面充满了例子、图片和乐趣。代码示例可能包括偶尔出现的“Hello,World!”在这里或那里引用,但它们绝对不只是复制、编译和运行。这里面有情感。
(当然,并不是每个人都喜欢这个想法。我不会链接到这些页面中的评论;遗憾的是,它们很容易找到。如果要考虑人性,那么对这些书的观点持这样的消极态度是意料之中的,即使达到的程度是令人费解的短视和充斥着近乎愚蠢的东西。但我跑题了。)。
作为技术书籍这种新方法的早期例子,如果不承认“哦!”这句奇妙的话,那就大错特错了。帕斯卡!“。系列丛书,由Doug Cooper从80年代中期到90年代中期撰写,在PC早期对Pascal编程语言的普及起到了很大的作用。
尽管有这样一位杰出的前任,但正是凯西·塞拉引发了编程教学方式的重大、更深层次的改变。老实说,这些书本身就已经是一个重大的胜利了。她的工作发生在互联网繁荣为新想法打开大门的时候,就在Web2.0热潮中间,就在智能手机和社交媒体崛起之前。
凯西·塞拉认为,通过使用漫画图像、不同寻常的文字布局和奇妙的幽默感,读者可以更容易地学习这些概念;欺骗大脑进入适当水平的多巴胺。自嘲的程度如此之高,以至于“Head First Design Patterns”导论章节的封面图片展示了一对20世纪50年代的夫妇说“我不敢相信他们把它放在设计模式书里!”
在取得第一次成功的基础上,O‘Reilly开始了新的系列,最著名的是“美丽”系列,以带有采访的书籍为特色;让人想起了神奇的“编程策划者”,我们将在未来的版本中单独介绍这一点。更多的Head First图书问世了,其中一些,在封面照片中,自豪地坐在我的书架上。
Head First系列图书是一个标志,在可获得性和相关性之间达到了完美的平衡;这一点在绝对和完全相反的方向上都做得过火了,这一点“给笨蛋”系列和大多数艾迪森·韦斯利(Addison Wesley)的书都做得过火了。有趣而不古怪;令人难忘而不幼稚;正确而不迂腐。
另一方面,他们也引发了轩然大波