LINUX.ORG.RU
Ответ на: комментарий от Deleted

JSON для человека выглядит приличнее, чем хмл. Лишних символов меньше. От простого конфигфайла отличие по сути в запятых, кавычках и паре лишних {} для обозначения разделов конфига.

Есть форматы удобные для машины, есть форматы удобные для человека. ХМЛ — компромиссный формат, не удобен ни тем, ни другим.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

>JSON для человека выглядит приличнее, чем хмл.
Разве что для марсианина.

>Лишних символов меньше.
Например запятых, ага. Для человека удобнее н кгд мнш бкв, а когда понятно.

>Есть форматы удобные для машины, есть форматы удобные для человека. ХМЛ — компромиссный формат, не удобен ни тем, ни другим.
JSON — говно, XML — читабелен. Учись читать :}

Deleted
()
Ответ на: комментарий от Deleted

XML — читабелен

<недоумение><уныние><кровь><тоска><ненависть><злость><агрессия><печаль>Нет</печаль></агрессия></злость></ненависть></тоска></кровь></уныние></недоумение>

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Дураки и дороги. Ты кто из них? :3

Deleted
()
Ответ на: комментарий от PolarFox

Фу, ну и говно. Для этого формата ini файл самое то. И это ты привёл простейший пример. В XML тоже можно для такого случая написать просто с 1 уровнем вложенности, без петросянства если делать.

Deleted
()
Ответ на: комментарий от Deleted

Кстати о закрывающих тегах. Они наоборот наглядны. А если уж хочется краткости, т млст прсм см знш кд.

Deleted
()
Ответ на: комментарий от Deleted

Дак я давно говорю, что INI идеален. Надо только сделать INI с уровнями вложенности, если уж их так не хватает.

Sadler ★★★
()
Ответ на: комментарий от Sadler

Многоуровневый INI представляется мне как-то так:

[Object]

name = Object 1

	[Position]
	x = 10
	y = 20
	z = 30
	
	[Rotation]
	x = 0.1
	y = 0.2
	z = 0.3

active = true

Sadler ★★★
()
Ответ на: комментарий от invy

В чём уродливость? Не пиши текстовые данные в атрибуты и ничего кроме < > и & экранировать не надо. Няшно и красиво экранирование выглядеть не будет нигде. Кавычки ты вот экранировал для красного словца.

Deleted
()
Ответ на: комментарий от invy

Регэкспы и так уже выглядят как write-only говно, не надо ничего представлять :}

Deleted
()
Ответ на: комментарий от dmitry_malikov

>dmitry_malikov

Чья б корова мычала :}

Deleted
()
Ответ на: комментарий от Sadler

Это конфиг... отступы там нафиг не нужны. Они, внезапно, читаются и пишутся не только программой, но еще и человеком, так что устойчивость на случай ошибки должна быть повыше. Да и к тому же все изобретено до нас

<section>
    <name>Name of smth</name>
    <properties>
         <p1>111111</p1>
         <p2>111111</p2>
    </properties>
</section>
Плавно переходим на:
[section]
name=Name of smth
properties\p1=11111
properties\p2=22222
...

zJes ★★
()
Ответ на: комментарий от Sadler

Но и отступы лишние, это при записи кроме иерархии надо еще и порядок следования соблюдать. :) Просто данный способ, по крайней мере, соответствует раздолбайству хмл. В ини вот такое не поломает конфиг.

properties\p1=11111
name=Name of smth
properties\p2=22222
В твоем случае, это невозможно.

zJes ★★
()
Ответ на: комментарий от Sadler

Многоуровневый INI представляется мне как-то так:

Вложенность отступами делается? Питон головного мозга?

andreyu ★★★★★
()
Ответ на: комментарий от Artificial_Thought

в случае динамических языков имхо лучше на самом языке конфиг и делать.

И термин «исполнение произвольного кода» приобритет новое значение.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

И термин «исполнение произвольного кода» приобритет новое значение.

А нефиг всякие конфиги на запись чему попало открывать.

Artificial_Thought ★★★★
()
Ответ на: комментарий от svu

Убивать за такое. В зародыше. До зачатия.

