Блог пользователя freopen

Автор freopen, 13 лет назад, По-русски


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

А. и Б. Стругацкие.



«В наше время считается общепризнанным,
что из всего, так или иначе касающегося искусства,
ничто более не может считаться общепризнаным»
 
Теодор Адорно

Все началось с того, как один человек пытался выяснить решение задачи контеста, который проходил в данный момент. Задача была очень простая, всем было очевидно, что этот человек не займет хорошего места, не получит футболку и т.п. Но тем не менее ни один из 5000+ членов сообщества не дал ни одной подсказки (ну или хотя бы из 30+ человек, которые это видели и знали ответ). Мне такой результат уже давно кажется закономерным и я попробовал объяснить его в двух словах. Теперь попробую чуть более подробно. Заранее прошу прощения у людей, которые в это понятие вкладывают не то, что я. Я лишь хотел изложить свой взгляд.

Сначала немного теории из википедии: Программирование, Олимпиады по программированию, Искусство. Обратите внимание, в последней статье указано "Понятие искусства крайне широко — оно может проявляться как чрезвычайно развитое мастерство в какой-то определённой области".

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

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

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

Вот вы видите доску в городском доме творчества. На доске сверху ровными буквами написано "Выставка детских рисунков", а под надписью уже не столь ровно изображены различные эпизоды из детского быта. Попробуйте ответить - это искусство? Мой ответ - да, безусловно. Эти дети нашли свой способ общаться с миром, показывать ему свои мысли. Пусть они весьма примитивны и грубо изображены (хотя, бывает по-разному, некоторые дети способны на шедевры, которые и не снились взрослым художникам), но это искусство. Возможно, когда нибудь, один из этих детей будет писать легендарные картины, и люди со всего света будут приезжать, чтобы посмотреть на них. Все начинается с малого.

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

Буду поддерживать список неплохих комментариев и дополнений:
1. Дополнительная связь программирования и стихов
  • Проголосовать: нравится
  • +56
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится -44 Проголосовать: не нравится
>>Все началось с того, как один человек пытался выяснить решение задачи контеста, который проходил в данный момент.
даа..... этот человек изрядная свинья....
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

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

А. и Б. Стругацкие.

  • 13 лет назад, # ^ |
      Проголосовать: нравится -18 Проголосовать: не нравится
    Слишком радикальное высказывание, я один так думаю? 
    • 13 лет назад, # ^ |
        Проголосовать: нравится -20 Проголосовать: не нравится
      Я с тобой согласен.
      Просто не люблю Стругацких.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Наверное, те, кто минусовали, никогда не отмечали Новый Год, День Рождения, никогда не проводили время с друзьями(зачем вообще друзья, да?!?), никогда не путешествовали, никогда не были в театре, в кино и т.п. 
        Интересно, зачем тогда учиться/работать? Чтобы учиться/работать? Ну-ну...
        • 13 лет назад, # ^ |
            Проголосовать: нравится +5 Проголосовать: не нравится
          Не надо так серьёзно. Понятно, что в Новый год все празднуют Новый год, даже участники Новогоднего контеста (ну может на минутку отвлекутся, чтобы задачи отправить).
          Возможно, первый абзац действительно уместнее на Новогоднем контесте, но второй, по-моему, на месте. Здесь действительно собрались люди, которые знают очень много и которые стали с миром программирования несколько в другие отношения. Им интересно не только зарабатывать этим на хлеб (пусть с маслом и икрой), но и программирование как искусство, его красота.
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            А Вам не кажется, что в этом высказывании делается акцент на то, что внимания достойна лишь научная деятельность, что лишь она истинна, а все остальные признанные большинством удовольствия - бессмысленны, ничего не стоят.
            • 13 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              Эта цитата — вырезка из художественной литературы. Это не личное мнение авторов. Тем более там говорится про магию. При чем тут научная деятельность?
              • 13 лет назад, # ^ |
                Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

                Это личное мнение людей, которые цитируют этих авторов. А касательно магии: сайт, вроде бы, не "хогвартс.рф", Вам не кажется, что магия именно в этом обсуждении имеет немного переносное значение?
                • 13 лет назад, # ^ |
                    Проголосовать: нравится +5 Проголосовать: не нравится
                  Ты не понял ни моего комментария, ни смысла эпиграфов, ни даже того, что никто не делал «слишком радикальных высказываний» (кроме меня, может быть).
            • 13 лет назад, # ^ |
                Проголосовать: нравится +5 Проголосовать: не нравится
              Зачем утрировать? Мне, например, не кажется. Я понял, что в цитате ведётся речь о людях, которым больше нравится творческий процесс, чем общепризнанные удовольствия.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
По-моему любая работа, если вкладывать в неё душу, рано или поздно перейдёт в искусство. Точно так же, скажу по себе, что математику я тоже считаю искусством, в то время как многие относятся к ней как к инструменту\языку. В то же время любое искусство, если перестать вкладывать в него душу, перейдёт в ремесло. Так, знаком с программистами, программирование для которых уже не вызывает такого восторга и вдохновения.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится
    Математика - это не цифры и формулы. Математика - это умение понимать, думать и придумывать свои идеи. Математика - умение решать то, что не решается алгоритмически на данный момент. Такая математика - всегда искусство, как мне кажется.
    • 13 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится
      Мне кажется, Лёша, в тебе уме^W потрясающие способности философа. А ты каким-то программированием занимаешься :)
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Да ладно. Кто угодно напишет подобное, если мысль уже лет 5-7 в голове крутится. А как искусства мне и программирования хватает :).
      • 13 лет назад, # ^ |
          Проголосовать: нравится -43 Проголосовать: не нравится
        Среди программистов есть один философ уже, его тут все знают, зачем второй?
        • 13 лет назад, # ^ |
            Проголосовать: нравится +3 Проголосовать: не нравится
          Идея 1. Среди программистов уже есть tourist, зачем остальные?
          Идея 2. Разумеется, чтобы они могли спорить вести научную дискуссию.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Всё конечно красиво написано, но при чём здесь притча о челе, просившем слить решение??
  • 13 лет назад, # ^ |
      Проголосовать: нравится +10 Проголосовать: не нравится
    Ммм. Вообще это такой развернутый ответ, почему на CF бесполезно просить списать задачку.
13 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится
Отличный пост, спасибо!

