On 08.07.2012 17:23, Stanislav Maslovski wrote: > On Thu, Jul 05, 2012 at 08:20:19PM +0400, "Артём Н." wrote: >> 04.07.2012 09:21, Stanislav Maslovski пишет: >>> Если система обладает неограниченной памятью, как машина Тьюринга с >>> бесконечной >>> лентой, то в общем случае нельзя. На практике нельзя уже при сколько-нибудь >>> значительном объёме памяти, просто в силу потребного времени. >> Я про практику. > На практике ситуация такова: случаев, где возможно *полное* формальное > доказательство правильности программы *больше*, чем случаев, где для этого > достаточно *простых* тестов. > Как правило, построение *полного* теста эквивалентно решению исходной > программной задачи, и, поэтому, не имеет никакой ценности для доказательства. Понятно. А вообще, случаев, когда: 1. возможно полное доказательство; 2. доказательство имеет практическое значение; много?
>>> На самом деле, он просто утверждает, что тестирование на примерах (т.е., >>> твоё "перечисление всех состояний, подав на вход все комбинации нулей и >>> единиц") ничего не гарантирует. >> Всех состояний - гарантирует. Но это практически невозможно :-) > Да нет же. Почему - следует из вышенаписанного. В частном случае, если представить программу, как конечный автомат с памятью... >>> Можно 1000 раз успешно прогнать *все* >>> комбинации входных переменных некой процедуры, а на 1001-м получить >>> ошибку, например, из-за утечки памяти, или из-за переполнения какой-нибудь >>> переменной-счётчика, которая не обнуляется между вызовами, и т.п. >> Значит не были протестированы _все_ состояния. > Задолбал! :) Не, ну я здесь прав. ;-) > >>> Похоже, что ты сам запутался в своих рассуждениях: тебя *принципиальная* >>> доказуемость интересует, или всё же доказуемость в частных случаях? С >>> первым всё ясно, а про второе тебе уже писали, что доказывать во многих >>> случаях можно, для этого есть методы, и методы эти не основаны на >>> переборе всех нулей и единиц. >> Я неправильно выразился. Полное доказательство корректности достаточно >> сложной >> системы провести на практике невозможно ввиду слишком больших затрат >> ресурсов (и >> ещё возможно, из-за отсутствия метода доказательства). Так? > Нет. Я утверждал, что во многих случаях *полное* формальное > доказательство *возможно* с конечными ресурсами и за конечное время. > Просто это доказательство строится совсем не тем способом, который ты > себе представляешь. Каким? > Вот тебе элементарный пример: докажи теорему Пифагора *тестами* =) Возможно повысить уверенность в том, что алгоритм доказательства теоремы реализован правильно, используя тесты. Про "доказательство" тестами я ничего не писал. :-) >>>> И на практике: будь всё так хорошо, как вы пишите, все бы уже давно писали >>>> на >>>> Прологе (по крайней мере, знали бы что это такое). :-) >>> Незнание, как говорится, не освобождает от ответственности. Плюс, в >>> идеальном мире все бы уже давно писали хотя бы на том же Haskell... >> Что такое "идеальный мир", в данном случае? o.O > Мир, в котором невежество не выставляется за геройство ;) Сомнительная утопия или даже антиутопия... Кстати, а что насчёт Ада? Пишут (в сегодня почившей вики): "Сторонники Ады утверждают, что единственная альтернатива большому и сложному языку в больших проектах — это применение нескольких компактных языков, неизбежно порождающее проблемы с совместимостью, для избавления от которых и была придумана Ада. Они замечают также, что представление о сложности разработки на Аде верно лишь отчасти: написание простой программы на Аде действительно требует больше времени, чем на других, менее формальных языках, типа Си, но отладка и сопровождение программ, особенно крупных и сложных, значительно упрощается. По утверждению Стефена Цейгера из Rational Software Corporation[6], разработка программного обеспечения на Аде в целом обходится на 60 % дешевле, а разработанная программа имеет в 9 раз меньше дефектов, чем при использовании языка Си." Плюс есть GNAT и среда GPS. А от проблем, которые были у старых версий (в т.ч. совместимостью с др. языками), Ada95, вроде как ушёл... И синтаксис с парадигмой знакомые... И пишут на нём. Что про него можете сказать? -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/4ffc6bfe.2010...@yandex.ru