История изменений
Исправление den73, (текущая версия) :
Ну и что доказывает пример на Powershell? Объекты есть, сериализация вложенных структур как-то прошла мимо данного примера. Т.е. я не вижу, как этот пример мог бы обосновать ненужность чего-то подобного JSON или S-выражениям в языках типа shell или tcl.
Я читал одну из апологий за tcl, что вот можно написать некий конфиг:
hosts {
ip 127.0.0.1
name www.ya.ru
}
По сравнению с этим, JSON не позволяет ничего исполнять и его можно валидировать. В том же лиспе элементарно можно управлять тем, является ли конфиг исполняемым или в него даже нельзя внедрить никакого исполнения *read-eval* nil .
Кроме этого, ни tcl, ни баш не предлагают встроенного (без наколенных парсеров) способа создавать конфиги. Именно поэтому в мире JS все конфиги могли бы быть в JSON, если бы там были допустимы комментарии. Так-то многие *.js, с теми же последствиями для уязвимости. Только в лиспе толково - можно делать конфиги s-выражениями.
А в юниксе у разных программ, вообще говоря, разные форматы конфига, хотя по сути смысл конфигов одинаков. А некоторые вещи приходится выражать кодом, с теми же последствиями (уязвимость, отсутствие контроля за ошибками).
Исправление den73, :
Ну и что доказывает пример на Powershell? Объекты есть, сериализация вложенных структур как-то прошла мимо данного примера. Т.е. я не вижу, как этот пример мог бы обосновать ненужность чего-то подобного JSON или S-выражениям в языках типа shell или tcl.
Я читал одну из апологий за tcl, что вот можно написать некий конфиг:
hosts {
ip 127.0.0.1
name www.ya.ru
}
Кроме этого, ни tcl, ни баш не предлагают встроенного (без наколенных парсеров) способа создавать конфиги. Именно поэтому в мире JS все конфиги могли бы быть в JSON, если бы там были допустимы комментарии. Так-то многие *.js, с теми же последствиями для уязвимости. Только в лиспе толково - можно делать конфиги s-выражениями.
А в юниксе у разных программ, вообще говоря, разные форматы конфига, хотя по сути смысл конфигов одинаков. А некоторые вещи приходится выражать кодом, с теми же последствиями (уязвимость, отсутствие контроля за ошибками).
Исправление den73, :
Ну и что доказывает пример на Powershell? Объекты есть, сериализация вложенных структур как-то прошла мимо данного примера. Т.е. я не вижу, как этот пример мог бы обосновать ненужность чего-то подобного JSON или S-выражениям в языках типа shell или tcl.
Я читал одну из апологий за tcl, что вот можно написать некий конфиг:
hosts {
ip 127.0.0.1
name www.ya.ru
}
[/quote]
И, добавив пару команд, сделать этот конфиг исполняемым. Но ведь ясно, что это наколенная поделка, поскольку такой способ чтения конфига страдает от внедрения вредоносного кода, и бороться с этим требует неких усилий. Которые по умолчанию забудутся и в итоге останется дыра. По сравнению с этим, JSON не позволяет ничего исполнять. В том же лиспе элементарно можно управлять тем, является ли конфиг исполняемым или в него даже нельзя внедрить никакого исполнения *read-eval* nil .
Кроме этого, ни tcl, ни баш не предлагают встроенного (без наколенных парсеров) способа создавать конфиги. Именно поэтому в мире JS все конфиги могли бы быть в JSON, если бы там были допустимы комментарии. Так-то многие *.js, с теми же последствиями для уязвимости. Только в лиспе толково - можно делать конфиги s-выражениями.
А в юниксе у разных программ, вообще говоря, разные форматы конфига, хотя по сути смысл конфигов одинаков. А некоторые вещи приходится выражать кодом, с теми же последствиями (уязвимость, отсутствие контроля за ошибками).
Исходная версия den73, :
Ну и что доказывает пример на Powershell? Объекты есть, сериализация вложенных структур как-то прошла мимо данного примера. Т.е. я не вижу, как этот пример мог бы обосновать ненужность чего-то подобного JSON или S-выражениям в языках типа shell или tcl.
Я читал одну из апологий за tcl, что вот можно написать некий конфиг:
hosts { ip 127.0.0.1 name http://www.ya.ru }
И, добавив пару команд, сделать этот конфиг исполняемым. Но ведь ясно, что это наколенная поделка, поскольку такой способ чтения конфига страдает от внедрения вредоносного кода, и бороться с этим требует неких усилий. Которые по умолчанию забудутся и в итоге останется дыра. По сравнению с этим, JSON не позволяет ничего исполнять. В том же лиспе элементарно можно управлять тем, является ли конфиг исполняемым или в него даже нельзя внедрить никакого исполнения *read-eval* nil .
Кроме этого, ни tcl, ни баш не предлагают встроенного (без наколенных парсеров) способа создавать конфиги. Именно поэтому в мире JS все конфиги могли бы быть в JSON, если бы там были допустимы комментарии. Так-то многие *.js, с теми же последствиями для уязвимости. Только в лиспе толково - можно делать конфиги s-выражениями.
А в юниксе у разных программ, вообще говоря, разные форматы конфига, хотя по сути смысл конфигов одинаков. А некоторые вещи приходится выражать кодом, с теми же последствиями (уязвимость, отсутствие контроля за ошибками).