Теперь можно таких умников посылать, написав им всего лишь один линк :) .
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Пожалуйста. Правда я хотел написать пост не для них, а для тех, кто тут уже давно. Человек, не умеющий рисовать, вполне может не считать живопись искусством.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Полностью согласен, я думаю многие из здесь присутствующих увидев отличный алгоритм, или оригинальную идею, не раз говорили "какое красивое решение", а ведь что ещё кроме произведений искусства является красивым?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Например, природу.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Можно сказать, что это искусство нашего мира)
      • 13 лет назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится
        Да, а ещё можно сказать, что Вселенная - это компьютер Бога :) Ну, он типа не мог вручную всё просчитать (там ведь системы нелинейных дифференциальных уравнений, которые алгоритмически не решаются), поэтому создал материю, задал начальные параметры и смотрит, что получается.
        Как, разве кто-то ещё не знает, что Бог - программист?!
        • 13 лет назад, # ^ |
            Проголосовать: нравится +3 Проголосовать: не нравится
          Может его компьютер умеет решать более широкие задачи, чем машина Тьюринга?
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Ну да, так вот он и умеет - только как раз за то время, которое равно параметру "время" в расчётах :)
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Со стихом было красивое сравнение:)
Я бы еще добавил: в стихах можно научить ритму, рифме, некоторым стандартным стилям; можно даже научить смотреть на мир по-другому, но нельзя научить писать стихи. Это ты должен научиться делать сам. И в программировании то же самое: можно научить стандартным задачам, показать некоторые дефайны, обучить некоторому алгоритмическому мышлению, но решать задачи ты должен научиться сам.
  • 13 лет назад, # ^ |
    Rev. 5   Проголосовать: нравится 0 Проголосовать: не нравится

    Между прочим, попытки разработать методологию для решения нестандартных задач были.
    Правда, речь шла в основном либо о математике, либо обо всём подряд - это были Декарт, Адамар, Пуанкаре, Хинтикка, Пойа, де Боно, Альтшуллер...
    Ну, а именно по программированию - есть ещё статейка Сергея Оршанского. Есть ещё моя прошлогодняя курсовая (собственно, откуда я всех этих людей и знаю - я на них ссылался), но, впрочем, по моему рейтингу по динамике изменения моего рейтинга на TopCoder за тот период (2009/10 учебный год) можно видеть, насколько это было успешно. Нинасколько.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Есть еще такая интересная область знаний, как "ТРИЗ". Если вдруг кто не слышал. А тех, кто слышал "не понаслышке" - интересно было бы послушать самих :D
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Ну да, я что про Альтшуллера и говорю!
        Смотрим сюда. Особо пристальное внимание уделяем участку графика, соответствующему первой половине 2009 года. Это вот оно самое. Кстати, я в каком-то треде это уже говорил. Получил где-то -3 за коммент и ни одного ответа. Идиоты, видимо, не поверили и решили, что это я так стебусь. А что, я только рад - им же хуже.

        Так а ты сам-то знаешь только "понаслышке" или как?

        P.S. Перечитав этот и предыдущий свой коммент, понял, что в них можно увидеть противоречие. На самом деле, конечно, противоречия нет, во всём виновата синтаксическая неоднозначность русского языка. Эпитет "нинасколько" относился только к моей курсовой, а не к тому, что перечислялось до неё.
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Ага... Очень интересная область. И даже приходит к тому что ряд последователей Альтшуллера считают слово "ТРИЗ" дилетантским и вместо него говорят "системный анализ" (хотя словцо я думаю украдено у специалистов других областей).

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

        М-м-м... Правда трудно проводить границы... Возьмём например одного из классиков - Декарта и его "Размышление о Методе". Вроде бы человек серьёзно пытается объяснить что мыслить надо последовательно и логически. Но делает это так пространно (и в конце с такими наивными примерами) что читать как-то неприятно. И в то же время Галилей с его "мысленным экспериментом" о падении тел - гениальная игра ума - и притом вряд ли он сидел и курил Декарта чтобы узнать "как же это мыслить-то надо"...
      • 13 лет назад, # ^ |
          Проголосовать: нравится -8 Проголосовать: не нравится
        Да, у нас в лицее даже был такой предмет. Но, на мой взгляд, он мало чему научил.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Была, помню, в детстве (когда ещё и до компьютера, и до программирования мне было довольно далеко) книжка, немного наивная: Два путешествия с компьютером - Бачило, Ткаченко и по ходу действия её герои - школьники - пытаются разобрать некую мистическую "шифровку" (которую вероятно подсунул им сосед-программист). Ответ в книге не приводится - очевидно считается что заинтригованный читатель  должен заниматься декодированием сам. Не знаю, многие ли из читателей оправдали надежды авторов, но мы с младшей сестрой были достаточно любопытны...

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

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

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

Примеры таких "творений" каждый найдёт в своей практике. У кого-то это "генератор псевдонаучных текстов" (Л.Броуди), у кого-то - программулина, раскладывающая пасьянс миллион раз для определения вероятности выигрыша, у кого-то - код который циклически копирует себя внутри сегмента памяти и переходит к выполнению копии на манер "самобеглого mov-а"...

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

Кстати, интересно спросить - кто за собой какие "бесполезные" творения припоминает...
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Пусть они весьма примитивны и грубо изображены (хотя, бывает по-разному, некоторые дети способны на шедевры, которые и не снились взрослым художникам), но это искусство.

