Программирование как контракт с дьяволом
May. 3rd, 2015 12:29 amThe purpose of a program is informal, often unstated, criterion and the transition from informal to formal objects must forever be unformalized, lest we caught in the paradox of assuming the formalization of an object we know only informally.Не проси богов ни о чем, рискуешь получить просимое.
Social processes and proofs of theorems and programs
DeMillo, Lipton, Perils
Древние греки иллюстрировали эту максиму историями Мидаса и Титона. Первый попросил Диониса, чтобы всё, к чему он прикоснётся, обращалось в золото. И это ему было даровано. Как выяснилось на тестовом прогоне, в обществе где все едят руками такой дар может привести к смерти от истощения. Не говоря уже о сложностях в социальной жизни - ни поздороваться, ни обнять... За второго попросила любовница. Ему посчастливилось любиться с Эос, богиней утренней зари. Та и замолвила словечко Зевсу. Попросила для своего любовника вечной жизни. И это ему было даровано. Как выяснилось на тестовом прогоне, вечная жизнь без вечной молодости штука не очень приятная. Прожив заметно больше отмеренного человеку срока, Титон страдал от всех старческих болезней, включая слабоумие, не мог пошевелить ни рукой, ни ногой, ни, к полному расстройству Эос, более важными для любовника органами. Существует версия, что он постепенно ссохся в цикаду, видимо растворив внутренний скелет и нарастив внешний. Если версия верна, то среди этих мух-переростков есть одна бессмертная.
Античность закончилась, греческих богов дарующих человеку просимое в христианской Европе сменил дьявол. Европейские фольклор и литература во множестве содержат сюжеты сделки с дьяволом, смертный контрагент которых получал именно то, о чём просил. Впрочем, были и сюжеты в которых в формальную ловушку попадал дьявол, а не человек. Наиболее известный, видимо, это сюжет "приходи завтра" ("а чего ты сегодня пришёл, разве сегодня - завтра?").
Все сюжеты объединяет то, что герой комично или трагично проваливается в зазор между формальным (то что попрошено) и неформальным (то что хотелось).
Составление контракта с дьяволом, позволяющего через просимое получить желаемое, это высокое искусство формализации неформального, просчёт последствий, обработка исключительных ситуаций, тщательное обговаривание вырожденных и пограничных случаев... вобщем всё то, что составляет суть, ядро и основу работы программиста.
В конце концов, компьютер всегда делает именно то, о чём ты его попросил.
Надевая фуражку капитана О.
Date: 2015-05-03 05:14 am (UTC)1. Комп туп, но не злонамерен.
2. С компом можно пробовать много раз.
no subject
Date: 2015-05-03 06:16 am (UTC)Однако коллега выше верно подметил: компьютер специально не изыскивает бреши в формулировках. Он предсказуем, и правила его поведения зарене оговорены.
no subject
Date: 2015-05-03 07:33 am (UTC)"Но никто ещё не мог найти два куба, которые при сложении тоже давали бы куб или более высокие степени, которые приводили бы к аналогичному результату, — по-видимому, их просто нет. И всё же, — торжествующе закончил он, — до сих пор не доказано, что таких чисел не существует!"
no subject
Date: 2015-05-03 08:18 am (UTC)no subject
Date: 2015-05-03 08:41 am (UTC)no subject
Date: 2015-05-03 08:45 am (UTC)no subject
Date: 2015-05-03 09:51 am (UTC)Re: Надевая фуражку капитана О.
Date: 2015-05-03 10:19 am (UTC)Re: Надевая фуражку капитана О.
Date: 2015-05-03 01:18 pm (UTC)no subject
Date: 2015-05-03 01:20 pm (UTC)Re: Надевая фуражку капитана О.
Date: 2015-05-03 01:38 pm (UTC)А вы представьте, что на сто программистов у вас одна машина, целиком занимающая Георгиевский зал Кремля. И что написанный на бумажке код вы отдаете девочкам-перфораторшам, таких как вы у них много, вы получаете назад колоду перфокарт только через час, а то и через несколько. Это теперь нужно нести в машинный зал, где вашу колоду поставят в очередь на исполнение. И только на следующий день вы получите назад распечатку с результатами исполнения.
Это дисциплинировало. Слово "тестирование" тогда было не в ходу. Не говоря уже о всяких TDD.
Re: Надевая фуражку капитана О.
Date: 2015-05-03 01:48 pm (UTC)2. Ну да, только это и спасает.
no subject
Date: 2015-05-03 02:10 pm (UTC)no subject
Date: 2015-05-03 02:15 pm (UTC)Re: Надевая фуражку капитана О.
Date: 2015-05-03 02:25 pm (UTC)Re: Надевая фуражку капитана О.
Date: 2015-05-03 02:27 pm (UTC)Re: Надевая фуражку капитана О.
Date: 2015-05-03 02:27 pm (UTC)Re: Надевая фуражку капитана О.
Date: 2015-05-03 02:30 pm (UTC)Re: Надевая фуражку капитана О.
Date: 2015-05-03 02:30 pm (UTC)А в НГУ в это же время уже во всю использовали терминалы.
Re: Надевая фуражку капитана О.
Date: 2015-05-03 02:31 pm (UTC)Re: Надевая фуражку капитана О.
Date: 2015-05-03 02:37 pm (UTC)Re: Надевая фуражку капитана О.
Date: 2015-05-03 02:45 pm (UTC)Re: Надевая фуражку капитана О.
Date: 2015-05-03 02:49 pm (UTC)no subject
Date: 2015-05-03 02:53 pm (UTC)Принцип Хайнлайна, да. Мне в текущем проекте потребовалось 6 месяцев, чтобы проверить, что да, действительно не имеют.
Re: Надевая фуражку капитана О.
Date: 2015-05-03 03:07 pm (UTC)