Re[4]: Самый удобный человеко-читаемый язык данных
От: Pzz Россия https://github.com/alexpevzner
Дата: 19.12.24 12:29
Оценка:
Здравствуйте, vsb, Вы писали:

Pzz>>Не понимаю. В XML можно изобразить массив, просто повторяя элемент (с одинаковым именем) несколько раз. Некоторые протоколы так и делают.


vsb>Без дополнительной информации вроде XML Schema — нельзя. Т.к. нельзя отличить null от массива нулевой длины и нельзя отличить массив единичной длины от объекта.


<Array name="foo">
  <ArrayElement>0</ArrayElement>
  <ArrayElement>1</ArrayElement>
  <ArrayElement>2</ArrayElement>
</Array>


Null — отсутствие массива.

В JSON-е, кстати, тоже, null можно передать только или отсутствием, ну или впихнуть туда null, но мне кажется как-то скользко, что у некоторого элемента значением может быть или null, или нормальные данные.

Pzz>>Сам спросил, сам ответил. 2^52 же. Числа в JSON — это 64-битный float в формате IEEE 754, и это от JS так пошло.


vsb>Нет, числа в JSON вообще никак не специфицированы. В каждой реализации они по-своему работают. В Java без проблем я могу сделать 54-битное число в JSON, сформировать и прочитать. И это число в JS будет читаться неправильно.


RFC 8259, раздел 7 (https://datatracker.ietf.org/doc/html/rfc8259#page-7) прямо об этом и пишет, что числа, вообще-то, имеются ввиду IEEE 754 binary64, и что, хотя некоторые реализации делают не так, лучше бы всё же иметь это ввиду.

Pzz>>UTF-8 же.


vsb>Нет, не специфицировано, ну или я не видел.


RFC 8259, секция 8.1. (https://datatracker.ietf.org/doc/html/rfc8259#section-8.1)

Раньше "подразумевалось", но для мира RFC это нормально. Есть "священное писание" — сами RFC, а есть "священное предание" — то, что все, кому надо, знают, но оно нигде не написано.

Например, то, как в TCP передаётся urgent pointer, в RFC 793 было написано неправильно, а в ядре BSD UNIX — правильно, и все это знали (кроме Microsoft, они сделали, как в RFC, хе-хе).

Pzz>>Раздражает, что нет синтаксиса для передачи бинарных данных (массива байт).


vsb>Обычно в base64 передают.


Непонятно, получив такое, это надо буквально применять или из base64 сначала декодировать. Схемы/метаданных-то нету...
Re[3]: Самый удобный человеко-читаемый язык данных
От: Pzz Россия https://github.com/alexpevzner
Дата: 19.12.24 12:38
Оценка:
Здравствуйте, Maniacal, Вы писали:

S>>https://stackoverflow.com/questions/6032137/how-to-visualize-data-from-google-protocol-buffer


M>Тогда и в ASN.1 можно хранить, для него есть визуализаторы.


sqlite3 — неплохой вариант, кстати. Это, вроде, портабельный формат, при этом довольно удобный и компактный, и открыть его можно везде.

ASN.1 — это для любителей садо-мазо.
Re[2]: Самый удобный человеко-читаемый язык данных
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 19.12.24 12:47
Оценка: :)
Здравствуйте, vsb, Вы писали:

vsb>Что значит "человеко-читаемый" я не очень понимаю. По-мне всё, что ASCII — одинаково человеко-читаемо. По этому критерию и XML и JSON и YAML человеко-читаемы.


base64?
Re: Самый удобный человеко-читаемый язык данных
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 19.12.24 12:48
Оценка: :)
Здравствуйте, Shmj, Вы писали:

S>Получается JSON Forever? И человечество ничего не придумало и уже никогда и не сможет придумать, т.к. особо вариантов просто нет?


Ещё из популярных есть protobuf/flatbuffers. И байты умеют экономить, и в скорость, и умеют сериализовываться в тот же json, если хочется почитать глазами.
Re[3]: Самый удобный человеко-читаемый язык данных
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 19.12.24 12:59
Оценка:
Здравствуйте, Maniacal, Вы писали:

S>>Есть визуализаторы

S>>https://stackoverflow.com/questions/6032137/how-to-visualize-data-from-google-protocol-buffer

M>Тогда и в ASN.1 можно хранить, для него есть визуализаторы.

В любом формате если есть визуализатор.
Никто же не будет делать БД на JSON. Хотя и поддерживают его для хранения документов и поиска.
Для просмотра JSON тоже нужен визуализатор в виде редактора текста
и солнце б утром не вставало, когда бы не было меня
Re[4]: Самый удобный человеко-читаемый язык данных
От: Maniacal Россия  
Дата: 19.12.24 13:03
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>ASN.1 — это для любителей садо-мазо.


