“人类可读”是什么意思?这是用词不当吗?


12

想到两个例子:

  • 鼓励.Net程序员使用.config文件而不是Windows注册表的原因之一是.config文件是XML,因此易于阅读。

  • 类似地,与专有格式相比,JSON有时被认为是人类可读的。

人类可读的格式实际上是人类可读的吗?在配置数据示例中:

  1. 格式不会改变信息的基本含义-在两种情况下,数据都代表同一件事。
  2. 注册表和.config文件在内部都存储为系列0和1。在这种程度上,人类同样无法理解基本的表示。
  3. 注册表文件和.config文件都需要一种工具来读取,格式化和显示0和1,并将其转换为人类可以读取的格式。对于配置存储在Windows注册表中的情况,这是一个注册表编辑器。对于XML,它可以是文本编辑器或XML阅读器。无论哪种方式,该工具都使数据可读,而不使数据格式可读。

那么,人类可读数据格式和非人类可读格式之间有什么区别?


3
取决于“人类”的定义是限于程序员/等等,还是适用于所有人类(如果是后者,那么几乎所有格式都可能在不同程度上失败)。
彼得·布顿

7
唯一可读的序列化格式是YAML。XML使我想大开眼界。
NullUserException 2011年

Answers:


35

从本质上讲,人类可读性是指,如果内容是通过对文件格式缺乏直接而具体的了解的程序显示的,则人们至少有合理的机会阅读和理解其中的某些文件。

您关于缺少清晰界线的基本观点是绝对正确的,尽管有一次,我认识一个可以在五分钟或更短的时间内诊断出程序问题(通常是用Fortran编写的程序)的人–仅从八进制开始核心转储,根本不用看源代码。对于大多数人来说,这种格式很难被视为“人类可读”的格式,但是显然他是一个例外。


14
+1:只要付出足够的努力,一切都是“人类可读的”。计算机中“人类可读”的实际含义是:纯文本,非结构化或仅由文本字符组成的某些结构。
Allon Guralnek,2010年

35

人类可读的意思是我可以在记事本中打开它,如果需要,可以将“ password = foo”更改为“ password = bar”。我不必使用专有工具来查看或编辑内容。

与无法使用简单的文本编辑器进行编辑的PDF相比,您需要一个知道格式的特定工具。或者是25年前某个应用程序随附的二进制.dat文件,您无法阅读,编辑或理解。


您认为RTF可读吗?
彼得·布顿

7
RTF是程序员可读的:-)。我已经手工编辑过,但是并不愉快。XML的可读性肯定不如JSON。在很大程度上取决于您的人类习惯-我的许多人都喜欢.csv而不是XML,但我肯定不会!
凯特·格雷戈里

3
您可能无法编辑人类可读的文件。我已经看到了很多内容易于理解的地方,但是它们可能具有一个带有例如十六进制参数值的检查字段,该值不容易计算并且基于文件内容。该值由应用程序用于文件验证。
uɐɪ

6
@Ian的要点-由于我们正在讨论术语,因此我们应该区分可读性和可编辑性。我认为,两者都是好事。
凯特·格雷戈里

我支持您的观点,即JSon比xml更具人类可编辑性(和可读性),仅仅是因为xml实体是如此痛苦。
Matthieu M.

10

在回答您的问题“人类实际上可以阅读人类可读的格式”时,顾名思义,这就是人类可读的含义。

没有人类可读的技术定义,它是主观的,并且可能对人类可能需要具备的知识水平有疑问(例如,他们是否需要了解XML的基本原理,例如标记和层次结构) ,如果他们了解数据存在的业务领域-我个人都会对两者说“是”),但是您的基本测试应该是是否向具有基本技术技能的人展示了数据,这些人了解数据的基本含义,他们可以阅读吗。

在实践上,这通常意味着:

1)数据以ASCII文本或其他类似的常见且易于识别的格式存储

2)有一个基本结构可以从基本检查中显而易见的合理结构。例如,您不必知道前X个字符与Y有关,那么接下来的X个与Z有关

3)数据和元数据通常都是英文(或您当地的语言),并且只需要了解问题域的有限知识即可-因此发票编号应在“ invoiceNumber”标签中,而不是“ uDef_Inbr”

