Идеальный синтаксис (постановка задачи)
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 11.02.11 22:29
Оценка: 5 (1) :)
примечание: синтаксис трактуется в узком смысле, как способ записи информации в виде текста (последовательности символов)

Что такое информация?
для лучшего понимания задачи синтаксиса, стоит немного отвлечься и разобраться что такое "информация".

описание дается упрощенное, чтобы его можно было себе наглядно представить (всё тоже самое можно формально ввести с помощью той же теории категории, но это будет менее визуально представимо)

попробуем построить, что такое информация:
начнем с простого: структуры и атомы.
структура — это вид отношений(связей) между атомами.
выделяют (по мере усложнения) следующие структуры: один элемент, множество(список), дерево, граф.
в первом приближении можно считать, что структура отвечает за ребра, а атомы — это вершины (но при этом стоит помнить, что с точки зрения математики вершины и ребра взаимозаменяемы, т.е. в любой момент можно ребра обозвать вершинами, а вершины — ребрами).
атомы (по мере усложнения): все одинаковые, фиксированный набор термов(имен), бесконечный набор термов(имен).
тоже самое применимо и к связам(отношениям): связи могут быть одинаковые или именованные — это дает такие структуры как:
"структура"(множество именованных элементов), именованное дерево, именованный граф.
отношения могут связывать не только отдельные термы, но и также множества или целые графы, и само отношение может быть представимо целым графом, а не только термом.

в итоге, информация, в общем виде — это именованный граф термов c элементами самоподобия, где и вершины и ребра также могут являться графами

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

Основная проблема синтаксиса — с помощью линейной структуры текста и фиксированного набора символов(термов) передать графовую структуру информации и бесконечный набор термов

Критерии лучшего синтаксиса:
компактность,
стабильность(контекстно-независимость),
атомарность изменений,
близость к текстам, которыми обмениваются между собой люди.

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


Приемы используемые синтаксисом
Для решения своей задачи синтаксис использует определенный набор приемов.

Разрыв в структуре(информация — граф, а текст — линеен(список)) решается как:
а) граф представляется в виде дерева, а остальные связи вводятся маркировкой элементов дерева и "использованием" маркеров
b) дерево записывается с помощью скобочной записи

Разрыв между конечным числом символов и бесконечностью термов(например, чисел) решается как:
терм кодируется последовательностью символов. конец последовательности помечается спец. символом.

Оба этих приема требуют ввода новых термов (скобки, маркеры, привязка маркера к элементу, "использование" маркера, границы одного терма и т.д.), которых не было в самой информации, что в ряде случаев может приводить к конфликту термов информации с термами синтаксиса.

Большая часть дальнейших улучшений синтаксиса сводятся к борьбе со скобочной записью и борьбе с конфликтом между исходными термами и термами синтаксиса.(это в следующий раз)

продолжение следует...
Re: Идеальный синтаксис (постановка задачи)
От: l33thaxor  
Дата: 12.02.11 00:20
Оценка: +1 :))) :))) :))) :)))

Хвилищевский ел клюкву, стараясь не морщиться. Он ждал, что все скажут: «Какая сила характера!» Но никто не сказал ничего.
— Даниил Хармс

Re: Идеальный синтаксис (постановка задачи)
От: FR  
Дата: 12.02.11 06:52
Оценка: 1 (1)
Здравствуйте, DarkGray, Вы писали:

DG>Большая часть дальнейших улучшений синтаксиса сводятся к борьбе со скобочной записью и борьбе с конфликтом между исходными термами и термами синтаксиса.(это в следующий раз)


Если не бороться со скобками то идеальный синтаксис уже давно изобретен s-выражения и соответственно язык Lisp.
Другой вариант позволяющий описывать более сложные структуры меньшим количеством скобок — Refal.
Re: Идеальный синтаксис (постановка задачи)
От: Vaako Украина  
Дата: 12.02.11 10:10
Оценка: 13 (2)
Здравствуйте, DarkGray, Вы писали:

DG>примечание: синтаксис трактуется в узком смысле, как способ записи информации в виде текста (последовательности символов)


DG>Что такое информация?

DG>для лучшего понимания задачи синтаксиса, стоит немного отвлечься и разобраться что такое "информация".

DG>описание дается упрощенное, чтобы его можно было себе наглядно представить (всё тоже самое можно формально ввести с помощью той же теории категории, но это будет менее визуально представимо)


DG>в итоге, информация, в общем виде — это именованный граф термов c элементами самоподобия, где и вершины и ребра также могут являться графами


DG>Задача, проблемы и критерии лучшести синтаксиса

DG>Основная задача синтаксиса — представить информационный граф в виде текста.

DG>Основная проблема синтаксиса — с помощью линейной структуры текста и фиксированного набора символов(термов) передать графовую структуру информации и бесконечный набор термов


DG>Критерии лучшего синтаксиса:

DG>компактность,
DG>стабильность(контекстно-независимость),
DG>атомарность изменений,
DG>близость к текстам, которыми обмениваются между собой люди.

