Программное обеспечение


Данный раздел находится в разработке. Если вы хотите следить за обновлениями сайта, пошлите мне электронное письмо по адресу

Данное пособие рассчитано на студентов, которые хотели бы освоить типичное для среды операционной системы GNU/Linux программное обеспечение для научных и инженерных расчетов, не покидая привычной для себя среды операционной системы Windows. Описан процесс установки, конфигурации и основы использования наиболее распространенных в среде GNU/Linux научных и инженерных программ и средств разработки, находящихся в свободном доступе (т. е. распространяемых бесплатно и имеющих открытый исходный код).

Введение

Для выполнения заданий специального физического практикума и домашних заданий по курсам, читаемым на кафедре квантовой статистики и теории поля, а также для подготовки квалификационных (курсовых и дипломных) работ и в ходе самостоятельной научной работы приходится использовать самое разнообразное программное обеспечение. Уже несколько десятилетий работа в практически любой области науки немыслима без использования результатов численных расчетов, и в последнее время едва ли не каждому научному работнику приходится программировать либо на одном из языков программирования общего назначения (Фортран, Паскаль, C/C++), либо на языках прикладных сред (Matlab, Mathematica, R, LabView), либо на скрипт-языках (Perl, Python, Ruby), либо на всех вместе, не говоря уже о подготовке публикаций в системе TeX. Освоение программного обеспечения для научных и инженерных расчетов и средств разработки программного обеспечения - часть учебного процесса на кафедре, необходимая для всех студентов. Полученные при этом навыки неоднократно пригодятся в будущей самостоятельной деятельности, какова бы она ни была.

Wintel и Lintel

Работа на компьютере всегда происходит на определенной "платформе". Этот термин объединяет процессор и аппаратную архитектуру компьютера, операционную систему (ОС), языки программирования (точнее, компиляторы и программы-редакторы, или среды разработки) и основные прикладные программы. Несколько упрощая ситуацию, можно сказать, что в современном научном мире одной из наиболее распространенных является так называемая платформа Lintel, состоящая из компьютера на базе процессора Intel x86, ОС GNU/Linux, компилятора gcc и прикладных программ, разработанных в рамках проекта GNU. С другой стороны, большинство школьников и вчерашних школьников - студентов - начинают работу с компьютером с освоения платформы Wintel, в которой на той же аппаратной базе работает один из вариантов ОС Windows. Эти две платформы очень сильно отличаются друг от друга по составу программного обеспечения и типичным методам и техникам работы.

С чем связано такое существенное отличие, практическая несовместимость платформ Wintel и Lintel? В первую очередь с тем, что их создатели ориентировались на совершенно разные категории пользователей: платформа Lintel предназначена в первую очередь для разработчиков программного обеспечения, работающих в науке, технике и информационных технологиях, а платформа Wintel - для офисных работников и домашнего развлечения. Есть и еще одно важное - экономическое - отличие: Wintel ориентирована на коммерческое лицензирование программного обеспечения, разрабатываемого в частных компаниях, а Lintel - на бесплатное (точнее, "свободное" - в особом, определяемом ниже смысле) распространение программного обеспечения, разрабатываемого публично усилиями неформальных сообществ программистов. Поскольку второе отличие не ограничивается рамками только этих двух платформ, о нем стоит сказать подробнее.

Коммерческие и свободно доступные программы

Для решения большинства важных практических задач существуют как коммерчески распространяемые программы (proprietary software), так и свободно доступные программы, или программы с открытым кодом (free/open source software). В свободном доступе существуют не только прикладные программы, но и целые операционные системы (GNU/Linux, Free BSD и другие).

