вторник, 10 августа 2010 г.

CL vs Haskell, динамика vs статика и прочий бред

Тут кажется наметилась новая волна срача на обозначенные темы. При этом, типично спор сводится к выяснению программист с каким инструментом будет более эффективен. Типа что можно сделать за 8 часов на Haskell, а что на CL. Даже если не принимать во внимание тот факт, что для самых типовых задач обычно больше можно сделать на Java, ибо просто библиотек больше, то всё равно это бессмыслица. Пять дней в неделю по восемь часов (или типо того) мы якобы пишем код. Если бы мы действительно тратили это время на написание кода, тогда имело бы наверное смысл проводить подобные сравнения. Я не знаю как все, но я не могу. Если я трачу 4 часа в день на код, то это обычно удачный день. Многие дни у меня уходят просто в пустую. Я просто не могу собраться и сосредоточиться на работе. Поскольку при этом я обычно всегда делал намного больше окружающих, то имею основания полагать, что описанная ситуация является весьма типичной. Да, ещё иногда случаются приступы вдохновения, когда я работаю по 14-16 часов с полной концентрацией, чувствую себя счастливым и суммарный эффект от таких редких периодов намного превышает эффект от всех остальных дней.

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

Peter Seibel пишет в PCL, что
Выгоды от использования Lisp заключены в переживаниях и впечатлениях от его использования
И это ключевой аспект, о котором часто забывают. Лично для меня Common Lisp это язык, который лучше других способствует поддержанию интереса к разработке и позволяет более эффективно справляться с периодами бездействия. Для кого-то, видимо, подобным языком является Haskell (хотя мне и трудно это представить) и он выбирает его. А другие способны не засыпать, когда пишут на Java.

6 комментариев:

  1. Не обязательно на засыпать. Я засыпаю. Посплю на столе и дальше работаю.

    ОтветитьУдалить
  2. Похоже на правду.
    Вот что интересно: считаешь ли вредным для программиста решение на досуге игрушечных, но хитросплетённых и изощрённых задач just-for-fun или proof-of-concept? И если да, то почему? Вроде бы уже обсуждалось, но я не помню.

    ОтветитьУдалить
  3. @andre-skirnir
    Угу, обсуждали: http://lisper.ru/forum/messages/1940 и обсуждение далее

    ОтветитьУдалить
  4. Ага, вспомнил. Но сейчас про несколько другое. CS - CSом, а изучение хитростей %lang-name% и трюкачество с ними вне какой-либо определённой задачи может чуть ли не входить в привычку и пагубно сказываться на вдохновлённости процесса решения задач из реального мира. Какое-то такое предположение.

    ОтветитьУдалить
  5. @ander-skirnir

    Мой пост был не об этом ;)

    ОтветитьУдалить