В историческом процессе развития средств и технологий передачи знаний от поколения к поколению можно выделить три революционных события: возникновение письменности, изобретение книгопечатания и глобальное внедрение компьютерных информационных технологий. Мы являемся очевидцами и участниками последнего события.
Любые преобразования, как правило, сопровождаются кризисами различной глубины и различной степени болезненности выхода из них. Если говорить о компьютерных информационных технологиях, то в этой области сегодня наблюдается кризис, который условно называют «кошмаром унаследованного программного обеспечения».
Представим себе некую фирму, корпорацию или университет, которые за 30 – 40 лет интенсивного использования компьютеров разработали и накопили большое количество программ различной степени сложности для расчета и моделирования разнообразных процессов, аппаратов и технологии в тех или иных областях науки и техники, а также для создания и управления базами данных (знаний). На смену морально и физически устаревшим компьютерам приходят новые с новыми операционными системами. Компьютеры объединяются в локальные сети, которые, в свою очередь, не остаются в стороне от процесса «глобализации» – интегрируются в интернет. Модернизация компьютерного парка часто приводит к тому, что старые прикладные программы перестают запускаться на новых или обновленных компьютерах – рабочих станциях и серверах. Иногда просто невозможно считать программу с носителей (перфокарт, перфолент, дискет различного диаметра и др.), т.к. новые компьютеры не имеют соответствующих считывающих устройств. Приходится либо отказываться от таких программ, либо тратить время и средства на создание или приобретение неких утилит (эмуляторов) для запуска старых программ на новых или обновленных компьютерах. Но это еще полбеды. Настоящая беда состоит в том, что из «фирм, корпораций, университетов» уходят специалисты, которые создавали эти программы, а пришедшая им на смену молодежь не может модернизировать эти программы, адаптировать их к новым требованиям. Виной тому и недостаточное документирование кодов, и отсутствие соответствующих инструментальных программных средств и просто невозможность правильно прочесть программу (код), написанную на устаревших (мертвых) языках программирования. Если же все-таки с большим трудом удается воссоздать или модернизировать старую программу, используя старые или даже новые языки программирования, генерирующие коды, понятные только программистам, то «кошмар унаследованного программного обеспечения» через некоторое время всплывет вновь.
Еще одна проблема заключается в следующем.
В научных статьях, монографиях, учебниках и учебных пособиях всегда публикуются формулы, таблицы, графики, рисунки… В настоящее время этот «иллюстративный материал» готовится также с помощью компьютера. Для ввода формул в электронный текст созданы специальные компьютерные редакторы – Word Equation, LaTeX и др. Но формулы, введенные в текст с помощью компьютерных редакторов, остаются «мертвыми», так как ими можно воспользоваться, только взяв в руки калькулятор или написав программу для компьютера. Сами по себе формулы, увы, ничего не рассчитывают. Как известно, если на сцене висит ружье, то оно должно выстрелить – если в тексте есть формула, то она должна «считать»! В «мертвых» формулах нередко «сидят» ошибки. Авторы настоящей статьи собрали довольно большую коллекцию опечаток в справочниках весьма солидных отечественных и зарубежных издательств. Так например, вместо 0,02387 напечатано 0,02387 (двойка перестала быть нижним индексом, отмечающим повторяющиеся нули), а вместо 27.39 – напечатано 72.93 (типичная ошибка наборщиков) и т.п. Такие ошибки практически невозможно выявить при традиционной правке корректур «бумажных» справочников, которые часто, но далеко не всегда выходят со списком опечаток. Тем не менее, ошибки остаются ошибками со всеми вытекающими негативными последствиями «в историческом процессе передачи знаний от человека к человеку, от поколения к поколению».
В данной работе обсуждается технологии, позволяющие в ряде случаев преодолеть перечисленные трудности.
Историю использования компьютеров для научно-технических расчетов условно можно разбить на три этапа:
работа с машинными кодами;
программирование на языках высокого уровня (алгол, фортран, Паскаль, C, BASIC и т.д.);
использование математических пакетов типа Mathcad, Maple, Matlab, Mathematica, MuPAD, Derive и др.
Четких границ между перечисленными этапами (информационными технологиями) не существует. Работая в среде математической программы можно при необходимости вставить в расчет электронную таблицу или собственные функции, написанные на языке C, в код которых вкраплены фрагменты ассемблера. Машинные коды, кстати, остались в программируемых калькуляторах, которые по-прежнему широко используются в научно-технических расчетах. Здесь скорее следует говорить не об изолированных этапах развития компьютерных средств решения задач, а о расширении и переплетении спектра инструментальных средств, о некой тенденции, которая, в частности, привела к резкому сокращению времени создания и реализации на компьютере расчетных методик и математических моделей, к исключению программиста как дополнительного звена между исследователем и компьютером, к повышению открытости самих расчетов, к возможности видеть не только результат, но и все формулы в традиционном их написании, а также все промежуточные данные, подкрепленные графиками и диаграммами.
В настоящее время многие компьютеры (рабочие станции), ноутбуки, а также карманные компьютеры и смартфоны (телефоны-коммуникаторы) проводно или безпроводно подключены к интернету или к интранету. В интернете можно найти не только справочно-информационные материалы в виде текстов, графиков, таблиц и рисунков, но и «живые» расчеты, в которых можно изменить исходные данные и получить новый ответ. Нередко эти расчеты делаются на довольно мощных компьютерах (серверах) с распараллеливанием вычислительных операций, что намного ускоряет сам расчет, если, конечно, этот процесс не лимитируется скоростью передачи данных по сетям. Такие расчеты несложно администрировать – ставить на них пароль для доступа, осуществлять платный (абонентский) доступ, предоставлять возможность выбора языка общения (русский, английский и т.д.), корректировать, расширять, модернизировать и т.д.
Нельзя не отметить еще один важный аспект проблемы «человек–компьютер». Языки программирования высокого уровня (и, к слову говоря, высокой сложности) не терпят «дилетантства» со стороны исследователя. Из-за трудности в освоении языков программирования многие специалисты в конкретных областях знания (физика, химия, биология, машиностроение и т.д.), а также студенты и школьники не могли эффективно использовать компьютер. Программирование требует от человека максимальной отдачи, что часто влечет за собой частичную потерю квалификации в основной специальности, «подсаживание на иглу» программирования. Математические пакеты вслед за электронными таблицами создавались как программное средство, альтернативное традиционным языкам программирования. Многолетний опыт использования пакетов Mathcad, Maple, Matlab, Mathematica, MuPAD, Derive и др. показывает, что они не вызывают у человека такого «болезненного привыкания». Можно не работать с математической программой полгода, год, но основные навыки общения с этой программой не утрачиваются и, если потребуется, то возникшая задача тут же будет быстро и качественно решена без привлечения сторонних программистов.
Но «нет роз без шипов». Главный недостаток многих математических пакетов состоял в том, что они, как правило, не могли генерировать так называемые исполняемые файлы (exe-файлы), которые можно запускать без программы-прародительницы. Это, в частности, существенно мешало такому прогрессивному явлению, как разделение сидящих за компьютером на пользователей и разработчиков. Специалисты, работающие с математическими пакетами, как правило, вели «натуральное хозяйство»: разрабатывали расчетные методики исключительно для личного использования. Передать свои наработки в том числе и на коммерческой основе можно было только тому, у кого на компьютере установлен соответствующий математический пакет.
Самый распространенный математический пакет – это Mathcad. Главная причина такой популярности состоит в том, что Mathcad имеет очень низкий «порог вхождения». Школьник, студент, аспирант, инженер или научный работник при необходимости может поставить на свой компьютер пакет Mathcad и уже через несколько часов успешно решать с его помощью довольно сложные задачи. При условии, конечно, если этот человек знаком с азами компьютерной грамотности. Другие же математические программы требуют специальных знаний, которые приобретаются далеко не за «несколько часов». Mathcad также требует от пользователя «специальных знаний». Но эти знания плавно приобретаются пользователем по мере углубления в «недра» пакета и изучения методов решения возникающих специальных задач: решение уравнений и систем уравнений (алгебраических, дифференциальных и др.), построение графиков, разбор статических задач и многое другое. При необходимости пакет Mathcad можно дополнить специальными приложениями, расширяющими его возможности и позволяющими решать специальные задачи. Пример – программа WaterSteamPro (www.wsp.ru), подключающая к Mathcad функции по теплофизическим свойствам теплоносителей и рабочих тел энергетики.
Можно сказать и так. У пакета Mathcad нет «порога вхождения», а есть некий «пандус» с низким углом наклона, позволяющий пользователю «быстро и плавно въезжать» на любой уровень сложности использования данного пакета.