С точки зрения массового пользователя основной особенностью свободно доступных программ является их лицензионная и правовая чистота, т.е. полное отсутствие проблемы "нелегально установленной копии". С точки зрения программиста-разработчика или квалифицированного пользователя-научного работника или инженера, еще более важна другая особенность: открытость исходного кода в принципе позволяет каждому человеку, обладающему необходимыми знаниями, проверять правильность кода, выявлять и исправлять ошибки или расширять возможности таких программ. Благодаря этому наиболее широко распространенные программы с открытым кодом достигают очень высокого качества, обеспечиваемого буквально всемирной сетью квалифицированных программистов.

Здесь важно различать свободно доступные программы в точном смысле этого термина, у которых исходный код открыт, и бесплатные, но не свободно доступные программы, исходный код которых фирма-разработчик не публикует. Такими бесплатными, но не свободно доступными программами являются, например, рассматриваемые ниже программы Adobe Reader и Foxit Reader.

Конечно, фирмы-разработчики коммерчески распространяемых программ гарантируют пользователям поддержку и консультирование (разумеется, только для легальных копий). Однако у широко распространенных программ с открытым кодом, как правило, существуют неформальные сообщества пользователей, где можно получить не менее полные и оперативные консультации через форумы, новостные группы или списки рассылки, а активно работающие группы разработчиков нередко обеспечивают более оперативное устранение ошибок и реализацию новых возможностей по запросам пользователей, чем крупные компании-производители аналогичных коммерческих программных продуктов. (Правда, чтобы воспользоваться этими преимуществами, часто бывает необходимо более или менее свободное владение английским языком - lingua franca современного программного обеспечения.)

Научные и инженерные расчеты в среде GNI/Linux

В современной науке все большую роль играет совместная работа над одной проблемой разных коллективов, часто даже находящихся в разных странах. В таких условиях для облегчения работы и обеспечения надежности ее результатов особенно важна совместимость программного обеспечения, используемого разными командами исследователей. Применение свободно доступного программного обеспечения снимает бюджетные ограничения, упрощает установку и сопровождение программ и поэтому, как правило, позволяет гарантировать, что все участвующие в совместном проекте команды используют одни и те же или совместимые инструментальные средства.

Свободно доступное программное обеспечение зародилось в среде ОС UNIX, одним из вариантов которой является GNU/Linux. На базе различных вариантов именно ОС UNIX работают компьютеры передовых научных центров как за границей, так и у нас (в типичном западном исследовательском центре или университете ОС Windows, как правило, установлена только на компьютерах бухгалтерии и секретариата). Парк компьютеров, на которых работают ученые, составляют в основном те же недорогие и массовые компьютеры на базе процессоров семейства Intel x86, которые используются в быту и в конторской работе. Поэтому платформа Lintel, предполагающая использование ОС GNU/Linux, стала фактическим стандартом научных и инженерных расчетов. Умение работать с достаточно широким спектром программ, характерных для среды GNU/Linux, облегчает вход в любые научные коллективы у нас в стране и за рубежом.

Итак, переход с платформы Wintel на платформу Lintel в процессе профессионального становления научного работника необходим, однако он связан с заметными трудностями. Помочь студенту в преодолении этих трудностей - одна из целей обучения в университете. В данном пособии рассматривается ряд распространенных в среде GNU/Linux и наиболее широко используемых в современной практике программ научных и инженерных расчетов, которые были перенесены в среду ОС Windows. Стоит отметить, что само существование таких версий стало возможным благодаря тому, что исходный код этих программ открыт. В пособии описан процесс установки, настройки и основы использования версий рассматриваемых программ для ОС Windows на примере Windows XP.

Общая характеристика рассматриваемых программ

Перечень программ

Научная работа, а также последующее представление ее результатов в виде препринтов, статей и слайдов компьютерных презентаций требует использования программ самого разного функционального назначения. В данном пособии рассматриваются:

Конечно, разные программы рассматриваются в различной степени подробности в зависимости от опыта и интересов автора.

