Pull to refresh

Comments 85

Все нормально даже если рассматривать нашу профессию как переводчик, переводчик это творческая профессия
UFO just landed and posted this here
Является ли творчеством написание кода во всех его проявлениях?

Тут надо ставить вопрос так:
— Является ли написание текста творчеством во всех его проявлениях?
— Какого текста?
— Да, любого.
— Что говорите, зависит что писать докладную записку или художественную книгу? Ну, тогда наверное и написание кода тоже напрямую зависит от того что и как человек пишет. Макрос в Excel'e для бухгалтерии вряд ли, а вот элементы искусственного интеллекта, который никогда и никто не делал, — наверняка. Тоже самое и про то является ли программирование научной деятельностью.
Почему программирование доставляет удовольствие? Как вознаграждаются все усилия профессионала?

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

Второе — это радость создания вещей, полезных другим людям. Где-то в глубине души мы хотим, чтобы другие использовали нашу работу и находили ее полезной. В этом смысле продукт программирования не слишком отличается от первой детской подставки для карандашей «в подарок папе».

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

Четвертое — это возможность постоянно учиться, вытекающая из непрерывно меняющегося характера задачи. В том или ином отношении проблема оказывается новой, и человек, ее решающий, приобретает новые знания, иногда теоретические, иногда практические, а иногда и те, и другие вместе.

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

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

Программирование доставляет нам радость, потому что позволяет удовлетворить стремление к творчеству, глубоко заложенное в каждом из нас, и разделить это чувство радости с другими.

Фредерик Брукс, «Мифический человеко-месяц»
UFO just landed and posted this here
Любой человек оценит хорошую музыку

На самом деле, нет.
Программисты тоже творят. Но не эстетику, как музыканты и художники.


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

Любой человек оценит хорошую музыку, а вот хороший код (именно текст кода) практически никто не оценит.


Хорошую программу оценят многие.

А вот конкретным составом красок и техникой их нанесения никто из зрителей картины не интересуется (ну или там набором слоев, кистей и скриптов в фотошопе).
UFO just landed and posted this here
Ха-ха. Несмотря на то, что моя программа обслуживает очень посещаемый ресурс, я думаю, что никто не оценит ухищрения, чтобы добиться корректной обработки на JS области прокрутки размером больше 1 миллиона пикселей.

Какая разница для пользователя, сколько там пикселей в документе? Работает адекватно — хорошо. Нет — плохо. И только искушённые могут осознать, что не так просто предоставить пользователю в Web гигабайтный документ для чтения.
Профессия, хобби или даже способ существования тут ни при чем.
— Human beings have dreams. Even dogs have dreams, but not you, you are just a machine. An imitation of life. Can a robot write a symphony? Can a robot turn a… canvas into a beautiful masterpiece?
— Can you?
Еще можно добавить, что в отличие от музыкантов, программисты пишут для того, чтобы это использовать, а не чтобы блеснуть оригинальностью. Свойства типа правды или хорошего дизайна независимы от новизны: 2 + 2 = 4, да, правда, даже несмотря на то, что каждый так думает. Тот, кто говорит «я хочу написать оригинальный алгоритм сортировки!», а не «я хочу написать оптимальный алгоритм сортировки!», всегда желает восприниматься как оригинал. Только проблема в том, что люди, которые стремятся открыть правду или изобрести хороший дизайн, могут достигать креативности, но не наоборот.
программисты пишут для того, чтобы это использовать, а не чтобы блеснуть оригинальностью
А как же изощренные программы на Brainfuck, например? Их пишут явно не для того, чтобы потом использовать…
Музыканты иногда тоже пишут, чтобы использовать.
В фильмах, например.
И чего статью писали? В бит укладывается.
Если быть занудой и опираться на правила русского языка, то false. Верно будет так:
программирование == творчество || программирование != творчество

или так
программист == творческий человек || программист != творческий человек
Нет не издеваюсь. То, что мне накидали минусов лишний раз доказывает, что программисты это творческие личности с тонкой душевной организацией и когда даже пытаются сделать замечание по их столь любимому коду, сразу обижаются.
Когда пытаются (типа, остроумно) выразить некие мысли в виде кода, надо быть очень точным, иначе — расстрел.