4)对于明智的非文本数据,使用了可预测的约定(例如TRUE,FALSE,Y,N,1、0,而不是更开放的解释)


5

.config文件(对于大多数人而言)比注册表更容易编辑。打开专用的配置文件,查找相关数据并进行更改,而不需要打开会影响其他程序的编辑内容,这会更容易。


5

这都是关于易于理解(并且可能会发生变化)的问题。那么“ X可读吗?” 不应回答“是”或“否”。答案应该是某种程度的滑动。

潜在的例子:

  • 90%的程序员可以使用任何常用的文本编辑器读取和更改文件。
  • 60%的说英语的人可以使用任何常用的文本编辑器读取文件。
  • 80%的XYZ开发人员可以读取和更改文件,但只能使用工具ZYX。
  • 10%的YZX开发人员可以使用通用的文本编辑器读取和更改此文件。

在解释“人类可读”的真正含义的上下文之外,该短语并没有太大帮助。(如果您不算尝试着眼于硬件位本身的磁极性,那么某个地方的某些人可能可以阅读任何格式...)


4

可读格式与非可读格式之间的一大区别是健壮性。在Linux系统中,各种信息将散布在各种文本文件中。您确实需要了解它们的位置,但是您始终可以找到信息,并使用文本编辑器进行阅读和更改。如果文件消失,通常可以替换它。如果文件损坏了,您通常可以弄清楚它应该是什么并进行修复。

在MS Windows系统中,大部分内容都在注册表中,从用户的角度来看,它是一个不透明的大型系统,可以部分通过各种工具(类似于Linux系统中的某些配置文件)进行访问,与注册表编辑器。只要一切顺利,就可以了。如果破裂,没有专业知识就无法完成。


1
Linux:“您需要了解它们的位置”与Windows:“没有专业知识就无法完成”。我认为(作为许多不同操作系统的用户)它们需要专业知识。知道在哪里可以调整注册表以解决​​问题,与知道可以在Linux或Solaris系统上使用vi编辑哪个文件相比,了解它的复杂性(或更少)。
Bevan 2012年

3

我能想到的最简单的检查是“人类可读”的:

  • 放置在外部编辑器可以轻松访问的位置/文件中(这会使注册表“不可读”)
  • 在数据结构中不使用不可显示的字符。如果我制作的Office 2000 Word文档中带有文本“ test”,则也许可以在记事本中打开它,并在其中的某个位置找到4个字符“ test”,但是周围还有很多其他内容。
  • 虽然不是必需的,但包含描述性元数据的格式是一个加号。包含的文件JohnSmith|34|T|F不如友好<User><Name>JohnSmith</Name><id>34</id><isActive>T</isActive><isAdmin>F</isAdmin></User>,因为知道第二个字段(至少通常是什么)。

2

我认为您可能会问“人类可读”这个术语有时是否被错误地使用,这是毫无疑问的。在注册表项与.config文件的示例中,我认为这可以帮助您根据数据,散布的注释等以不同的方式排列XML。

.config文件中的集合通常被视为多个元素,而在注册表中则更为困难,通常作为MULTI_SZ。

您还可以一次查看一个应用程序的更多配置数据-使用regedit,可以看到导航到该密钥的其他密钥中的内容,这意味着您不再可以看到以前查看的条目。使用.config文件,即使该文件可能包含分层数据,您也可以一次看到整个文件。


注册表都是。其中的一些内容非常易于阅读,其他内容对于没有专业知识的任何人来说都是胡说八道。
乔恩·霍普金斯

是的,您可以说某些.config文件看起来像胡言乱语。请注意,我什至没有想到COM注册表信息,而是在考虑将要进入注册表的应用程序设置-与.config文件中的设置相同。我认为没有人打算让人类阅读COM信息。
JohnL

2

将“人类可读”与二进制进行对比。例如,通常无法在普通文本编辑器中打开可执行文件或数据库索引,也无法理解其内容。十进制32以下的字节甚至没有全局标准表示形式(可见字符)。


1

简短的答案:这意味着信息是以文本形式输入的,而不是以二进制或十六进制等形式输入的。它等同于可读的“语言”而不是计算机的“机器语言”。除此之外,定义变得模糊。


1

它也适用于代码-您可以用一种逻辑和周到的方式来构造程序,从而使任何初次看它的人的工作都容易一些。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.