deep-econom (deep_econom) wrote,
deep-econom
deep_econom

Category:

Дискуссия о семантике. Семантика - это неявный синтаксис, глубинный синтаксис.

Произошло обсуждение про семантику.
Что есть семантика?
Я там высказал чуть более подробно почему "всё есть синтаксис, семантики нет".
Сделал это достаточно формально.
Ранее говорил, что семантика вид синтаксиса.
Новая мысль пришла в диалоге, что семантика это неявный синтаксис, глубинный синтаксис.

---
СЕМАНТИКА
@SerjAleksFebruary 05, 2021
008. Семантика — пара, образующая отношение или отношение, образующее пару. Лексическая структура — запись семантики. Пример семантической операции в программировании — присваивание переменной значения. Для любого параметра в … Левая часть в записи и правая часть в записи. Оригинал и модель. Отношение образует пару. Части пары могут состоять из нескольких моделей. Могут быть атрибутивные и препозициональные отношения, характеризующие состояние обозначающего объекта …
https://telegra.ph/SEMANTIKA-02-05

=======дискуссия==============

Viktor Sirotin, [22.06.21 16:44]
[Переслано от Viktor Sirotin]
Мне это определение не нравится своей предметной суженностью. Насколько я могу судить, оно даже уже, чем определения из Википедии.
Из моей практики могу сказать, что определения различных типов семантик из Википедии применимы в основном к построению трансляторов или интерпретаторов языков программирования (я имею ввиду https://en.m.wikipedia.org/wiki/Semantics_(computer_science))
«Настоящая» семантика в программировании служит для определения того, как меняются объекты предметной области со временем/в завимимости от внешних воздействий или внутренних законов развития.
Наиболее конструктивно эту семантику описывает UML.
Семантику изолированных объектов хорошо описывают конечные автоматы. Семантику групп объектов хорошо описывают Activity диаграммы.

ALEX BUR, [22.06.21 16:47]
Ну предположим, что соглашаюсь. Временно. )

1. Что есть семантика?

2. Давайте возьмем несколько разных семантик и спросим, что между ними общего?

ALEX BUR, [22.06.21 16:48]
Денотационная семантика ,
Операционная семантика ,
Аксиоматическая семантика

ALEX BUR, [22.06.21 16:48]
***Семантику групп объектов хорошо описывают Activity диаграммы.

Возьмем любой самый простой объект, который удобен для вас и определим семантику. Сделаете?

ALEX BUR, [22.06.21 16:50]
Что придает смысл программе?
И в чем заключается этот смысл?

ALEX BUR, [22.06.21 16:51]
***Учебники: Флойд, Роберт В. (1967). «Придание смысла программам»
(по вашей ссылке)

Viktor Sirotin, [22.06.21 17:18]
[В ответ на ALEX BUR]
Как я упоминал в обсуждаемом посте, для описания изолированных объектов лучше подходят конечные автоматы.
*** Сделаете?
Разумеется. Вот например модель из элетронного учебника по конечным автоматам для светофора, который я написал 25 лет назад:

https://www.sirotin.eu/HTMLS/ENDLAUTOM.HTM
Там текст на немецком, но по картинкам понять можно.
Есть открытые репозитории с миллионами моделей на все случаи жизни, например: https://www.genmymodel.com/
Закрытых моделей гигантов кровавого энтерпрайза и специализированных консорциумов, которые проросли в открытый мир фраймворками типа eTom https://en.m.wikipedia.org/wiki/Business_Process_Framework_(eTOM) ещё больше.
UML работает осень хорошо, но это профессиональный инструмент с очень высоким порогом вхождения. Примерно как интегралы или стохастика в математике.
Их трудно изучать, а ещё труднее правильно использовать на практике. Поэтому часто эти мучения заменяют «прикидкой», «здравым смыслом» и т.д. В целом это работает. Но для взлёта надо всё же интегралы применять.
P.S: Я не пытаюсь Вас отговорить от Вашей затеи. Даже снимаю шляпу перед идущими свои путём. Но думаю, Вам будет полезно узнать мое мнение.

Viktor Sirotin, [22.06.21 17:20]
[В ответ на ALEX BUR]
Признаться, я эту ссылку не припоминаю и боюсь, эту книгу не читал.🥺

ALEX BUR, [22.06.21 17:30]
https://en.m.wikipedia.org/wiki/Semantics_(computer_science)
Только что выше вы давали, там список внизу. Учебник просто демонстрирует название, не более того.