Все зависит от того, на каком языке написано выражение. Я бы выделил 3 группы:

  • Языки, которые позволяют переопределять поведение операторов, как правило, бинарные операторы атрибуцируются левому операнду. В этом случае значение выражения может быть любым (в том числе, не булевым), в зависимости от того, как оператор == определен для типа выражения программист, а так же, как оператор || определен для типа результата вычисления оператора == над программист, примененный к творчество.
  • Перед применением оператора == язык приводит операнды к одному типу. В данном случае значение выражения «ложь» едва ли возможно, зато возможны различные аварийные или исключительные сценарии развития событий, если типы выражений программист и творчество по каким-то причинам нельзя привести к общему знаменателю. Сюда же идут такие химеры, как боксинг/анбоксинг из Java.
  • По моим представлениям, в языке Си результат не может быть ничем, кроме 1. Какого конкретно оно будет типа — зависит от lvalue-типа. Управляющие конструкции расценивают результат как «истина».


Так же, стоит отметить, что в большинстве Си-подобных языков выражение с конструкцией творческий человек — явная синтаксическая ошибка, хотя в некоторых, поощряющих развитие DSL, можно хитро настроить приоритет функции творческий так, чтобы вся конструкция была валидной.
Ууу. Все как-то очень серьёзно восприняли моё замечание. Я лишь пытался в шутливой форме обратить внимание на то, что в русском языке нелогично сравнивать два подобных понятия.
Что будет если привести средний род(творчество) к мужскому(программист)?
Все как-то очень серьёзно восприняли моё замечание
Потому что вы включили зануду, но там всегда будет true. False не может быть из-за оператора || (и потому, что утверждения противоречат друг другу. Всегда будет 1 || 0 или 0 || 1).
Многие диалекты, например Hive Query Language поддерживают != в качестве синонима для <>
Хорошо, что Шекспир в лице Гамлета не знал C.

to be || ! to be

как правило оптимизируется на этапе компиляции
Возможно, Шекспир имел ввиду побитовые операции (2B | ~2B).
А какая разница? Всё равно true в каждом бите (в каждом возможном варианте Гамлета).
«Нельзя перейти от неформального к формальному с помощью формальных средств» /Alan Perlis/ (кстати, звучит вполне «математично»).

Если программиста рассматривать как точного переводчика, то потребуется, чтобы он переводил формальную задачу с естественного на формальный машинный.
Такое возможно весьма и весьма редко, так как требует очень чёткой работы постановщиков задач и заказчика. Но.

«Пользователь не знает, чего он хочет, пока не увидит то, что он получил» /Э. Йодан/

А вот это гвоздь в крышку гроба высказывания «программист не более чем кодер».

Так что придётся сменить трактовку с «программист — это переводчик» на «программист — это интерпретатор». Программисту придётся сотворить ранее никем не оговоренную спецификацию.

И это потребует вернуть творчество в картинку.
Если так утрировать, то по моему, код и есть так же самая книга написанная писателем, у юного писателя она не очень, а у профессионала, читается в захлёб с переживаниями и деталями. Только эта книга, повесть, произведение, не для каждого, не каждый её поймёт, пользователи, ценят результат, вперемешку с примесью дизайна, им глубоко всё равно как внутри всё работает, красиво и работает хорошо, не работает плохо. Только единомышленники оценят внутренности.
Кодирование и язык — лишь инструменты. Продукт — результат творчества, им и наслаждаются люди. Мало кому интересно смотреть онлайн, как композитор неделями сочиняет симфонию. Сидит, понимаешь, черкает что-то в нотной тетради. И чем он отличается от программиста?
Нет творческих и нетворческих профессий, есть творческое отношение к делу. Любое дело можно превратить в искусство, но это не значит, что нужно это в переходе делать или выставки организовывать. Искусство бывает разное.
Есть мнение, что деятельность программиста очень похожа на деятельность врача-диагноста или детектива. Все они пытаются понять причину, расследовать произошедшее и потом придумать, как решить поставленную задачу. Возможно есть и другие похожие профессии, но когда ты занимаешься отладкой кода, то иногда это действительно напоминает деятельность какого-нибудь детектива. Поэтому на мой взгляд творчество возможно и имеет место быть, но все же большую часть времени программист просто решает различные головоломки.
Да, еще периодически приходится опрашивать «свидетелей» и пытаться понять их мотивы (зачем им нужно сделать именно это и что им нужно на самом деле).
Является ли творчеством написание кода во всех его проявлениях?

Ответ на этот вопрос зависит исключительно от того, как вы понимаете слово «творчество».
А инженер это творческая профессия? А токарь?
Мне, честно говоря, непонятно, почему программисты чаще себя сравнивают с музыкантами и художниками, а не с инженерами и токарями/сварщиками/слесарями.
А инженер это творческая профессия?

Смотря какой инженер, если инженер-конструктор, вроде Сергея Королёва — конечно творческая.

А токарь?

Зависит что он делает, наберите в гуглкартинках «токарное искусство»

Мне, честно говоря, непонятно, почему программисты чаще себя сравнивают с музыкантами и художниками, а не с инженерами и токарями/сварщиками/слесарями.

Может потому что результатом работы программистов практически всегда получается уникальное авторское произведение, что характерно скорее для творчества, чем для ремесла? Архитекторы, проектировщики — тоже творческие профессии.

P.S. Уникальность программистов что это работа на стыке творчества, ремесла и науки, причем зачастую «состав» зависит от выбора самого программиста.
На стыке науки программирование скорее не находится, чем да. Очень малая доля программистов занимается наукой. А вот решением инженерных задач — многие. Не зря же у половины программистов в дипломе написано «инженер-программист».

Ключевая разница заключается в том, что инженерная деятельность, в отличие от научной, направлена не на познание сущности вещей, а на их создание.
А инженер это творческая профессия? А токарь?


Если их работа включает в себя создание чего-то нового — да.

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

В литературе есть такое понятие как плагиат. Хотя в силу развитых средств копирования (книгопечатание) там полностью нетворческие специальности вымерли давно, раньше ведь были писцы например.
Копирование чужих картин вполне может быть созданием нового — в случае применения другой техники рисования, или когда происходит переоткрытие старой и потерянной техники, которой, вероятно, пользовался автор.
Но творчеством будет не копирование, а создание этой техники — разовое событие, после которого копирование с ее использованием творчеством уже не будет.
Ситуаций, которые надо адаптировать под новую технику, может быть много, и каждая будет требовать отдельного анализа и решения. При копировании, например, картин Рубенса акварелью, наверное, художник будет часто решать задачу — а как адекватно передать тот или иной эффект.
Боюсь вы все поставили с ног на голову. Как раз исполнение музыки в метро и не является творческой деятельностью. В отличие от программирования.

Творчество — это создание чего-то нового. Что нового создается при исполнении муызки, придуманной задолго до момента исполнения? Непосредственно исполнение музыки можно сравнить только с продажей уже сделанной программы.

Пример у вас откровенно странный:

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


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

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


или даже

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


В творчестве важен его результат, а не наблюдение за процессом.

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


Работа писателя (или журналиста) вообще почти полностью совпадает с программированием — она как ни странно заключается именно в написании кода на естественном языке.

В ней точно так же есть прототипы, альфа и бета версии, рефакторинг, тестирование, отладка и исправление ошибок, шаблоны проектирования.

Более того вместе с писателями-программистами как правило работают редакторы-тестировщики.

Только терминология другая — скажем вместо тестирования — редактирование, вместо рефакторинга правки багов — вычитка и так далее.

И в ней есть даже свое разделение на разработчиков-инженеров и кодеров, которые пишут низкокачественные тексты по чужой постановке — раньше их у нас называли «литературными неграми».

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


Абсолютно аналогичная ситуация возможна и для писателей — делать заказные тексты вместо придумывания чего-то нового.

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

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


То есть вы серьезно считаете что программисты никогда не придумывают ничего нового, а исключительно переводят на машинный язык придуманное кем-то другим? И Линус Торвальдс например не придумывал Линукс, а просто перевел в машинный код придуманную кем-то другим ОС (подставьте любого другого известного программиста)?

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

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

Художник может тупо копировать чужую картину — и это не будет творчеством. Исполнитель может придумать какой-то новый вариант исполнения — и это будет творчеством.

не было бы знаменитых музыкантов, на которых билеты отрывали бы с руками.


Билеты отрывают с руками как правило не на что-то новое и творческое, а как раз на что-то старое и хорошо знакомое, вдобавок еще хорошо разрекламированное.

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

Да, в программерской работе бывает много и рутины, и чисто технической работы, когда нужно расставить известные части в известном порядке. Творчество начинается там, где кончается Изведанное. Если у вас на работе сплошная рутина — пора выходить на уровень выше, браться за более серьезные вещи.
И еще — вы же не думаете всерьез, что все лабухи в переходе — творческие люди? Умение играть на музыкальном инструменте еще не делает человека творцом.
Дизайнеры и программисты — творческие люди, аналогично, как художники.
Отличный вброс, замечательные (для вброса) аналогии. Продолжая параллель с переводчиком нафантазировалось следующее. Приезжает русский человек в Израиль, ну я не знаю там, к родственникам например. Внезапно встречается ему японец, от которого нашему юзеру что-то нужно. Зовут они… араба. Вот он-то и должен понять одного и объяснить второму. У меня так.