Я полагаю, вы как раз сейчас этим и занимаетесь?

Sadler ★★★
()
Ответ на: комментарий от Axon

tl;dr запятые мало того, что есть, так ещё нерегулярны. Кавычки (с двоеточием и без) заменяют < и >, шило на мыло. Ну, это сам JSON такой. Т.е. вся разница, что вместо закрывающего тега разрыв строки и экранируются другие символы. Чем лучше XML'а? У того хоть схемы валидации есть (ну и прочий вагон технологий, если уж на то пошло, хотя тут они могут быть и не важны), JSON уже это умеет?

Deleted
()
Ответ на: комментарий от Deleted

XML'ный же. Сразу видно где начало и где конец :}

что «xml»-ый, болезный? какой конец? мы вроде начали ветку про спец.символы и экранирование. нормальные люди придумали \, клоуны придумали альтернативу в виде < и ему подобных.

так еще раз: ты считаешь что толпа спец.последовательностей типа < лучше чем один спец.случай с \ ? бугага еще раз.

Rastafarra ★★★★
()
Ответ на: комментарий от Rastafarra

Один спец случай, ага. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ <- оченно няшная конструкция. Ни начала ни конца не видать. Нет уж, у нас тут для людей.

Deleted
()
Ответ на: комментарий от Deleted

Т.е. вся разница, что вместо закрывающего тега разрыв строки и экранируются другие символы. Чем лучше XML'а?

Сто раз уже вам сказали, что людям Земли в разы проще с первого взгляда понять структуру конфига, в котором меньше синтаксического мусора, марсианский вы наш друг.

У того хоть схемы валидации есть (ну и прочий вагон технологий, если уж на то пошло, хотя тут они могут быть и не важны), JSON уже это умеет?

Не оно?

Axon ★★★★★
()
Последнее исправление: Axon (всего исправлений: 1)
Ответ на: комментарий от Axon

>в котором меньше синтаксического мусора
Видимые начало и конец это синтаксический мусор? Или, быть может, «<» и «>»? Продолжай.

>standard (currently in draft)
Лучше чем ничего :} Правда судя по беглому осмотру указать «атрибут X может принимать такие-то значения из списка» нельзя.

Deleted
()
Ответ на: комментарий от Deleted

Видимые начало и конец это синтаксический мусор?

Когда в конфиге служебной информации в несколько раз больше, чем, собственно, конфига, значит что-то пошло не так. В XML это врождённый дефект.

Axon ★★★★★
()
Ответ на: комментарий от Deleted

кстати, xml устраивает геморой с пробелами и переносами строк. он не возволяет написать хорошо читаемый конфиг в принципе: Как-то так выделить значение не выйдет:

<key> my value </key>

invy ★★★★★
()
Ответ на: комментарий от Axon

Мы тут, вроде, о человекочитабельных конфигах, а ты мне про размер толкуешь. Врождённый дефект это у JSON — он создан как костыль к JavaScript для JavaScript. Оттуда же и эти запятые выпирают.

Deleted
()
Ответ на: комментарий от invy

Если для тебя > и < не предоставляют видимого разграничения, то пора покупать очки. Зачем тебе выделять значение? Оно и так выделено элементом с обоих сторон.

Ты ещё пожалуйся, что «xxx» и " xxx " не равны друг другу.

Deleted
()
Ответ на: комментарий от Deleted

Мы тут, вроде, о человекочитабельных конфигах, а ты мне про размер толкуешь.

При чём тут размер? Я смотрю на JSON или ini и вижу параметры и значения. Я смотрю на XML и вижу туеву хучу тегов.

Врождённый дефект это у JSON — он создан как костыль к JavaScript для JavaScript. Оттуда же и эти запятые выпирают.

А теперь объясните, чем это плохо.

Axon ★★★★★
()
Ответ на: комментарий от Deleted

У того хоть схемы валидации есть ..., JSON уже это умеет?

конечно умеет. Неувидительно что подобные тебе, «веб-разработчики» c зумелем головного мозга, о нём ничего незнают.

пару строчек из википедии осилишь? http://en.wikipedia.org/wiki/JSON#Schema