Viktor Sirotin, [22.06.21 17:32]
[В ответ на ALEX BUR]
Для меня смысл программы состоит в том, что она делает с внешним миром (реальным или воображаемым).
Самое жесткое место - это где программы выходят в физический мир.
Я программировал САПР по резцам (поз. 19 в https://www.sirotin.eu/rub_publications/lang_de/index.shtml) Резцы в машиностроении - это свой мир. К сожалению, вначале система иногда проектировала «невозможные физически» резцы.
Мне приходилось программировать систему , которая в т.ч. назначала дозировку лекарства. Она (программа!) могла убить людей.
В виртуальном мире жизнь «проще». У нас есть объекты, состовляющие этот мир. Программа их меняет. Законы изменения задаются семантикой.
Но это - моё мнение. На общность не претендую.

ALEX BUR, [22.06.21 17:36]
Вы своим первым комментарием заговорили об определении семантики.

Вот я и предложил совместными усилиями уточнить понятие семантики, чтобы понять достаточно определение С.Шишкина или нет.

Я тоже готов порассуждать на эту тему, мне она интересна, можно уточнить своё/моё понимание семантики и наше в целом.
Если повезёт, то уточним вплоть до формального определения или определения, которое можно формализовать.

ALEX BUR, [22.06.21 17:40]
Мои вопросы были направлены на то, чтобы побудить уточнить определение семантики.

ALEX BUR, [22.06.21 17:42]
***Семантику групп объектов хорошо описывают Activity диаграммы.

Беру объект стул. Где семантика?
Т.е. надо брать иной объект? Какой взять объект, чтобы была семантика? Активный объект брать? Тот, который совершает действия?
Но мы говорили и о семантике текста программы.

ALEX BUR, [22.06.21 17:44]
***Для меня смысл программы состоит в том, что она делает с внешним миром (реальным или воображаемым).

Т.е. семантика программы заключается в сопоставлении тексту программы физических действий.
упорядоченная пара (текст_проги, физ_действия_переферии) - так?

ALEX BUR, [22.06.21 17:50]
Еще в математике есть семантическая функция = интерпретация (отображение) теории на множество со структурой (которое называют моделью теории Т при интерпретации Сигма)

Viktor Sirotin, [22.06.21 17:52]
[В ответ на ALEX BUR]
*** Беру объект стул. Где семантика?
UML определяет структуру и семантику в своих двух основных разделах.
Стул - это структура.
Семантика - это поведение.
Когда у стула появится поведение - появится семантика.
Возьмите лучше бойлер (стационарный кипятильник). У него есть поведение. Его можно описать конечным автоматом. И можно по-разному спрограммировать. Одно из моих рассуждений на эту тему применительно к Java Optional: https://habr.com/ru/post/347576/

ALEX BUR, [22.06.21 17:58]
Мысль С.Шишкина как я ее понял состояла в следующем.
Семантика появляется там, где есть упорядоченная пара
(обозначение, обозначаемое)
обозначение —> обозначаемое
(имя, объект)
имя —> объект

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

Соответствие, устанавливаемое такой парой и есть семантическое и есть семантика.

Viktor Sirotin, [22.06.21 17:59]
[В ответ на ALEX BUR]
*** Т.е. семантика программы заключается в сопоставлении тексту программы физических действий.
упорядоченная пара (текст_проги, физ_действия_переферии) - так?

Это называется археологией кода, когда у нас есть код и надо понять, когда какая его часть что делает.
Это очень неблагодарное и к счастью, редкое занятие.
В большинстве случаев архитекторы определяют семантику системы ДО ТОГО как её начнут программировать, чтобы:
- согласовать с стекхолдерами,
- подумать, а нельзя ли купить или найти open source решение,
- если надо - отдать на программирование (возможно, разные куски поведенич в разные команды)
- отдать тестерам для параллельной подготовки тестов,
- и т.д.

ALEX BUR, [22.06.21 17:59]
Когда мы придаем смысл программам, то мы их интерпретируем или компилируем. Т.е. компилятор и есть семантическое отображение.

ALEX BUR, [22.06.21 18:00]
[В ответ на Viktor Sirotin]
Ну вот мы и пришли к совершенно разному пониманию термина семантика.

ALEX BUR, [22.06.21 18:01]
Вопрос про семантику на мой взгляд ОЧЕНЬ ГЛУБОКИЙ.
Выскажу тезис - его мало кто понимает, наверное, ИМХО.

sergey shishkin, [22.06.21 18:04]
[В ответ на ALEX BUR]
Как следствие разных позиций в определении модели. Я предвижу, что и все остальное будет сводится к этой ситуации. 😊

Viktor Sirotin, [22.06.21 18:16]
[В ответ на ALEX BUR]
*** Ну вот мы и пришли к совершенно разному пониманию термина семантика.

Выше по течению дискуссии в этой группе я упоминал DDD Domain Driven Design.

Одна из простых, но очень полезных идей в DDD - Bounded Contex или Subdomain.

https://martinfowler.com/bliki/BoundedContext.html

Например, в веб-шопе человек просматривает товары и тогда он User, который просто трекается.
Если он собрался что купить и залогинился, он превращается в Customer, которому могут быть сделаны скидки и т.д. , например в зависимости от его адреса.
А в система оплаты он называется тоже Customer, но там его адрес мало интересен, а он представлен последовательностью ивентов, представляющих историю пго платежей.
Другими словами, одно и то же слово в разных контекстах может означать и разные структуры данных и разное поведение.
Это простое, но очень важное соображение.

Когда я говорю о семантике, я подразумеваю контекст программирования массовых сервисов и программ.

BTW. UMLприменяют не только в программировании. С помощью UML была определена полная модель Боинга (не того, который потом падал 😉)

ALEX BUR, [22.06.21 18:18]
Я говорю о любой семантике, о любой!
(отлучусь)

Viktor Sirotin, [22.06.21 18:21]
[В ответ на ALEX BUR]
Согласен. И в обозначенном контексте: проблемы определения полноты, внутренней непротиворечивости и имплементируемости моделей поведения (семантики) еще ждут своего решения.
К сожалению, как я уже упоминал, мутные воды агильности сильно подсмыли начавший было накапливаться плодородный слой😥

Viktor Sirotin, [22.06.21 18:26]
[В ответ на ALEX BUR]
Боюсь, старина Гёдель Вашу затею бы не одобрил😉
Она у вас и получается как раз не любая, а очень узкая, поскольку сомнительно, что она включает семантику тех же конечных автоматов, ИМХО.

ALEX BUR, [22.06.21 19:17]
Ну давайте вернемся к семантике кон.автоматов.
Берем самый простой автомат с 2 состояниями: тик-так
0—>1
1—>0
Где тут семантика?

ALEX BUR, [22.06.21 19:21]
Мы со стариком Марковым не боимся австрияков Геделей. )
https://ru.wikipedia.org/wiki/Нормальный_алгоритм

