可以说,计算机的目的,就是处理数据,而数据,本质上是以文件的形式进行存储的。
常见的数据存储软件,就是数据库,数据库是在计算机程序和文件中间加了一层,其目的是为了得到更快的数据读写速度。比如说,现在有一个文本文件,里面有1万行数据,要求你把其中的一条读取出来,你可以写一个程序,把文件装载到内存,然后遍历这个文件,找到那一条数据。可是如果有一百万条数据的时候呢?恐怕你再遍历,速度就慢的让人难以接受。这时候就要考虑加索引、优化数据存储结构(例如用树来存储)等方法,来加速数据检索的速度。而数据库这个软件,就是帮你来加速检索的。
但是通常来讲,只有一个系统被开发的时候,才会用到数据库,普通用户接触不到数据库,因为数据库的查询语言,对用户来说就像乱码一样。而被开发的那个系统,就是用户交互的界面,这样用户点点鼠标,敲击键盘,就完成了数据的处理、检索等操作。
在大多数情况下,用户会直接用程序处理文件,来完成数据的读写和处理,不同的数据被保存成不同的文件格式,由不同的程序打开。今天,简单写写常用的文件格式,以及我认为的他们存在的价值。
纯文本
纯文本文件是最常见的文件格式之一,基本上所有的系统,都具有文本处理的能力。这种文件格式,打开就是数据,比如文字、字符。
它的优点很明显:简单、快速,能打开和编辑它的软件非常多,程序处理它也非常容易。
它的缺点也很明显:不具备多媒体格式,比如说,不能插入图片和文件(Base64等编码格式除外),没有丰富的样式,例如,不能显示图表、超链接等内容。
办公文件
就是我们常见的office文件,doc、ppt、excel,当然还有很多开放的格式,WPS也有自己的格式。
这种文件格式,是当前办公的主力格式,是普通用户接触最多的文件格式之一。
办公文件的优点是:格式内容非常丰富,可以插入各种多媒体文件,表格、超链接等格式也全都支持;处理软件也非常强大,有很多软件可供选择;所见即所得,通常来说,输入的格式内容,也就是最终看到的内容形式;上手简单容易,当然,想用成专家水平,也挺难的。
办公文件的缺点也非常多。
- 格式非常庞杂,有不同的软件产生各种不同的文件格式,而且文件格式之间并没有统一的标准,这就导致了有些文件格式,用其他的软件打开会形成数据排版的错乱。即便是同样的软件,使用不同的版本,处理同样的一个文件时,显示效果也不相同。另外,格式的复杂进一步加剧了这种混乱,例如,不同的办公软件,在插入公式方面使用了不同的方案,他们之间是不兼容的,导致了文件排版的进一步混乱。
- 字体的问题。大部分的办公文件,都没有把字体嵌入到文档中,而是依赖于操作系统的字体对文件进行渲染,导致了有些文件在没有字体的电脑上打开后是乱码或者显示非常奇怪的字体样式,尤其是在不同类型的操作系统中间,因为它们几乎没有共同的字体。
- 无法进行全文检索。当然,我并不是说你打开一个文件不能查找和搜索,而是在不知道这个文件在哪里的情况下,无法进行硬盘级别的搜索,只能搜索文件名,这对查找来说,产生了非常多的困难,导致有些产品,专门用来对办公软件进行检索,其原理是在后台读取硬盘上所有的办公文件,然后做成索引,给用户提供检索功能,即便是这样,和纯文本类的文件检索来说,效果仍然不能让人满意。这样就导致了一个问题,重度使用办公软件的用户,不得不寻找更加合适的存储方法,以完成文件检索和查找功能。
- 无法进行协作。这个问题的本质,是上述缺点的延伸。协作的意思是,大家可以共同编辑同一个文件,而不会产生冲突。在使用各种协作工具时,它们基本上只能融合纯文本的文件,办公文件因为其结构和格式的复杂性,绝大多数的版本控制和协作工具都无法支持。
PDF文件
PDF文件是网络上常见的格式之一。它的主要作用,是解决办公文件中的第一和第二个问题。PDF文件能够将数据组织成固定的格式,同时把字体嵌入到文档中,这样,这个文档无论是在网络上传播还是在电脑之间进行复制,都可以保持它原有的格式,而不会发生改变(理论上,实际应用中会有一些变化)。
因为上述的优势,PDF多见于一些正规的文件分享与传播,例如发票、准考证、论文、老师的课件等。这些文件用PDF传播,给人一种更加可信可靠的感觉,因为它的格式是固定的,所以通常来说,直接打印也不会产生字体和排版的问题,因此我们可以认为,它就像是一张电子的纸张,其目的,就是为了让文档中存储的内容,处于一种难以改变的,类似于印刷上去的状态。
PDF有了上述的好处,那么它的缺点也就呼之欲出了:修改起来非常麻烦。通常情况下,以PDF发表和传播的文件,作者的本意是不希望你去改变它的,因为如果文件发生了改变,意味着文件中的信息和内容将变的不再准确,例如:老师发布的课件,多以PDF形式传播,其目的,就是为了保证老师讲解内容的准确性和完整性。如果以办公文件形式发表,公式、图表等信息,可能会发生变化,这样,学生学到的内容会出错。
所以,使用PDF的修改功能,多数情况下只是对PDF文件进行批注,增加一些说明,而想要修改其中的内容,例如,改变准考证中的准考证号,难度较大。但是,也并不是说不能够修改,只是设置一个门槛,尽可能保证文件的准确性和完整性。
LaTex
LaTex不能算是一种文件格式,它应该算是一种排版软件或者说编程语言。使用LaTex,能够解决办公软件中的第三个问题和第四个问题,第一和第二个问题,其实是靠PDF解决的。
LaTex其实不能完全算是一种数据文件,应该把它当成一种编程语言,它的目标,是为了精准控制文档的排版格式。
办公软件的所见即所得,给文档的编写带来了简单操作的同时,也引入了不可控的因素。这里举一个简单的例子:
如果我把5级标题的字体大小,设置的和正文一样大,但是只是简单的加粗了,那么设置的这个标题,在办公软件中的样式,看起来和正文中的加粗,是一模一样的。
如果这时候,一个文档的编辑者在设置5级标题时,只是用正文的格式进行了简单的加粗,并没有应用标题的样式,那么无论是谁,都无法看出它们之间的区别。如果这时候,我们需要统一调整格式,要把5级标题,字号调高,那么这个看起来是标题的正文,将无法使用新的样式。这个问题,对于表格的位置、字体的设置等,都是一样的:那就是,有一些格式的差别,用肉眼是很难分辨的。
而LaTex,可以从一定程度上解决这个问题,它用编程的思想,严格控制文本的位置、字号、字体、颜色。对于上面的需求,可以设置一个5级标题的专用标签\h5 ,设置一个加粗的专用标签\textbf ,这样,这两个虽然看起来是一样的文本格式,在编码的底层进行了彻底的区分。任何一个编辑者,都可以看出他们之间的区别,而当其中一个样式发生改变时,那么应用于这个标签的文字,都会一起发生改变。
此外,LaTex的协作也是办公文件无法完成的。LaTex是一种编程语言,因此它的本质是纯文本。纯文本被编译之后,形成了PDF。因为是纯文本的,所以就可以很容易的实现协作。例如,将不同的章节分给不同的人去编写,只需要定义好统一的样式,然后把所有人的文件\input进来就可以了。同时,即便是多个人编辑同样一个文件,也可以很容易的使用版本控制系统来完成文本的融合,从而实现协作,这对一些大规模的文档、书籍等排版和编辑工作,非常友好。
最后,LaTex编译成PDF后,继承了PDF的所有优点:字体嵌入到文档中,并且保持格式的完全一致,就好像是印刷在文档中一样。
但是LaTex也有致命的缺点:门槛太高了。普通用户,连运行环境都设置不清楚,更不要提复杂的模板设置和格式定义,那更是看得一头雾水。
不过好处是,近年来LaTex的软件安装和环境配置的难度已经降低了不少,不过和办公软件相比,其易用程度,仍旧不可同日而语。
Markdown
Markdown是另外一种比较流行的文档格式,是从HTML语言简化而来。
HTML是网络上最流行的文档结构语言,但是普通用户用的并不多。它和LaTex类似,也有固定的标签,使用起来没有办公软件那样直观,有一定的门槛。于是就有人想,是不是可以用一种简单的,普通用户也能接受的语法规则,来编写文档,最终呈现的时候,像LaTex那样,用浏览器或者其他的软件,渲染(编译)一下,呈现最终的效果?就这样Markdown诞生了。
Markdown比HTML更简单,简单到只有十几个标签,只能做到标题、文本、图片、表格等非常有限的内容格式展示,所以它的功能性很弱,但是好处是用非常简单的方法,完成了富文本格式展示。在一个用户只需要简单记录信息的时候,例如一篇日记、一个说明手册等,这种简单的格式变的非常受欢迎。
Markdown的另外的好处,和LaTex类似,也是纯文本的,此外,它也是一种编程语言,在控制格式显示时,有语法规范,因此,它一定程度上继承了LaTex的优势,但是又没有那么重,比较轻量级,所以应用也比较广泛。另外,它可是使用任何语言进行渲染,因为是纯文本的,从原理上来说,渲染它的程序只需要将它的标签和HTML标签做一个简单的转换,就完成了样式的显示和输出,渲染的门槛非常低,这样网络上的一些网页,就完全可以使用Markdown进行编写。
结语
在信息技术发展的不同时期,不同的文件格式被开发出来并被广泛的应用,可以说,每一种文件格式,都有它独特的优势和魅力,在实际的应用中,我们可以根据自己的需要来进行选择。
原来数据库是最“高阶”数据存储方式啊
@xqiushi 不能这么说,数据库的目的是为了检索。如果程序读取的数据,每次都是全部的数据,比如一个word文档,你不需要每次查询其中的一段话,那么直接打开这个文件,比数据库要快,因为是直接读取文件,不需要有数据库这个中间软件来转换。
@老杨 可以理解为数据库在“遍历”查询有优势?
@xqiushi 差不多吧,基本上只要是查询,都有一定的优势,尤其是从一大堆数据中查1-2条数据,建一个索引,速度很快。