n_play
()
Ответ на: комментарий от tailgunner

термин «исполнение произвольного кода» приобритет новое значение.

Пользователи emacs очень от этого страдают.

ugoday ★★★★★
()
Ответ на: комментарий от Axon

>Я смотрю на JSON или ini и вижу параметры и значения. Я смотрю на XML и вижу туеву хучу тегов.

Очки купи :3 Названия тебе придётся писать в JSON и INI, и никуда от этого не деться.

>А теперь объясните, чем это плохо.
Формат, который построен как костыль должен оставаться в рамках системы, для которой он написан или переработан. А то потом окажется, что мы сделали так, потому что 100500 лет назад так делали в маргинальной поделки. Жабаскриптеры не осилили XML и был придуман костыль, который позволял делать eval() и получать всё в привычном виде жабаскриптовых объектов. Причём eval() всё равно делать нельзя и приходится пользоваться API. Сменили шило на мыло. NIH синдром как он есть.

Deleted
()
Ответ на: комментарий от Deleted

Может и на С/С++ пробелы в исходниках лишние? А что, красиво:

for(std::map<char*,int>::iterator it=v.begin();it!=v.end();it++){if(it->second!=0){std::cout<<it->second<<std::endl;}}
Красота!

invy ★★★★★
()
Ответ на: комментарий от invy

for(std::map<char*,int>::iterator it=v.begin();it!=v.end();it++){if(it->second!=0){std::cout<<it->second<<std::endl;}}

Вот такое распечатать по всей длине туалетной бумаги, и сколько было бы удовольствия!

bk_ ★★
()
Ответ на: комментарий от Deleted

Очки купи :3 Названия тебе придётся писать в JSON и INI, и никуда от этого не деться.

Да, и там они выглядят как названия, а не как каша вокруг параметров.

Формат, который построен как костыль должен оставаться в рамках системы, для которой он написан или переработан. А то потом окажется, что мы сделали так, потому что 100500 лет назад так делали в маргинальной поделки. Жабаскриптеры не осилили XML и был придуман костыль, который позволял делать eval() и получать всё в привычном виде жабаскриптовых объектов. Причём eval() всё равно делать нельзя и приходится пользоваться API. Сменили шило на мыло. NIH синдром как он есть.

Спасибо за историческую справку, было интересно. А теперь, всё-таки, объясните, чем это плохо.

Axon ★★★★★
()
Ответ на: комментарий от Deleted

википедию бы лучше почитал, любитель изобилия угловых скобочек. Валидация есть? Есть. Ещё вопросы будут?

n_play
()
Ответ на: комментарий от Axon

>Да, и там они выглядят как названия, а не как каша вокруг параметров.
Читать буквы сложно, понимаю :}

>А теперь, всё-таки, объясните, чем это плохо.
Велосипеды, которые делают меньше, чем то, что они заменяют, не нужны.

Deleted
()
Ответ на: комментарий от Deleted

Читать буквы сложно, понимаю :}

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

Велосипеды, которые делают меньше, чем то, что они заменяют, не нужны.

А запятые-то тут при чём? И что «заменяет» JSON?

Axon ★★★★★
()
Ответ на: комментарий от Axon

>А запятые-то тут при чём?
Зачем они там, если разрыв строки и «}» итак всё разделяют?

>парсить структуру, не предназначенную для парсинга человеком
Почему я могу распарсить сходу, я робот?

>И что «заменяет» JSON?
Перечитай, может поймёшь.

Deleted
()
Ответ на: комментарий от Deleted

Зачем они там, если разрыв строки и «}» итак всё разделяют?

Ну, да, излишество. Но граздо менее объёмное и назойливое, чем в XML.

Почему я могу распарсить сходу, я робот?

Видимо, да. Или просто реально сложного XML'я не встречали.

Axon ★★★★★
()
Последнее исправление: Axon (всего исправлений: 1)
Ответ на: комментарий от Hertz

Жабаскриптеры, они для этого и написали свой костыль. Ибо NIH и зуд.

Deleted
()
Ответ на: комментарий от Deleted

Зачем они там