Viktor Sirotin, [22.06.21 20:02]
[В ответ на ALEX BUR]
Семантика простая. Один входной сигнал (временной импульс) и табличка с двумя состояниями. Позволяет вычислить состояние черех х тактов.

ALEX BUR, [22.06.21 20:14]
Это какое-то описание. Но что есть семантика?

ALEX BUR, [22.06.21 20:16]
Я к чему это говорю...
Тут нет семантики. Точно также как и у стула или у часов, или у реки.

ALEX BUR, [22.06.21 20:16]
Вот мы с С.Шишкиным анализировали кучу определений семантики и пришли к нашему пониманию понятия семантика.

ALEX BUR, [22.06.21 20:19]
https://ru.wikipedia.org/wiki/Формальная_семантика

***Формальная семантика — дисциплина, изучающая семантику (интерпретации) формальных и естественных языков

тут семантика=интерпретация=отображение

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

Viktor Sirotin, [23.06.21 01:47]
[Переслано от Viktor Sirotin]
Да, мне кажется мы в «Материализация идей» выяснили разницу в подходах.
Для меня хорошая модель семантики «хорошо» описывает поведение как простых, так и весьма сложных технических систем - от бойлера до самолёта в реальном мире и от игры «Жизнь» до системы управления международным концерном или социальной системы типа «Госуслуги».
Что значит «хорошо»? Во первых - прагматически. Это опробовали и работает.
А без этого было бы наверняка хуже.
Во вторых - мы можем проверять (как - другой вопрос) полноту, внутренную непротиворечивость и реализуемость семантической модели.

Viktor Sirotin, [23.06.21 02:00]
Хочу уточнить, что данное здесь применение термина «семантка» распространено среди архитекторов ПО, но создатели UML его всё же напрямую не используют, а используют более неуклюжее название «Dynamic (or behavioral) view“ в противовес «Static (or structural) view».
Насколько я понимаю, это сделано так, поскольку задолго до них термин «семантика» застолбили для себя учёные по Computer Science, которые на заре развития этой этой дисциплины, которую теперь называют Информатикой, обслуживали в основном компиляторщиков.

ALEX BUR, [23.06.21 02:08]
***Для меня хорошая модель семантики «хорошо» описывает поведение как простых, так и весьма сложных технических систем - от бойлера до самолёта в реальном мире и от игры «Жизнь» до системы управления международным концерном или социальной системы типа «Госуслуги».
Что значит «хорошо»? Во первых - прагматически. Это опробовали и работает.

Для меня тоже + еще теория моделей метаматематика + все остальные семантики.

ALEX BUR, [23.06.21 02:15]
Ну и вывод-тезис, что семантики как таковой по сути не существует. Есть только синтаксис.
Семантику определили, когда построили отображение, построили структуру.
Построили структуру - значит формализовали.
(в некотором смысле, если надо, то поясню).
А это значит, что это суть синтаксическая конструкция.

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

Это нормально.
Это суть остенсивное определение.

ALEX BUR, [23.06.21 02:18]
Когда скомпилировали прогу на Питоне/си-шарпе в машинные коды, то построили семант.отображение.
Далее операционка + алгоритм вложенный в структуру проца (компа) исполняет машинные команды и таким образом производит некие действия виртуальные или реальные с помощью периферии. Это следующий этап семантического отображения более низкого уровня.
Таким образом, данное понятие семантики охватывает все сферы деятельности людей.

ALEX BUR, [23.06.21 02:19]
От высоких сфер математики, до общения людей и до автоматов с прогр.управлением и без него.

ALEX BUR, [23.06.21 02:21]
***Во вторых - мы можем проверять (как - другой вопрос) полноту, внутренную непротиворечивость и реализуемость семантической модели.

Полнота и внутренняя непротиворечивость просто идут лесом. Они не нужны!

Пример. Математика в целом противоречива! И ничего страшного.

ALEX BUR, [23.06.21 02:23]
Еще одно заблуждение стандартной науки - нужны неопределяемые понятия.
Тезис: все понятия обязаны быть определяемыми.
Пример-аргумент: прога с неопределенными переменными, процедурами, функциями работать не будет.

Viktor Sirotin, [23.06.21 02:52]
[В ответ на ALEX BUR]
Я не понимаю, откуда такой вывод.
Самое простое - электрический чайник (бойлер). Есть preconditions:
Включен в сеть
В сети правильный ток
Вода налита

Воздействие - нажимаем кнопку.
Результат - вода изменила состояние (вскипела),.
Чайник сам выключился.

Вы можете написать подобный тест на шведском или монгольском, написать симуляции на двадцати языках программирования, пятью способами определить в UML или SysML. Это всё для меня будут разные синтаксисы.
А поведение==семантика едина.
Т.e. скорее наоборот. Синтаксис не важен. Семантика едина. И есть много способов её описывать.

ALEX BUR, [23.06.21 02:55]
Разве поведение=семантика?
Разве это синонимы?

ALEX BUR, [23.06.21 02:58]
***Это всё для меня будут разные синтаксисы.

Для меня тоже.

ALEX BUR, [23.06.21 03:27]
Берем две программы сложения двух чисел на двух разных языках, на питоне и паскале, компилируем их. (Питон тоже можно компилировать.)
псевдокод {y=5+3; печать y}
Это можно записать по разному на разных языках, это даст разные машинные команды.
Но в итоге получим одинаковый результат.

Что же описывают языки?
Они описывают последовательность команд машины, это суть система стрелочек, граф исполнения, конечный автомат.
Можно унифицировать форму стрелочек и тогда мы можем получить единую минимальную схему программы, тогда они совпадут.

Но эта система стрелочек ведь тоже синтаксис!
Последовательность команд для проца это чистый синтаксис.

ALEX BUR, [23.06.21 03:34]
Если у нас есть
A1, A2,...,An - система множеств произвольной природы
f_1, f_2,...,f_n - система отображений между множествами
f_i: Ai —>A(i-1)

Любое отображение f_i мы вправе называть семантическим.
f_1, f_2,...,f_n - иерархическая система семантик
В частности множество A1 может быть физическим уровнем.
В частности множество An может быть любым текстом, например математическим или философским.

ALEX BUR, [23.06.21 03:34]
У нас получается иерархия семантик.
Нижний уровень опирается на физический мир.

ALEX BUR, [23.06.21 03:35]
Таким образом мы формализовали любую семантику.

