程序员修炼之道15 纯文本

走过了务实的哲学和务实的方法,开始了新的一章叫做基础工具,第一个话题有点奇怪叫纯文本。

大体的意思是使用纯文本来保存知识,这里面有几个我没有完全明白的地方,第一所谓的知识包括哪些,从程序的角度来说所谓的知识包括又哪些?第二个问题是为什么要强调纯文本?纯文本的对立面是什么?

思考一下,从书中给出的例子来看,知识的内容比较宽泛,主体部分是程序的输入和输出。第一部分有一点现实意义。

程序总有输入和输出,在TMS中数据的输入与输出基本上是excel的形式。excel的形式其实并不确切,因为按照纯文本的定义,excel专属格式并不属于纯文本,但是如果是excel兼容的文件CSV,就是一个纯文本。

那么看看在我们的系统里是采用了哪种呢?据我的了解,输入部分以excel专属格式为主,输出部分也已excel专属格式为主,部分是CSV格式。为什么呢?主要的考虑还是用户的方便程度,excel是一个用户更易打开,更友好(方便做一些格式),更容易获得,如果excel保存成CSV还需要另存为。所以在这个意义上excel格式似乎成为了更通用更友好的交互手段。

不过最近我们也做了一些调整,将大数据量的下载改成CSV,直接的好处是处理速度更快,这也是纯文本的优势之一。此外在系统间交互基本上也是采用了纯文本的方式的。

此外程序本身的知识,也更合适用纯文本保存,比如代码基本上是用纯文本,Java源代码肯定比编译好的class文件更容易知识的传承。

第二个问题纯文本的对立面是什么呢?我的理解是需要依赖于其他工具才能解读的知识保存方式,比如上面说到的excel就需要office应用来打开。

那么为什么纯文本是一个好的选择呢?书中给的理由是人类可读和自描述。这个理由精准而充分,知识要传递到人脑中才能完成传递,人类可读和自描述将知识的依赖降低到了最低,你只要有这个文件本身加上理解力,就能明白知识的内容,不依赖于其他外部的条件,当然是能够更长久留存的方式。所以实际上纯文本的特点很好的契合了微服务的思想,自成一体,低耦合,少依赖

那么最后回过来看我们会把输入输出的excel文件换成CSV纯文本方式吗?短期来看不会,因为excel有用户友好度方面的优势,而且他足够普及而强大,依赖它目前来看并不存在特别的风险,所以也是较合适的一种知识传递方式。

推荐阅读更多精彩内容