你欠自己一个老学究的身份

Posted on 2011年03月2日

本文是从 You Owe it to Yourself to be Old-School 这篇文章翻译而来。

豪斯医生

我喜欢看电视剧《豪斯医生》,我最喜欢的情节是他设法诊断一个人的病情时不是根据获悉这种罕见的病症,而是根据对身体各部位的运作的整体的了解,从而定位出真正的问题所在。

我发现这个事可以和一些极其重要的、但往往被很多编程人员忽视的工具和知识之间做很好的联系。Joel Spolsky 数年前就说过:为了对开发环境有全面的了解,开发人员应该学习C语言。我却认为,这个问题实际上应该被提到一个更高的层次。

通过学习C语言和一些系统编程,你能获得对你所使用的大多数的工具的基本原理上的掌握。如果你不亲自做过内存分配管理,你怎么可能发现和真正的理解内存泄漏呢?

如果你的程序或你使用的应用突然爆出连接错误,你会怎么做?或者你安装的Apache服务器不正常工作?对于这些情形我的首选工具就是直接打开网络分析工具Wireshark,看看数据都是怎么走的。通过对TCP/IP基本原理的掌握,你能很迅速的查明大部分的网络问题。

别让我两手空空的使用shell。不管你怎么想,让shell-fu陪伴你。对于任何你能想到的文字处理工作,对于绝大多数简单的处理任务,你可以只用几行shell代码,在最最短的时间里搞定,这比使用需要半天才能启动的集成开发工具都要省事快捷。

道理是不胜枚举。阅读一些Linux内核的函数可以帮助你理解为什么Java突然的就不生成子进程了。搞懂安全问题(注入,缓冲器溢出等)是如何发生的,是唯一的你能在设计阶段就能发现问题,而不是在事后哭鼻子的唯一方法。

不管你是使用Rails还是什么不需要指针的东西。通过对事情有全面的掌握来帮助你快速的、Dirk Gently式的解决问题是毫无疑问的。我为什么要在这篇文章里说这些?因为在过去的几个月里我用这些古董级的知识解决了我真正的问题。

为我们自己好 —— 读一读《C程序设计语言(第2版新版)》,学一些C语言知识。读一下《 TCP/IP 详解(卷1:协议)》这本书。翻一翻《Linux内核设计与实现》,通览一下其中有兴趣的部分。这些知识永远不会过时。你敢对你最喜欢的那些框架说这句话吗?

 

有底蕴的书籍:

TCP/IP详解(卷1:协议)

计算机网络

数据结构和算法

C程序设计语言(第二版)

Linux内核设计与实现