Уж лучше десяток запятых, чем тонны уголков.

я робот?

Кхм... Ну, видимо даже поболее, чем я :)

В принципе, у JSON, конечно, тоже есть проблемы в читаемости (например: «obj{ obj2{ obj3{ ... }}}}}}»), но ад из угловых скобочек покруче будет.

Kiborg ★★★
()
Ответ на: комментарий от Deleted

Сказки не рассказывай, всё там читабельно. А вообще да, нужно выкинуть и xml и json и впилить в качестве конфигов ещё один диалект, прости г-споди, лиспа. (((0_о)))

Hertz ★★★★★
()
Ответ на: комментарий от Kiborg

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

Deleted
()
Ответ на: комментарий от invy

Ага, первые три класса средней школы настоятельно рекомендуются :}

Deleted
()
Ответ на: комментарий от Deleted

машинного масла

Тормозухи ещё налей. ;) Сосед как то пытался ацетон фильтровать, синьку выделить, замутили какой то бульбулятор... Хапнули и дружно уехали на больничку под капельницей откапываться. А с тормозухой фишка прошла, живы-здоровы. Машинным маслом (отработкой) неплохо печку растапливать когда бумаги тю-тю.

Hertz ★★★★★
()
Ответ на: комментарий от Deleted

У меня вполне нейтральное отношение к уголкам, но только пока их не становится слишком много и они не начинают заявлять о своих правах :)

Kiborg ★★★
()
Ответ на: комментарий от Hertz

А с тормозухой фишка прошла, живы-здоровы.

Обед 3 раза в день. Иногда нас даже выгуливают, даже смирительную рубашку растёгивают.

dada ★★★★★
() автор топика
Ответ на: комментарий от Kiborg

Я по ним ориентируюсь, но разговаривать со мной они ещё не пробовали :)

Deleted
()
Ответ на: комментарий от Legioner

Так она шлётся и работает. Просто теперь предпочитают слать JSON. Это модно.

Deleted
()
Ответ на: комментарий от Deleted

JSON такая же лапша, даже ещё хуже, чем XML.

JSON компактнее, и его проще писать, зато сложнее читать.

cruxish ★★★★
()
Ответ на: комментарий от PolarFox

<недоумение><уныние><кровь><тоска><ненависть><злость><агрессия><печаль>Нет</печаль></агрессия></злость></ненависть></тоска></кровь></уныние></недоумение>

Ручками писал это, или скриптом? :)

frpaul ★★
()
Ответ на: комментарий от PolarFox

<недоумение><уныние><кровь><тоска><ненависть><злость><агрессия><печаль>Нет</печаль></агрессия></злость></ненависть></тоска></кровь></уныние></недоумение

Отформатируй и запости ещё раз, ты же людям пишешь.

cruxish ★★★★
()
Ответ на: комментарий от cruxish

Так нельзя, а то не получится потроллить :}

Deleted
()
Ответ на: комментарий от invy

Ты уже научил жсон валидировать себя и, (это важнее) кодекомплишну?

GateKeeper ★★
()
Ответ на: комментарий от Hertz

Чо? То то в стандарте аяксописательства прокляли XML и дружно перешли на JSON.

Аякс это ЖаваСкрипт. JSON - это тупо структура в этом скрипте. Для JavaScript это оправдано, но не нужно тянуть этот JSON туда, где ему не место.

andreyu ★★★★★
()
Ответ на: комментарий от Deleted

«ISO 8879:1986 Information processing — Text and office systems — Standard Generalized Markup Language (SGML)»,

Вот бы им и оставаться где-то в обработке текста.

DonkeyHot ★★★★★
()
Ответ на: комментарий от Deleted

offtopic. Твой аргумент про применимость костыля в своей среде работает для XMLя (и Java, заодно) не хуже, чем для JSON-а.

DonkeyHot ★★★★★
()
Ответ на: комментарий от Deleted

SGML удобнее docbook для простых текстов — я гарантирую это. А для сложных текстов docbook — это ужас-ужас-ужас.

Evgueni ★★★★★
()
Ответ на: комментарий от Deleted

JSON такая же лапша, даже ещё хуже, чем XML.

