Свободный софт в научной областиАвтор: Шутов, Илья Государство, разбуженное делом Поносова, заинтересовалось тем, какой софт используется в учебных и научных учреждениях, что немедленно привело к спуску вниз приказов и инструкций «удалить нелицензионное ПО со всех компьютеров». Автор статьи предлагает свой вариант решения проблемы, когда старых программ на компьютере уже нет, а денег на новые еще не дали. И неизвестно, дадут ли.Компьютеры научных сотрудников в настоящий момент представляют собой софтверную пустыню с редкими оазисами. Официальная политика сформулирована достаточно просто — заменить коммерческие продукты их open source/freeware-аналогами. То есть Windows Linux, MS Office Open Office, Origin QtiPlot и т. д. При этом предлагается взять на вооружение ранее выстроенную парадигму использования софтверных продуктов. Возможно, это болезненный шаг, но, с другой стороны, именно сейчас предоставляется прекрасная возможность осмотреться и попробовать выстроить новую концепцию использования ПО с чистого листа. Тем более что за последние десять лет появилось множество замечательных открытых продуктов, практикующих иные подходы к работе с текстом и обработке данных и пр., а продукты, существовавшие ранее, но выглядевшие очень слабыми, получили сильное развитие. Оставив в стороне вопросы офисного ПО (почтовые клиенты, утилиты для записи дисков, редакторы графики), обратим внимание на программы, которы енужны для решения научных задач. Что можно включить в эту категорию? Прежде всего систему для набора и верстки текста, содержащего огромное количество формул, иллюстраций, библиографических ссылок. Далее можно указать систему для создания презентационного материала, опять же содержащего формулы, специфические картинки (например, химические формулы или диаграммы Фейнмана) и библиографию. Следующий блок — ПО для рисования графиков. И в качестве ежедневного инструмента — пакет, позво-ляющий проводить сложные математические расчеты, а для экспериментаторов еще и язык разработки/модификации софта по управлению экспериментальными установками, сбору и обработки данных. Далее вкратце рассмотрим, что можно противопоставить парадигмам работы, предлагаемым Word/Origin/C++. Для этого проследуем стандартным путем — сформулируем требования к ПО и попытаемся подобрать максимально отвечающий им продукт.
Мой опыт работы с различными текстовыми редакторами и с издательскими системами показывает, что лучше LaTeX в этой области нет ничего. Самый популярный дистрибутив LaTeX для Windows (а менять ОС вряд ли кто решится — купить все же проще) — MikTeX. Отсутствие WYSIWYG, совершенно иной подход к созданию документов и большой набор команд на первый взгляд существенно усложняют работу с системой. Но это впечатление обманчиво. Достаточно сделать над собой небольшое усилие и немного поработать с объемистым документом физико-математической направленности, как преимущества подхода разделения содержания и представления становятся очевидны. Имея на руках чистый ASCII-файл страниц на сто, можно безболезненно проводить над ним жуткие с точки зрения систем а-ля Word операции: переставлять формулы, удалять абзацы, вставлять/удалятькартинки, перенумеровывать библиографию и пр. А в интеграции с системой контроля версий (рекомендую обратить внимание на Subversion, subversion.tigris.org, и его Windows-клиента TortoiseSVN, tortoisesvn.net) можно сохранить всю историю создания документа, совместную работу над большой статьей или книгой, возвращаться к написанному ранее и выбирать наиболее удачные формулировки. Немаловажно и то, что работа с библиографией встроена в LaTeX практически бесшовным образом. Поскольку число ссылок в библиографической БД редко превышает несколько тысяч, а скорость доступа к записям особой роли не играет, то хранение БД в виде текстового файла (bibtex) полностью подпадает под правила работы с основным материалом, набранным в TeX. Более того, существует ряд продуктов, которые позволяют работать с библиографической БД с помощью удобных интерфейсов. В частности, заслуживает внимания замечательный пакет JabRef (jabref.sourceforge.net). А язык TikZ для рисования иллюстраций, являющийся, по сути, пакетом LaTeX, позволяет включать графический материал непосредственно в исходный документ презентации (in place или же в виде команд — зависит от частоты использования). На этом языке можно создавать и иллюстрации, оперируя концепциями предметной области, будь то ядро и электрон, или граф и ребра, или фотон и другой фотон… Более того, графика TikZ, скооперированная с возможностями покадровой анимации beamer, позволяет делать красивые и элегантные вещи путем незначительных затрат. Для математических расчетов есть масса специализированных программ (например, wiki.python.org/moin/NumericAndScientific, www.enthought.com), существуют сборки, содержащие огромное количество специализированных пакетов (например, code.enthought.com/enthon). Есть отдельные пакеты для рисования графиков, например MatPlotLib (matplotlib.sourceforge.net). Это очень удобный вариант, особенно если рассматривать связку «экспериментальная установка + документ». Данные, полученные с экспериментальной установки (или численного эксперимента) под управлением ПО, созданного на Python, проходят предварительную обработку (опять Python), информация выдается в файлы в виде графиков (2D, 3D, прочие форматы), а после этого при помощи python-скриптов частично формируется и запускается на компиляцию latex-документ, использующий эти графики. [Автоматизация на Питоне — штука довольно распространенная. Так, например, в студии ILM на Питон завязан весь процесс производства визуальных эффектов. — В.Г.] В результате в полностью автоматическом режиме можно получить на выходе профессионально созданный pdf-файл с отчетами о проведенном эксперименте. Также с использованием Python достаточно легко можно писать GUI к различным программам (например, пакеты TkInter, wxPython, TraitsUI). И многое-многое другое. Полагаю разумным сделать паузу и предоставить читателям возможность сходить по незнакомым ссылкам и подробнее ознакомиться с упомянутыми материалами. Разумеется, все упомянутые продукты непросты в освоении, но усилия, потраченные на овладение ими, того стоят. Воспользовавшись возникшим вакуумом, можно не пытаться воссоздавать ранее бывшее окружение путем поиска эрзацев, а попытаться сменить видение. Решать эту задачу в одиночку сложни тяжело, но, с другой стороны, существует огромное количество технологий и продуктов, позволяющих объединять усилия различных людей в одном направлении. И эти технологии очень хорошо вписываются в структуру научного сообщества, дополняя и расширяя существующие связи между научными группами. Наличие инициативной группы, являющейся неформальным ядром такого сообщества, позволит сменить парадигму достаточно безболезненным образом. Болеетого, такая система является системой с положительной обратной связью, и, будучи запущена, может поддерживать себя сама. В качестве результатов работы такой группы можно продемонстрировать ресурс «TeX в Институте математики и механики УрО РАН». Ему уже около четырнадцати лет (восемь из них посвящены работе с MiKTeX), и история его развития может служить показательным примером того, как можно успешно внедрять новые технологии в научных учреждениях. Почему такНаверняка многие читатели скажут, что существует множество замечательных пакетов и продуктов, которые позволяют решать указанные задачи. Это действительно так. К сожалению, если начинать описывать все возможные комбинации продуктов с уче- том версий и особенностями интеграции, то получится многотомный труд с малоупотребимыми результата- ми, вследствие их быстрого устаревания. Поэтому в статье предложен только подход к решению задач и указаны пакеты и продукты, которые были выбраны на основе личного опыта и прошли экспериментальную апробацию в различных областях деятельности, а не только в научной. 1. Почему начато с LaTeX? Какие же требования следует предъявить к языку программирования для научных работников? Опыт показывает, что следующий список близок к оптимальному:
3. На Matplotlib свет клином не сошелся. Пакетов много, но я говорю о конкретном решении, которое я собрал (оценивая по многим параметрам). Перечислять все пакеты в популярной статье, наверное, ни к чему. Я хотел рассказать об общем подходе в создании АРМ научного работника. Смысл не в том, чтобы метаться от пакета к пакету, а в том, что можно собрать под себя инструмент и далее оттачивать свое мастерство в решении конкретных задач. Я вовсе не настаиваю на конкретном пакете, я говорю о концепции. Люди, которые решат использовать open source, так или иначе должны будут включиться в community и оглядеться вокруг повнимательнее.
|