DG>Гипотеза: т.к. задача, проблемы и критерии хорошести синтаксиса фиксированные, то и задача выделения лучшего синтаксиса имеет одно решение (или конечный небольшой набор решений).

DG>


DG>продолжение следует...


Дискретизация логики вынуждает вас дробить цельно воспринимаемое на отдельные факты, явления, понятия и категории, проводя между ними искусственные границы.

Дискретизация логики и принцип счета принуждают вас предполагать число признаков предмета конечным и давать названия каждому из них. Отсюда появляется весьма сомнительная возможность отчленять одни признаки от других — прием, называемый вами абстрагированием. Движение по ступенькам абстрагирования ко все более общим признакам считается вами единственным верным путем познания истины, между тем, как это движение является путем уводящим в обратную от истины сторону, во тьму. Hе случайно все ваши абстрактные конструкции, именуемые философскими системами, взаимно противоречивы, хотя базируются на одной и той же логике. Шаг за шагом погружаясь во мрак по ступенькам абстракции, шаг за шагом теряя связь с реальным миром, философские системы постепенно утрачивают ориентировку и доходят до того, что в тупиковой точке этого движения, на бессмысленный вопрос о первенстве материи или духа, дают диаметрально противоположные ответы. Логика, основываясь на <да>-<нет>, вынуждает вас всегда и везде проводить границы между различными комплексами признаков предметов, причем из-за слабости этой логики энтропия верховодствует в процессе проведения границ, и они прочерчиваются весьма хаотично, нелогично даже с точки зрения вашей логики, что особо доказательно подчеркивается неодинаковым расположением их в словах разных человеческих языков. Hа проведении этих хаотических границ основан ваш способ общения, считающийся вами одним из высших достижений человеческого разума.
Re[2]: Идеальный синтаксис (постановка задачи)
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 12.02.11 10:41
Оценка:
FR>Если не бороться со скобками то идеальный синтаксис уже давно изобретен s-выражения и соответственно язык Lisp.

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

s-выражение — умеет описывать лишь однородное(неименованное) дерево термов, а этого не достаточно.

xml в этом плане лучше:
a) дерево именованное,
b) есть фиксирование способа привязки к узлам имен, и отчасти как на это сослаться(через id, xlink и т.д.), но пользуются редко из-за большой громоздкости.

FR>Другой вариант позволяющий описывать более сложные структуры меньшим количеством скобок — Refal.


спасибо, посмотрю
Re: Идеальный синтаксис (постановка задачи)
От: batu Украина  
Дата: 12.02.11 10:46
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>примечание: синтаксис трактуется в узком смысле, как способ записи информации в виде текста (последовательности символов)


Ну, есть такой синтаксис. И что?
Re[3]: Идеальный синтаксис (постановка задачи)
От: FR  
Дата: 12.02.11 11:13
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>в нем дерево неименованное, что не хватает

DG>и не зафиксирован синтаксис дать имя узлу, а потом на него сослаться.

DG>s-выражение — умеет описывать лишь однородное(неименованное) дерево термов, а этого не достаточно.


Это, да но если рассматривать лисп как язык а не чисто s-выражения то там это все вполне нормально описывается.

DG>xml в этом плане лучше:

DG>a) дерево именованное,
DG>b) есть фиксирование способа привязки к узлам имен, и отчасти как на это сослаться(через id, xlink и т.д.), но пользуются редко из-за большой громоздкости.

Лучше http://en.wikipedia.org/wiki/YAML в отличии от XML вполне человекочитабелен.
Re[2]: Идеальный синтаксис (постановка задачи)
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 12.02.11 11:31
Оценка:
V>Дискретизация логики вынуждает вас дробить цельно воспринимаемое на отдельные факты, явления, понятия и категории, проводя между ними искусственные границы.

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

зы
противоположный способ — помедитируйте, смотря в потолок, и понимание изучаемого объекта во всей его многогранности само на вас упадёт — работает лишь в сказках
Re[4]: Идеальный синтаксис (постановка задачи)
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 12.02.11 11:39
Оценка:
FR>Это, да но если рассматривать лисп как язык а не чисто s-выражения то там это все вполне нормально описывается.

через let? но это немножко не то, семантика другая
да и не все ссылки таким образом можно записать.

FR>Лучше http://en.wikipedia.org/wiki/YAML в отличии от XML вполне человекочитабелен.


в yaml-е есть плюсы и минусы.
из минусов — необходимо много знать, чтобы сгенерить валидный yaml без возможности аттак вида injection-s
имена объявлять и использовать можно, что плюс, но минус что все эти имена глобальны, что затрудняет описывание многих структур.

т.е. в yaml основной плюс — близость к текстам на ЕЯ
Re[5]: Идеальный синтаксис (постановка задачи)
От: FR  
Дата: 12.02.11 11:53
Оценка:
Здравствуйте, DarkGray, Вы писали:

FR>>Это, да но если рассматривать лисп как язык а не чисто s-выражения то там это все вполне нормально описывается.


DG>через let? но это немножко не то, семантика другая

DG>да и не все ссылки таким образом можно записать.

