Что значит «человек читаемый»? Это неправильно?


12

На ум приходят два примера:

  • Одна из причин, по которой программистам .Net рекомендуется использовать файлы .config вместо реестра Windows, заключается в том, что файлы .config являются XML и, следовательно, удобочитаемыми.

  • Точно так же JSON иногда считают читаемым человеком по сравнению с проприетарным форматом.

Читаемые человеком форматы действительно читаемы людьми? В примере данных конфигурации:

  1. Формат не меняет основной смысл информации - в обоих случаях данные представляют одно и то же.
  2. И реестр, и файл .config хранятся внутри как серии 0 и 1. В этом смысле основное представление одинаково нечитаемо людьми.
  3. И в реестре, и в файле .config требуется инструмент для чтения, форматирования и отображения этих нулей и единиц и их преобразования в формат, который могут прочитать люди. В случае конфигурации, хранящейся в реестре Windows, это редактор реестра. В случае XML это может быть текстовый редактор или программа чтения XML. В любом случае, инструмент делает данные читаемыми, а не формат данных.

Итак, в чем разница между читаемыми человеком форматами данных и нечитаемыми форматами?


3
Зависит от того, ограничено ли определение «человек» программистами и т. Д. Или применимо ко всем людям (если последний, то почти все форматы, вероятно, не в разной степени).
Питер Боутон

7
Единственный читаемый человеком формат сериализации - YAML . XML заставляет меня хотеть выбить мне глаза.
NullUserException

Ответы:


35

Удобочитаемость человеком в основном означает, что если контент отображается программой, в которой отсутствует прямая, конкретная осведомленность о формате этого файла, то есть хотя бы разумный шанс, что человек сможет прочитать и понять хотя бы часть из этого.

Ваш основной вывод об отсутствии четкой линии разграничения абсолютно верен - хотя когда-то я знал парня, который мог бы диагностировать проблемы с программами (в основном написанными на фортране) часто за пять минут или меньше - исходя только из восьмеричного числа дамп ядра, вообще не глядя на исходный код. Для большинства людей этот формат вряд ли можно назвать «читабельным», но, очевидно, он был исключением ...


14
+1: все "читается человеком", если приложить достаточные усилия. Де-факто значение «человекочитаемый» в компьютерах: простой текст, неструктурированный или структура, состоящая исключительно из текстовых символов.
Аллон Гуралнек

35

Удобный для чтения означает, что я могу открыть эту вещь в Блокноте, если захочу, и изменить «пароль = foo» на «пароль = бар», если я этого захочу. Мне не нужно использовать проприетарный инструмент для просмотра или редактирования контента.

В отличие от PDF, который вы не можете редактировать с помощью простого текстового редактора - вам нужен специальный инструмент, который знает формат. Или бинарный файл .dat, который появился в приложении 25 лет назад и который вы не можете читать, редактировать или понимать.


Считаете ли вы RTF человека читабельным?
Питер Боутон

7
RTF читается программистом :-). Я отредактировал это вручную, но это не понравилось. XML, безусловно, менее читабелен, чем JSON. Многое зависит от того, к чему привыкли ваши люди - многие мои предпочитают .csv XML, но я уверен, что нет!
Кейт Грегори

3
Возможно, вы не сможете редактировать читабельный файл. Я видел много случаев, когда содержимое доступно для чтения человеком, но у них может быть поле проверки с, например, шестнадцатеричным значением параметра, которое нелегко вычислить и основано на содержимом файла. Это значение используется приложением для проверки файла.
2010 года

6
Хороший вопрос @Ian - поскольку мы обсуждаем терминологию, мы должны различать удобочитаемое и редактируемое человеком. И то, и другое - хорошие вещи, на мой взгляд.
Кейт Грегори

Я поддерживаю ваше утверждение о том, что JSon гораздо более удобен для редактирования человеком (и удобочитаемее), чем xml, хотя бы потому, что сущности xml являются именно такой болью.
Матье М.

10

В ответ на ваш вопрос «Являются ли читаемые человеком форматы действительно читаемыми людьми», по определению да, это то, что означает читаемое человеком.

Технического определения читабельного человека нет, оно субъективно, и могут возникнуть вопросы о том, какой уровень знаний может понадобиться человеку для квалификации (например, нужно ли им понимать самые базовые принципы XML, такие как теги и иерархии) Если они понимают сферу бизнеса, в которой существуют данные - лично я бы сказал «да» обоим), но ваш базовый тест должен состоять в том, чтобы я показал его кому-то с базовыми техническими навыками, которые понимали основы того, что данные должны были представлять Могут ли они это прочитать.

На практическом уровне это обычно будет означать следующее:

1) Данные хранятся в виде текста ASCII или в другом аналогично распространенном и легко узнаваемом формате.