PS: программист — это перфекционист. Я не знаю как по-другому объяснить.
Программист — это профессия ловушка. По той причине, что между идеей и результатом её воплощения проходит минимум времени. Что-бы нарисовать картину или написать симфонию — нужны месяцы, спроектировать самолёт или вырастить сад — годы и десятилетия, и только в программировании можно за вечер набросать кода и наслаждаться результатом. А полученный результат — это выброс дофамина.

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

Самый наглядный пример — хорошо знакомая мне литература. Так как в нашу эпоху тотального пиратства деятельность писателей (как минимум в России) перестала оплачиваться вообще, многие перешли на написание произведений методом мелких кусочков. Проще говоря пишется несколько абзацев, они сразу же выкладываются читателям и обсуждаются с ними. На редактирование, вычитку, выверку фактов и логики, как правило вообще забивают — хотя что-то делают бесплатные бета-тестеры из читателей.
UFO just landed and posted this here
Я бы сравнил программиста не с переводчиком, а с оратором. В самом деле, программа — это приготовленная речь, и чем лучше речь, тем больше она действует на аудиторию. Вот только аудитория программиста — в основном бездушные машины и немного других ораторов, случайно услышавших вашу речь, отсюда и уныние. Но, тем не менее, ораторское искусство — это творчество (ну, как минимум — искусство). А что касается сравнения с ремеслом, то да, кто-то из нас Цицероны, а кто-то — аниматоры в дешевом турецком отеле, и это везде так, даже в музыке.
А может все-таки люди, которые будут использовать его программу?
Нет. Пользователи имеют дело с продуктом (скомпилированный код), программист с идеей (исходный код). Пользователям нет никакого дела до вашей речи (кода), их не интересуют ваши изыски и красота вашего ораторского искусства.
Интересная мировоззренческая разница. Я все-таки считаю результатом работы программиста не исходный код сам по себе, а именно программу, которую будут использовать люди.

И при таком подходе программирование ничем не отличается от живописи или любого другого искусства. Никого не интересует какие именно краски и в какой последовательности, на какой основе, с какой последующей обработкой, использовал художник. Точно так же никого не интересует какой именно код использовал программист.

Хотя качество кода несомненно влияет и на качество программы — если он глючная, тормозная, ее невозможно легко изменять — все это наглядно видно конечному пользователю, пусть даже он и не понимает причин.

А вот при использовании вашего подхода программирование действительно из творчества превращается в ремесленную деятельность по переводу заранее придуманной идеи программы (творческой части) в машинный код.

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

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

Многие (в том числе и я) склонны называть программой именно исходный код, а не то бинарное месиво, которое получается на выходе компилятора X и запускается на выполнение в операционной системе Y.

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


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

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

Многие (в том числе и я) склонны называть программой именно исходный код, а не то бинарное месиво, которое получается на выходе компилятора X и запускается на выполнение в операционной системе Y.


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

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

Плохую работу сервера пользователи очень быстро заметят без всякого понимания технических деталей его работы.

И кстати системное администрирование сервера тоже может быть творческой работой — если в ходе него приходится придумывать что-то новое для решения проблем.

Тема вообще-то весьма холиварная, поскольку сугубо философская. :)


Я бы не стал приравнивать холивар к философии. Хотя в философии нет четких и объективных критериев для проверки из естественных наук, но холивары вовсе не обязательно связаны с философией.

Холивар — это прежде всего замена познания слепой верой в то, что какая-то одна точка зрения лучше. Философы же могут спокойно понимать ограниченность своего инструментария в духе «Я знаю что ничего не знаю».

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

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


А что вы понимаете под творчеством? Традиционно творчество понимается как создание чего-то нового, ну вот например википедия:

Творчество — процесс деятельности, создающий качественно новые материальные и духовные ценности или итог создания объективно нового. Основной критерий, отличающий творчество от изготовления (производства) — уникальность его результата. Результат творчества невозможно прямо вывести из начальных условий.


Это определение как мне кажется наглядно отвечает на все ваши вопросы и неясности.

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

А при ручном изготовлении можно вносить что-то новое в каждый экземпляр.

А можно и не вносить, но если ваш хэнд-мейд сводится к точным копиям то в плане творчества он ничем не отличается от промышленного производства.

С другой стороны в промышленном производстве творчество происходит при разработке новой модели, которую в последующем будут копировать на производстве.

Если при программировании вы создаете хотя бы частично что-то новое — вы занимаетесь творчеством. Само собой высшая степень — это когда вы придумываете полностью новую программу (или концепцию программирования, но это бывает нечасто).
Так недалеко и до вопросов копирайта в ИТ дойти. Программа, в которой поменяли все имена переменных на более читабельные — тоже творчество. Программа, написанная с нуля по точным спецификациям (например, решающая квадратное уравнение) — много ли творчества нужно? Придумать полностью новую программу — я бы скорее сместил акцент на «придумать задачу и решение» или хотя бы только решение. Потому что программы — это не картины, которые возникают только из воображения, и не музыка, которая пишется под настроение. У любой программы есть задача, которую она решает.
К сожалению, миф «музыка под настроение» — это результат тотальной музыкальной безграмотности и причина наводнения пространства звуками уровня «гоп-ца-ца». Она так же способна решать задачи, как программный код или дизайн интерфейса. И процесс написания такой музыки может быть не более вдохновенным, чем проектирование зернодробильной машины. Качественный результат — всегда результат тяжелой интеллектуальной работы.
Я не совсем корректно выразился. Конечно же, я не думаю, что музыка появляется в прямом смысле слова под настроение. Но спецификация в программировании и пожелания в музыке несопоставимы по уровню точности (если я ошибаюсь, поправьте).
Ну, конечно, оценить соответствие музыки заданию можно только на условно-эмоциональном уровне. Хотя, возможно, в закульсье Голивуда и существуют документы, которые требуют, чтоб в данном месте от пробирающего холодного звука вздрогнули не менее 70% аудитории. Я не знаю, так ли это на самом деле, но это вполне возможная и выполнимая задача. При чем, выполнимая именно музыкальными средствами, шумовые эффекты — это уже сахар.
В любом случае, не зависимо от того, фигурируют ли в требованиях цифры, задание на музыку может быть очень даже узким — когда речь идет об озвучке видеоряда, это совершенно очевидно. Музыка для танца или на слова, кажется, дает больше свободы. Но я бы сказала, что это тот случай, когда написание ТЗ возлагается на автора (композитора или программиста). Если этот этап совсем пропустить по лени или непониманию, то у первого получится говно-песенка, а у второго — проблемы с неудовлетворенным заказчиком.
Программа, в которой поменяли все имена переменных на более читабельные — тоже творчество. Программа, написанная с нуля по точным спецификациям (например, решающая квадратное уравнение) — много ли творчества нужно?


Так самоочевидно же что степень новизны бывает разная. И картины и книги и музыкальные произведение тоже могут писаться по точным спецификациям. И аналоги смены имен переменных тоже есть — ремиксы в музыке, клоны в литературе.

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

Полная аналогия с производством сайтом на типовой CMS которые отличаются только мелкими вариациями дизайна и набором формочек.

Это все общие проблемы для всех видов творчества.

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


Вы просто мало интересуетесь другими областями творчества. И в музыке и в живописи и в литературе точно так же есть задачи и их решения.

Другое дело что задачи могут быть иными — в этом плане из программ ближе всего будут компьютерные игры. Все-таки с помощью музыки обычно не решают задачи автоматизации бухгалтерии или документооборота. Цели там обычно либо развлекательные либо информационно-культурные (попытка донести в доступной форме какую-то информацию о человеке или убедить в чем-то).

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

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

Сверхзада́ча — термин, введённый К. С. Станиславским для обозначения той главной цели, ради которой создаётся пьеса, актёрский образ или ставится спектакль[1][2]. Термин получил широкое распространение в театральной практике и со временем приобрёл иносказательное значение: высшая цель, которую необходимо достичь[3].

Согласно Станиславскому, актёр, выходя на сцену, выполняет определённую задачу в рамках логики своего персонажа (то есть герой хочет что-то сделать и добивается или не добивается этого). Но при этом каждый персонаж существует в общей логике произведения, заложенной автором. Автор создал произведение в соответствии с какой-то целью, имея какую-то главную мысль. И актёр помимо выполнения конкретной задачи, связанной с персонажем, должен стремиться донести до зрителя главную мысль произведения, которая и является сверхзадачей[4].

По сути, «сверхзадачей» является режиссёрский замысел — индивидуальное толкование главной идеи произведения, той цели, ради которой оно было написано, или собственная цель режиссёра, иногда отличная от авторской, в любом случае — та общая задача, ради которой произведение ставится на сцене[5].


ну или немного с другой стороны

Мы так сразу и заявим: роман рассматривает человека на фоне и перед лицом глобальной, нечеловеческой силы. Не пугайтесь, мы имеем в виду не обязательно Саурона. Роман – это человек перед лицом судьбы, человек перед лицом войны, человек перед лицом страсти. Человек на фоне потрясений, коренных изменений социума, природных катаклизмов, стихии, перелома времен. «Век вывернул сустав» – хотя «Гамлет», безусловно, трагедия, а не роман. Иногда равнодействующее желание, стремление, результирующий вектор страстей, интриг и действий большого числа людей также превращается в нечеловеческую космическую силу.

То есть, мы берем МАКРОКОСМ, мало зависящий от желаний одного человека, который хочет по-другому устроить мир, от его стремлений, от его жизни – и МИКРОКОСМ, частную жизнь личности. Два мира, где разница – в радиусе горизонта. Именно это столкновение внутри романа позволяет автору обобщить человека до космических масштабов. Поэтому «Евгений Онегин» – роман. И «Собор Парижской Богоматери» – роман, и «Граф Монте-Кристо», и «Триумфальная арка». На фоне макрокосма личность, герой романа, приобретает совершенно другое качество и другое значение.

Иначе роман не разворачивает плечи.

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

Вспомните настоящие романы, которые вы читали – вы везде это найдете. Можно ли назвать «Стальную Крысу» Гаррисона романом? Нельзя! Хотя по объему текста любой конвент мигом занесет «Крысу» в соответствующую номинацию. Но этого признака романности мы там не сможем найти. Это не ухудшает «Стальной Крысы», как цикла повестей; это не минус и не плюс.

Это качественные признаки жанровой разницы.

Когда автор пишет роман, он должен это понимать изначально. Иначе писателю не выйти на уровень обобщений. Иначе в литературной капле не проявится целый океан. Поэтому в романе всегда рассказывается больше, чем просто история. Если читатель за один вечер прочитал роман («Ой, там такая классная история!»), пролетел, проглотил…

Романы не глотаются за один вечер.

Космос нельзя выпить одним глотком.

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

Можно ставить фильмы по «Графу Монте-Кристо» тридцать восемь раз. С Жаном Маре в главной роли, с Авиловым, с Чемберленом, с Депардье, с кем угодно. Почему? Потому что в исходнике – РОМАН! Под каким углом повернул – под таким и засверкало. Мы можем получить вульгаризированного графа-Депардье, а можем – элегантного графа-Маре или демонического графа-Авилова. И не только из-за разницы в актерской игре и сценарии это будут совершенно разные люди. Один превращается в абсолютного аристократа, в другом до конца его дней сидит помощник капитана. Но в любом случае мы увидим Эдмона Дантеса, которого сожгла его судьба и его месть.

Микрокосм и макрокосм.

Хочется завершить разговор о первом признаке романа тем, что эпичность не противоречит комедийности, сатиричности или гротесковости текста. Ради бога – «Эфиоп» Штерна, «Мастер и Маргарита» Булгакова. Эпичность не обязательно шествует рука об руку с невероятным серьезом на трагической маске. Обобщать и подниматься до уровня космоса, сталкивая человека с надчеловеческими силами, можно и нужно смеясь.

Другое дело, что это надо уметь.
Роскошный пост, спасибо. Жаль, не могу плюсануть.

Интересно пофантазировать, что есть РОМАН для программирования? Это должно быть нечто такое, в чём каждый может открыть что-то своё, посмотреть под своим углом… И этих разных точек зрения на одно и то-же должно быть просто море. Наверное, роман в мире программного обеспечения это то, что в последнее время модно называть экосистемой. Например — ХАдуп. Действительно, можно решать очень уж разные задачи, использовать разнообразные инструменты, но в сути своей — это одина и та-же система.

Даже операционные системы и всякие корпоративные системы романами не являются — слишком мало возможностей взглянуть на них по новому. Это действительно — просто набор повестей.
Вероятно, новая парадигма программирования, новый вид программного обеспечения (как TEX в своё время). Новая CMS, движок — точно не тянут.
Про роман не мое, это из статьи Генри Лайона Олди (псевдоним двух харьковских фантастов) О бедном романе замолвите слово. У них вообще очень хорошие статьи по теории литературы и в этой еще масса интересного:

Что мы имеем в виду под реализованным принципом многоязычия?

Нет, отнюдь не литературный язык, которым написан текст.

По Бахтину, монологическая точка зрения на мир – это отдельный социальный язык. Допустим, вот это – социальный язык крестьянства, это язык «потерянного» поколения, а это язык религиозной общины, а это язык злобы политического дня. В данном случае мы понимаем под языком систему взглядов, принципов, умопостроений, принятой терминологии – и способ выражения всего этого. Например, язык нового поколения – это не только «превед, медвед!» в интернете. Отсюда вытекает целый поведенческий комплекс – привычки, неврозы, пристрастия, взгляды на быт и искусство…

Каждый такой язык – монолог. Отдельная точка зрения на мир. Пользуясь этим языком, я-автор отражаю точку зрения поколения, среды, социума и так далее. Так вот, роман строится ДИАЛОГОМ.

Роман не пишется одним социальным языком. В нем отражаются и сталкиваются несколько таких языков – целый набор в одном флаконе. Если вы внимательно посмотрите, то найдете в любом классическом романе несколько монологических языков. У Пушкина герои Евгений и Татьяна – это не просто два персонажа. Это два разных мира. Он давно чтенье разлюбил, она без романа заснуть не может. Это разные языки, которыми они изъясняются, разные принципы поведения, разные взгляды на жизнь, и Пушкин это обобщает на уровне поколений, слоев социума.

Многоязычие – принцип романа. Его закон. Многоязычие еще и показывает владение автора своим ремеслом, владение набором инструментов, позволяющим демонстрировать и обобщать. Когда мы читаем похождения космического авантюриста, и вот он все похождается и похождается, летает и летает, пьет и пьет (в город они входят – пьют, из города выходят – пьют, и в космолете пьют, и на планете лакают…) – мы видим, что автор не знает, чем заполнить пустоты, кроме как налить главному герою.

В данном случае автор не дотягивает даже до монологической точки зрения на мир. А о ДИАЛОГЕ и речи быть не может. Вспомните любой известный роман. «Идиот» Достоевского? – отлично! Вы и без наших комментариев сразу увидите, что там есть диалог как минимум пяти таких языков. «Поднятая целина» Шолохова? – пожалуйста! Макар Нагульнов с одной стороны и Островнов с другой. Кроме того, что это персонажи, это и социальные образы, обобщающие целые пласты изменений в обществе.

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

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

Это и есть многоязычность романа.


Интересно пофантазировать, что есть РОМАН для программирования? Это должно быть нечто такое, в чём каждый может открыть что-то своё, посмотреть под своим углом…


Настолько напрямую сравнивать литературу с программированием сложно — в конце концов большие системы в программировании все равно слишком сложные для одного человека. Ядро Линукса, C# или Firefox никто не сможет осознать и написать в одиночку. Но Андерс Хейлсберг, Бьёрн Страуструп или Линус Торвальдс явно сравнимы с Толстым или Достоевским по сложности творческих задач задач — хотя сравнивать настолько разные области творчества наверное вообще глупо.

Кто круче Сергей Королев и Александр Пушкин? А можете вообще Чайковский?
Для начала было бы не плохо определиться с понятием «творчество» (любая созидательная деятельность человека) и отделить его от другого — «публичное творчество» (творческая деятельность, продукт или процесс которой направлен на развлечение публики). Автор неправомерно сузил понятие творчества до публичных выступлений. Которые, в свою очередь, сами по себе творчеством являются не всегда — в машинальном повторении 582-й раз давно разученного произведения содержание творческого процесса — 0.
«творчество» (любая созидательная деятельность человека)


А что такое созидательная деятельность? Ваше определение как мне кажется только еще сильнее все запутывает.

Есть гораздо более простое и четкое, творчество — это создание чего-то нового. Все.
Автор и большинство комментирующих исходят из предположения, что есть некое деление профессий на «творческие» и «нетворческие». Мол, писатель — профессия творческая.

Ну-ну. Есть очень хорошая фраза про то, что в каждой профессии 80% — это рутина и лишь оставшиеся 20% оставлены под творчество.

В одной из книг «Как стать писателем» прямо говорится, что вы постоянно будете заниматься рутиной, а окружающим врать про вдохновение, музу и муки творчества. Как в том анекдоте — "так и вы говорите".

Позволю себе далее немного провоцирующий стиль, чтобы мозги задумались сильнее. (Я предупредил, минусуя, вы расписываетесь в узости ума и нехватке толики юмора)

… Так и вы говорите, господа программисты, что ваша профессия — творческая. Хотя на самом деле она нисколько не творческая.

Откройте хотя бы определение «творчества» в википедии: вы увидите слово «уникальный». А какая уникальность может быть в программировании??

