Я не любитель, я другой...
А.М. Шкроб
______Назовите меня программистом-любителем - обижусь: "Я не любитель, а дилетант!" В моем представлении разница огромна... Например, химик Пастер в медицине был дилетантом, но уж никак не любителем. Да что там Пастер! В сельской больнице офтальмологу может случиться оперировать острый геморой, и он сделает это, разумеется, по-дилетантски, но вряд ли кому придет в голову окрестить его хирургом-любителем. Вот и я, химик-синтетик, по многим причинам становлюсь то дилетантом-стеклодувом. то дилетантом-спектроскопистом, а то и водопроводчиком. Существует некая ПРОБЛЕМА, требующая решения, и ты стремишься к нему возможно коротким путем. Да, в идеале следует обращаться к профессионалам, но их то нет поблизости, то нечем им платить, а еще чаще быстрее сделать самому, чем сначала долго разъяснять, чего хочешь, а потом, спустя немалое время, убедиться, что тебя не так поняли. Любителю хорошо: разлюбил - бросил, надоело - отложил, не вышло - хрен с ним. А наш брат - дилетант - потому им и становится, что другого выбора у него нет.
______Программы, поневоле созданные дилетантами, редко выходят за стены лаборатории или института, потому что создаются для решения узких задач и работоспособны лишь в специфических условиях. Я знаком с прекрасными доморощенными программами для анализа хроматографических данных, но не мог ими воспользоваться, потому что у авторов чуть другое, и притом самодельное, "железо" для ввода данных (в итоге написал свою, тоже привязанную к собственному "железу"). Чуть не поседел, разбираясь с некоей дареной числодробилкой, которая неведомо зачем умножала результаты на число "пи", если исходно они были меньше 7,5, и на "пи пополам" - если больше. "Ах черт, забыл сказать!" - хладнокровно заявил автор - "Мне так удобней, чем возиться потом". В остальном программа была безупречна.
______Любители жаждут популярности, дилетанту она не нужна. Ему, единственному потребителю, и в голову не приходит снабжать свои продукты даже минимальными комментариями или руководствами. Он - все помнит. Разумеется, до поры до времени. И когда эта пора настает, а ему нужно внести изменения, неизвестно, что труднее - вспомнить алгоритм или алгоритмический язык. Ибо в интервале он занимался физикой, химией или, скажем, биологией, и забыл напрочь, чем динамические переменные отличаются от статических. Кстати настоящих дилетантов отличает полное безразличие к моде, и они обычно пользуются тем языком, с которого начали, лишь бы за разумное время получить искомый результат. Пусть хоть допотопный BASIC...
______Области творчества любителей и дилетантов практически не пересекаются. Первые, как правило, лепят утилиты, игрушки и приколы, а, достигнув совершенства в насилиях над операционной системой, уходят в профессионалы. Дилетанты же инстинктивно избегают стремиться к совершенству, ибо этот мучительный процесс - конкурент основному делу. Их задачи всегда конкретны и прозаичны: обработка результатов собственных опытов, анализ придуманных ими же математических моделей и т.п. Но коль скоро дилетант все же становится профессиональным программистом, - ему нет цены, потому что от массы ремесленников его отличает понимание запросов, возможностей и проблем заказчика - недавнего коллеги. Такому программисту не надо объяснять, чем плечо на спектральной полосе отличается от хвоста на хроматограмме и почему в данном случае полиномиальное сглаживание лучше экспоненциального.
* * * ______В мое время лишь редкий химик-органик видел вычислительные машины воочию и имел хотя бы минимальное представление об их устройстве. Встретив необходимость использовать ЭВМ (поди еще сообрази, что она есть!), он должен был преодолеть не только организационные, но и психологические барьеры, как если бы понадобилось принимать тяжелые роды или выучить китайский язык. Хорошо помню, как это случилось со мной.
______Задача была не из простых: десятки, если не сотни экспериментальных кривых требовалось описать суммой экспонент. Я понятия не имел, как взяться за дело, и обратился за помощью к ныне покойному Саше Полякову, единственному математику, которого тогда знал. Он минут за десять рассказал про координатный и градиентный спуск, и поведал, что машинная математика ничего общего не имеет с "человеческой", а программирование ничего общего не имеет с математикой и ближе всего к вышиванию гладью. Как ни странно, эти краткие поучения оказались необходимыми и достаточными.
______Опуская подробности, скажу, что все получилось как нельзя лучше, и самымым сложным оказалось выловить ошибки при перфорации карт с координатами точек. Для этого пришлось писать отдельную программу, немногим проще основной.
______Самое забавное, что я так и не увидел БЭСМ-6, на которой происходили вычисления. Тишком и бочком проскальзывал в академический ВЦ и воровски подсовывал пакеты карт на полочку: своего пароля у меня, разумеется, не было, и прикидывался я в те минуты Светланой Архиповой, спасибо ей большое! Когда работа подошла к концу и статьи были отправлены в печать, мне преподнесли подарок из ФРГ - 18 кило перфокарт, содержавших всемирно известную программу разложения кривых на экспоненты, созданную д-ром Провенчером (наша тянула кило на полтора). Спустя почти год этого гиганта удалось запустить в МГУ, и, о чудо!, все наши результаты подтвердились... Разница в весовых категориях объясняется тем, что Провенчер целил в самые сложные и сильно шумящие кривые, а мы давили шумы на корню, да и кривые были попроще.
______Вы спросите, почему, работая в академическом институте, я не воспользовался услугами профессионалов из академического же вычислительного центра? Пытался и не раз, но вполне безуспешно: "У нас заказов набрано на пару лет вперед!"
* * * ______Волна дилетантского программирования прокатилась некогда по всем приличным научным лабораториям, когда в них стали появляться первые ЭВМ, причем такие, на которых нельзя было баловаться шибко завлекательными играми и изготовлять "красивые" документы для начальства. На них можно было только работать, и обычно находились камикадзе, во имя науки рискнувшие соединить компьютеры с приборами или разложить на компоненты сложную кинетическую кривую.
______Потребность в такого рода жертвах времени и сил усугублялась невероятным разнобоем компьютеров. Это сейчас куда ни сунешься, везде стоят полностью совместимые РС, а в начале восьмидесятых в лабораториях нашего Института биоорганической химии стояли компьютеры "Хьюлетт-Паккард", "Тектроникс", "Эппл", "Альфатроник", не говоря у же об "Искрах", "ДВК" и "СМ". Все они различались больше чем кошка с собакой, поставлялись с ничтожным матобеспечением, и для каждой приходилось сочинять все нужное почти с нуля. Это поветрие длилось лет пять-семь, а потом стало быстро сникать. Во-первых, сама собой разрешилась проблема сочленения компьютеров с измерительными приборами. Приборы оснастились микропроцессорами, принявшими на себя многие заботы, а компьютеры - специализированными программами, которые поставлялись вместе с измерительной аппаратурой. В конце концов компьютеры и приборы по большей части слились воедино в измерительные комплексы - своего рода черные ящики, к начинке которых дилетанту не подобраться. Во-вторых, появилась чертова уйма самых разных коммерческих продуктов от Eurеka до MathLab и Excel, которые можно приспособить для решения самых разнообразных прикладных вычислительных задач. Математическая грамотность при этом нужна в полной мере, а программистская - в ничтожной.
______И, наконец, третья причина заката дилетантского программирования заключается в изменении организации научной работы. Самостоятельный и самодостаточный исследователь, за казенный счет сидящий безвылазно в лаборатории в одиночку или с парой аспирантов, сейчас почти вымер, уступив место члену коллектива, выполняющему строго определенную функцию, производительность труда которого оценивается с куда большим рвением, чем обуревающие его идеи. Отвлекись он от прямых обязанностей - и босс тут как тут: "Это не ваша проблема!" И ведь босс по-своему прав...
* * * ______Лабораторные программисты-дилетанты всегда были разобщены, хотя некоторый обмен опытом поддерживался, в основном через специальные бюллетени, выпускавшиеся фирмами-производителями компьютеров вроде "Хьюлетт-Паккард". Их кустарная деятельность часто не находила понимания у коллег, которые полагали более разумным подождать с автоматизацией исследований, пока технический прогресс не одарит лаборатории системами с двумя единственно кнопками: "ПУСК" и "СТОП".
______"Зачем вам компьютер, - с насмешкой спросил мой Начальник, академик Ю.А. Овчинников, - свою зарплату сосчитаете и на калькуляторе!" И на другой день мне принесли от него программируемый калькулятор на 35 шагов. Справедливости ради отмечу, что спустя года полтора, убедившись в необходимости этого шага, Начальник выделил нам шестнадцать тысяч долларов. Изоляция от "большого мира" программирования, скудость хорошей литературы и хилость тогдашнего "железа" пробуждали традиционную изворотливость русских умельцев. Сейчас можно только удивляться их достижениям, умению рационально и виртуозно использовать каждый бит памяти, неведомые даже конструкторам возможности ввода/вывода, остроумные и компактные модификации алгоритмов. Некоторые, порой фантастические, кунштюки я еще смутно помню, но вряд ли современный читатель, избалованный мегагерцами и мегабайтами, сможет оценить их по достоинству...
______Как правило, программистская изощренность дилетанта коррелировала с его профессиональным экспериментальным мастерством, но подчас контакт с компьютером открывал глубоко запрятанный талант. Особенно эффектно и неожиданно это происходило с девушками. Возраст особого значения не имел - многие мои сверстники вполне успешно решали свои проблемы, сев за клавиатуру лет сорока - пятидесяти. Разумеется, я имею в виду тех, кто в эти годы еще не воспарил из лабораторий в кабинеты.
* * * ______Любопытно, что некоторые производители ЭВМ явно ориентировались на лабораторных, а заодно и заводских дилетантов. Особенно характерна в этом отношении фирма "Хьюлетт-Паккард", выпустившая в середине семидесятых поразительно удачную модель НР-9825. Даром что в нем сохранились рудименты прежних хьюлеттовских калькуляторов, этот настольный компьютер был находкой для исследователя. Приличная даже по нынешним требованиям скорость. Мощный и лаконичный вшитый язык с обилием модулей-расширений, включавший полный набор операций со строками и матрицами, редкую возможность вставлять и исключать из работающей программы отдельные фрагменты. Но самое главное - хорошо продуманные операторы ввода/вывода, числом более двух сотен, позволяли даже "чайнику" уверенно обращаться с 16 (!) уровнями внешних прерываний, программно организуемыми и контролируемыми буферами, четырьмя независимыми таймерами с миллисекундным разрешением, полным протоколом приборной шины IEEE-488 и плоттерным языком HPGL. Уфф! Наверняка я что-то забыл... Да, конечно! Набор всех мыслимых интерфейсов - от BCD до RS-232С - и необозримый ассортимент периферийных устройств.
______Этих машин выпустили около сорока тысяч, что по тем временам было очень много. Они отличались малыми размерами и потрясающей живучестью - летали в космос, управляли яхтами в трансокеанских гонках. Моему экземпляру уже лет двадцать, и в нем состарились только резинки во встроенной периферии: принтере и стриммере.
______Не торопитесь сетовать на катастрофическое отставание родимой вычислительной техники! (Эту фразу в редакции "Компьютерры", не спросившись, изъяли - чисто стилевая правка, надо полагать! - А.Ш.).Чуть позже появившаяся "Искра-226" по своим возможностям была вполне соизмерима с хьюлеттовскими машинами, исключая, конечно, живучесть. Впрочем, был еще один порок, оказавшийся роковым: весь ввод/вывод для подключаемой аппаратуры приходилось расписывать в микрокомандах, что требовало непомерных усилий и времени.
______Казалось, таким специализированным машинам суждено большое будущее, но эволюция пошла иным путем, и та же фирма "Хьюлетт-Паккард", слегка поупиравшись, влилась в ряды производителей РС. Это - отдельная тема...
* * * ______Жаль, что находки и озарения дилетантов того времени в значительно мере утрачены и забыты. Не знаю, как за границей, а у наших научных работников не было принято ни патентовать удачные программы, ни продавать их. Да и кому? Впрочем я знаю нескольких дилетантов, которые с воцарением капитализма вполне к нему адаптировались и умудряются совмещать основную работу с торговлей собственными программными продуктами.
______Не подумайте, что я намерен спеть отходную дилетантизму, хотя смена эпох в компьютеризации неизбежно сказывается на его природе. Моя уверенность в живучести дилетантизма основана на убеждении, что только люди, искушенные в любой области, будь то наука, педагогика или еще что-нибудь, знают, какими должны быть предназначенные для них прикладные программы. Как страдаем мы от неукротимой привязанности профессионалов к гигантским и якобы универсальным монстрам, в которых нужный именно тебе фрагмент или забыт, или надежно запрятан. Это одна из мишеней для дилетанта, который, разозлившись, заполнит экологическую нишу, жертвуя временем и силами. А любителю это в принципе недоступно, ибо ему просто неведомо, чего нехватает сравнительно узкой группе квалифицированных специалистов.
______Когда-то я сам, разозлившись на несовершенство и громоздкость распространенных в то время библиографических программ, написал свою собственную. Она занимала всего 100 кВ на диске, умела делать то, что коммерческим продуктам и не снилось, и хранила собранные данные в предельно компактном виде. Я и сейчас ею пользуюсь и никогда не променяю на неуклюжее чудовище вроде Reference Manager.
* * * ______До сих пор речь шла только о вынужденном дилетантизме, которого легко избежать, дай во-время нужную программу со стороны. Самые психологически стойкие и сфокусированные на основном занятии дилетанты за пределы острой нужды и не выходят. Но иной, склонный к увлечениям, нет-нет, да и клюнет на творческие перспективы и возможность самовыражения, которые открываются для него программированием. Основную специальность он, упаси Бог, не оставляет, но у него появляется, как говорится, хобби. А программистское хобби - одно из самых зловредных по части увлекательности. Во-время не спохватился - оно разрастается как опухоль, оттесняя все прочее. А ведь вроде полезным делом занимаешься, а не диггеров гоняешь...
______Вот пример из собственной практики - я вспоминаю о нем, как вспоминают об увлечении иной женщиной (да, красотка, но сколько времени ухлопал!). Я ненавидел печатание на машинке с бесконечным замазыванием опечаток, склеиванием фрагментов и прочими прелестями. И написал свой первый редактор еще в конце семидесятых для помянутого выше НР-9825, с однострочным дисплеем и 15 кВ оперативной памяти.
______Дорвавшись спустя лет семь до ХТ, я немедленно перенес на него своего любимца, снабдив его массой полезных примочек, в том числе форматированием без разрыва слов переносами. Редакции взбунтовались - им было не под силу сосчитать число печатных знаков при переменном числе пробелов. Ладно, я сочинил роскошный алгоритм переносов, и тут выяснилось, что химические термины нельзя переносить по правилам, обычным для русского языка. Я завелся и преодолел эту трудность, но недели две было загублено.
______Потом, забывшись, я стал бороться с опечатками. Прошерстив здоровенный самиздатовский файл стихов Бродского, я установил, какие двухбуквенные сочетания в русском языке исключены или крайне редки, и разом сократил до минимума ошибки при наборе. Еще недели как не бывало.
______И, наконец, мне пришла в голову безумная идея вообще избавиться от дурацких опечаток, притом осуществив текущий орфографический контроль при наборе без использования словаря. На этот раз я пробежался по всей великой русской литературе и извлек из нее все разрешенные трех- и четырехбуквенные сочетания. Получилось весьма эффективно и компактно, но где тот месяц?
______Впредь я закаялся отдавать дань любительству. Хобби, знай свое место - отныне я дилетант, и только. Всего раз нарушил клятву, правда, во время отпуска. Меня "достали" литературные редакторы, и пришлось сочинить нечто вроде примитивного контролера стиля. И тут выяснилось, что после редактирования в "Знании-Силе" число погрешностей сокращается, а после вмешательства "Химии и жизни" - увы, увеличивается (посмотрим, как выйдет с "Компьютеррой"...).
______Кстати, примерно через год я случайно обнаружил в Н.Ж.М.Д. изящную программу Дмитрия Кирсанова Fresh Eye, тоже своего рода контролер стиля, но с чуть иными задачами и совсем другим алгоритмом. Дмитрий прислал мне исходник, но комментировать его отказался - за делами все забыл. Видно, по моей классификации он настоящий дилетант. Не исключено, что Кирсанову принадлежит приоритет и в бессловарной проверке орфографии - он рассказал, что этим занимался в не очень, правда, далекой юности. Впрочем, дилетантам чужды споры о первенстве... И своим детищем, и кирсановским "Свежим Взглядом" я пытался одарить литературных редакторов и знакомых авторов. Но они не поняли своего счастья и продолжают воевать друг с другом голыми руками.
* * * ______Есть у дилетантского программирования один, чисто психологический аспект, значение которого со временем только усиливается. Напомню, что в основе этого занятия лежит потребность в творческом использовании некоего нового, сложного и эффективного инструмента. Так токарь применяет хитрый резец, а ваша жена - кухонный комбайн. Им и в голову не придет отдавать этим полезным приспособлениям большую дань, чем они того заслуживают. Не то современный компьютер... Для наших детей этот, пусть очень мощный, но всего лишь инструмент грозит превратиться в своего рода кумир, расширенный вариант "тамагочи", помесь супертелевизора с игровым суперавтоматом. Райское наслаждение!
______Не то, чтобы я призывал с этим бороться (бесполезно!), но в школьном образовании следовало бы больше внимания уделять свободному владению компьютером при решении разнообразных прикладных задач. И не программированию как таковому учить, а умению и вкусу использовать его применительно к физике, химии, биологии и даже словесности. Кто помнит, именно этого добивался от читателей один из самых замечательных учебников программирования - книга Мак-Кракена и Дорна "Численные методы и программирование на ФОРТРАН'е". Случись так, - энергия талантливых молодых людей не уйдет в свисток системных фокусов, не рассеется на освоение мгновенно устаревающих модных версий Windows, а будет нацелена на будущее, когда еще неведомые проблемы заставят их стать дилетантами в еще неведомых сегодня областях.