Re[3]: Снова XML: Just Say No to XML
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 27.09.06 13:15
Оценка: 24 (2) +4
Здравствуйте, Mamut, Вы писали:

M>Вот вопрос. Чем их ASN.1 не устроил?


a) ASN.1 совершенно не приспособлен к чтению людьми. Бинарная передача данных -- это задача ASN.1, но вот ручками там поправить что-нибудь, или хотя бы без какого-либо инструмента проверить значения в потоке данных, тут текстовые форматы удобнее. Не случайно Эрик Реймонд в своей книги "Искусство программирования под Unix" заостряет внимание на том, что текстовые форматы часто удобнее бинарных.

b) ASN.1, вообще-то говоря, не столь расширяем, как это может показаться. AFAIK, при проектировании протокола нужно специальным образом помечать места, в которых возможны дальнейшие расширения протокола. Что не просто. В XML-е (да и другом формате текстовой разметки), если не фиксировать жестко DTD, то можно при необходимости расширить любой тег (например, добавить в него атрибутов или дочерних элементов).

c) ASN.1 сразу ставит тебя перед высоким порогом вхождения. Во-первых, язык спецификаций. Во-вторых, ASN.1 компиляторы (писать вручную можно разве что ASN.1 BER, да и то не просто, а уж ASN.1 PER...). Их нужно искать, их нужно изучать, за хорошие нужно платить и не мало. В случае же с XML можно вооружиться инструментом, максимально подходящим для твоих нужд. Например, один раз мне потребовалось получить по HTTPS с сервера коротенькую XML-ку из которой мне нужно было значение только одного элемента. Воспользовался просто regex-ом. Генерить, опять же, XML вручную очень просто (если не сложный). Хотя низкий порог входжения в XML, как показал Голуб, как раз затем и приводит к необдуманному применению XML.

d) Насколько мне известно, ASN.1 не специфицирует отображение своей спецификации в язык программирования. Из-за этого каждый ASN.1 предоставляет собственный маппинг спецификации в классы/функции целевого языка. А из-за этого пользователи ASN.1 привязываются к производителю ASN.1 компилятора.

Так что, имхо, далеко не всегда ASN.1 является более выгодной альтернативой, чем XML. И наоборот. Хотя в некоторых случаях действительно задаешься вопросом: какого черта XML использован? Например, есть такая, имхо, маразматическая штука, как подписанный XML. Вот вместо него ASN.1 вполне мог применяться. Тем более, что области, в которых подписанный XML применяется (электронная коммерция), отнюдь не дешевые. И при разработке в них прикладных решений затраты на ASN.1 компиляторы вовсе не такие чувствительные.

Плохо то, что XML раскручен, а ASN.1 нет. Я, например, про него совершено случайно узнал. Поэтому при выборе решений многие разработчики такой альтернативы XML, как ASN.1 или, скажем, скриптовые языки, даже не видят. Из-за элементарного незнания.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Снова XML: Just Say No to XML
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 27.09.06 13:17
Оценка:
Здравствуйте, WolfHound, Вы писали:

M>>Вот вопрос. Чем их ASN.1 не устроил?

WH>Если мне не изменяет скалероз то он насквозь бинарный...

Уже давно есть стандарт ASN.1 XML Encoding Rules (ASN.1 XER).
В общем, какая идея, такое и название.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Снова XML: Just Say No to XML
От: Cyberax Марс  
Дата: 27.09.06 13:27
Оценка: 6 (1) :)
Здравствуйте, kan, Вы писали:

kan>Cyberax wrote:

>>> вот в jsf надо ";", но отделить пробелом.
>> Это не jsf, а jam. И я это пофиксил
kan>ты лучше xml прикрути туда
Уже поздно. Я уже Питоновый backend туда прикручиваю.
Sapienti sat!
Re[7]: Снова XML: Just Say No to XML
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 27.09.06 13:29
Оценка: 4 (1) +1
Здравствуйте, kan, Вы писали:

>> Представляю себе цепочку причинно-следственных связей:

kan>Это нужно делать только если ты эстет и проблемы со зрением "из-за обилия тегов и неудобной для восприятия глазом
kan>структуры разметки". Лично мне при нормальном xml-редакторе (да если ещё и специально обученном данной xsd-шкой)
kan>воспринимать структуру никто не мешает.

Прошу перечитать первый абзац из высказываний Голуба (хоть на русском в моем переводе, хоть на английском в оригинале) -- проблемы с XML начинаются тогда, когда на нем начинают писать программы вместо декларативных описаний. Может быть кто-то и может воспринимать что-то подобное за нормальный if:
<if>
  <condition>
    <and>
      <equal>
        <what variable="target"/>
        <to contant="win32"/>
      </equal>
      <equal>
        <what variable="compiler"/>
        <to constant="vc++"/>
      </equal>
    </and>
  </condition>
  <then>
    <action>
      ...bla-bla-bla...
    </action>
  </than>
</if>

но это если не сравнивать с:
if target == "win32" && compiler == "vc++"
  ...bla-bla-bla
end

или с:
(if (and (= target 'win32') (= compiler 'vc++'))
  (...bla-bla-bla...)
)


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Снова XML: Just Say No to XML
От: dshe  
Дата: 27.09.06 13:36
Оценка: :))) :))) :))) :)))
Здравствуйте, eao197, Вы писали:

E>Мнение Алана Голуба: Just Say No to XML


Вспомнилось. Надеюсь в тему: http://www.charlespetzold.com/etc/CSAML.html

C# Application Markup Language (CSAML): An Evolutionary Leap

...
In fact, CSAML is able to rid itself of every symbol used in old-syntax C#. For example, consider the following old-syntax C# assignment statement:

A = 5 * (B + 27 * C);

This statement translates without much fuss into the following chunk of CSAML:
<ExpressionStatement>
    <Assignment LValue="A">
        <Assignment.Expression>
            <MultiplicationExpression>
                <Multiplication.Multiplier>
                    <Literal Type="{x:Type Int32}"
                             Value="5" />
                </Multiplication.Multiplier>
                <Multiplication.Multiplicand>
                    <AdditionExpression Augend="B">
                        <AdditionExpression.Addend>
                            <Multiplication.Multiplier>
                                <Literal Type="{x:Type Int32}"
                                         Value="27" />
                            </Multiplication.Multiplier>
                            <MultiplicationExpression Multiplicand="C"/>
                      </AdditionExpression.Addend>
                   </AdditionExpression>
              </Multiplication.Multiplicand>
            </MultiplicationExpression>
        </Assignment.Expression>
    </Assignment>
</ExpressionStatement>

The advantages of this notation are obvious. Because no parentheses are required (or allowed), the programmer has composed the CSAML by carefully considering the problem. Errors are much less likely. The compiler can become more efficient as well because the statement has, in effect, been pre-parsed by the programmer.
...


ЗЫ Не воспринимайте слишком серьезно.
--
Дмитро
Re[8]: Снова XML: Just Say No to XML
От: Cyberax Марс  
Дата: 27.09.06 13:39
Оценка:
eao197 wrote:
> Прошу перечитать первый абзац из высказываний Голуба (хоть на русском в
> моем переводе, хоть на английском в оригинале) -- проблемы с XML
> начинаются тогда, когда на нем начинают писать программы вместо
> декларативных описаний. Может быть кто-то и может воспринимать что-то
> подобное за нормальный if
Понимаешь, в некоторых случаях на 10Кб декларативного кода приходится
несколько сотен байт подобного императивного. Стоит ли ради небольшого
неудобства лепить отдельный компилятор?

В принципе, для меня нет большой разницы использовать ли Ant (который
XML) или Jam (в котором свой язык) с точки зрения удобства языка. В
Ant'е я получаю подсветку ошибок и автокомплит по XSD, в Jam'е — удобное
квотирование и лаконичность.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[9]: Снова XML: Just Say No to XML
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 27.09.06 13:49
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Понимаешь, в некоторых случаях на 10Кб декларативного кода приходится