ALEX BUR, [23.06.21 03:49]
Замечу, что каждая такая пара Ai —>A(i-1)
(Ai , A(i-1)) есть модельное отношение, т.е. суть модель.
Смысл, семантика = элемент структуры!
Элемент модельной структуры.

Viktor Sirotin, [23.06.21 04:06]
[В ответ на ALEX BUR]
Немного преувеличивая, можно сказать что UML и его наследник для сложных систем SysML утверждают, что с их помощью можно «хорошо» смоделировать любые технические и программные системы, изобретаемые человечеством.
Все модели делятся в UML/SysML на два типа: структурные и семантические.
Структурные описывают структуру систем. Семантические описывают поведение системы.
Поэтому многие специалисты из прагматических соображений отождествляют поведение и семантику.
Теоретики тоже говорят о формальной семантике UML, например: https://www.se-rwth.de/staff/rumpe/publications20042008/UML-2-Semantics-Symposium-Formal-Semantics-for-UML.pdf

Viktor Sirotin, [23.06.21 04:24]
[В ответ на ALEX BUR]
*** Смысл, семантика = элемент структуры!

Мы говорим про разные структуры.
Я про структуру объекта Бойлер с двумя аттрибутами: состояние кнопки и состояние воды. Вы про структуру программы на Питоне, которая этот автомат симулирует.
Так же и с семантикой. Я подразумеваю под семантикой способ описания поведения системы Бойлер. А вы, как я понимаю - способ трансформации симуляционной программы в стрелочки.
Поведение нельзя точно определить, поскольку оно будет случаться в будующем или случалось в прошлом. Можно только лучше или хуже моделировать.
С синтаксисом не так. Я вот этот текст напечатал на одном приборе, а Вы читаете его на другом. Но синтаксис полностью описывается пересланной строкой.

ALEX BUR, [23.06.21 11:10]
Когда я говорю, что "семантики нет, есть только синтаксис", то я несколько расширяю понятие синтаксис, включаю туда в том числе и физические структуры.

***В еще более расширительном понимании под синтаксисом понимаются правила построения выражений любых знаковых систем, а не только вербального (словесного) языка.

***Си́нтаксис (др.-греч. σύν-ταξις[1] «составление», «координация», «порядок») — раздел лингвистики, в котором изучаются номинативные и коммуникативные языковые единицы: предложение и словосочетание. Синтаксис в буквальном переводе означает не только составление, но и упорядочивание, координирование, соединение слов в связный текст.

"Синтаксис в буквальном переводе означает не только составление, но и упорядочивание, координирование,"
https://ru.wikipedia.org/wiki/Синтаксис

ALEX BUR, [23.06.21 11:12]
***Семантический синтаксис
Объектами изучения семантического синтаксиса является текст и структурные схемы, при помощи которых происходит его связное построение: словосочетания, простое и сложное предложения, сложное синтаксическое целое, различного рода высказывания, связанные с ситуацией речи, а также строение текста, выходящее за пределы сложного синтаксического целого

ALEX BUR, [23.06.21 11:12]
—-

ALEX BUR, [23.06.21 11:20]
Что я этим добиваюсь?
Я устраняю мутное слово "семантика"

ALEX BUR, [23.06.21 11:21]
***В ходе синтаксического анализа исходный текст преобразуется в структуру данных, обычно — в дерево, которое отражает синтаксическую структуру входной последовательности и хорошо подходит для дальнейшей обработки.
https://ru.wikipedia.org/wiki/Синтаксический_анализ

ALEX BUR, [23.06.21 11:23]
На самом деле последовательность слов и дерево отражает одно и тоже - структуру. Просто структура в разном виде.
Семантика = отображение, отношение= т.е. структура= т.е. система стрелочек.

ALEX BUR, [23.06.21 11:25]
т.е. говоря семантика, мы подразумеваем ВСЕГДА тройку (обозначение, обозначаемое, семантическую функцию) .
Что это как не специальная синтаксическая конструкция? Она и есть.

ALEX BUR, [23.06.21 11:26]
=========

ALEX BUR, [23.06.21 11:27]
Ну и теперь. )
Кто из нас узко трактует семантику??? ))
А кто очень широко. )

ALEX BUR, [23.06.21 11:29]
[В ответ на Viktor Sirotin]
***Все модели делятся в UML/SysML на два типа: структурные и семантические.
***Семантические описывают поведение системы.

Семантические модели тоже описывают структуры, но структуры другого вида. Не структуры объектов, структуры между объектами.

Дискусс сдал. Спасибо оппонентам. )
===============
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 7 comments