Семь советов тому,
кто начал писать
большую программу
1. Большие программы большими сразу не становятся. Они растут постепенно, складываясь из маленьких. Программисты им в этом помогают. Если программист - хороший человек, то эти "маленькие" называются каждая своим именем, а все вместе - модулями. Если - плохой, то маленькие никак не называются, а просто сваливаются в одну большую программу, как в кучу.
Будьте хорошим. Не обижайте маленьких.
2. Если из программы можно выкинуть один модуль, и она при этом будет работать, значит либо это очень плохая программа, либо вместо компилятора вы наспех схватили какой-нибудь текстовый процессор.
Если из программы можно выкинуть один модуль, и вместо него вставить другой, и программа при этом будет успешно откомпилирована - значит у вас либо плохой компилятор, либо программа не достаточно хороша. Из идеальной программы слова не выкинешь.
Хорошее программирование называют искусством. Хорошего программиста можно назвать поэтом. И вот когда хороший поэт, наконец достигнет совершенства, то возможно кто-нибудь тогда назовет его неплохим программистом... Произведения многих программистов их поклонники учат наизусть.
3. Есть только один способ улучшения идеальной программы - ухудшить её. Временно, конечно. Зато потом сразу появляется возможность улучшить её. Если новый вариант программы ничем не лучше старого, значит программа стала почти совершенной.
Этот метод называется Методом Разрушения-Созидания. На Востоке есть такой бог Шива - бог Разрушения-Созидания ( смотри историю религий ). Значит, метод проверен временем.
4. Если человек психологически не в состоянии "уродовать" (см. пункт 3) хорошую программу, то он - хороший человек, но вряд ли станет хорошим программистом. Если хороший программист ломает больше, чем создает, то это - плохой человек, и вряд ли он создает хорошие программы.
Хороший человек, будучи хорошим программистом, любит процесс программирования больше, чем программы, а людей, для которых пишет программы, любит больше, чем себя. Вот такая сплошная любовь. Люди, которым это дело нравится, называют себя профессионалами.
5. В ходе программирования иногда (читай - почти всегда) возникают ошибки в алгоритме. Неопытные программисты тут же пугаются (ошибки всегда выглядят очень страшно), пытаются тут же исправить ошибку, или даже более того - уничтожить её совсем. Опытные же её рассматривают, на физическое устранение ошибки не идут, но вместо этого изучают, и даже коллекционируют. Почему?
Ошибка совершает определенное действие (если нет - то это не ошибка), но не то действие, которого мы хотим сегодня и сейчас, а скажем то, которого мы захотим на следующей неделе в четверг. Опытные знают закон : "Ошибочный код, совершающий определенное действие, всегда короче и эффективнее того кода, который будет затем написан специально и безошибочно для совершения того же действия" .
Этот закон также был известен и древним, и их богам. Все законы программирования были открыты задолго до появления первого компьютера. Это тоже закон.
6. Есть программисты, которые при написании новых программ используют куски старых, уже отлаженных, хорошо работающих программ. Этот самоплагиат совершается исключительно в целях сокращения времени разработки новой программы, и с юридической точки зрения никому не причиняет вреда...
Естественно, этот метод тем эффективней, чем больше программа, и чем больше она стоит. Самоплагиатору это дело нравится, он быстро привыкает к этому, впадая, как говорится, в зависимость, и пользуется этим долгие годы, получая при этом мнимое удовольствие, которое ему самому кажется реальным, поскольку сопровождается регулярными гонорарами в реальных размерах.
Но, обратите внимание, что при этом происходит на самом деле: такой программист-самоплагиатор всю свою жизнь возится с одной и той же программой, не вызывающей у него ни тошноты, ни отвращения лишь в силу каких-то биологических особенностей его организма. Такое биологическое программирование с годами становится почти религией, любое отступление от традиций в которой становится греховным. Идут года, меняются задачи, названия, заказчики, а код программы - всегда один, до ужаса знакомый, хотя иногда и растет, обновляясь новыми модулями, которые потом, в свою очередь, будут использованы по тысяче раз, но каждый раз с религиозным трепетом...
Если вы однажды поддались подобному искушению, то как можно скорее, прямо сейчас, стряхните с ушей, но не на клавиатуру, эту ленивую пыль веков и десятилетий, и напишите что-нибудь новенькое.
7. Вот вы пишите программу... Большую. Новую. Пишите давно, и немного устали. Но еще точно помните задачи и цели, и возможно даже алгоритмы, ради которых и были поставлены и сформулированы те, которые вы точно помните...
И вот, вдруг, на этом самом спокойном, почти аутогенном этапе, программа начинает вытворять то, чему её не учили, начинает откаблучивать то, что в неё никем не заложено...
Не пугайтесь и не волнуйтесь. Непрогнозируемое поведение вашей программы всего лишь указывает на тот факт, что ваша программа уже действительно стала большой. Программы - как дети - когда становятся большими, то перестают слушаться родителей.
Хотелось бы, но очень трудно что-либо посоветовать, поскольку в теории программирования об особенностях переходного возраста программ ничего не сказано, Это явление можно было бы отнести к Теории Больших Программ, если бы она была, или же к Теории Программ, Достигших Возраста Половой Зрелости, которой, увы, тоже нет.
Поэтому тут вам, как автору (или как родителю), предоставлена полная свобода действий - дерзайте, воспитывайте. Но только Словом (16 бит)! А ведь другого средства у программиста и нет...
Павел Сапунов
|