|
|
|||||||||||||||||||||||||||||
|
Инструменты ОС Linux для разработчиков приложений для ОС Windows. Часть 1. Общие положения и терминологияИсточник: ibmcom
Статья является частью миницикла, знакомящего Windows-программистов с особенностями платформы Linux. В этой вступительной статье были представлены классификация Linux-систем и система терминологии, которые будут использоваться в следующих публикациях. ВведениеВ ходе многочисленных занятий и тренингов, проводимых автором для профессиональных разработчиков ПО, стало заметно, что большую сложность в освоении представляет сама платформа (Windows, Linux), а не конкретные языки программирования (С, С++, Python) или библиотеки (Boost, Qt) для данной платформы. Поскольку значительная часть разработчиков начинала с написания приложений для операционной системы Windows, именно выполнение определённых действий в ОС Linux вызывает затруднения у программистов, впервые переходящих на эту платформу. И чтобы облегчить процесс "обживания" в новой среде, следует чётко выделить ключевые отличия работы в этих двух системах. Стоит ли вообще разработчику ПО затрачивать усилия на освоение платформы Linux? Вне всяких сомнений, так как для этого существует достаточно веских оснований. Во-первых, профессиональное владение Linux значительно повышает востребованность на рынке труда, особенно в последние несколько лет, когда спрос на Linux-разработку возрос. Во-вторых, лёгкость ориентирования в программных инструментах Linux создаёт ту же ясность и относительно всех UNIX-подобных операционных систем, тем самым включая в "пространство приложения сил" и системы Solaris, FreeBSD, NetBSD и, в какой-то степени, MacOS. Наконец, некоторые программные действия в UNIX-подобных операционных системах выполняются логичнее и понятнее, чем в Windows. Именно поэтому обучение программированию во многих университетах мира ведётся в UNIX-среде. А уже осмысленные в UNIX-среде принципы расширяют понимание общих вопросов программирования и помогают перенести полученный опыт и на платформу Windows. В данном цикле статей "Инструменты ОС Linux для разработчиков приложений для ОС Windows" мы попробуем зафиксировать принципиальные отличия, чтобы помочь Windows-программисту в кратчайшие сроки продолжить свою деятельность в Linux с минимальными затратами на освоение нового окружения. Из-за подобной формулировки задачи данная и последующие статьи будут представлять собой, скорее, не цельное изложение, а фрагментированную "памятку" о самых специфических местах, способных доставить много хлопот на начальном этапе работы в Linux. Но надеемся, что с нашей помощью читатели смогут избежать указанных проблем. Терминология и общие принципыНачать обзор следует не с рассмотрения конкретных приёмов работы, а с введения общей терминологии, необходимой для понимания состояния дел при знакомстве с Linux, которую мы будем использовать и в последующих статьях. Операционная система Linux принадлежит к семейству систем, называемых UNIX-подобными или POSIX-совместимыми. Название POSIX (Portable Operating System Interface - мобильный (т.е. переносимый) интерфейс операционной системы), было предложено основателем Фонда свободного программного обеспечения (FSF) Ричард Столмэн. POSIX - это набор из нескольких стандартов, которые периодически обновляются и расширяются. На сегодня POSIX является зарегистрированной торговой маркой комитета IEEE, поэтому официальные тексты стандартов можно приобрести только на коммерческой основе. Но есть и другой источник, который текстуально практически совпадает со стандартами POSIX: The Open Group Base Specifications Issue 7 (см. раздел "Ресурсы"). Если не придерживаться строгой формалистики, то можно считать, что несколько различных стандартов POSIX описывают две стороны таких систем:
Все POSIX-совместимые операционные системы имеют целый ряд общих признаков (помимо 2-ух пунктов, перечисленных выше):
К классу POSIX-совместимых систем принадлежит множество принципиально различающихся ОС: Linux, все ветви BSD (FreeBSD, NetBSD, OpenBSD), Sun/Oracle Solaris, QNX, Minix 3, Mac OS (с некоторыми оговорками) и т.д. Проще будет перечислить системы, непринадлежащие к семейству POSIX - это, например, все системы семейства MS Windows, Plan 9, Inferno, Blue Botle, .... Не все из POSIX операционных систем являются свободными и/или открытыми. Но постепенная миграция, в той или иной степени, в область open source становится общей тенденцией как для самих систем (свободное лицензирование Solaris, Minix 3, открытие программных кодов QNX), так и для огромного множества программных проектов для этих систем. Какие преимущества обеспечивает совместимость со стандартами POSIX для ОС? Полный список преимуществ получился бы очень длинным, поэтому мы упомянем только самые значительные факторы:
Linux в ряду POSIXСегодня ОС Linux - самая известная и распространённая POSIX-совместимая система. Весь программный код того, что в обиходе называется операционной системой Linux поступает из нескольких источников:
Границы между всеми этими составляющими платформы Linux довольно размыты. Существует мнение, что под именем Linux следует понимать только само ядро. Все остальные компоненты (в сотни раз превосходящие ядро по объёмам) - это программное обеспечение пользовательского пространства (утилиты), дополняющее ядро до функционально полной операционной системы, поэтому и саму систему предлагают именовать: GNU/Linux. Это стоит запомнить, но далее мы будем именовать как Linux всю совокупность программного обеспечения самого различного происхождения. Характерной особенностью практически всех POSIX систем является то, что они не являются графическими (GUI) операционными системами (в отличие от ОС Windows). POSIX системы являются текстовыми и рассчитаны на выполнение консольных команд. Вся графическая часть этих систем является надстройкой пользовательского уровня, т.е. самостоятельным приложением (хотя и очень большим), принципиально не отличающимся от простейшего "Hello World!". Любая POSIX система может быть запущена вообще без графического интерфейса, исключительно в текстовом режиме. Графическая подсистема Linux является характерной иллюстрацией разнородности источников происхождения составных частей системы, и поэтому заслуживает отдельного рассмотрения. X Window SystemГрафическая система X Window System (называемая ещё для простоты системой Х11 или просто Х) была разработана в Массачусетском Технологическом Институте (MIT) в 1984 году. Нынешняя (по состоянию на начало 2009 года) версия протокола - X11 - появилась в сентябре 1987. Эта система была создана ещё до появления таких названий как "Linux" или "GNU", и ни сообщество Linux, ни сообщество GNU к развитию своей графической системы не имеют никакого отношения. Система Х11 распространяется на условиях лицензии MIT, ещё более "свободной", нежели лицензия GPL, под которой находится подавляющее большинство программного обеспечения Linux. Реализации Х11 для свободных POSIX-систем (в том числе и Linux) развиваются в составе нескольких независимых проектов. Вплоть до 2004 года наиболее распространённым был проект XFree86. Однако в 2004 году XFree86 поменял условия лицензии, и другой проект - X.Org Server (который является ответвлением от XFree86, но со свободной лицензией) стал де-факто стандартом для реализаций X11. Но если бы сегодня из операционной системы Linux исключить её "внешний" по всем признакам компонент - GUI окружение X11 с его оконными менеджерами, рабочими столами и великим множеством GUI-программ, то система Linux потеряла бы большую часть своих пользователей. Дистрибутивы LinuxПомимо собственно понятия операционной системы Linux, существуют ещё такой уровень градации как дистрибутивы Linux - те формы, в которых операционная система Linux доходит до конечного потребителя. Во всех дистрибутивах Linux исходный код ядра един и не может быть отличным по принципам и правилам построения системы Linux, так как тогда это уже будет другая операционная система, и она должна будет называться по-другому. Так же совпадает и состав основных системных утилит. В принципе, дистрибьюторы, как правило, в большей или меньшей степени вносят некоторые изменения в код ядра ("патченное ядро"). Чаще всего это дополнения, не принятые в официальную ("ванильную") версию ядра его командой разработчиков. Иногда это дополнения, опубликованные позже даты выпуска официального ядра, или более поздние "заплатки", закрывающие обнаруженные в ходе эксплуатации "дыры" в системе безопасности ядра. Поэтому ядро конкретного дистрибутива может всё же в некоторых деталях отличаться от официального. Сообщество дистрибьюторов является ещё одной движущей силой развития системы Linux, кроме упомянутых выше. Дистрибьюторы отбирают программы и компоненты, которые, по их мнению, должны включаться в комплект поставки. Так появляются различные дистрибутивы. Одновременно существует до нескольких сот различных дистрибутивов Linux, и такое их количество лучше всего подтверждает мнение, что различные дистрибутивы имеют потребительские отличия, но не имеют различий в базовой функциональности. Всё, что можно сделать в одном дистрибутиве, можно сделать и во всех остальных - это одна и та же операционная система Linux. Основные отличительные черты дистрибутивов (дистрибьюторы называют заметно больше отличительных признаков, но они вытекают из этого набора основных):
В порядке справки перечислим только самые популярные группы дистрибутивов (оценочные цифры числа дистрибутивов в группе собраны по состоянию на май 2011г.):
Это только несколько ключевых игроков из широкого набора существующих дистрибутивов. ЗаключениеВ этой вступительной статье мы провели некоторую классификацию Linux-систем и ввели систему терминологии, на которую будем опираться в дальнейшем изложении. Проделав некоторую систематизацию, далее мы можем перейти к вычленению тех сторон Linux, которые в наибольшей степени отличаются от своих аналогов в среде Windows. Беглому поочерёдному разбору таких отличительных сторон и будет посвящено всё последующее описанию. (Беглое - поскольку детальному описанию таких сторон посвящены не одна книга, но в степени, достаточной для начала практической работы).
|
|