Невидимое искусство программирования

Нет формы искусства менее заметной, чем вид искусства программиста, для которого «скромный труд и глубокая безвестность» являются предварительными условиями среды.

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

Точно так же не существует единственного верного способа написать программу.

Стиль программирования программиста уникален и узнаваем. Программисты могут узнать автора фрагмента кода, если узнают его стиль.

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

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

Ни один программист никогда не был награжден медалью или интервью на телевидении из-за элегантности и выразительности их кода, но это не означает, что код не может быть элегантным или выразительным.

Код настолько выразителен, что создает целые миры, целые вселенные. Автономные вселенные, герметические вселенные, prisca theologia которых является тезисом Черча-Тьюринга.
Код - это Логотипы, Слово, которое выводит порядок из хаоса.

Именно эта миротворческая сила делает программирование искусством, которым так трудно овладеть.

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

Тяжела голова, носящая корону. Быть Демиургом, устанавливать правила - это тяжелая работа.

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

У нас даже есть компьютеры, которые собирают информацию о вращении кварка.

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

«Программист, как и поэт, работает лишь немного в стороне от чистой мысли. Он строит свои воздушные замки из воздуха, создавая напряжение воображения. Немногие средства творчества настолько гибки, их так легко отшлифовать и переработать, так легко можно реализовать грандиозные концептуальные структуры »- Фредерик П. Брукс-младший