LINUX.ORG.RU

В чём профит от Eiffel...

 ,


2

4

...и, в частности, от design by contract? Чем эта фича принципиально отличается от ассертов в других языках?

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

Мой интерес вызван тем, что Бертран Мейер - автор языка Eiffel - возглавляет (возглавлял?) кафедру программной инженерии и верификации программ в СПбНИУ ИТМО (http://sel.ifmo.ru/), и используют они в основном Eiffel.

★★★★★

Последнее исправление: hateyoufeel (всего исправлений: 3)
Ответ на: комментарий от motto

Чем у вас Empty отличается от None в Optional[T] или Void в Eiffel?

Он же используется в точности для тех же самых целей.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Я забыл сказать о неиспользовании частичных функций. Что вместо — в нормальном языке паттерн-матчинг, в C++ есть static visitor.

motto
()
Ответ на: комментарий от eao197
None : 1 -> Option[T]
Some : T -> Option[T]

Empty : 1 -> DList[T]
Node : T * DList[T] * DList[T] -> DList[T]

nullptr : 1 -> *T
& : &T -> *T

отличие в правилах композиции. Потом вопрос частичных функций, в третьем случае

* : *T -> &T (hardware exception on nullptr)

в Eiffel это, как я понял, решено. Но суть в том, чтобы определять правила конструирования (которые определяют правила деконструкции в паттерн-матчинге) ADT, а не кодировать его через другой тип и левые значения (* или глобальный null).

motto
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.