В принципе макросами можно задать свою семантику.
Re[6]: Идеальный синтаксис (постановка задачи)
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 12.02.11 12:06
Оценка:
FR>В принципе макросами можно задать свою семантику.

принцип "сделай сам" очень плох в данной ситуации, т.к. приводит к тому, что две разные программы не смогут договориться с друг другом.
Re: Идеальный синтаксис (постановка задачи)
От: Silver_S Ниоткуда  
Дата: 12.02.11 16:10
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>Критерии лучшего синтаксиса:

DG>компактность,
DG>стабильность(контекстно-независимость),
DG>атомарность изменений,
DG>близость к текстам, которыми обмениваются между собой люди.

Какой из вариантов лучше? :
1) var v = new MyClass();
2) var v = MyClass();
Re[2]: Идеальный синтаксис (постановка задачи)
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 12.02.11 16:44
Оценка: -1
S_S> Какой из вариантов лучше? :
S_S>1) var v = new MyClass();
S_S>2) var v = MyClass();

имхо, второй.
Re[2]: Идеальный синтаксис (постановка задачи)
От: Фанатик Ад http://vk.com/id10256428
Дата: 12.02.11 17:31
Оценка: :)
Здравствуйте, Silver_S, Вы писали:

S_S> Какой из вариантов лучше? :

Вот такой:
var v : MyClass;
v = MyClass.Constructor();
...
v.Destructor();
-----------------------
никогда не понимал, зачем конструктору и деструктору иметь имя.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[3]: Идеальный синтаксис (постановка задачи)
От: Курилка Россия http://kirya.narod.ru/
Дата: 12.02.11 17:37
Оценка:
Здравствуйте, Фанатик, Вы писали:

Ф>Здравствуйте, Silver_S, Вы писали:


S_S>> Какой из вариантов лучше? :

Ф>Вот такой:
Ф>var v : MyClass;
Ф>v = MyClass.Constructor();
Ф>...
Ф>v.Destructor();
Ф>-----------------------
Ф>никогда не понимал, зачем конструктору и деструктору иметь имя.

а Constructor и Destructor — это не имена?
Re[3]: Идеальный синтаксис (постановка задачи)
От: Silver_S Ниоткуда  
Дата: 12.02.11 17:52
Оценка: +2
Здравствуйте, DarkGray, Вы писали:

S_S>> Какой из вариантов лучше? :

S_S>>1) var v = new MyClass();
S_S>>2) var v = MyClass();
DG>имхо, второй.

Тут думаю мнения разделятся, new наверное не просто в наследство достался от С++ -> Java.
Второй вариант компактнее, и логично вроде все — конструктор это функция.
Но слишком уж специфическая семантика у этой функции.
Удобнее видеть костыли, подсказывающие что это конструктор, чтобы быстрее текст читался.

Если все такие специфические тонкости из ЯП повыкидывать, что останется — голый язык структур данных.
Голый XML, или S-выражения. Ну все согласятся — синтаксис замечательный, логичный стройный. Но писать программы на нем не будут.

Главная характеристика хорошего синтаксиса, ИМХО, высокая читабельность текста на нем.
Это в этом что ли пункте учтено? : "близость к текстам, которыми обмениваются между собой люди."
Re[4]: Идеальный синтаксис (постановка задачи)
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 12.02.11 18:38
Оценка:
S_S>Главная характеристика хорошего синтаксиса, ИМХО, высокая читабельность текста на нем.
S_S>Это в этом что ли пункте учтено? : "близость к текстам, которыми обмениваются между собой люди."

то, что ты затронул это ближе к стабильности (контексто-независимости).
без new получается, что выражение F(..) — может быть функцией, а может быть конструктором — в зависимости от контекста.
неудобство такого прыганья критично — если функция и конструктор демонстрируют значительно разное поведение.

но я сейчас считаю, что особой разницы между функцией и конструктором нет с точки зрения вызова, поэтому new можно убрать из-за малой полезности.
Re[4]: Идеальный синтаксис (постановка задачи)
От: Фанатик Ад http://vk.com/id10256428
Дата: 12.02.11 19:01
Оценка: :))
Здравствуйте, Курилка, Вы писали:


Ф>>никогда не понимал, зачем конструктору и деструктору иметь имя.


К>а Constructor и Destructor — это не имена?


Это больше похоже на ключевые слова.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[5]: Идеальный синтаксис (постановка задачи)
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 12.02.11 19:36
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>но я сейчас считаю, что особой разницы между функцией и конструктором нет с точки зрения вызова, поэтому new можно убрать из-за малой полезности.


Ну, таким образом можно отказаться и от "var".
Вселенная бесконечна как вширь, так и вглубь.
Re[5]: Идеальный синтаксис (постановка задачи)
От: hardcase Пират http://nemerle.org
Дата: 12.02.11 20:08
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>особой разницы между функцией и конструктором нет с точки зрения вызова, поэтому new можно убрать из-за малой полезности.


В одном замечательном языке так и поступили.
/* иЗвиНите зА неРовнЫй поЧерК */
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.