Лекция 6. Прочие проекты FOSS. Системное программное обеспечение
Кратко рассмотрены некоторые свободные программы общесистемного назначения. Выбор приводимых в качестве примеров проектов обусловлен во многом личными предпочтениями и опытом автора.
Системное ПО общего назначения
- Загрузчики
- Средства разработки
- Компиляторы, интерпретаторы, ассемблеры
- Интегрированные среды разработки
- Эмуляторы и виртуальные машины
- СУБД
- Пользовательские оболочки
- Утилиты и прочее – самостоятельно
Загрузчики
- GNU GRUB
- GRUB – GRand Unified Boot-loader. Пожалуй, наиболее продвинутый и проработанный загрузчик, который используется в большинстве современных дистрибутивов. Позволяет запустить любую операционную систему через передачу управления непосредственно ядру (первый способ) или другому загрузчику (второй способ, который также называют «загрузка по цепочке» (chain-loading))
- Gujin
- Способен анализировать файловые системы и находить загружаемые разделы: родной – Linux, кроме того – *BSD, MS-DOS, Windows, etc. Может напрямую загружать образ ядра Linux (ELF kernel image). Не требует переконфигурации, просто перечитывает /boot
- LILO
- LILO – LInux LOader, загрузчик Linux. При загрузке системы использует вызовы BIOS, поэтому его можно поместить в любое место диска, доступное базовой программе ввода-вывода.
- Syslinux
- Коллекция загрузчиков, поддерживающая EXT2/EXT3, FAT, сетевую загрузку (PXE), CD-ROM &etc.
- MEMDISK – утилита, поддерживающая загрузку устаревших ОС с нетрадиционных носителей (flash, CD-ROM, PXE).
Средства разработки
Компиляторы, интерпретаторы, ассемблеры
- GCC
- GNU Compiler Collection (обычно используется сокращение GCC) – набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU. GCC является свободным программным обеспечением и является ключевым компонентом GNU toolchain. Он используется как стандартный инструментарий разработки для свободных UNIX-подобных операционных систем.
- GCC был написан Р.М. Столлманом и изначально поддерживал только язык Си (GNU C Compiler). Позднее, GCC был расширен для компиляции исходных кодов на таких языках программирования как C++, Objective-C, Java, Фортран и Ada. За время существования (с середины 80-х годов прошлого века) GCC был портирован более чем на полсотни аппаратных платформ.
- NASM
- NASM – Netwide Assembler. Ассемблер для разработки 16/32/64-разрядных x86-совместимых программ, использует традиционный Intel-синтаксис.
- fasm
- fasm – Flat Assembler. Свободно распространяемый многопроходный ассемблер, отличающийся компактностью, скоростью и дополнительной функциональностью (развитые макросы, поддержка как объектных, так и исполняемых форматов).
Интегрированные среды разработки
RAD (англ. Rapid Application Development – быстрая разработка приложений) – концепция создания средств разработки программных продуктов, уделяющая особое внимание быстроте и удобству программирования, созданию технологического процесса, позволяющего программисту максимально быстро создавать компьютерные программы. С конца XX века RAD получила широкое распространение и одобрение, чему способствовало появление интегрированных средств разработки (IDE), в т.ч. и средств визуальной разработки.
IDE (англ. Integrated Development Environment – интегрированная среда разработки программ) – комплекс программных средств, используемая программистами для разработки программного обеспечения.
Обычно среда разработки включает в себя текстовый редактор, компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Иногда также содержит средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов – для использования при объектно-ориентированной разработке ПО. Хотя и существуют среды разработки, предназначенные для нескольких языков – такие как Eclipse или KDevelop, обычно среда разработки предназначается для одного определённого языка программирования – как например, Visual Basic.
- KDevelop
- Использует GNU Compiler Collection (или любой другой компилятор). Представляет разработчикам такие возможности, как например:
- подсветка исходного кода с учетом синтаксиса используемого языка (определяется автоматически);
- менеджер проектов разного типа;
- навигатор классов (Class Browser);
- wizards («Помощники»);
- автоматическая система завершения кода;
- встроенная поддержка Doxygen;
- средства контроля версий
- Code::Blocks
- Свободная кроссплатформенная среда разработки на C/C++. Использует библиотеку wxWidgets (ранее – wxWindows) – кросс-платформенную библиотеку инструментов с открытым исходным кодом для построения графического интерфейса пользователя. Одна из важнейших особенностей Code::Blocks — масштабирование за счёт подключаемых модулей. Поддерживает импорт проектов и рабочих пространств Microsoft Visual Studio.
- Anjuta
- IDE Anjuta написана для GTK/GNOME. Это графическая среда разработки приложений на C/C++, особенно хорошо подходит для разработки графических приложений. Главные достоинства – это наличие менеджера ведения проекта, "application wizards" (визарды для Glade, wxWindow и т.д.), встроенный отладчик, удобный редактор исходных кодов с подсветкой синтаксиса.
- Lazarus
- Lazarus — свободная среда разработки программного обеспечения для компилятора Free Pascal. Предоставляет возможность кроссплатформенной разработки приложений в Delphi-подобном окружении. Lasarus Основан на библиотеке визуальных компонентов Lazarus Component Library (LCL). Поддерживает преобразование проектов Delphi. Портирован на ОС GNU/Linux, Microsoft Windows, Mac OS X, FreeBSD, WinCE.
- Eclipse
- Eclipse IDE – свободная интегрированная среда разработки для Java SE, Java EE и Java ME. Пропагандируется IBM, одним из важнейших разработчиков корпоративного ПО, как основной инструмент для программирования на языке Java.
СУБД
Фактик не в тему
Согласно результатам автоматизированного исследования различного ПО на предмет ошибок, в исходном коде PostgreSQL было найдено 20 проблемных мест на 775 000 строк исходного кода (в среднем, одна ошибка на 39 000 строк кода).
Для сравнения:
MySQL – 97 проблем, одна ошибка на 4 000 строк кода;
FreeBSD (целиком) – 306 проблем, одна ошибка на 4 000 строк кода;
Linux (только ядро) – 950 проблем, одна ошибка на 10 000 строк кода.
- PostgreSQL
- Свободная объектно-реляционная система управления базами данных корпоративного уровня. Обеспечивает совместимость с актуальными стандартами SQL. Представляет такие возможности, как неограниченный размер БД и неограниченное число записей в таблице (конечно же, ограничения есть, но они устанавливаются аппаратными ресурсами), максимальный размер таблицы — 32 ТБайт, размер записи до 1,6 ТБайт и еще ряд подобных показателей.
- MySQL
- Изначально MySQL – собственность компании MySQL AB, осуществлявщей разработку и поддержку системы. В дальнейшем MySQL AB была куплена Sun Microsystems, которая в свою очередь, была куплена Oracle в начале 2009 г. На начало 2010 года судьба MySQL была не ясна: хоть Oracle и заявляла, что не собирается закрывать проект MySQL, сообщество разработчиков и пользователей выразили свой протест в Интернет-акции, что, впрочем, не помешало сделке состояться.
- MySQL оптимизирована для максимально быстрой обработки запросов, характерных для веб-сайтов, поэтому она широко распространена во Всемирной паутине.
- Firebird
- Firebird (FirebirdSQL) – компактная, кроссплатформенная, свободная СУБД, основанная на исходном коде Interbase 6.0. Может быть использована как типичная клиент-серверная система, так и как встраиваимая СУБД.
Эмуляторы и виртуальные машины
Совершенствование аппаратно-программных платформ и увеличение их числа существенно усложняет портирование приложений. У разработчиков, естественно, не может быть абсолютно всех устройств, для которых создана или создается некоторая программа и на которых ее можно запустить и отладить. Решением этой проблемы являются программы-эмуляторы. Изначально созданные для разработчиков, сейчас эмуляторы используются и конечными пользователями, позволяя им запускать, например, Windows-приложения под управлением Linux. Приведем несколько примеров:
- WINE
- WINE (WINE IS Not Emulator) — свободная реализация библиотек Windows API, работающая поверх графической подсистемы X в Unix-подобных системах. Позволяет запускать многие популярные приложения для Windows. Работает на Linux, FreeBSD и Solaris. Включает WINE Tools — набор утилит для инсталляции/деинсталляции приложений, создания виртуальных Windows дисков и т.п.
WIMP — аббревиатура от Windows, Icons, Mouse Pointer, которая характеризует основные средства управления системой в графический пользовательской среде. Здесь: Windows — оконный интерфейс; Icons — пиктограммы, связанные с различными типами виртуальных объектов; Mouse Pointer — управление с помощью манипулятора типа «мышь».
Оболочки
Оболочка (англ. shell) — обобщенное название категории программ, предназначенных для обеспечения интерактивного взаимодействия пользователя с операционной системой. В современных настольных вычислительных системах поддерживаются два типа программ-оболочек: консольные (для текстового режима) и графические (GUI).
Консольные оболочки
Консольные оболочки используются для работы в терминальном режиме, они не требуют поддержки графики и позволяют непосредственно вводить команды ОС через командную строку. За всю «эпоху Unix» для этой системы было разработано множество оболочек, начиная от классической shell. Сейчас, пожалуй, наибольшей популярностью пользуется командный процессор bash, написанный Брайаном Фоксом и входящий в состав проекта GNU.
Графические оболочки
Графические оболочки, чаще называемые «графические среды», представляют третье поколение в эволюции пользовательских интерфейсов (см. WIMP).
Из личного опыта
Автор присоединяется к существующему в Сети мнению, что универсальность GNOME 3 (как, впрочем и Unity от Canonical), нацеленная более на сенсорные экраны, вносит определенные неудобства при работе на десктопе. Это проявляется, например, в необходимости «возить мышью» через весь экран и увеличении числа кликов при выполнении типовых операций.
- GNOME
- В рамках проекта GNU реализована графическая среда GNOME (GNU Network Object Model Environment). Текущая (на момент написания этой лекции), 3-я версия, позиционируется как универсальное пользовательское окружение как для классических десктопов, так и для сенсорных устройств (например, смартфонов и планшетных ПК).
- KDE
- KDE (изначально — Kool Desktop Environment) — свободная графическая среда для UNIX-подобных операционных систем, основной конкурент GNOME. Построена на основе кросс-платформенной библиотеки Qt. Представляет набор интегрированных приложений для решения типовых задач.
Информацию о каких-либо свободных разработках пользовательского интерфейса 4-го поколения (SILK) найти не удалось. Но учитывая появление таких решений, как например голосовой поиск от Google, можно надеяться, что opensource-разработки в этой области скоро начнут появляться.
CC-BY-CA Анатольев А.Г., 15.02.2012