Re: Несколько вопросов вразброс
Артём Н. -> debian-russian@lists.debian.org @ Thu, 05 Jul 2012 21:10:14 +0400:
>> что выполняется закон сохранения импульса. Кстати, законы рассуждений,
>> используемые в Прологе, не эквивалентны тем, которым нас учат в школе и
>> даже в вузе.
АН> В смысле? Там есть что-то новое? :-) Это же обычная "машина вывода", как и
АН> логика самая "обычная.
"обычная" логика непригодна для машинного вывода. Любая система
машинного или человеко-машинного вывода пользуется тем или иным
вариантом, а чисто машинного - подмножеством, конструктивной логики,
которая, на мой взгляд, много лучше классической, но уж во всяком случае
не эквивалентна - она способна доказать меньше утверждений.
>> >> >> А вот как соотносится твоя модель,
>> >> >> выраженная в нелогических аксиомах, с реальностью - это уже не к
>> >> >> Прологу.
>> >> АН> Но в точности тоже самое возможно сказать и о других языках. А
>> >> АН> тесты нужны именно для того, чтобы проверить соответствие модели и
>> >> АН> реальности. Там тоже самое, даже такие же побочные эффекты могут
>> >> АН> быть. И программа, на нём написанная не является правильной только
>> >> АН> потому, что она написана на Пролог. Просто тестами надо покрывать
>> >> АН> факты и правила, а не функции и процедуры или я не прав?
>> >>
>> >> В выводе - да, прав. Но надо учитывать, что большинство наших тестов
>> >> для других языков таки работают внутри модели, а не проверяют ее
>> >> соответствие реальности. То есть для прологовской программы не имеют
>> >> смысла. Природа тестов для прологовской программы должна быть
>> >> существенно иной, нежели привычно.
>> АН> Хм... А как тест может работать не внутри модели? Программа -
>> АН> модель. Даже, если тест получает данные извне, он всё-равно
>> АН> работает в данной модели.
>>
>> Не обязательно в данной. Это существенно. Скажем, тест, который
>> получает сигнал с реального датчика, сует его в программу, получает из
>> программы команду на управление реальным железом, выдает ее в железо, и
>> потом измеряет угол его поворота, например, другим датчиком, таки
>> выходит за пределы той же модели.
АН> Ну да. Разве что так. Но причём здесь Пролог?
При том, что для него только эти тесты и имеют ценность. Тесты с
эмулятором способны отловить только опечатки. Содержательные ошибки -
не способны, потому что строятся на той же модели.
>> И его работа уже существенно ближе к реальности, чем модель, в которой
>> написана программа.
АН> Но, кажется, это две стадии тестирования?
АН> И нельзя тестированием с реальным датчиком заменить тестирование с
АН> "эмулятором".
Как раз в эту сторону теоретически можно. Правда, практически может
оказаться слишком дорого. Наоборот нельзя.
>> АН> Чем тут отличается Пролог от императивного языка, например? Здесь
>> АН> я просто вижу те же самые ошибки человека: неверное задание правил
>> АН> (неполнота, неточность или ошибочность) и неверное задание фактов.
>> АН> Что и должны покрывать тесты. Ведь так?
>> Так. А теперь внимание: что значит словосочетание "верное задание
>> фактов"? Скорее всего, тестировать соответствие этого задания опять же
>> модели не очень практично - дешевле доказать, что оно соответствует.
>> Потому что от модели до фактов - это всего лишь перевод с одного языка
>> на другой, причем перевод весьма формальный, тут доказательство
>> оказывается довольно простым. Интересно проверять соответствие задания
>> фактов реальности, считая, что набор фактов - это и есть модель. А это
>> уже формулируется не "написать тест", а "построить тест". В железе,
>> ага.
АН> Но, обычно, не всегда это возможно. Да и чем отличается "железный"
АН> генератор (не датчик, а именно генератор состояний датчика) от
АН> программного?
Если говорить, например, о датчике случайных чисел, то, натурально,
случайностью. Железный выдает случайные числа, программный -
закономерные, но статистически до той или иной степени похожие на
случайные.
Reply to: