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

12

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

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

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

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

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

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

Kramii
источник
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 вы можете увидеть весь файл одновременно, даже если этот файл может содержать иерархические данные.

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

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

Чарльз Э. Грант
источник
1

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

Skatterbrainz
источник
1

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

dodgy_coder
источник