Малые изменения
Monday, 2 January 2012 10:27 amУдивительный парадокс моей работы состоит в том, что я пишу и отлаживаю программы примерно половину рабочего времени, но при этом я не программист, а вычислительный математик. В самой несерьезной конторе программистов меня не взяли бы на должность серьезнее уборщицы — мои методы работы устарели лет на сто, когда я еще не начал работать. Я пишу на фортране, игнорируя матлаб и прочие модные средства разработки, отлаживаю программы с помощью распечатки на экран, ничего не хочу знать об объектно-ориентированном подходе, исключения обрабатываю оператором IF, проверяю результаты на аналитических решениях. Я сам себе постановщик, программист, тестировщик и писатель документации. И при всем этом я не программист.
Впрочем, хотел рассказать не об этом.
Научно-ориентированные программы обычно написаны на языке невысокого уровня, а сам код документирован слабо или не документирован вообще. Я верю, что бывают и исключения, я понимаю, что успешный код должен быть хорошо организован, но реальность такова — 90% научного кода невозможно понять и прочесть стороннему человеку. Мои программы не исключение. Это происходит из-за особенностей научной работы: код много раз корректируется, потому что параллельно с написанием может меняться сама задача и методы решения. Это происходит потому что у математиков обычно нет специального программистского образования. И наконец это происходит потому что код очень часто и не предназначен для стороннего использования, он делается только "для себя" и на "один раз". В любом случае, в таком коде кроется куча маленьких ошибок.
Маленькая ошибка может привести к неверному результату сразу или не проявляться довольно долго. Хуже, если долго — тогда в момент, когда с ней приходится разбираться, в собственном коде уже плаваешь как в море без островов. Наугад меняешь что-то, ищешь старую тетрадку с путевыми заметками (она осталась в другой стране на этажерке на третьей полочке снизу), звонишь коллегам. Если очень-очень повезет, то через неделю этого сизифова труда находится одно слово, который надо слегка поправить, чтобы все стало хорошо.
Это очень отражается на моем мировоззрении. Каждый раз, когда программа показывает наконец нормальные результаты, я начинаю отчаянно верить, что в жизни всегда можно исправить одно неудачное слово, чтобы все стало хорошо.
Впрочем, хотел рассказать не об этом.
Научно-ориентированные программы обычно написаны на языке невысокого уровня, а сам код документирован слабо или не документирован вообще. Я верю, что бывают и исключения, я понимаю, что успешный код должен быть хорошо организован, но реальность такова — 90% научного кода невозможно понять и прочесть стороннему человеку. Мои программы не исключение. Это происходит из-за особенностей научной работы: код много раз корректируется, потому что параллельно с написанием может меняться сама задача и методы решения. Это происходит потому что у математиков обычно нет специального программистского образования. И наконец это происходит потому что код очень часто и не предназначен для стороннего использования, он делается только "для себя" и на "один раз". В любом случае, в таком коде кроется куча маленьких ошибок.
Маленькая ошибка может привести к неверному результату сразу или не проявляться довольно долго. Хуже, если долго — тогда в момент, когда с ней приходится разбираться, в собственном коде уже плаваешь как в море без островов. Наугад меняешь что-то, ищешь старую тетрадку с путевыми заметками (она осталась в другой стране на этажерке на третьей полочке снизу), звонишь коллегам. Если очень-очень повезет, то через неделю этого сизифова труда находится одно слово, который надо слегка поправить, чтобы все стало хорошо.
Это очень отражается на моем мировоззрении. Каждый раз, когда программа показывает наконец нормальные результаты, я начинаю отчаянно верить, что в жизни всегда можно исправить одно неудачное слово, чтобы все стало хорошо.