• Культуры программных проектов: завершение

    Posted on March 25th, 2010 Александр Орлов 4 comments

    Ну что же, вот и подошла к концу книга Энтони Лаудера “Культуры программных проектов”. Чуть ниже – завершающее книгу приложение о научной культуре.

    Огромное спасибо Альберту Мустафину за титанический труд по переводу оригинального текста. Думаю, текст полностью будет выложен на днях в виде .pdf файла.

    Если вы хотите оставить свои впечатления от книги – пишите комментариями к этому посту.

    Культуры программных проектов

    Автор: Энтони Лаудер

    Перевод: Альберт Мустафин

    Приложение А: Научная Культура

    Введение

    До того, как Заводская, Дизайнерская и Сервисная Культуры стали доминировать, была Научная Культура. Она началась в пятидесятых, когда программисты носили белые лабораторные халаты и должны были использовать научные принципы, чтобы результаты были точными и предсказуемыми. Она так никогда и не прижилась в индустрии, поскольку, несмотря на обещания, разработка приложений на практике оказалась куда менее научной. В некоторой степени Научная Культура была довольно сильна на компьютерных факультетах университетов, хотя даже там пошла на убыль.

    Дийкстра

    Наверное самым активным сторонником Научной Культуры был поздний Эдсгер В. Дийкстра. Многие его работы теперь доступны на его сайте в техасском университете. Их стоит почитать, так как они проливают свет на мотивацию, базовые предположения и подъём и падение Научной Культуры для разработки приложений. Я тут процитирую кое-что из его работ и использую имена, которые использовал он (например EWD268).

    1950-е: Семена Идеи

    В 1950-х Дийкстра написал программы для компьютерного оборудования, которое ещё не было построено. У него были лишь спецификации железа, и он не мог протестировать программу. Поэтому Дийкстра обратился к математике, карандашу и бумаге, чтобы доказать правильность своей программы.

    1960-е: Открытие

    Дийкстра был доволен результатом, поняв, что математическое доказательство лучше тестирования. Это привело его к теперь уже знаменитой его фразе в 1969 “Тестирование программ может быть использовано, чтобы показать ошибки, но не их отсутствие! Поэтому состоятельность программы должна быть доказана на основе текста программы” (см. EWD268)

    1970-e: Доказательства, доказательства и ещё раз доказательства

    Затем Дийкстра посвятил остаток своей жизни развитию и евангелизированию Научной Культуры, которая охватила разработку приложений как математическая деятельность. В 1970-х он ратовал за математическое доказательство корректности программ. Позже это было подкреплено его утверждением, что на самом деле доказательство должно предшествовать программе, формируя её спецификацию.

    На самом деле, Дийкстра был против использования метафор для описания или представления разработки приложений. Компьютеры представляют такую “радикальную новинку”, считал он, что “метафоры и аналогии слишком плоские” и не представляют ценности (см. EWD1036). Наоборот, разработка приложений ни на что не похожа и должна рассматриваться обособленно.

    Дийкстра был уверен, что разработка приложений состоит совсем не из написания программ для компьютеров. Нет-нет, это лишь побочный эффект. “Типичная ошибка считать, что задача программистов состоит в производстве программ” (см. EWD316)

    Скорее “Это внутренний долг каждого занятого в программировании – писать доказательные алгоритмы” (см. EWD316). Основная задача в разработке приложений – это создание математических доказательств того, что ваши программы будут работать правильно, если позже вы надумаете их запустить на компьютере (см. EWD1036).

    Конечно, это возвращает нас к собственной метафоре Дийкстры о том, что программирование – это математическая деятельность. Разумеется, Дийкстра не рассматривал это как метафору, глубоко укоренившуюся в Научной Культуре, частью которой он являлся. Для него это был факт. И в этом ничего необычного. Я видел много людей, которые придерживались разных метафор так же искренне, как и Дийкстра, и каждый был готов интерпретировать свои метафоры как непреложный факт. Только другим людям нужны метафоры, потому что они не могут или не хотят видеть абсолютную истину, которую вы видите так ясно. И уж точно они так же думают о вас.

    1970-е и 1980-е: Ох, уж эти любители!

    Объяснение Дийкстры ранних неудач Научной Культуры было не в том, что программисты в белых халатах слишком сильно пытались быть научными, а в том, что они были недостаточно научны! “Часть вины должна лечь на ранних учёных, вовлечённых в программирование … Большинство из них не перенесли свои научные стандарты качества в программирование, которое стало их основным занятием … Поколение “научных” пользователей подошло к программированию, как к решению кроссвордов, созданных производителем компьютеров, а не как к деятельности, стоящей научной мысли.” (см. EWD924)

    В 70-х и 80-х Дийкстра постоянно утверждал, что творчество, инновация и проницательность не имеют отношения к разработке приложений. “Меня сильно удручило упорство целой индустрии в том, что якобы достаточно здравомыслия, когда я знаю, что необходимо научное мышление.” (см. EWD917). Компьютерную индустрию нужно было спасти от самой себя, а погружение компьютерной науки в математику было единственным возможным спасением. Дийкстра решил взять на себя миссию по преобразованию компьютерной науки из ремесла в науку.

    Однако, к разочарованию Дийкстры большинство людей в индустрии не проявили интерес к его евангелическому утверждению. Наоборот, они покупали “шарлатанские микстуры”. В конце 70-х он выразил особое возмущение всё большим использованием диаграмм и графических заметок, которые он считал “костылём” для “мыслителей-любителей”. Диаграммы, по его мнению – это “для необразованных и от необразованных” (см. EWD696). “Обществу нужна компетенция и знахарство” стенал он (см. EWD966).

    К середине 80-х он начал считать, что индустрия просто не была заинтересована в улучшениях: “Весь их выбор это некомпетентность и нечестность. И это ужасно. Но, пожалуйста, не обвиняйте нас, когда компьютерная индустрия рухнет.” (см. EWD917)

    Если бы только индустрия его слушала, ведь “Академически образованный учёный компьютерщик должен уметь программировать хотя бы в несколько раз лучше, чем средний программист или хакер без формального обучения” (см. EWD1157) Увы, “систематическая дисквалификация компетентности … это изобретение менеджеров, за что они и должны нести всю ответственность.” (см. EWD966)

    В частности, менеджеры виноваты в своей очевидной миссии по уменьшению зависимости от талантливых работников с верой, что “для промышленного предприятия вполне подойдут второсортные умы” (см. EWD966). “Любовь организаций к посредственности” особенно видна в менеджменте, поскольку “лучшие профессионалы совершенно не намерены переходить на менеджерские позиции” (см. EWD966).

    К концу 80-х, кроме менеджеров, Дийкстра стал обвинять и программистов: “Настоящие программисты не осмысливают свои программы, ибо это не круто. Они предпочитают подмену интеллектуального удовлетворения от неполного понимания, что они делают в своей наглой безответственности, и от следующего за этим азарта от поиска ошибок, которых они не должны были допустить в первую очередь.” (см. EWD1012)

    1990-е: Теряя надежду

    В начале 90-х Дийкстра почти совсем потерял надежду на переубеждение людей индустрии. Он валил это всё на их неполноценность: “Посредственности не доверяют исключительному человеку, поскольку они не понимают его и боятся, потому что он может делать вещи не подвластные их пониманию” (см. EWD1165)

    Он хотел, чтобы наука защищалась. “В течение 40 лет компьютерная индустрия совершенно игнорировала находки компьютерной науки … Есть большая разница между тем, о чём общество просит, и тем, что ему на самом деле нужно … Задача лучших университетов сказать индустрии то, что она не хочет слышать, … чтобы убедиться, что укус академического овода действительно болит” (см. EWD1165)

    Тем не менее, он стал ощущать, что всё было безнадёжно: “Бои идут между менеджерами/счетоводами с одной стороны и учёными/технологами с другой … Учёные всё чаще проигрывают, … потому что основной их интерес – это наука, … в отличие от менеджеров, для которых эти бои смысл жизни.” (см. EWD1165)

    К середине 90-х он отозвался о “жестоком повороте истории”, когда общество 20-го столетия избегало науку. “Но мы не можем обвинять университеты”. Вина лежит на индустрии из-за того, что она давила на университеты с требованием “не увлекаться … научным образованием, а ограничиться профессиональной подготовкой” (см. EWD1209). К концу своей жизни Дийкстра обеспокоился будущим университетского образования и умолял “пока компьютерной науке не позволяют спасти компьютерную индустрию, нужно хотя бы не позволить компьютерной индустрии убить компьютерную науку” (см. EWD1284)

    КОНЕЦ

     

    4 responses to “Культуры программных проектов: завершение”

    1. Спасибо за перевод!
      Я чаще встречал фамилию Дийкстры, как Дейкстра (http://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D0%B0,_%D0%AD%D0%B4%D1%81%D0%B3%D0%B5%D1%80_%D0%92%D0%B8%D0%B1%D0%B5), может такой вариант лучше?

    2. Да, мне уже в ЖЖ попеняли. Я решил оставить, как переводчик (т.е. Альберт) перевел. Есть же у нас доктор Ватсон, а есть доктор Уотсон. :)

    3. [...] Альберта Мустафина, которая публиковалась на happy-pm.com два месяца и имела большую популярность среди читателей, таки [...]

    4. [...] про которые Энтони Лаудер так много написал в “Культурах программных проектов”.И может быть, при собеседовании в тестировщики [...]

    Leave a reply

    You must be logged in to post a comment.