December 14th, 2009

glider

Творчество

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

Я, наоборот, считаю, что креативы имеют смысл прежде всего для афтара, то есть наиболее важен сам процесс и факт материализации идеи в осязаемой форме. Для себя я вижу смысл публиковать произведения по трем причинам (упорядочены по значимости): 1) в процессе описания креатива словами дополнительно выкристаллизовать идею, 2) получить фидбэк, который позволит более четко выразить идею, 3) чтобы кто-нибудь, кому креатив полезен, мог воспользоваться им.

Смысл этого поста - сохранить и выразить саммари моего понимания творчества на текущий момент, но если вы хотите оставить камент, я буду только рад!
glider

Искусство

Программирование - это, несомненно, искусство.

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

На взгляд неспециалиста программирование тривиально и выражается собственно в кодировании (аспект №2 из вышеописанного списка), но это неполное понимание. Также неполно и понимание многих ремесленников, для которых задача №1 превращена в рутину гайдлайнами разработки софта и популярными фреймворками, задача №2 тривиализирована разработчиками одного из мейнстримных языков программирования, а задача №3 решена Чарльзом Бэббиджем. Такие взгляды, конечно, имеют право на существование, но создают иллюзию того, что в программировании (не в дизайне UI или юзабилити, а в самом программировании) нет ни субъективности, ни эстетики.

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

Да, за две сотни лет наука computer science далеко продвинулась в ответах на эти вопросы, но все же ни один из этих вопросов не имеет полного и объективного ответа, ибо нет метрики, позволяющей объективно оценить и проранжировать ответы на эти вопросы. В то же время, слова "изящно", "выразительно", "обучить", содержащиеся в постановке проблем, явно указывают на наличие в программировании эстетического начала.

Программирование - это, несомненно, искусство.