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