Тут вот на днях яндекс выложил manul в открытый доступ — и тут же со всех сторон посыпались советы в духе «переменные нужно именовать вот в таком стиле» и о какой уникальности может идти речь, когда напротив, речь идёт о тотальной унификации.

Да возьми любого другого программиста на этот проект — и он напишет чуть ли не точно такой же код. На первом же кодревью всю вашу уникальность и творчество приведут к унифицированному виду. Программист — ты токарь будущего! Штампуй однотипный код как штампуют однотипные детали: любое массовое производство (литейное, обрабатывающее, программирование) — требует унификации, взаимозаменяемости и губительно действует на творчество.

А отличаться, будет уникальным будет как раз код какого-то новичка, которому унифицированным программированием ещё не стёрли индивидуальность. Но имеем ли мы право назвать данный код новичка — творческим, а код профессионала — нетворческим? (Мы ещё вернёмся к этому вопросу, когда будем говорить о определении «творчества» в психологии, психологи — они знают толк в творчестве, особенно когда начинают говорить о «внутреннем ребёнке»)

Вернёмся к книгам. Для того, чтобы написать одну великую вещь Толстой писал сотни. У Хемингуэя всемирно известным стал рассказ-халтурка (денег не было, надо было быстро написать), а вещь, которую вымучивал пять лет… В общем, если вся нация играет в футбол — из неё неизбежно выйдет десяток известнейших на весь мир футболистов (так было в СССР в 70тые: каждый двор играл в футбол), для того, чтобы появились подлинно гениальные вещи в программировании — в каждом дворике с wi-fi'ем должны сызмальства сидеть и кодировать.

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

Хотел ещё далее писать про внутреннего ребёнка, радость творчества (то, чего не хватает useful) но уже чувствую, что объём комментария уже и так достаточно превышен. Допишу позже.
именование переменных — это как техника мазка у художников. Если ты классицист — будь обязан не размазывать малярными кистями из левого верхнего в правый нижний. Пиши, как подобает. Но если в твоих нестандартных мазках что-то есть — поздравляю, ты зачинатель новой школы или даже направления. Но для этого помимо другой техники должно быть ещё несколько слоёв — смысловых, эмоциональных и т.д.
именование переменных — это как техника мазка у художников

Хорошее сравнение, мне понравилось.
А вы действительно думаете, что все те кто стоит и играет в переходах занимаются творчеством?
я уверен, большинстве случае это не имеет ничего общего с творчеством, обычно это посредственное исполнение чужих произведений. Иногда попадаются хорошие импровизаторы… но это редкость.
Или художники который стоят на известных улицах, это творчество? Рисователи шаржей и портретов? Я думаю, что это просто ремесло и ничего «высокого» там уже нет…
Мне кажется, все забывают про личность самого творца. Ведь творчество, это, скорее не результат, а процесс. И любое занятие может быть творчеством — всё зависит от того, кто им занимается.

Писатели пишут не потому, что должны, а потому, что не писать не могут. То же самое и с программированием. Если кто-то занялся написанием кода потому, что за это хорошо платят — творчеством этот процесс назвать сложно. А если он этим занимается потому, что иначе не может — то тут творчество налицо. Такой программист будет код постоянно улучшать, превращая его в произведение искусства — там метод выделить, там переменную более удачно назвать. Да, это перфекционизм, но ведь художники тоже выставляют картину на публику только когда сами считают, что она готова. Конечно, в бухгалтерском макросе на 3 строчки простора для творчества мало. Но ведь и Сальвадор Дали рисовал логотип для кока-колы.

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

Так что конечно проверка «программирование == творчество» даёт истинный результат.
Все логично. Аналогия с музыкантом из подземного перехода — вполне переносится на программиста.
Только в качестве подземки мы (программисты) используем Кикстартер (например). И там прямо таки смотрят на то что ты пишешь и думают: «Да у тебя, парень, хорошо получается. Дам ка я тебе деньжат на \»концертный зал\" ".
В соседнем топике возник спор, есть ли место эмоциям в программировании?
Например, бранные названия переменных или нецензурные комментарии (опуская публичность написанного).
Итак, уважаемые хабаровчане, меня продолжает мучить вопрос

Хабаровчане — жители Хабаровска, имхо.
Словоблудие. Творчество — это не более чем слово. Важно не то, как ты обзовешь свое дело, а то как ты его воспринимаешь. Ярлыки не имеют никакого значения. Хочешь быть творческим? Будь! Не хочешь? Ну не будь тогда! Все ж просто :)
Sign up to leave a comment.

Articles