Особенности национального программирования
Сегодняшняя всеобщая тенденция обслуживать все вычислительные задачи при помощи одной программы, поставляемой из одного центра, порождает проблему: достаточно просмотреть один раз ошибку, и она будет растиражирована во всех копиях! И хотя такая методика делает ненужными всех программистов на местах, но предъявляет невероятно высокие требования к надёжности вычислительного алгоритма, надежда на который часто оказываются необоснованной. А расчётный центр, находясь вдали от производства и конкретных задач, зачастую не в состоянии предугадать возможные отклонения, при изменении входных данных. Потому что есть ещё такое понятие, как «вычислительная погрешность». Она имеет свойство накапливаться при увеличении числа итераций. Большая наивность считать, что цифровые индикаторы выдают точные значения, которым можно безусловно верить (только оттого, что мы давно уже привыкли: раз калькулятор правильно вычисляет «2х2» и «5х5», то и все остальные расчёты на нём будут верны). Это большое заблуждение.
Ну, и конечно, множество алгоритмов расчёта не сводятся к одному типовому, а значит, нужны программисты на местах, которые и будут оказывать вычислительную услугу и сопровождать вычислительную задачу на производстве.
Об этом речь.
ОСОБЕННОСТИ НАЦИОНАЛЬНОГО
ПРОГРАММИРОВАНИЯ
Давайте смоделируем такую ситуацию.
Представьте, что вы — бухгалтер. Вы пришли устраиваться на работу. В отделе кадров милая девушка, которая не особо разбирается ни в бухгалтерии, ни в компьютерах, сказала вам, что нужно считать зарплату. Что там нечего делать. Там (в бухгалтерии) есть программа, которая сама всё считает. Поэтому больших денег вы здесь не заработаете, и даже на полный день мы вас брать не будем. Возьмём на полставки...
В бухгалтерии вам показали рабочее место. Действительно, стоит компьютер и на нём установлена программа. Есть инструкция внутри программы на русском языке. Так как вы и компьютер знаете, и бухгалтерию не первый год, то вы тут же садитесь и начинаете работать. Берёте исходные данные и начинаете заводить в программу. Читаете инструкцию. Нажимаете те кнопки, которые написаны в руководстве. Как результат вашего ударного труда вы получаете расчёт. Выводите его на печать и несёте на подпись начальнику...
Начальник смотрит, и говорит: "Чего же вы здесь насчитали? Всё же не так! Не может же итоговая сумма начислений вдвое превышать фонд заработной платы!" — и начинает черкать ваш документ — "вот тут должна быть такая цифра, а вот тут такая... Идите и переделывайте..." И вам становится ясно, что начальник прав.
Вы возвращаетесь за компьютер и понимаете, что программа совсем далека от той предполагаемой степени совершенства, в которой была так уверена девушка из отдела кадров...
Вы начинаете разбираться. Более внимательно и дотошно вчитываетесь в инструкцию, которая встроена внутрь самой программы. Но через пару часов, вы понимаете, что инструкция главной своей целью ставит не объяснить человеку, как пользоваться этой программой, а прорекламировать саму себя и ту фирму, которая эту программу продала. Поскольку через каждый абзац следуют хвалебные речи о том, что программа стала ещё удобнее в работе, ещё надёжнее, ещё быстрее и легче... Но как только вы подбираетесь к самой сути вычисления, так сразу инструкция становится скупой и не разговорчивой. Она видимо считает, что вам незачем забивать себе голову подробностями расчёта, что вы должны лишь знать, как правильно нажимать кнопки: Ввод данных, Открыть, Сохранить, Выполнить расчёт, Распечатать...
В этот момент вы понимаете, что оказались между двух огней. С одной стороны команда разработчиков программы уверена, что их программа именно то, что надо для расчёта зарплаты в огромном количестве организаций и поставляет её не первый год, имеет за плечами огромную предысторию и громкое имя. С другой – есть конкретное предприятие со своей конкретной зарплатой, расчёт которой, видимо, отличается от типового задания внутри программы, и программа нуждается в доработке под конкретные нужды именно этого предприятия. Но программа, которой вы пользуетесь, — она ворованная, пиратская. Знакомый директора (системный программист из института) установил её за сущие пустяки. И, естественно, вести с именитой фирмой разговор, или тем более предъявлять какие-либо претензии, у вас нет никакого права.
Сам директор разбираться с вычислительной проблемой не счёл нужным. Он нанял человека — вас. А вы не можете даже найти в этой программе подробного описания алгоритма расчёта, чтобы просчитать хотя бы одного человека вручную на калькуляторе и доказать этим, что программа считает не так, как нужно в данном случае.
Ситуация нелепая. Согласитесь.
Первое, что скажет любой здравомыслящий человек: невозможно, чтобы ни кто в бухгалтерии не знал, как рассчитать зарплату вручную на калькуляторе. Если вы этого не знаете, то никакой вы не бухгалтер и браться за расчёт зарплаты вы не должны. Всякая ссылка легкомысленных девушек из отдела кадров, что "там нечего делать, там программа всё сама считает", которые к тому же ни за что не отвечают и не понимают в этом — не аргумент. Если есть какие-то сомнения или неясности по расчёту зарплаты, то должен быть главный бухгалтер. Он должен либо сам, либо используя нормативные документы и инструкции, вытащить на свет Божий необходимый порядок расчёта зарплаты...
То есть, получается, что программа, написанная оптом для миллионов бухгалтеров разом (тем более ворованная), НЕ ОТВЕЧАЕТ за результаты расчёта. За конкретный расчёт отвечает человек, бухгалтер, то есть — вы. И если вы лишены возможности УЗНАТЬ, КАК ПРОГРАММА ПРОИЗВОДИТ РАСЧЁТ и каким либо образом ПОВЛИЯТЬ НА ПОРЯДОК этого расчёта, то эту программу можно смело выбросить в "Корзину", каким бы мировым авторитетом не давила вас та фирма, которая её разработала.
А теперь представьте себе, что речь идёт не о бухгалтерии, не о расчёте зарплаты, и вы никакой не бухгалтер, а специалист по компьютерам. А ваша организация требует от вас обеспечения работоспособности всего многочисленного парка компьютеров, который выглядит как зоопарк и всё время пополняется новыми экзотическими экземплярами. Все программы — это музей истории пиратского движения, начиная с развала СССР и по сей день, а в основе всего лежат плоды работы мирового гиганта по имени Майкрософт в виде семейства её операционных систем и всех остальных программ, которые работают на подавляющем числе окружающих всех нас компьютеров.
Вывод, который я рискну сделать в итоге моделирования этой ситуации.
Проблема в том, что фирма-разработчик программы пытается все конкретные вычислительные задачи конкретных людей подогнать под свои программы. И самоуверенно заявляет в рекламе, что ей это успешно удаётся. А на самом деле они оказываются разные и не вписываются в одно множество их программ. Нужно не людей с их задачами подгонять под свою программу, а писать разные программы под нужды разных людей.
Но тогда рядом с нуждающимся в решении вычислительной задачи человеком на предприятии должна появиться фигура программиста. И если возникнут вопросы или ошибки в расчёте, то именно этот конкретный программист должен изменить порядок расчёта или объяснить непонятное окружающим.
То есть каждая программа, которая используется на производстве не для игрушек, не для просмотра фильмов, прослушивания музыки, в общем, не для удовольствия, а решает нужную производственную задачу, нуждается в АВТОРСКОМ СОПРОВОЖДЕНИИ.
А, следовательно, сама программа не является конечным изделием или товаром, за который нужно платить деньги, и после этого прощаться с её АВТОРОМ, а лишь промежуточным результатом, одной из версий в длинном жизненном цикле всех версий данной программы, которая из ТОВАРА превращается в УСЛУГУ. А результат этой услуги — есть решение конкретной производственной вычислительной задачи со всеми возможными изменениями её алгоритма, в зависимости от текущих производственных нужд.
Не имея собственной программы и своего программиста, который её написал по Вашему заказу, вы обречены пользоваться программами без всяких гарантий их работоспособности, вы будете вечно посещаемы непонятными глюками и зависаниями, а винить в этом будете своего системного администратора, который, как тот бухгалтер, из начала нашего повествования, оказывается между двух огней: между авторитетом мирового гиганта и его программами с недокументированными сбоями, и нуждами родного предприятия, которому наплевать, откуда берутся программы, которому важно "что бы всё работало".
Беда же в том, что собственных программистов мы извели, как класс ненужных людей. Зачем они нам? Если достаточно посетить ИНТЕРНЕТ — эту мусорную свалку бесплатных и взломанных кодов, чтобы накачать свой компьютер чем попало! Мы уже не хотим знать, ЧТО ИМЕННО И КАК делают эти странные вычислительные устройства по имени КОМПЬЮТЕРЫ. И очень часто наши вычислительные задачи, используемые на производстве для зарабатывания нами денег, включают в себя неясные никому из нас алгоритмы, которые разработали где-то далеко-далеко, и мы судим о результатах их действий лишь по косвенным признакам, так как ничего проверить ПО СУЩЕСТВУ мы уже давно не можем... Как тот фантастически-нелепый бухгалтер, который делает зарплату на компьютере по программе, а сосчитать её вручную, чтобы проверить результат, уже не в состоянии...
В какой-то момент люди решили, что достаточно иметь ОДНОГО программиста на всех. И не нужно вникать в подробности того, что делает его программа. Важно, чтобы она делала то, что мы о ней думаем. Но делает ли она это?
Принадлежат ли нам знания, заложенные в программе (даже если мы честно заплатили за неё, а не воспользовались пиратской версией), если для нас она остаётся ВЕЩЬЮ В СЕБЕ? Если она реализует не наш расчёт — РАСЧЁТ, который мы не понимаем. Если мы всего лишь её ПОЛЬЗОВАТЕЛИ!
А главный ПОЛЬЗОВАТЕЛЬ — системный администратор – это уже не учёный и не программист, который может заглянуть ВНУТРЬ СВОИХ КОДОВ и что-то при необходимости поменять в них, а всего лишь ШАМАН, который устраивает пляски с бубнами вокруг глюков, и заклинает тёмные силы электричества больше не тревожить честных Юзеров.
Именно такой ШАМАН, работающий в НИИ, сказал мне недавно, что у них нет необходимости в программистах... И не то что в штате НИИ пять программистов, а я пришёл лишний шестой. Нет! Их просто – ни одного человека. И не надо (по мнению руководства).
Это значит, понял я, что научный коллектив пользуется чужими программами, у этого коллектива нет собственных идей, которые бы нужно было воплотить в виде собственных программ. Возможно, они уже не знают в подробностях, что именно делают их программы, но результат работы этих программ их устраивает. А все сбои и ошибки падают на голову ШАМАНА, которому с ними и маяться...
7:11:24 08.10.2008
P.S.
На фоне недавней катастрофы трёх российских спутников, (как выяснилось, ошибка была в расчёте количества топлива для необходимой траектории полёта) и индийской ракеты, взорвавшейся после 30 секунд полёта от пока неустановленной причины, мои давние рассуждения на тему программного обеспечения кажутся мне особенно актуальными.
17:32:14 26.12.2010
Свидетельство о публикации №210122600942