Да, стандарт принятый, как официальный, например, у телекоммуникационных компаний. Столкнулся с ним, когда генератор роуминговых файлов для МТС поддерживал. Там одно неверное движение и придётся человекочитанием человеконечитаемый hex-код парсить на соответствие схеме, искать ошибку. А так там и деревья и массивы и всё что угодно есть.
Re[5]: Самый удобный человеко-читаемый язык данных
От: Pzz Россия https://github.com/alexpevzner
Дата: 19.12.24 13:23
Оценка:
Здравствуйте, Maniacal, Вы писали:

Pzz>>ASN.1 — это для любителей садо-мазо.


M>Да, стандарт принятый, как официальный, например, у телекоммуникационных компаний. Столкнулся с ним, когда генератор роуминговых файлов для МТС поддерживал. Там одно неверное движение и придётся человекочитанием человеконечитаемый hex-код парсить на соответствие схеме, искать ошибку. А так там и деревья и массивы и всё что угодно есть.


Я знаю. Телефонисты немного этого ASN-а в интернет принесли. Это TLS (SSL), X.509, SNMP, LDAP...

X.509 — даже и название-то такое, телефонистское
Re[4]: Самый удобный человеко-читаемый язык данных
От: Shmj Ниоткуда  
Дата: 19.12.24 20:14
Оценка: +1
Здравствуйте, Pzz, Вы писали:

Pzz>sqlite3 — неплохой вариант, кстати. Это, вроде, портабельный формат, при этом довольно удобный и компактный, и открыть его можно везде.

Pzz>ASN.1 — это для любителей садо-мазо.

Слишком много инструментов заточено на человеко-читаемый текст. Вот даже сетевой трафик смотрите — передается XML или JSON. Сразу видно и сразу можно что-то поиском найти. А sqlite3 как будете копировать и потом смотреть? Каждый раз копировать?

Далее — тот же GIT — ведь удобно в DIFF-ах смотреть что поменялось.
Re: Самый удобный человеко-читаемый язык данных
От: velkin Удмуртия https://kisa.biz
Дата: 19.12.24 21:20
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Получается JSON Forever? И человечество ничего не придумало и уже никогда и не сможет придумать, т.к. особо вариантов просто нет?


Суперобучение с помощью карточек (07.11.2024)
Re: Самый удобный человеко-читаемый язык данных
От: Aquilaware  
Дата: 19.12.24 23:21
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Потом все более и более JSON.


Из всех мною испробованных, самый человеко-ориентированный это TOML. На втором месте — XML. JSON это вообще формат сериализации, руками его править можно, но это неудобно.

Еще один хороший вариант — это JavaScript/TypeScript в качестве языка конфигурации. Преимущество в том, что если нужно обьявить, например, переменную, а затем её использовать несколько раз в разных местах конфигурации, то это делается штатными средствами языка:

const myVar = "Top$ecret";

const config = {
   password: myVar,
   database: {
       password: myVar
   }
};

export default config;
Re[5]: Самый удобный человеко-читаемый язык данных
От: Pzz Россия https://github.com/alexpevzner
Дата: 20.12.24 00:07
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Слишком много инструментов заточено на человеко-читаемый текст. Вот даже сетевой трафик смотрите — передается XML или JSON. Сразу видно и сразу можно что-то поиском найти. А sqlite3 как будете копировать и потом смотреть? Каждый раз копировать?


В сетевом трафике чего только не передаётся. И я, заметим, нигде не утверждал, что sqlite3 — удобный формат для сетевого протокола. Скорее, он удобен для хранения/передачи достаточно большого объема структурированных данных.

S>Далее — тот же GIT — ведь удобно в DIFF-ах смотреть что поменялось.


Если, к примеру, в миллионе строк кода переименовать какую-нибудь популярную переменную или изменить стиль форматирования, такой diff смотреть будет люто неудобно.
Re[6]: Самый удобный человеко-читаемый язык данных
От: Shmj Ниоткуда  
Дата: 20.12.24 05:48
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>В сетевом трафике чего только не передаётся. И я, заметим, нигде не утверждал, что sqlite3 — удобный формат для сетевого протокола. Скорее, он удобен для хранения/передачи достаточно большого объема структурированных данных.


А мы речь ведем о человек-читаемости, когда нужно мало.

Вот взять Excel тот же. Внутри там XML. Почему? Потому что разработчикам проще искать баги.

S>>Далее — тот же GIT — ведь удобно в DIFF-ах смотреть что поменялось.

Pzz>Если, к примеру, в миллионе строк кода переименовать какую-нибудь популярную переменную или изменить стиль форматирования, такой diff смотреть будет люто неудобно.

Но речь же о файлах, которые создают люди и редактируют люди.
Re: Самый удобный человеко-читаемый язык данных
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 20.12.24 08:32
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Получается JSON Forever? И человечество ничего не придумало и уже никогда и не сможет придумать, т.к. особо вариантов просто нет?

Да, пока что JSON обладает оптимальными характеристики по читаемости, скорости парсинга, объему передаваемых данных и удобству обработки в разных ЯП.


S>Вот, ранее очень часто для передачи данных, если нет нужны экономить байты и желательно чтобы человек мог, по нужде, глянуть — использовали XML.

S>Потом все более и более JSON.
S>После начали т.н. YAML, но как-то не особо, т.к. все-таки он не особо лучше, но сложнее. Удобство в читабельности сомнительное, а сам формат намного сложнее.


Тут надо понимать, что есть человек-читаемость, а есть человеко-писаемость. И xml, и JSON легко читать, но довольно неудобно писать. Схемы конечно упрощают, но не до конца. YAML легко писать пользователю.
Re[2]: Самый удобный человеко-читаемый язык данных
От: Shmj Ниоткуда  
Дата: 20.12.24 14:41
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Тут надо понимать, что есть человек-читаемость, а есть человеко-писаемость. И xml, и JSON легко читать, но довольно неудобно писать. Схемы конечно упрощают, но не до конца. YAML легко писать пользователю.


Я боюсь писать YAML. Особенно если нет подсветки. Вдруг где-то пробел не заметишь — и хана.
Re: Самый удобный человеко-читаемый язык данных
От: пффф  
Дата: 20.12.24 16:42
Оценка: +1 -1 :)
Здравствуйте, Shmj, Вы писали:

Если нет редактора, который подсвечивает JSON и ошибки в нем, то XML однозначно лучше. Бесят эти запятые, то лишнюю поставишь в конце, то в середине забудешь

Плюс, в XML, даже если ты не знаешь схемы, можно по тэгам примерно понять структуру документа/конфига/итп, под джейсону — хрен там был
Отредактировано 20.12.2024 16:48 пффф . Предыдущая версия .
Re[5]: Самый удобный человеко-читаемый язык данных
От: пффф  
Дата: 20.12.24 16:43
Оценка: -1 :)
Здравствуйте, Shmj, Вы писали:

S>Круглые скобки — это официальный знак препинания в гуманоидном языке, по этому лучше фигурные, тем более они легко доступны на клавиатуре.


Круглые скобки есть в русской и английской раскладках, фигурные только в английской
Отредактировано 20.12.2024 16:44 пффф . Предыдущая версия .
Re[6]: Самый удобный человеко-читаемый язык данных
От: Shmj Ниоткуда  
Дата: 20.12.24 18:17
Оценка:
Здравствуйте, пффф, Вы писали:

П>Круглые скобки есть в русской и английской раскладках, фигурные только в английской


Так вы же названия нод — все-равно на англ. пишите.
Re: Самый удобный человеко-читаемый язык данных
От: kov_serg Россия  
Дата: 20.12.24 20:23
Оценка:
Здравствуйте, Shmj, Вы писали:

Самый удобный человеко-читаемый язык данных

plain text
Re[3]: Самый удобный человеко-читаемый язык данных
От: Codealot Земля  
Дата: 22.12.24 15:41
Оценка:
Здравствуйте, Shmj, Вы писали:

S>И почти все данные верхнего уровня (HTML, CSS, JSON, XML) — они передаются в человеко-читаемом виде, хотя могли бы юзать бинарный формат.


Потому что делали ленивые дураки.

S>Но чтобы легче было писать эти инструменты — разработчику лучше человеко-читаемый а не бинарный формат.


Лучше всего сделать взаимо однозначный конвертор текст <-> бинарник. Использовать текст для объемистых данных — просто идиотизм.
Ад пуст, все бесы здесь.
Re[4]: Самый удобный человеко-читаемый язык данных
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 22.12.24 18:11
Оценка: +1
Здравствуйте, Codealot, Вы писали:

C>Лучше всего сделать взаимо однозначный конвертор текст <-> бинарник. Использовать текст для объемистых данных — просто идиотизм.


Нет. Парсинг и форматирование (если не совсем уж тупо написаны) занимают копейки по сравнению с манипулированием структурами в памяти, а пользы от текстового представления — вагоны.

PS: Но это текстовое представление, должен заметить, должно быть скорее "полутекстовым". В нём не должно быть "грамматизьмы" ранних подходов IETF, где 100500 форматов представления одного и того же ради возможности отформатировать в ASCII art (ещё этим страдает YAML). Числа желательно представлять в шестнадцатиричном (или хотя бы свободно позволять это), включая float'ы.
The God is real, unless declared integer.
Отредактировано 22.12.2024 18:37 netch80 . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.