чем же хуже? много лучше

quest ★★★★
()
Ответ на: комментарий от PolarFox

Сложный Xml редактировать значительно легче, чем json. Подчеркиваю: значительно

chg ★★★★★
()
Ответ на: комментарий от PolarFox

Ручками

А чем же ещё? :3

Просто подумалось, может, какой редактор умеет зеркалить произвольные тэги. Или какой-нибудь самописный скриптик. Тут на ЛОРе всякого насмотрелся. Народ даже ковыряние в носу уже автоматизирует. :)

frpaul ★★
()
Ответ на: комментарий от frpaul

Да многие редакторы это умеют, но мне было лениво запускать или писать скрипт.

PolarFox ★★★★★
()
Ответ на: комментарий от frpaul

какой редактор умеет зеркалить произвольные тэги.

emacs умеет делать парные '( и ') для лиспа. Очень удобно.

ugoday ★★★★★
()
Ответ на: комментарий от frpaul

Идея не в том, чтобы ходить, а в том, чтобы создавая открывающую скобку тут же получать и закрывающую. Соответственно скобки всегда сбаллансированны правильно без всяких усилий со стороны человека.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Не только '( и ') и не только для лиспа. Правда, для других языков это не так удобно.

theNamelessOne ★★★★★
()
Ответ на: комментарий от PolarFox

Мнимое преимущество JSON над XML только в том, что открытие и закрытие блока происходит короткими символами «{» и «}». Это преимущество исчезает, когда появляется всякая вложенность, и непонятно, какой элемент закрывает очередная скобка.

А больше «преимуществ» то и нет.

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Есть: отсутствие избыточной информации.

{
        "objects": [
                {
                        "x": "10",
                        "y": "5",
                        "z": "7"
                },
                {
                        "x": "4",
                        "y": "6",
                        "z": "8"
                }
        ]
}

приятнее, чем:

<config>
        <objects>
                <object>
                        <x>10</x>
                        <y>5</y>
                        <z>7</z>
                </object>
                <object>
                        <x>4</x>
                        <y>6</y>
                        <z>8</z>
                </object>
        </object>
</config>
Имена переменных дублируются дважды, в более сложных вариантов ещё зачем-то типы указывают, как будто программа не будет использовать какой-нибудь read_config_int, read_config_string, read_config_binary - ей то нужна переменная конкретного типа.

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

XML для документов, чья структура заранее неизвестна (допустим, всякие HTML, SVG и т. д.).

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

Спасибо, разжевал. Даже добавить нечего

dotbg ★★★★
()
Ответ на: комментарий от KivApple

Что за бред? В XML это дело можно представить гораздо прощще:

<config>
 <objects>
  <object x="1" y="2" z="3"/>
  <object x="7" y="8" z="9"/>
 </objects>
</config>
Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Правда, когда захочется добавить объекту свойство в виде массива придётся переписывать весь код.

Ну и ненужные закрывающие теги остаются всё равно.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

Правда, когда захочется добавить объекту свойство в виде массива придётся переписывать весь код.

Почему? Ну добавил в тег подтег с массивом и все. Так же как и в JSON.

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

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

В случае с JSON всё проще - каждый объект имеет атрибуты. Любой атрибут может оказаться массивом или другим объектом. Красивая простота.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

В случае с JSON всё проще - каждый объект имеет атрибуты. Любой атрибут может оказаться массивом или другим объектом. Красивая простота.

Если я вас правильно понял, то и xml может так же.

andreyu ★★★★★
()
Ответ на: комментарий от Xintrea

Зачем так выпендриваться, когда можно просто

objects={
{x=1, y=2, z=3},
{x=7, y=8, z=9}
}
???

А дебильный XML понятен только компьютеру.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

XML --- это сделанный неправильно лисп. Так что

(defvar *objects*
        (list (list :x 1 : y 2 :z 3)
              (list :x 7 :y 8 :z 9)))
ugoday ★★★★★
()
Ответ на: комментарий от Eddy_Em

Зачем так выпендриваться, когда можно просто

Потому что это стандарт, и появился ранше JSON.

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

Xintrea ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.