Согласен. Я так и пытался все время: генерить софт и тесты из формальных описаний. Причем факто-ориентированная форма самая удобная, ибо медленнее всего меняется.
вроде бы геллиш поддерживает только факты типа субъект-отношение-объект (в вашей терминологии это будет, наверное, "бинарное отношение"). как запомнить факт типа "вася познакомился с петей первого апреля в мухосранске", уже непонятно.
Однако, в книжке по Геллишу это подробно разжевано -- это просто несколько бинарных молекулярных отношений. Более того, одна строчка в геллиш-таблице (с одной тройкой) сама по себе представляет свертку из 12 атомарных отношений.
ну вот на примере с васей и петей, это как будет? а то у меня нет книжки по геллишу, где всё разжёвано, а в интернете, там где database schema геллиша нарисована, там непонятно.
спасибо за ссылку! но в ней нет ответа на мой вопрос, только сплошной handwaving - типа если нам вдруг придётся описывать что-то более сложное, чем binary relation, мы это опишем как коллекцию binary relations. а мой вопрос заключается в том, как именно.
в каком-то месте там ещё упоминается, что для превращения higher order relations в binary придётся создавать sub-entities. мало того, что это методологически неправильно и увеличивает шум путём внесения в систему кучи искусственных entities, на самом деле не существующих, так ведь к тому же это всё равно проблему не решает.
я, в общем, задал крайне простой вопрос насчёт васи и пети. если даже такой простой факт нельзя простым способом в геллише зарегистрировать (а по всему получается, что нельзя, иначе зачем бы handwaving? в удобных случаях автор там очень конкретен), то применимость геллиша вызывает сильные сомнения.
Ну там же картинки есть :). Сурово конечно, но на пальцах примерно так:
1. Вводим понятие "случай знакомства".
2. Вася 'есть субъект в' случай знакомства номер 1
3. Петя 'есть объект в' случай знакомства номер 1
4. Случай знакомства номер 1 'имеет обстоятельством времени' 1е апреля
5. Случай знакомства номер 1 'имеет обстоятельством места' Мухосранск
спасибо. но это означает полный распад концепции, ибо создаёт сущность "случай знакомства №1", которой на самом деле не существует.
кроме того, бинарное отношение "вася познакомился с петей" - это атомарный факт, который в геллише имеет уникальный номер anyway. логичнее было бы тогда уж к нему дописать "факт №42 имеет обстоятельством времени первое апреля". и фальшивую сущность создавать не надо.
Да, конечно можно и без фальшивой сущности обойтись.
Хотя она не фальшивая, просто вводится дополнительная модельная переменная.
Просто если обходится без доп переменной, то будет уже предикат второго порядка, что не всегда удобно.