"Ради удовольствия." - читать интересную книгу автора (Торвальдс Л., Даймонд Д.)

V.
Красота программирования


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