2) Что существует разумная структура, которая самоочевидна из базового экзамена. Например, вам не нужно знать, что первые X символов относятся к Y, а затем следующие X относятся к Z

3) что и данные, и метаданные, как правило, представлены на английском языке (или на любом другом языке) и требуют только ограниченного знания проблемной области, чтобы номер счета-фактуры был бы в теге invoiceNumber, а не в uDef_Inbr»

4) Для нетекстовых данных используются разумные, предсказуемые соглашения (например, ИСТИНА, ЛОЖЬ, Y, N, 1, 0, а не что-то более открытое для интерпретации)


5

Файлы .config гораздо проще редактировать (для большинства людей), чем реестр. Проще открыть специальный файл конфигурации, найти соответствующие данные и внести изменения, не открывая возможность редактирования чего-либо, что повлияет на другие программы.


5

Это все о простоте понимания (и, вероятно, изменения). Так "X человек читается?" не следует отвечать «да» или «нет». Скорее, ответ должен быть по какой-то скользящей шкале.

Потенциальные примеры:

  • 90% программистов могут читать и изменять файл с помощью любого обычного текстового редактора.
  • 60% носителей английского языка могут прочитать файл в любом обычном текстовом редакторе.
  • 80% разработчиков XYZ могли читать и изменять файл, но только с помощью инструмента ZYX.
  • 10% разработчиков YZX могли прочитать и изменить этот файл с помощью обычного текстового редактора.

Вне контекста, который объясняет, что на самом деле означает «читаемый человеком», эта фраза не очень помогает. (Кто-то где-то может, вероятно, прочитать любой из форматов, если не считать попытки взглянуть на магнитную полярность самих аппаратных битов ...)


4

Одно большое различие между удобочитаемыми форматами и нечитаемыми форматами - это надежность. В системе Linux вся информация будет разбросана по разным текстовым файлам. Вам нужно узнать, где они находятся, но вы всегда можете найти информацию, прочитать и изменить ее с помощью текстового редактора. Если файл исчезает, вы можете заменить его. Если файл поврежден, вы часто можете определить, каким он должен быть, и исправить это.

В системе MS Windows большая часть этого будет в реестре, который, с точки зрения пользователей, представляет собой одну большую непрозрачную систему, доступную частично через различные инструменты (во многом как некоторые файлы конфигурации в системах Linux), и в целом с редактором реестра. Пока все идет хорошо, это нормально. Если он сломается, ничего не поделаешь без специальных знаний.


1
Linux: «Вам нужно узнать, где они находятся, а не Windows:« ничего нельзя сделать без специальных знаний ». Я бы сказал (как пользователь многих различных операционных систем), что все они требуют специальных знаний. Знать, где настроить реестр для устранения проблемы, не сложнее (или меньше), чем знать, какой файл можно редактировать с помощью vi в системе Linux или Solaris.
Беван

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-й.

2

Я думаю, что вы, возможно, спрашиваете, неправильно ли применяется термин «читабельный» как термин, и, без сомнения, это так. В примере записей реестра против файлов .config, я думаю, это помогает, что вы можете расположить XML по-разному в зависимости от данных, вкрапления комментариев и так далее.

Коллекции в файлах .config обычно обрабатываются как несколько элементов, в то время как в реестре это сложнее, часто как в MULTI_SZ.

Вы также можете увидеть больше данных конфигурации для приложения одновременно - с помощью regedit, чтобы увидеть что-то, находящееся в другом ключе, вам нужно перейти к этому ключу, что означает, что вы больше не можете видеть записи, которые ранее просматривали. С файлами .config вы можете увидеть весь файл одновременно, даже если этот файл может содержать иерархические данные.


Реестр есть и то и другое. Есть кое-что, что очень читабельно, другие - полная чепуха для всех, у кого нет специальных знаний.
Джон Хопкинс

Правда, и вы могли бы сказать, что некоторые файлы .config выглядят как бред. Обратите внимание, что я даже не думал об информации из реестра COM, я думал о настройках приложения, которые войдут в реестр - аналог настроек, которые вы получаете в файлах .config. Я не думаю, что кто-то намерен читать информацию о СОМ людям.
JohnL

2

Сравните «читабельный» с двоичным. Например, вы не можете вообще открыть исполняемый файл или индекс базы данных в ванильном текстовом редакторе и понять, что такое содержимое. Байты ниже десятичного числа 32 даже не имеют глобально стандартных представлений в виде видимых символов.


1

Краткий ответ: это означает, что информация вводится в виде текста, а не двоичного или шестнадцатеричного, и т. Д. Что-то, что приравнивается к читаемому «языку», а не «машинному языку» компьютера. Помимо этого, определение становится темным.


1

Это также относится и к коду - вы структурируете свою программу логичным и продуманным образом, так что работа любого, кто смотрит на нее впервые, становится немного проще.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.