Эм, tourist?
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Не уверен, что Гена на контестах много думает о красоте и понятности кода. Там же время жизни - от силы часов пять. Хотя, конечно, хотелось бы услышать его мнение :)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Тем не менее мне кажется сложно спорить с тем, что он способен «на шедевры, которые и не снились взрослым».

      Да и чаще всего он пишет на паскале, это тоже не стоит забывать. :-)
      • 13 лет назад, # ^ |
          Проголосовать: нравится +5 Проголосовать: не нравится
        Сложно спорить, что решает и пишет решения он намного быстрее, чем все мы :)
        Но под "шедеврами" я понимаю программы, которые не стыдно через пять лет показать работодателю со словами "а еше у меня очень красивый, акууратный, понятный, безбажный и легкорасширяемый код". Ну и еще на них должно быть приятно смотреть :)
        • 13 лет назад, # ^ |
            Проголосовать: нравится -8 Проголосовать: не нравится
          Лично на мой взгляд, у него из всех таргетов самый читабельный код, я, если знаю алгоритм, по которому решается задача, легко понимаю его код.
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            В том-то и беда, что я обычно читаю код, только если не знаю алгоритм :) Впрочем, думаю, по коду в СП в принципе сложно понять идею алгоритма.
            • 13 лет назад, # ^ |
                Проголосовать: нравится -9 Проголосовать: не нравится
              Под "не знаю алгоритм" я имел в виду, например, LCA, который я до сих пор писать не умею. То есть я понимаю его решения, если в них все из теории мне знакомо
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Сытый голодного... Красный фиолетового не разумеет. :)

          Да и не стоит путать шедевральные исходники для СП и исходники промышленного программирования.
          • 13 лет назад, # ^ |
              Проголосовать: нравится +7 Проголосовать: не нравится
            Сомневаюсь, что слив пары контестов мне поможет изменить мировоззрение :)
            Ну, да. В таком случае я просто не понимаю, что значит "шедевральный код" в СП.
            • 13 лет назад, # ^ |
              Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

              Ахаха. :D

              Ну не совсем я цвет имел, а скорее уровень умений и знаний.

              А под шедевральным кодом я изначально имел в виду скорее идеи решения, чем сами исходники. Ну да ладно. :-)
    • 13 лет назад, # ^ |
        Проголосовать: нравится +10 Проголосовать: не нравится
      Бывают разные направления искусства. Иногда, для того, чтобы программа была короче и быстрее писалась, приходится придумывать более изощренные и красивые идеи. Иногда смотришь на картину - ничего особенного, а потом замечаешь, что автору 4 года и сразу другой взгляд. И здесь так же. Ну код в сто строчек, ну и что... Стоп, за две с половиной минуты???
13 лет назад, # |
Rev. 2   Проголосовать: нравится +8 Проголосовать: не нравится
Ниже работа выпускника, в данный момент уже студента. Но делал он её по моей заявке как иллюстрацию к задаче.
В анимации использованы объекты, их свойства, направляющие движения и т.д.
Я считаю, что это тоже программирование и тоже искусство!

prb56

  • 13 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится
    А на чем писалось?
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      На встроенном в Macromedia-Flash Action-Script
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Хм, вообще говоря, чтобы сделать такое во флеше не надо писать ни строчки кода, это чисто дизайнерская работа.
        • 13 лет назад, # ^ |
            Проголосовать: нравится +3 Проголосовать: не нравится
          Вот если не писать ни строчки кода, тогда размер (в Кб) такой картинки будет как минимум в раза 3 больше. :)
          • 13 лет назад, # ^ |
            Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

            Не факт, motion tween много места не требует.
            Но дело даже не в этом. Просто в реальной жизни это задача дизайнера. А так, в качестве учебной работы, конечно хорошо.
            Кстати, если уж приводить примеры математической красоты, то нельзя не вспомнить про фракталы.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится
    Не хотел бы я получить задачу с такой иллюстрацией. Читаешь условие, а тут в углу еще что-то колышется... ужас :)
    • 13 лет назад, # ^ |
        Проголосовать: нравится +18 Проголосовать: не нравится
      Сколько людей - столько мнений, и это нормально... 

      Одесса, разговор двух друзей:
      - Изя, я лышал ты недавно женился. И как тебе твоя жена?
      - Ой, и не говори: сколько людей - столько и мнений. Моей маме нравится, а мне - нет...
      :) 
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Тут дело не в различии мнений. Условие делается для участников и оно ни у кого не должно вызывать отрицательных чуств. Поэтому лучше воздержаться от подобных сомнительных элементов, что называется, "на любителя". Если есть желание создавать подобные штуки, то это здорово, но для них надо найти подходящее место для размещения, коим условие задачи не является.
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Не всякий контест имеет большую важность, иногда можно пожертвовать удобством для развлечения/красоты.