В пособии рассматриваются и средства "повышенного уровня" - с целью не столько помочь начинающим, сколько информировать более квалифицированных студентов. Во-первых, это MinGW - менее удобная в использовании, чем Dev-C++, но более универсальная реализация компилятора gcc, содержащая кроме C/C++ компиляторы других языков программирования, включая Фортран. Во-вторых, это универсальный текстовый редактор GNU Emacs, который заменяет среду разработки Dev-C++, Texmaker, предоставляет альтернативный интерфейс к системам R и Maxima, а также программе Gnuplot и обладает многими другими возможностями (не говоря уже о том, что он построен на базе весьма эффективной реализации языка программирования Лисп). Фактически GNU Emacs - это операционная система в миниатюре.

Поскольку стандартные процедуры установки в свободно доступной ОС GNU/Linux и в коммерческих ОС Windows и Mac OS X отличаются довольно сильно, в данном пособии описана только установка под ОС Windows XP. На компьютерах, работающих под управлением ОС типа UNIX, система TeX, редактор Emacs и компилятор gcc, как правило, уже установлены. Рекомендации по установке остальных программ под GNU/Linux и Mac OS X можно получить у автора по мере необходимости.

Для выполнения домашних заданий по курсу теории вероятностей и математической статистики понадобится система R, а для подготовки текста домашней работы - TeX и Texmaker.

Что такое GNU?

Как видно из названий, почти все перечисленные программы (включая систему R) созданы в рамках проекта GNU, основанного в 1984 г. Ричардом Сталлманом. Аббревиатура GNU - рекурсивная и означает "GNU's Not Unix" - "GNU - это не UNIX". На самом деле GNU - это ОС типа UNIX, не имеющая собственного ядра. Наиболее распространена ОС GNU/Linux - реализация GNU на базе ядра Linux. Реализации GNU существуют и на базе ядер других ОС типа UNIX, включая ядро Darwin ОС Mac OS X.

Кроме технического аспекта, проект GNU имеет и своеобразный правовой аспект. Чтобы гарантировать, что созданное в рамках проекта программное обеспечение не будет коммерциализировано, Сталлман разработал особую лицензию, регулирующую жизненный цикл программного обеспечения - GNU Public License (GPL). Этот правовой документ разрешает произвольные модификации исходного кода и распространение программных продуктов на его основе любым способом (в том числе и за деньги), но запрещает закрывать код как самого защищенного им программного обеспечения, так и любого производного от него или использующего его продукта - лицензия GPL как бы является "заразной". Для обеспечения соблюдения этой лицензии Сталлман основал общественную организацию FSF = Free Software Foundation, которая в частности занимается судебным преследованием нарушений GPL. По образцу GPL были созданы и другие, менее ограничительные лицензии, по существу образовавшие новую отрасль права.

Хотя для выполнения учебных заданий установка и освоение полной ОС GNU/Linux не требуется, автор очень рекомендует всем студентам, чувствующим в себе силы, взяться за это непростое, но в высшей степени полезное дело для повышения своей квалификации и расширения кругозора. Установить на своем компьютере ОС GNU/Linux можно параллельно с ОС Windows в отдельный дисковый раздел или на отдельный жесткий диск: дистрибутивы GNU/Linux включают в себя программу-менеджер загрузки, которая после включения компьютера позволяет пользователю выбрать, в какой из двух (или большего числа) установленных на компьютере ОС он собирается работать.

Несмотря на существенные отличия архитектуры ОС Windows от ОС типа UNIX, существует реализация программной среды GNU на базе ОС Windows под названием MinGW (Minimalist GNU for Windows), предназначенная для технических целей (компиляция программ, разработанных в системе GNU). MinGW вместе с интерпретатором командной строки MSYS составляют суррогат среды GNU, непригодный для практической работы, но достаточный для компиляции других программ и изучения "анатомии" среды GNU. Другим суррогатом среды GNU является система Cygwin - имитатор ОС GNU/Linux в ОС Windows.

Сколько места требуется для установки этих программ?

Данный раздел будет дополняться.

Subpages: