СВОБОДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ В ВУЗЕ. ЭФФЕКТИВНОЕ КОМПЛЕКСНОЕ ИСПОЛЬЗОВАНИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ PYTHON И СВОБОДНОЙ СИСТЕМЫ КОМПЬЮТЕРНОЙ МАТЕМАТИКИ SAGE В УЧЕБНОМ И НАУЧНОМ ПРОЦЕССАХ Д. И. Пирштук Белорусский государственный университет Минск, Беларусь E-mail: [email protected] Рассмотрены проблемы выбора используемого программного обеспечения (ПО), особенности распространения свободного и проприетарного научного ПО, степень их соответствия принципам научного сообщества. Особый акцент сделан на возможности и преимуществах комплексного использования языка программирования Python и свободной системы компьютерной математики Sage в научном и образовательном процессах на математических и технических специальностях высших учебных заведений на основе обобщения многолетнего личного опыта использования свободного программного обеспечения, проведения научных вычислений, экспериментов и промышленного программирования. In this paper we consider problems of choosing the software used, features of free and proprietary scientific software distribution and the degree of their compliance with the principles of the scientific community. Special attention is paid to opportunities and benefits of integrated usage of the Python programming language and the free mathematics software system Sage in scientific and educational processes in mathematical and technical specialties of higher educational institutions. Proposed results are based on the generalization of many years of personal experience in the use of free software for scientific calculations, experiments and industrial programming. Ключевые слова: свободное программное обеспечение, язык программирования Python, пакет Sage, системы компьютерной математики. Keywords: free software, Python programming language, the package Sage, mathematics software systems. СВОБОДНОЕ И ПРОПРИЕТАРНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Одним из факторов, влияющих на выбор используемого ПО и технологий, является способ распространения и лицензирования ПО (свободное или проприетарное), совокупная стоимость его владением, возможность доработки под конкретные нужды. Так, в ряде случаев (но, конечно же, не всегда) более эффективным для проведения научных вычислений, экспериментов и разработок будет использование свободного программного обеспечения (СПО). Одной из актуальных проблем информатизации в области математики в Беларуси является недооценка возможностей свободного программного обеспечения. В качестве примера рассмотрим распространенные системы компьютерной алгебры и математики (СКА и СКМ). Наиболее популярными являются такие проприетарные продукты, как Wolfram Mathematica, Maple, Matlab, MathCAD. Каждый из этих пакетов обладает своими уникальными особенностями, однако наблюдается тенденция их нецелевого или неэффективного использования. 319 Так, Matlab и MathCAD являются пакетами прикладных программ, ориентированными на решение задач технических вычислений и плохо подходят для решения не инженерных задач, так как они предлагают в основном функционал для приближенного численного решения конкретных задач, а не символьных вычислений. Этого недостатка лишены Wolfram Mathematica и Maple. Но их широкая функциональность сразу для многих ветвей научных и/или промышленных вычислений влечет крайне высокую (по крайней мере, для стран бывшего СССР) стоимость лицензий. Промышленное внедрение научно-технических разработок с использованием проприетарного ПО на крупных предприятиях влечет зависимость от данных продуктов и их дорогостоящую закупку для каждого требуемого компьютера, что может крайне негативно сказываться на себестоимости выпускаемой продукции и, как следствие, ее конкурентоспособности. В большинстве случаев реально будет использоваться мизерная доля функциональности купленных программных пакетов. Затраты вузов на покупку лицензий для своих компьютерных классов, если не брать в расчет разовые акции-программы поддержки, конечно, также очень большие. Коммерческие компании занимаются активной рекламой производимого ими программного обеспечения в виде презентаций, вебинаров и дарения некоторого числа лицензий с расчетом на неизбежную необходимость закупки гораздо большего числа лицензий при их реальном внедрении. Для решения многих задач качество СПО лишь не значительно хуже, а в ряде случаев и лучше коммерческих продуктов. Развитие и повышение качества СПО обеспечивается именно благодаря идее активного сотрудничества, открытого обмена опытом, научными и программными наработками различными университетами, коммерческими и некоммерческими организациями по всему миру с целью достижения общей выгоды. Стоимость внедрения решений на базе СПО ниже, чем у коммерческих продуктов, так как само СПО бесплатное, конечный потребитель платит только за стоимость внедрения и, если требуется, доработки СПО под решение его конкурентной задачи. Отсюда следует, что стоимость владения свободным ПО не всегда является нулевой, поэтому понятия СПО и бесплатного ПО не стоит отождествлять. Однако обычно стоимость владения свободным ПО оказывается значительно ниже стоимости владения проприетарным продуктом, а потребитель получает доработанный под его конкретные потребности программный продукт, наиболее полно удовлетворяющий его требованиям, и оперативную техническую поддержку в отличие от коробочных проприетарных продуктов. Плюсом такой модели является также и то, что выручка от продаж таких решений идет не третьим IT-корпорациям, а остается у местных организаций и специалистов, что стимулирует развитие собственного рынка IT-услуг, так как все деньги остаются внутри страны, а не уходят за рубеж. СВОБОДНАЯ СКМ SAGE Одним из недооцененных свободных программных продуктов является система компьютерной математики Sage (англ. «мудрец», первоначально System for Algebra and Geometry Experimentation). В качестве рабочего языка программирования используется Python, один из самых распространенных языков программирования, обладающий огромным числом различных готовых библиотек. Кроме собственных библиотек и многочисленных библиотек Python, Sage предоставляет единый интерфейс как для широкофункционального, так и специализированного научного СПО, такого как GAP, Maxima, Singular, SymPy, GiNaC, ATLAS, BLAS, LAPACK, NumPy, LinBox, IML, GSL, GSL, SciPy, PARI/GP, FLINT, NTL, R, что в совокупности обеспечивает широкие возможности для символьных вычислений, визуализации данных, решения задач в облас320 тях математического анализа, дифференциальных уравнений, вычислительной математики, алгебры, алгебраической геометрии, теории групп, теории чисел, комбинаторики, математической статистики и анализа данных. Это, в частности, говорит о высокой перспективности использования в учебном и научном процессах в БГУ. Есть возможность доступа к различным базам данных, сетевого взаимодействия, поддержка параллельных вычислений и распределенных вычислений. Система обеспечивает возможность доступа через веб-интерфейс и может быть легко развернута как на персональном компьютере, так и на сервере или в «облаке». Побочным эффектом объединения в СКМ Sage большого числа научного СПО, разработанных с использованием огромного числа различных технологий и библиотек, стало то, что, по крайней мере, сегодня данная СКМ способна работать только на Unix-подобных операционных системах. Доступны готовые бинарные сборки для большинства популярных Linuxдистрибутивов и MacOS. В отличие от западного научного сообщества, в предпочтениях ученых на постсоветском пространстве доминирует использование операционной системы Windows. Однако в силу наличия «из коробки» возможности развертывания в «облаке» не вызывает никакого затруднения установка СКМ Sage на Linux-сервер с организацией последующего доступа к ней через веб-браузер с любых рабочих станций, и что даже уменьшает трудозатраты на настройку и обслуживание. Важно отметить, что использование широко распространенного языка программирования Python облегчает доработку и развитие пакета. Так, в ходе подготовки магистерской диссертации [1] для поиска гипотез о возможной структуре объектов исследования потребовалось проведение вычислительного эксперимента. Для проведения эксперимента было разработано несколько программных модулей, использующих стандартные функции языка программирования Python, базовую систему символьных вычислений СКМ Sage и дополнительный пакет для работы с дифференциальными многообразиями SageManifolds ([2]). Этот пакет предоставляет возможность решения в Sage задач дифференциальной геометрии и тензорного исчисления, используя интегрированную в Sage СКА GAP и собственные алгоритмы. Сам факт разработки данного расширения демонстрирует плюсы модели СПО. Отсутствие возможностей в Sage для работы стали причиной, а открытость системы, хорошая документированность и удобство использования Python сделали возможным разработку дополнения к ней третьими лицами (учеными из Франции и Польши). ПРЕИМУЩЕСТВА КОМПЛЕКСНОГО ИСПОЛЬЗОВАНИЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ PYTHON И СКМ SAGE В УЧЕБНОМ ПРОЦЕССЕ В ВУЗЕ Использование стандартного языка программирования Python делает Sage крайне легким для изучения и удобным для использования, так как изучение нового языка программирования, в отличие от Wolfram Mathematica, Maple или Matlab, не требуется. Требуется только знание языка программирования общего назначения Python. Согласно результатам исследования журнала Communication of the ACM [3] на данный момент Python вышел на 1-е место в программах начального обучения программированию в университетах США и широко используется в различных курсах в Стэндфордском университете, Массачусетском технологическом институте, Калифорнийском университете в Беркли, университете Карнеги-Меллона и многих других. Также именно Python используют многие массовые образовательные онлайн-курсы, такие как edX, Coursera и Udacity. Можно выделить несколько причин популярности Python в образовательном процессе. 321 Во-первых, Python – высокоуровневый язык общего назначения, поддерживающий многие парадигмы программирования, в том числе структурного, объектно-ориентированного, аспектно-ориентированного и функционального программирования, и обладающий большой стандартной библиотекой функций. Таким образом, Python упрощает возможность знакомить студентов с различными технологиями программирования. Во-вторых, язык Python – выразительный. Как отмечает основатель языка Гвидо ван Россум в свободно распространяемой книге [4], «Python – интерпретируемый язык, что позволит Вам сэкономить значительное количество времени, обычно расходуемого на компиляцию. Интерпретатор можно использовать интерактивно, что позволяет экспериментировать с возможностями языка, писать наброски программ или тестировать функции … Python позволяет писать очень компактные и удобочитаемые программы. Программы, написанные на языке Python, обычно значительно короче эквивалента на C или C++». Это действительно важно в процессе обучения студентов программированию, так как позволяет сделать листинги кода, демонстрируемые на лекциях, значительно короче, сам код – более понятным, а процесс выполнения практических заданий – более продуктивным. Отметим, что данный тезис верен как для массовых онлайн-курсов, так и для классических очных занятий. Третья причина непосредственно следует из второй. Сегодня Python – один из наиболее популярных языков программирования, используемый при разработке и серверного, и клиентского ПО, при разработке динамических веб-сайтов и даже мобильных приложений под различные платформы. Возможность повышения производительности разработчика и читаемости кода высоко ценят многие IT-компании и научные организации, поэтому Python широко используется как в малых и средних проектах, так и в таких крупных организациях, как Google, Facebook, Yahoo, Яндекс, NASA, CERN, Fermilab и многих других. Для быстрого развертывания на Windows-машине среды разработки для Python рекомендуется использовать свободно распространяемый интегрированный пакет Python(x, y), доступный по адресу: https://code.google.com/p/pythonxy/wiki/Welcome. Особенностью Python(x, y) является то, что в его состав уже включены многие научно ориентированные дополнительные библиотеки для обработки и анализа данных, изображений, работы с графами, изображениями, графикой, алгоритмами компьютерного зрения, средства визуализации, отладки и тестирования. Комплексное использование языка Python и СКМ Sage в образовательном процессе является эффективным: оно позволяет одновременно и дать студентам необходимые навыки программирования, и познакомить их с современными технологиями разработки ПО, и научить использованию систем компьютерной алгебры для научных исследований. На данную возможность следует также обратить внимание в контексте перехода на 4-летнюю программу подготовки специалистов. При этом полученные студентами компетенции в области программирования в целом и разработки на языке Python в частности будут широко востребованными IT-индустрией. Для знакомства с Sage можно воспользоваться облачной версией, доступной по адресу: http://sagenb.org/, бесплатно предоставляемой Вашингтонским университетом. ПЕРСПЕКТИВНЫЕ ПУТИ РАЗВИТИЯ Примеры внедрения свободного программного обеспечения есть на различных факультетах БГУ. Опыт разработки и апробации системы электронного документа оборота на основе СПО в Институте ядерных проблем БГУ изложен в статье [5], опыт использования открытых геоинформационных систем — в работах [6, 7]. Однако в целом СПО в образовательной среде в Беларуси крайне мало распространено. Основной причиной сложившейся ситуации является низкая вовлеченность белорусского научного сообщества в обмен опытом по разработке, вне322 дрению и использованию СПО с открытым исходным кодом. Бюджеты на продвижение СПО обычно гораздо скромнее, чем у проприетарных аналогов, либо вообще отсутствуют, поэтому инициатива участия должна исходить от самого научного сообщества. В качестве первоочередных способов повышения эффективности использования информационных технологий в учебном и научном процессах можно выделить: 1. Повышение уровня компетенции педагогических кадров в области свободного программного обеспечения, в особенности, научного и образовательного. 2. Повышение вовлеченности белорусского научного сообщества в обмен опытом по разработке, внедрению и использованию СПО с открытым исходным кодом. 3. Популяризация разработки, внедрения, использования и распространения научного ПО на тех же принципах, что и научных знаний, т. е. публично, на основе взаимного обмена опытом и результатами работы. Исходный код научного ПО должен быть открытым хотя бы в некоммерческих целях. БИБЛИОГРАФИЧЕСКИЕ ССЫЛКИ 1. Пирштук Д. И. Алгебраические инварианты в задачах оптимального управления: дис. ... магистра физ.-мат. наук: 1-31 80 09. Минск, 2014. 65 с. 2. SageManifolds: Differential geometry and tensor calculus with Sage [Electronic resource]. URL: http://sagemanifolds.obspm.fr/. 3. Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities [Electronic resource]. URL: http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-us-universities. 4. Ван Россум Г. Язык программирования Python [Электронный ресурс]. URL: http://rus-linux. net/MyLDP/BOOKS/python.pdf 2001. С. 17–18. 5. Сытова С. Н., Черепица С. В., Лобко А. С. Возможность использования системы электронного документооборота E-lab для создания учебно-научного портала ядерных знаний // Междунар. конгресс по информатике: информационные системы и технологии. Секция 4: Информационные системы и технологии обеспечения научно-образовательной среды. Минск : Изд. центр БГУ, 2013. С. 65–69. 6. Другаков П. В. Внедрение открытых ГИС в учебный процесс // Почвенно-земельные ресурсы: оценка, устойчивое использование, геоинформационное обеспечение : материалы междунар. науч.практ. конф. Минск : Изд. центр БГУ, 2012. С. 329–331. 7. Литвинко Н. Г., Топаз А. А. Использование «Quantum GIS» для тематической обработки спутниковой информации (на примере территории республиканского заказника «Ельня») // ГИС-технологии в науках о Земле : материалы конкурса ГИС-проектов студентов и аспирантов вузов Респ. Беларусь, проведенного в рамках празднования Междунар. Дня ГИС 2013. Минск : БГУ, 2013. С. 52–57. 323