C>несколько сотен байт подобного императивного. Стоит ли ради небольшого
C>неудобства лепить отдельный компилятор?

Ради небольшого, естественно, нет.
А вот если на 400 байт декларативного описания приходится еще 4K императивщины, тогда...

C>В принципе, для меня нет большой разницы использовать ли Ant (который

C>XML) или Jam (в котором свой язык) с точки зрения удобства языка. В
C>Ant'е я получаю подсветку ошибок и автокомплит по XSD, в Jam'е — удобное
C>квотирование и лаконичность.

А я недавно от другого примера слегка ошалел. Для одной из утилит требовалось делать набор описаний в конфигах. Описания довольно однообразные и вручную делать их было ну очень муторно, да и черевато глупыми ошибками. Чтобы упростить их создание был сделан Ruby генератор, который на своем DSL позволял задать только часть описаний, а все остальное делал сам. Более того, чуть-чуть с ним поработав, прямо в DSL была определена вспомогательная функция, которая еще больше сокращала количество описаний. В результате DSL из десяти строчек приводил к генерации десятка конфигурационных файлов с сотнями строк в каждом. Да и сам код генератора оказался гораздо меньше по объему, чем генерируемые им файлы.

Вот теперь следующая идея ждет своего воплощения: встраивать Ruby-интерпритатор прямо в приложение, чтобы DSL им парсился и информация из DSL непосредственно в приложение поступала.

НО! Все это хорошо, пока настройки из приложения обратно в DSL сохранять не нужно.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Снова XML: Just Say No to XML
От: kan Великобритания  
Дата: 27.09.06 14:07
Оценка:
Cyberax wrote:

>> >> вот в jsf надо ";", но отделить пробелом.

>> > Это не jsf, а jam. И я это пофиксил
> kan>ты лучше xml прикрути туда
> Уже поздно. Я уже Питоновый backend туда прикручиваю.
Хотя бы. Но не то убожество, ещё один язык... брр...
А на каком этапе находится? Я ведь до сих пор не решился какую билд-систему заюзать... что-то идея cmake меня тоже не
вдохновила.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[6]: Снова XML: Just Say No to XML
От: kan Великобритания  
Дата: 27.09.06 14:10
Оценка:
FR wrote:

>> >> Напиши xsl-ку переводящую неудобный тебе формат в любой по вкусу.

>> > Это не выход
> kan>А что выход? Изучать ещё один синтаксис?
>
> Зачем новый хватит или S-выражений или например чего-то forth образного.
А как быть с DOM/SAX/XSD/XPath/XSLT? Что из этого можно прикрутить? Особенно интересуют схемы XSD/RelaxNG.
Да и мне честно говоря пофиг что писать "(" или "<", в чём выигрыш?
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[8]: Снова XML: Just Say No to XML
От: kan Великобритания  
Дата: 27.09.06 14:19
Оценка:
eao197 wrote:

> Прошу перечитать первый абзац из высказываний Голуба (хоть на русском в

> моем переводе, хоть на английском в оригинале) -- проблемы с XML
> начинаются тогда, когда на нем начинают писать программы вместо
> декларативных описаний. Может быть кто-то и может воспринимать что-то
> подобное за нормальный if:
Ну так рассуждать, в когда вообще декларативное описание будет выгодее?
<html>
  <head>
   <title>Hi!</title>
  </head>
  <body>
   <p>Hello world!</p>
  </body>
</html>

