iodiot (iodiot) wrote,
iodiot
iodiot

Categories:

Философия программ

Наверное, язык определяет то, о чём человек в принципе может подумать. Плохой язык ограничивает, такому языку обычно не присуща какая-либо внутренняя красота, и, конечно же, он не приносит никакого эстетического удовольствия. Без сомнения, всё это касается и языков программирования. Многие из них давно уже переросли самих себя, перестали быть просто инструментами. Не зря же в разговорах иногда фигурируют такие фразы как «философия С++» или «философия Java»…

Создатель С++, Бьерн Страуструп,  невероятный человек. Хотя бы потому, что он действительно подвёл под своё детище целую философскую систему. Об этом можно прочитать в его книге «Дизайн и эволюция С++». Вот цитата (программистам обязательна к прочтению ;)

/*
Говорят, что структура системы отражает структуру организации, в которой она была создана. В общем и целом я поддерживаю это мнение. Из него также следует, что если система есть плод работы одного человека, то она отражает склад его лич­ности. Оглядываясь назад, я думаю, что на общую структуру С++ мое мировоззре­ние наложило такой же отпечаток, как и научные концепции, лежащие в основе от­дельных его частей.

Я изучал математику, в том числе прикладную, поэтому защищенная в Дании кандидатская диссертация была посвящена математике и информатике. В результате я научился любить красоту математики, но предпочитал смотреть на нее, как на инструмент решения практических задач. Я искренне сочувствовал студенту, ко­торого Евклид, по преданию, выгнал за вопрос «Но для чего нужна математика?» Точно так же мой интерес к компьютерам и языкам программирования носит в основном прагматический характер. Компьютеры и языки программирования можно оценивать как произведения искусства, но эстетические факторы должны дополнять и усиливать их полезные свойства, а не подменять их.

Больше 25 лет я увлекаюсь историей. Немалое время посвятил и изучению философии. Отсюда вполне осознанный взгляд на истоки моих интеллектуаль­ных пристрастий. Если говорить о философских течениях, то мне, скорее, ближе эмпирики, чем идеалисты; мистиков я просто не понимаю. Поэтому Аристотеля я предпочитаю Платону, Юма - Декарту, а перед Паскалем склоняю голову. Все­объемлющие «системы», такие, как у Платона или Канта, пленяют меня, но ка­жутся фундаментально порочными, поскольку, по-моему, они очень далеки от по­вседневного опыта и особенностей конкретного индивидуума.

Почти фанатичный интерес Кьеркегора к личности и его тонкое понимание психологии кажутся мне куда интереснее грандиозных схем и заботы обо всем человечестве, присущих Гегелю или Марксу. Уважение к группе, не подразумева­ющее уважения к ее членам, я не считаю уважением вовсе. Корни многих реше­ний для С++ - в моем нежелании принуждать пользователей делать что бы то ни было жестко определенным образом. Из истории мы знаем, что вина за многие ужасные трагедии лежит на идеалистах, которые пытались заставить людей «де­лать так, чтобы им было хорошо». Кроме того, я считаю, что идеалисты склонны игнорировать неудобный опыт и факты, противоречащие их догмам или теории. Всякий раз, когда те или иные идеалы вступают в противоречие, а иногда и в тех ситуациях, где ученые мужи пришли к единодушному согласию, я предпочитаю давать программисту выбор.

Мои литературные вкусы еще раз подтверждают нежелание принимать реше­ние только на основе теории и логики. В этом смысле С++ во многом обязан та­ким романистам и эссеистам, как Мартин А. Хансен, Альбср Камю и Джордж Оруэлл, которые никогда не видывали компьютера, и таким ученым, как Дэвид Грис, Дс::альд Кнут и Роджер Нидэм. Часто, испытывая искушение запретить какую-то возможность, которая лично мне не нравилась, я останавливался, ибо не считал себя вправе навязывать свою точку зрения другим людям. Я знаю, что мно­гого можно добиться относительно быстро, если последовательно придерживаться логики и безжалостно выносить приговор «неправильному, устаревшему и нело­гичному образу мыслен». Но при такой модели становятся очень велики челове­ческие потери. Для меня намного дороже принятие того факта, что люди думают и действуют по-разному.

Я предпочитаю медленно - иногда очень медленно - убеждать людей попро­бовать новые приемы и принять на вооружение те, которые отвечают их нуждам и склонностям. Существуют эффективные методы «обращения в другую веру» и «совершения революции», но я их боюсь и сильно сомневаюсь, что они так уж эффективны в длительной перспективе и по большому счету. Часто, когда кого-то легко удается обратить в религию X, последующее обращение в религию Y оказыва­ется столь же простым, а выигрыш от этого эфемерный. Я предпочитаю скептиков «истинно верующим». Мелкий, но неопровержимый факт для меня ценнее боль­шинства теорий, а продемонстрированный экспериментально результат важнее груды логических аргументов.

Такой взгляд на вещи легко может привести к фаталистическому принятию status qua В конце концов, нельзя приготовить омлет, не разбив яиц, - многие люди просто не хотят меняться, если это неудобно для их повседневной жизни, или стремятся хотя бы отложить перемены «до понедельника». Вот тут-то надо проявить уважение к фактам... и толику идеализма.

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

Я готов упорно работать над внедрением в сознание идей, которые, по моему глубокому убеждению, принесут пользу людям. Более того, я считаю, что ученые и интеллектуалы должны способствовать распространению своих идей в обще­стве, чтобы они применялись людьми, а не оставались игрой изощренного ума. Однако я не готов жертвовать людьми во имя этих идей. В частности, я не хочу навязывать единый стиль проектирования посредством узко определенного язы­ка программирования. Мысли и действия людей настолько индивидуальны, что любая попытка привести всех к общему знаменателю принесет больше вреда, чем пользы. Поэтому С++ сознательно спроектирован так, чтобы поддержать различ­ные стили, а не показать единственный «истинный путь».

Да, язык программирования - на редкость важная вещь, однако это всего лишь крохотная часть реального мира и поэтому не стоит относиться к нему чересчур серьезно. Необходимо обладать чувством меры и - что еще важнее - чувством юмора. Среди основных языков программирования С++ - богатейший источник шуток и анекдотов. И это неслучайно.

При обсуждении философских вопросов, равно как и возможностей языка лег­ко скатиться на чрезмерно серьезный и нравоучительный тон. Если так произош­ло со мной, примите извинения, но мне хотелось объяснить свои интеллектуаль­ные пристрастия, и думаю, что это безвредно - ну, почти безвредно. Да, кстати, мои литературные вкусы не ограничиваются только произведениями вышеназван­ных авторов, просто именно они повлияли на создание С++.
*/

Tags: cs, программинг, философия, цитаты
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 6 comments