и что-то вроде
new html()
  .add(new head()
   .add(new title("Hi!"))
  .add(new body()
   .add(new p("Hello world!")));

?
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[9]: Снова XML: Just Say No to XML
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 27.09.06 14:32
Оценка: +3
Здравствуйте, kan, Вы писали:

>> Прошу перечитать первый абзац из высказываний Голуба (хоть на русском в

>> моем переводе, хоть на английском в оригинале) -- проблемы с XML
>> начинаются тогда, когда на нем начинают писать программы вместо
>> декларативных описаний. Может быть кто-то и может воспринимать что-то
>> подобное за нормальный if:
kan>Ну так рассуждать, в когда вообще декларативное описание будет выгодее?
kan>
kan><html>
kan>  <head>
kan>   <title>Hi!</title>
kan>  </head>
kan>  <body>
kan>   <p>Hello world!</p>
kan>  </body>
kan></html>
kan>


Вполне нормальный вариант. В LaTeX-овой разметке, или в Wiki, или в ReST, конечно, компактнее, но вполне себе хорошо. Это как раз идеальная задача для XML подобной разметки. Для того и создавался.

kan>и что-то вроде

kan>
kan>new html()
kan>  .add(new head()
kan>   .add(new title("Hi!"))
kan>  .add(new body()
kan>   .add(new p("Hello world!")));
kan>

kan>?

А это лучше заменить на:
html {
  head {
    title 'Hi'
  }
  body {
    p {
      'Hello, world!'
    }
  }
}


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[9]: Снова XML: Just Say No to XML
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 27.09.06 14:52
Оценка: -1
Здравствуйте, Cyberax, Вы писали:

C>В принципе, для меня нет большой разницы использовать ли Ant (который


слишком уж у Anta убогий язык. Это добивает в разы больше чем XML.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[7]: Снова XML: Just Say No to XML
От: FR  
Дата: 27.09.06 14:52
Оценка:
Здравствуйте, kan, Вы писали:

kan>FR wrote:


>>> >> Напиши xsl-ку переводящую неудобный тебе формат в любой по вкусу.

>>> > Это не выход
>> kan>А что выход? Изучать ещё один синтаксис?
>>
>> Зачем новый хватит или S-выражений или например чего-то forth образного.
kan>А как быть с DOM/SAX/XSD/XPath/XSLT? Что из этого можно прикрутить? Особенно интересуют схемы XSD/RelaxNG.
kan>Да и мне честно говоря пофиг что писать "(" или "<", в чём выигрыш?

Уже ни в чем
Просто похоже те кто разрабатывал XML не думали что его будут использовать как скриптовый язык, по моему это дурость.
Re[7]: Снова XML: Just Say No to XML
От: FR  
Дата: 27.09.06 14:52
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А с кодировками как быть? А с entity (чтобы не ломать пальцы, набирая

C>какие-нибудь экзотические символы)?

это все раешаемо.

C>Вот если все это прикрутить — получится ТОТ ЖЕ САМЫЙ XML, только вид с

C>профиля.

нет просто не надо использовать xml в качестве скрипта, для этого полно более подходящих и удобных кандидатов.
Re[10]: Снова XML: Just Say No to XML
От: kan Великобритания  
Дата: 27.09.06 15:00
Оценка:
eao197 wrote:

> А это лучше заменить на <http://markaby.rubyforge.org/&gt;:

>
> html {
> head {
> title 'Hi'
> }
> body {
> p {
> 'Hello, world!'
> }
> }
> }

Output defaults to XHTML 1.0 Transitional

А как это проверить? И что мне сделать, чтобы оно было, скажем, WML 1.2.1?
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Снова XML: Just Say No to XML
От: CrystaX Россия https://crystax.me/
Дата: 27.09.06 16:13
Оценка: 18 (2) +1
Здравствуйте, eao197, Вы писали:

Вот хороший пример того, как делать не надо (VoiceXML) :
<?xml version="1.0" encoding="UTF-8"?>

<vxml version = 2.1 >

<meta name="maintainer" content="YOUR_EMAIL@SOMEWHERE.COM"/>

<form id="CallTransfer">
  <block>
    <prompt>Preparing to dial the number</prompt>
  </block>

<!--
      Make sure you have outbound dialing priveleges, 
      else any call attempts will result in a 'busy' event.
      Contact support@voxeo.com for details
-->

  <transfer name="MyCall" dest="tel:+1234567890" 
          bridge="true" connecttimeout="20s" maxtime="60s">

    <filled>
      <if cond="MyCall == 'busy'">
        <prompt>
          Sorry, our lines are busy. Please try again later.
        </prompt>
        <exit/>

      <elseif cond="MyCall == 'noanswer'"/>
        <prompt>
          Hey, nobody is answering the phone. 
        </prompt>

      <elseif cond="MyCall == 'far_end_disconnect'"/>
        <prompt> 
          Your party must have hung up. how rude.
        </prompt>

      <elseif cond="MyCall == 'near_end_disconnect'"/>
        <submit next ="MyCoolCleanupPage.jsp"/>
    
      <elseif cond="MyCall == 'maxtime.disconnect'"/>
        <prompt> 
          Your call ran over the maxtime of sixty seconds, 
            and your called party has been disconnected.
        </prompt>

      </if>
    </filled>
  </transfer>
</form>
</vxml>


Самое интересное, что даже в этой схеме им не удалось избавиться от скриптового языка — в ветках elseif используется атрибут cond, содержимое которого — JavaScript. Здесь это еще не так заметно, но я видел и более "ветвистые" условия, записанные на JS. Т.е. в результате получили ни то ни се — из XML взяли исключительно недостатки, выбросив достоинства. Результат — налицо.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Re[10]: Снова XML: Just Say No to XML
От: Cyberax Марс  
Дата: 27.09.06 18:23
Оценка:
eao197 wrote:
> Ради небольшого, естественно, нет.
> А вот если на 400 байт декларативного описания приходится еще 4K
> императивщины, тогда...
Тогда действительно дело нечисто

Build-системы как раз стоят посередине между императивщиной и
декларативным описанием.

> Вот теперь следующая идея ждет своего воплощения: встраивать

> Ruby-интерпритатор прямо в приложение, чтобы DSL им парсился и
> информация из DSL непосредственно в приложение поступала.
А зачем?
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[4]: Снова XML: Just Say No to XML
От: Mamut Швеция http://dmitriid.com
Дата: 28.09.06 06:21
Оценка:
>> Вот вопрос. Чем их ASN.1 не устроил?
C>Ответ: назови мне 10 полностью свободных и бесплатных решений для ASN
C>для С++, Java, Perl, PHP, C, C#.

Ну вот в том-то и дело
... << RSDN@Home 1.2.0 alpha rev. 655>>


dmitriid.comGitHubLinkedIn
Re[4]: Снова XML: Just Say No to XML
От: Mamut Швеция http://dmitriid.com
Дата: 28.09.06 06:21
Оценка:
M>>Вот вопрос. Чем их ASN.1 не устроил?
WH>Если мне не изменяет скалероз то он насквозь бинарный...

В нем есть XER, кодирующий его в ХМЛ (веяние времени, однако )
... << RSDN@Home 1.2.0 alpha rev. 655>>


dmitriid.comGitHubLinkedIn
Re: Ну дык...
От: c-smile Канада http://terrainformatica.com
Дата: 28.09.06 06:53
Оценка: 40 (4)
Здравствуйте, eao197, Вы писали:

... Ну дык json то рулез я всегда говорил...

А xml ... самый лучший xml это html, x который. Там ему самынное и место...

как язык описания структур данных богаче чем xml ибо есть в нем коллекции array и map.
Також возможность сказать [ 1, 2, 3 ] вместо
<array>
  <value type="integer">1</value>
  <value type="integer">2</value>
  <value type="integer">3</value>
</array>


явно экономит много движений руками и глазами.

Если же надо еще прцудуры-функции в поток данных вставлять то естествнным образом переход
на JS никого не должен остановить.

Наличие штук типа JsonT (Transforming Json — аналог XSLT) http://goessner.net/articles/jsont/ тоже
радует.

Имплементация json parser и "json DOM" проще в разы чем полный XML парсер + DOM.
Вот рекомендую C пакет http://oss.metaparadigm.com/json-c/


---
А еще вон народ xaml'ом развлекается... делать им нечего...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.