Спо специальное программное обеспечение. Специальное программное обеспечение

  • 17.12.2021

Под термином специальное программное обеспечение (СПО) принято понимать категорию программ, которые разработаны и созданы для решения задач определенного класса. Такой софт принято создавать или модернизировать под конкретное предприятие, с учетом его специфики и особенностей деятельности, а также в зависимости от поставленных задач. Это может быть комплекс, направленный на поддержку принятия решений должностными лицами, который облегчает процесс анализа и выбора оптимального пути. В любом случае специальное программное обеспечение работает по заложенным в него алгоритмам, которые ранее прошли проверку и апробирование своей работоспособности.

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

Что входит в СПО

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

  • Управленческих;
  • Информативных;
  • Вспомогательных.

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

Разрабатываются такие программные комплексы на языках программирования высокого уровня. В результате они представляет собой свод программ, которые должны комплексно выполнять поставленные специальные задачи. Другими словами можно сказать, что специальное программное обеспечение создается под определенный класс специфичных задач. И рынок ПО чаще всего не имеет адекватного готового решения «в коробке» для задач данного класса.

Основные составляющие СПО

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

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

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


Преимущества свободного программного обеспечения (СПО, OSS). Почему ведущие мировые корпорации выбирают СПО.

Почти незаметно в течение последних пары лет в России началась технологическая революция в области программного обеспечения. Все больше государственных предприятий и частных компаний открывают для себя OSS (Open Source Software), в России более известное как СПО (Свободное Программное Обеспечение) . И все чаще эта аббревиатура звучит в контексте борьбы с контрафактным программным обеспечением, а также снижением расходов бюджета IT .

Что же скрывается за аббревиатурой СПО? В переводе на обычный человеческий язык это означает, что, помимо коммерческих программ, для использования которых необходимо приобретать дорогостоящие лицензии, существуют бесплатные аналоги популярнейших программ, которые можно свободно скачать из Интернета и установить на свой компьютер, абсолютно легально и не платя лицензионных отчислений. Другими словами, установка СПО на предприятиях позволяет полностью устранить как экономические, так и репутационные риски, связанные с использованием контрафактного программного обеспечения на предприятии. Это очень актуально для современного бизнеса, учитывая все увеличивающееся количество уголовных дел и крупнейшие штрафы, связанные с нарушениями в сфере лицензирования на предприятиях.

На текущий момент СПО предлагает широчайший выбор качественного программного обеспечения, начиная от операционных систем и офисных программ и заканчивая профессиональными программами для обработки аудио, фото и видеоматериалов . Многие транснациональные корпорации, крупнейшие международные компании, а также государственные учреждения и правительственные организации во всем мире широко используют СПО в своей повседневной деятельности, что позволяет им экономить миллиарды долларов ежегодно. Судите сами: Google, IBM, BMW, Volvo, Unilever, Continental Airlines, Starwood Hotels, Yandex, Приватбанк и еще огромнейший список коммерческих компаний и банков используют СПО.

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

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

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

Сегодня СПО является одним из самых динамически развивающихся секторов IT-индустрии. На текущий момент современный мир уже не мыслим без использования СПО: порядка 85% информационных ресурсов сети Интернет работает под управлением СПО. Вполне возможно, что вы используете СПО прямо сейчас и сами того не подозревая: например, операционная система мобильного телефона (Android), компьютер вашего автомобиля, даже некоторые продвинутые модели холодильников - все эти предметы для своего функционирования используют отдельные модули СПО.

Если вы заинтересованы в защите и развитии своего бизнеса, то наступило время пристальнее присмотреться уже сегодня к завтрашним технологиям!
Многие предприятия и государственные органы уже сейчас могли бы экономить колоссальные ресурсы вследствие перевода на СПО своих рабочих мест и серверов, но, к сожалению, в нашей стране пока очень мало специалистов, работающих с альтернативным ПО. Да и стоимость их работы обычно выше стоимости услуг классических системных администраторов Windows. Доверять же процесс перевода на СПО своего бизнеса в руки непрофессионалов не согласится ни один здравомыслящий руководитель, и до недавнего времени это было одной из главных причин малой распространенности СПО в провинции. Но ситуация понемногу меняется.

Поэтому если вы думаете о сокращении расходов на бюджет IT-отдела либо переживаете за защищенность вашей информации и баз данных, хотите значительно снизить затраты и минимизировать риски, то СПО - это однозначно ваш выбор!

Свободное программное обеспе́чение (СПО , англ. free software , также software libre или libre software ), свободный софт - программное обеспечение , пользователи которого имеют права («свободы») на его неограниченную установку, запуск, свободное использование, изучение, распространение и изменение (совершенствование), а также распространение копий и результатов изменения . Если на программное обеспечение есть исключительные права, то свободы объявляются при помощи свободных лицензий .

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

Однако технология производства компьютеров развивалась не менее активно, чем программное обеспечение для них. В 1970-е годы существовало огромное разнообразие различных архитектур вычислительных машин, различавшихся также производительностью и ценой. Естественно, для каждой архитектуры приходилось разрабатывать отдельный набор программного обеспечения. С середины 1970-х в большинстве американских университетов для академических разработок использовались компьютеры архитектуры PDP-10 , что позволяло сотрудникам разных университетов использовать разработки друг друга на своих машинах. Сотрудники лаборатории искусственного интеллекта (MIT) в конце 1970-х разработали для PDP-10 собственную операционную систему ITS (Incompatible Timesharing System - несовместимая система с разделением времени) и очень большой набор программ для неё. Исходные тексты написанных в MIT программ были общедоступны, сотрудники других университетов пользовались их исходными текстами и присылали им исправления, всё программное обеспечение в этих лабораториях было полностью академическим.

Введение ограничений для ПО

В условиях огромного многообразия архитектур компьютеров программное обеспечение составляло неотъемлемую часть самой машины, причём далеко не самую дорогостоящую часть. Производители компьютеров поставляли их вместе с основным программным обеспечением - по крайней мере, [ ] с операционной системой . Производство компьютеров было наукоёмким, но в основе своей коммерческим предприятием.

В ситуации, когда [прояснить ] программное обеспечение является объектом продажи наравне с предметами обихода, на него распространяются уже не только законы научной разработки, но и свойства материальных предметов, которыми можно торговать, обмениваться, право владения и пользования которыми стоит охранять законодательно. [нейтральность? ] Так программное обеспечение попало в разряд интеллектуальной собственности: то есть исходный текст программы стал рассматриваться как произведение.

Чтобы защитить [неизвестный термин ] свои интересы, производители компьютеров и программного обеспечения используют лицензии - вид договора между обладателем авторских прав и пользователем (покупателем) программного обеспечения. Подобные договоры заключались и с университетами: например, университету передавались исходные тексты программ и право их изменять, но запрещалось распространять их за пределами университета. Подобные ограничения означали, что тексты соответствующих программ не могли открыто обсуждаться в сообществе, то есть не существовали для научной разработки. Были у компьютеров и программного обеспечения покупатели и вне академической среды - например, банки. Таким пользователям [ ] не столь важно получить исходные тексты программ, они заинтересованы в программном обеспечении как в законченном продукте и готовы платить деньги за надёжные и удобные программы.

Однако компьютеры развивались очень быстро, и бывшие вполне современными в 1970-е PDP-10 к началу 1980-х уже устарели и значительно отставали по производительности от более современных машин. Однако ни для одной из новых архитектур уже не было операционной системы и прочего программного обеспечения, разработанного исключительно в академической среде и по её правилам. Теперь университеты должны были покупать новые компьютеры с новым программным обеспечением и выполнять условия лицензии, ограничивающей их права на разработку и распространение ПО - иначе говоря, ограничивающей возможность научной модели разработки и распространения программного обеспечения.

В это время в лаборатории искусственного интеллекта MIT разрабатывались так называемые LISP-машины , умевшие на аппаратном уровне интерпретировать язык программирования, похожий на LISP - развитый и перспективный язык программирования. На LISP же была написана операционная система для таких машин и всё программное обеспечение для них. В начале 1980-х некоторые сотрудники лаборатории искусственного интеллекта выкупили у MIT права на LISP-машины и математическую систему Macsyma и основали собственные коммерческие компании для дальнейшей разработки в этой области. Очень многие сотрудники лаборатории перешли работать в эти компании, после чего все их дальнейшие разработки уже становились закрытыми для научного сообщества. Новые LISP-машины распространялись с лицензиями, запрещающими пользователям модифицировать и распространять исходные тексты программ. Программы, которые раньше для сотрудников MIT были аналогом научных публикаций, стали принадлежащим кому-то продуктом.

Одному из сотрудников, оставшихся в лаборатории искусственного интеллекта MIT, Ричарду Столлману , такое положение дел казалось недопустимым нарушением открытого научного процесса разработки программного обеспечения. Он в одиночку пытался в рамках прежней академической модели развивать LISP-машины и открыто реализовывать изменения, аналогичные сделанным в рамках закрытой коммерческой разработки, чтобы LISP-машины MIT могли конкурировать с аналогами. Конечно, эта попытка угнаться за активной разработкой целой компании была обречена на неудачу.

Тогда в поисках единомышленников Ричард Столлман создаёт некоммерческую организацию «Фонд свободного программного обеспечения ». Своей основной целью Фонд ставит сохранение программного обеспечения, процесс разработки которого всегда будет гарантированно открытым, а исходные тексты всегда доступны. Более масштабная цель Фонда - разработка операционной системы, целиком состоящей из открыто разрабатываемого программного обеспечения. Декларируя такую цель, Столлман, фактически, хотел вернуть представлявшееся ему идеальным состояние, когда в MIT работали в собственной операционной системе для PDP-10.

Операционная система, разрабатываемая в рамках Фонда, должна была стать совместимой с операционной системой UNIX . К началу 1980-х UNIX очень широко использовался, в том числе и в академической среде. Для этой операционной системы существовало много программ, свободно распространявшихся в научном сообществе, поэтому хотелось, чтобы эти программы работали и в новой - свободной - операционной системе. Эта будущая операционная система получила название GNU .

Фонд свободного ПО в прошлом делил несвободное ПО на полусвободное (такое, которое отличается от свободного лишь запретом на коммерческое использование) и проприетарное (собственническое, англ. proprietary ) (которое не имеет всех четырёх свобод, даже если коммерческое использование разрешено); но это разделение более не используется.

Иногда к несвободному ПО относят и всё «коммерческое ПО », считая свободное ПО видом бесплатного, однако это неверно: получать выгоду от программы можно не только продажей несвободных лицензий.

Определение свободного ПО

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

  • Программу можно свободно использовать с любой целью («нулевая свобода »).
  • Можно изучать, как программа работает, и адаптировать её для своих целей («первая свобода »). Условием этого является доступность исходного текста программы.
  • Можно свободно распространять копии программы - в помощь товарищу («вторая свобода »).
  • Программу можно свободно улучшать и публиковать свою улучшенную версию - с тем, чтобы принести пользу всему сообществу («третья свобода »). Условием этой третьей свободы является доступность исходного текста программы и возможность внесения в него модификаций и исправлений.

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

Только удовлетворяющая всем четырём перечисленным принципам программа может считаться свободной программой, то есть гарантированно открытой и доступной для модернизации и исправления ошибок и дефектов, и не имеющей ограничений на использование и распространение. Нужно подчеркнуть, что эти принципы оговаривают только доступность исходных текстов программ для всеобщего использования, критики и улучшения, и права пользователя, получившего исполнимый или исходный код программы, но никак не оговаривают связанные с распространением программ денежные отношения, в том числе не предполагают и бесплатности . В англоязычных текстах здесь часто возникает путаница, поскольку слово «free» по-английски означает не только «свободное», но и «бесплатное», и нередко употребляется по отношению к бесплатному программному обеспечению , которое распространяется без взимания платы за использование, но недоступно для изменения пользователями и сообществом, потому что его исходные тексты не опубликованы. Такое бесплатное ПО вовсе не является свободным. Наоборот, свободное ПО вполне можно распространять (и распространяют), взимая при этом плату, однако соблюдая при этом критерии свободы: каждому пользователю предоставляется право получить исходные тексты программ без дополнительной платы (за исключением цены носителя), изменять их и распространять далее. Всякое программное обеспечение, пользователям которого не предоставляется такого права, является несвободным - независимо от любых других условий.

Open source software

Открытый доступ к исходным текстам программ является ключевым признаком свободного ПО, поэтому предложенный несколько позднее Эриком Реймондом термин (ПО с открытым исходным текстом) некоторым представляется даже более удачным для обозначения данного феномена, чем изначально предложенный Столлманом «free software». Столлман настаивает на различии этих двух понятий, так как слова open source указывают лишь на наличие одного, не самого важного (хотя и необходимого для реализации двух из четырёх свобод), по его мнению, из свойств, присущих свободному ПО - возможности увидеть исходный код.

Основная общественная лицензия GNU

Сообщество разработчиков и пользователей

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

Взаимопомощь

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

Пользователь свободно распространяемой программы не получает вместе с ней никаких гарантий: автор сделал её исходный текст открытым для общества, но при этом не взял на себя обязательств объяснять всем, как работает программа. Хотя справедливости ради стоит заметить, что любая несвободная программа в 99 % случаях тоже поставляется «как есть» и без гарантий. Поскольку сообщество пользователей большинства программ распределено по всему миру, для организации взаимодействия в нём наиболее активные пользователи (а зачастую и сами авторы) организуют (реже - используют существующие) списки рассылки , форумы и другие средства общения в Интернете . Для накопления и рубрикации информации по программе (в частности, списков часто задаваемых вопросов (ЧаВо ; англ. FAQ - frequently asked questions), а также организации более сложных форм взаимодействия (совместной разработки, систем отслеживания ошибок) создаются веб-сайты , посвящённые программам.

Исправление ошибок

В любой достаточно сложной программе непременно имеются ошибки и дефекты, количество которых обычно неизвестно. Многие крупные производители ПО создают и оплачивают работу отдела контроля качества (QA - Quality assurance), который контролирует соответствие процесса разработки ПО определённым требованиям, выполнение которых позволяет снизить вероятность появления ошибок в ПО (например, требованиям стандарта DO-178B, который применяется при разработке ПО для авиационных систем). Тем не менее, в настоящее время отсутствуют методы, позволяющие полностью гарантировать отсутствие ошибок в достаточно сложном ПО (существуют формализованные критерии сложности ПО).

Пользователь закрытой частной программы, столкнувшись с ошибкой, не всегда может выявить её причину и исправить ошибки (поскольку ему недоступны ни исходные тексты программы, ни даже отладочная информация), но, скорее всего, способен описать ошибку и условия, в которых она происходит.

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

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

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

У типичной свободной программы (то есть, некоммерческой и/или разрабатываемой небольшой компанией или частным лицом) обычно нет оплачиваемого отдела контроля качества. Значит, пользователь может столкнуться с ещё большим количеством ошибок, чем в типичной коммерческой проприетарной программе. Тем актуальнее для него возможность сообщить об ошибке разработчикам программы. Раньше в сопровождающей программу документации было принято указывать электронный адрес, по которому разработчики принимали сообщения об ошибках (bug report). Некоторые вводили стереотипную форму для таких сообщений, чтобы облегчить и автоматизировать их обработку. Уже это требует существенно более высокой связности сообщества во всём мире, существенно большей, чем достаточно для закрытой разработки.

Разработчики и контролёры‐испытатели проприетарного продукта могут ходить на службу в один и тот же офис и там обмениваться информацией или тратить определённую долю рабочего времени на составление и анализ строгих отчётностей, содержащих сообщения об ошибках и рапорты об устранении неисправностей. Такая организация труда эффективна, если круг разработчиков невелик, а ввести общую дисциплину относительно легко. Для открытого же проекта круг и взаимное расположение потенциальных разработчиков не ограничены ничем, поэтому эффективность разработки в гораздо большей степени зависит от того, насколько просто всем членам сообщества договариваться между собой, а также от «сознательности» пользователей.

Простому и упорядоченному приёму и перенаправлению сообщений об ошибках служат системы отслеживания ошибок (bug tracking system), самые известные из которых разработаны участниками больших проектов для себя, а благодаря свободным лицензиям используются повсеместно. Таковы GNUTS (разработанная в GNU), Bugzilla (Mozilla Foundation), JitterBug (проект Samba) или Debian BTS. Более ранние версии ориентируются на электронную почту, более поздние включают в себя web-интерфейс. Например, при помощи Bugzilla организуется сайт в Интернете , на котором пользователь может заполнить форму сообщения об ошибке. Каждое сообщение имеет свой номер, по которому можно попасть на «персональную» страницу данной ошибки, где отражаются все происходящие по её поводу события, от первоначального сообщения (открытия) до исправления (закрытия). При каждом изменении в состоянии ошибки Bugzilla рассылает всем заинтересованным лицам (включая, естественно, сообщившего об ошибке и занимающихся данной программой разработчиков) письма по электронной почте. Поскольку Bugzilla позволяет оставлять комментарии и прикладывать файлы, она является полноценным средством для общения пользователя с разработчиком по поводу ошибки в программе.

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

Чтобы облегчить и автоматизировать процесс внесения исправлений, Ларри Уолл в 1984 году разработал утилиту patch («заплатка»), которая в формализованном (но хорошо понятном человеку) виде описывает операции редактирования, которые нужно произвести, чтобы получить новую версию текста. С появлением этой утилиты пользователь, обнаруживший и исправивший ошибку в программе, мог прислать автору небольшую заплатку, по которой автор мог понять, какие изменения предлагаются, и автоматически «приложить» их к своему исходному тексту. С появлением утилиты patch гораздо больше пользователей стало включаться в разработку программ с доступным исходным текстом, немалую роль и здесь сыграла сеть Usenet . В конце концов, данный способ исправления стал общеупотребительным и применяющимся не только к исходному коду программы, но и непосредственно к скомпилированному исполнимому коду в случае закрытого ПО, а слово «патч» стало нарицательным . Патчи (файлы-заплатки с исправлениями) - обязательный атрибут сегодняшней разработки любых программ любой сложности.

Если пользователю программы не хватает в ней какой-то функции, то при должной квалификации он вполне может запрограммировать её сам и включить в исходный текст программы, либо заплатить за это кому‐то ещё. Естественно, ему выгодно, чтобы его дополнение попало в «главный», авторский вариант программы (его называют upstream) и появлялось во всех последующих версиях: можно точно так же оформить его в виде патча и выслать автору. Этой возможности лишён пользователь несвободной программы, даже если он достаточно квалифицирован. Единственный способ включить в программу нужную ему функцию - обратиться к производителю (если программа проприетарная) с соответствующей просьбой и надеяться, что производитель сочтёт предложенную функцию действительно необходимой.

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

Написать большую программу в одиночку довольно сложно и даже не всегда возможно, особенно если автор занимается этим в свободное от работы время. Большинство современных свободных программ пишется группой разработчиков. Даже если начинал писать программу один человек и она оказалась интересной, к разработке могут присоединиться активные пользователи. Чтобы они могли не только вносить отдельные исправления, но и вообще всю разработку вести совместно, нужны специальные инструменты. Помимо патчей, для организации совместной разработки ПО применяются системы управления версиями . Функции системы контроля версий состоят в том, чтобы организовать доступ к исходным текстам программы для нескольких разработчиков и хранить историю всех изменений в исходных текстах, позволяя объединять и отменять изменения и пр. Самая ранняя свободная система управления версиями - RCS - использовалась ещё на заре свободного ПО абонентами сети Usenet, затем на смену ей пришла более развитая CVS , но сегодня и она считается во многом устаревшей и всё чаще заменяется Subversion , Git и другими.

Нужно заметить, что преимущества свободной разработки для пользователя не следует преувеличивать. Не все свободные программы в равной степени доступны для изменения пользователям, и это совершенно не связано с лицензией на их распространение. Важный фактор здесь - объём программы: если в ней десятки тысяч строк (как, например, в OpenOffice.org), то даже квалифицированному пользователю потребуется слишком много времени, чтобы разобраться, что к чему. Рассчитывать же на то, что разработчики ответят на все замечания и предложения пользователя немедленным исправлением программы, тоже нельзя, поскольку они не несут перед пользователем никаких обязательств по качеству программы. В этом отношении пользователь проприетарной коммерческой программы может оказаться в лучшем положении (хотя обязательства её разработчика обычно также обусловлены лишь законами, а не его волей).

Очень многие свойства сообщества разработчиков и пользователей свободных программ проистекают из того, что все его участники обычно занимаются этой программой из интереса или потому, что эта программа - необходимый для них инструмент (например, зарабатывания денег или по другой причине). Время, потраченное ими на программу, не оплачивается, поэтому нет никакой надежды, что обстоятельства не переменятся и разработка не прекратится вовсе. Нередки случаи, когда разработка программы начинается благодаря одному автору-энтузиасту, который привлекает многих к участию в разработке, а потом энтузиазм лидера гаснет, а вместе с ним затухает и разработка. Сегодня существуют тысячи программ, так никогда и не достигших версии 1.0, хотя «выгорание» лидеров и не единственная этому причина. Кроме того, программа может быть необходимой, но «неинтересной», а потому не найдётся и свободных разработчиков.

Место свободных программ на сегодняшнем рынке ПО очень значительно, и многие коммерческие и государственные предприятия используют свободное ПО прямо или опосредованно. Собственно, опосредованно все пользователи Интернета задействуют, например, свободную программу BIND , предоставляющую службу DNS . Многие организации, особенно предоставляющие услуги через Интернет, используют свободный web-сервер Apache , от работы которого непосредственно зависит их прибыль, не говоря уже о серверах на платформе Linux . Главный недостаток с точки зрения коммерческого пользователя: разработчики свободных программ не несут никаких обязательств по качеству программы, кроме моральных. Поэтому, сегодня большие корпорации, например, Intel или IBM , находят необходимым поддерживать проекты по разработке свободного ПО, оплачивая сотрудников, которые работают в рамках этих проектов.

Философия

В европейской культуре долго вырабатывались правила собственности по отношению к материальным ценностям. И вполне логично, что эти правила были распространены на ценности нематериальные - в том числе и на программные продукты, когда они начали представлять самостоятельную ценность. [нейтральность? ] Однако, у программных продуктов есть принципиальное отличие от материальных объектов - их можно легко копировать. Создание же копии материального продукта часто почти равно затратам на создание оригинала.

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

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

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

Существует и точка зрения противников вышесказанного. Так, например, последовательная легализация theft of services означает бесплатность всех услуг, что означает скорее всего содержание всей этой сферы госбюджетом, а в таковом случае, во-первых, за услуги платят все налогоплательщики из своих налогов, причем без рыночного механизма влияния потребителя на производителя («кушай что дают»), во-вторых, это отвлекает госсредства от задач национальной важности, в-третьих, отсутствие рыночной конкуренции приведет к нивелированию качества всех услуг к некоему дешёвому и не очень качественному минимуму (возможно даже возложение части оказания услуги на потребителя в виде «доделай сам»). Все то же самое относится и к идее тотальной бесплатности всего ПО.

Несвободные программы называют «проприетарными » (от англ. proprietary ) или «собственническими». Иногда их неправильно называют просто «коммерческими », что неверно: получать выгоду от программы можно различными способами и многие успешные свободные проекты это подтверждают.

Миграция на свободное ПО

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

Распространённость свободного и открытого ПО

Не специализирующиеся на компьютерной тематике СМИ , как правило, отождествляют открытое и свободное ПО, используют их как синонимы. Поэтому данные по распространённости открытого и свободного ПО обычно приводятся вместе.

СПО активно используется в Интернете. Например, самый распространённый веб-сервер Apache является свободным, Википедия работает на MediaWiki , также являющемся свободным проектом.

СПО используется в Министерстве юстиции Бельгии, в котором уже половина компьютеров работает под управлением Linux , и полицией Франции, которая к 2014 году планирует полностью перейти на Ubuntu Linux . О переходе на программное обеспечение с открытым исходным кодом объявило также Патентное ведомство Нидерландов. Перевести все компьютеры этого учреждения на свободное ПО планируется до конца 2009 года .

Программа перехода на СПО была успешно реализована в Мюнхене . Аналогичная программа имела место в Берлине , но впоследствии было принято решение использовать гибридную инфраструктуру из коммерческого и свободного программного обеспечения.

Свободное программное обеспечение в России

Свободное программное обеспечение, в любом случае, может свободно устанавливаться и использоваться на любых компьютерах. Использование такого ПО свободно везде: в школах, офисах, вузах, на личных компьютерах и во всех организациях и учреждениях, в том числе, и на коммерческих и государственных, в России и в странах СНГ .

В учреждения Министерства Обороны России, а также в российских посольствах в других странах используется операционная система МСВС . Данная ОС, сделанная на основе Red Hat Linux с незначительными изменениями, не является свободным ПО, её исходные коды закрыты.

В начале 2012 года около 22 тыс. рабочих мест в поликлиниках Москвы планировалось [

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

Важный момент, который не все понимают, состоит в том, что бесплатное ПО является таковым лишь по видимости. Сопровождение таких программ сложнее и требует более высокой квалификации (а точнее, существенно иной, чем в случае Windows). По понятным причинам специалистов по СПО меньше, а оплата их в среднем выше. Поэтому в системах, где ПО приходится часто обновлять или модернизировать (скажем, в связи с обновлением «железа»), устранять последствия сбоев и решать проблемы пользователей, общая цена вопроса за все время эксплуатации может быть примерно одинаковой (правда, правильно настроенный под конкретный компьютер, Linux может потом работать годами, не требуя даже обновлений).

Но даже цена вопроса, измеряемая в деньгах на приобретение и эксплуатацию ПО, - лишь верхушка айсберга, особенно если речь идет об образовательных целях. Нередко говорят о том, что учеников привязывают к продукции определенного и притом иностранного производителя, что, конечно, чистая правда. Справедливости ради отметим, что некоторые продукты Microsoft и в самом деле являются непревзойденными по качеству и функциональности - это прежде всего относится к Word, ставшему стандартом де-факто для широчайшего круга задач в области подготовки документов. Но на самом деле никто не будет обучать школьников в массе именно тем специфическим задачам, в которых Word на голову превосходит всех конкурентов, а для обучения простому набору текстов и их форматирования подойдет любой другой редактор, и даже лучше, если не такой «навороченный».

А вот для обучения собственно информатике (т.е. обращению с компьютером и программами) проприетарные продукты подходят гораздо хуже любого СПО. Потому что СПО можно «крутить» так и этак и настраивать, как хочешь. Можно свободно изучать его внутреннюю структуру, и при желании модернизировать ее под свои нужды. Это рай для любителей «узнать, что там внутри - вата или опилки» (Н. Носов. «Незнайка в Солнечном городе»), чем на определенном этапе отличаются многие дети. Поэтому СПО - потенциально более подходящая для педагогических целей среда, чем ПО проприетарное. Если мы, конечно, все еще хотим воспитывать не бездумных потребителей, а людей с какими-то творческими задатками.

Против СПО часто выдвигают тот аргумент, что выйдя за пределы школы, ученик все равно неизбежно окунается в мир Windows, и якобы знания, полученные им, окажутся бесполезными. Это не так: во-первых, базовые навыки везде одинаковые, и умея применять их творчески (чему СПО учит в гораздо большей мере), ученик окажется на голову выше сверстников, не получивших такой возможности. Во-вторых, в мире уже есть прецедент: в недалеком прошлом в 60% американских школ стояли компьютеры Apple (и сейчас их роль в образовательной среде остается большой). Как видите, необходимость переучиваться на Windows потом (или, что еще проще, одновременно - приходя домой) совершенно не вызывает у американских школьников никаких проблем. Более того, необходимость работать в разных средах развивает кругозор куда лучше, чем унылая обязаловка единственной системы.

Есть и другой аргумент «за» СПО - это безопасность государства. Государственные интересы заставляют задуматься о том, чтобы слезть с иглы иностранного монополиста и перейти на СПО в госсекторе (как это уже сделано в Китае). И эта задача значительно бы облегчилась, если бы людей со школы приучали, как выражается фирма Apple, «думать иначе».

    Понятие системного программного обеспечения и прикладного программного обеспечения. Отличие СПО и ППО. Кольцевая схема вычислительной системы.

Систе́мное програ́ммное обеспе́чение - это комплекс программ, которые обеспечивают эффективное управление компонентами компьютерной системы, такими как процессор, оперативная память, устройства ввода-вывода, сетевое оборудование, выступая как «межслойный интерфейс», с одной стороны которого аппаратура, а с другой - приложения пользователя.

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

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

    Основное СПО и СПО сервиса. Примеры.

Основное (базовое) СПО поставляется вместе с компьютером и обеспечивает его работоспособность. В состав Базового СПО входят

    BIOS – «базовая система ввода-вывода» - реализованная в виде микропрограмм часть системного программного обеспечения, которая предназначается для предоставления операционной системе API для доступа к аппаратуре компьютера и подключенным к нему устройствам.

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

    Операционная оболочка – интерпретатор команд ОС, обеспечивающий интерфейс для взаимодействия пользователя с функциями системы.

В общем случае, различают оболочки с двумя типами интерфейса для взаимодействия с пользователем: текстовый пользовательский интерфейс (TUI) и графический пользовательский интерфейс (GUI).

    Сетевые программные средства.

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

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

    Драйверы – это специальные программы, обеспечивающие взаимодействие ОС с аппаратными устройствами.

    Программы диагностики работоспособности компьютера позволяют проверить конфигурацию ПК, выявить дефекты дисков и предотвратить потерю данных, хранящихся на дисках.

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

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

    Программы архивирования данных , которые обеспечивают процесс сжатия информации в файлах с целью уменьшения объема памяти для её хранения.

    Программы обслуживания сети .

    Понятие операционной системы. Функции ОС.

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

Функции :

    Управление работой каждого блока ПК и их взаимодействием.

    Управление выполнением программ.

    Организация хранения информации во внешней памяти.

    Взаимодействие пользователя с компьютером, то есть поддержка интерфейса пользователя.

    Обзор современных ОС. Классификация.

Операционные системы различаются особенностями реализации алгоритмов управления ресурсами компьютера, областями использования.

По способу управления различают ОС:

    Неграфические ОС (командные) предполагают ввод пользователем команд с клавиатуры в поле командной строки. (MS DOS)

    Графические ОС (объектно-ориентированные) где весь экран доступен для управления, основное средство управления - мышь. (Windows)

По числу одновременно выполняемых задач ОС делятся на:

    Однозадачные - способны выполнять в одно и то же время не более одной задачи. (MS DOS)

    Многозадачные - позволяют запустить одновременно несколько программ, которые будут работать параллельно. (Windows, OS/2, UNIX)

По числу одновременно работающих пользователей на ЭВМ ОС делятся на:

    Однопользовательские – предназначенные для обслуживания одного клиента. (MS DOS)

    Многопользовательские – рассчитаны на работу с группой пользователей одновременно (Windows, UNIX). В многопользовательских ОС каждый пользователь настраивает для себя интерфейс пользователя, т.е. может создать собственные наборы ярлыков, группы программ, задать индивидуальную цветовую схему, переместить в удобное место панель задач и др. В многопользовательских ОС существуют средства защиты информации каждого пользователя от несанкционированного доступа других пользователей.

    Понятие ресурса вычислительной системы. Виды ресурсов ВС.

Ресурс – всякий объект, который может распределяться внутри системы.

Вычислительная система (ВС) – это взаимосвязанная совокупность аппаратных средств вычислительной техники и программного обеспечения, предназначенная для обработки информации.

Вычислительная система обладает четырьмя ресурсами:

    Информация (данные и программы).

    Процессор.

  1. Внешние устройства.

    Функции управления ресурсами.

Функции управления:

    Отслеживание состояния.

    Решение о выделении ресурса.

    Выделение ресурса.

    Освобождение ресурса.

    Понятие процесса. Управление процессами. Способы диспетчеризации процессов.

Процесс – часть задания, которая выполняется на отдельном устройстве.

Существуют 2 вида процессов:

    Процессы вычислений – быстрые процессы, развиваются на процессоре.

    Процессы ввода-вывода – медленные процессы, развиваются на внешних устройствах.

Функции управления :

1. Отслеживание состояния занятости процессора каким-либо процессом (какое время и в каком режиме);

2. Решение о выделении времени процессора какому-либо процессу на основе какой-либо стратегии;

3. Выделение процессорного времени;

4. Освобождение процессора от процесса.

Диспетчеризация – задача динамического кратковременного планирования (тактика).

Способы (диспетчеризации): обычно создаются очереди процессов:

    FCFS – прямая очередь.

2) SJN – Для каждого задания должны быть определены потребности во времени процессора. Только одна очередь – очередь процессов, готовых к выполнению, т.е. те задания, которые были заблокированы по вв/выв, снова помещаются в очередь наравне с новыми.

3) SRT -следующее задание требует меньше времени.

Здесь используется разница между временем, требуемым и временем уже полученным. Если используется однопользовательская система, но с мультипрограммированием, желательно, чтобы фоновые задания получали меньше времени, чем активные.

    RR - карусель с квантами. Существует одна очередь, если все задания имеют одинаковый приоритет. Если приоритет разный, то будет организация нескольких очередей.

    Управление памятью.

Существует 7 основных стратегий распределения ОП:

    Одиночное распределение

Идея: вся доступная память выделяется одному заданию (процессу).

Область, не занятая ОС будет выделена заданию пользователя; если объем доступной памяти больше объема задания, то появится фрагмент.

    Распределение разделами

Идея: Разделить область доступных адресов ОП на куски – разделы. Каждый раздел содержит адресное пространство только одного задания целиком.

Различают статическое и динамическое распределение.

Статическое – выделяется раздел, а потом поступает задание.

Динамическое – сначала поступает задание, а потом выделяется раздел.

    Выделение перемещаемыми разделами

Идея: Выделять для выполнения задания разделы и перемещать их для того, чтобы освободить требуемый объем ОП и получить смежное пространство адресов для размещения очередного задания.

    Страничное выделение

Идея: Разбить адресное пространство задания и физической ОП на куски одинакового постоянного размера, которые называются страницами и блоками соответственно.

    Страничное выделение по запросу

Идея: Размещать в ОП только те страницы, которые необходимы в данный момент, а все остальные подгружать в ОП из внешней памяти по запросу.

    Сегментное распределение

Идея: Разбить адресное пространство задания на логически законченные куски переменного размера, называемые сегментами. ОП будет выделяться под сегмент.

Преимущества

Недостатки

1. Отсутствие фрагментации

1. Возможно явление «пробуксовки»

2. Реализация ВП, но сегмент должен загружаться целиком

2. Существует ограничение на размер сегмента (он должен быть меньше доступной ОП)

3. Совместное использование сегментов

5. Динамическое расширение сегментов

6. Управляемый доступ к сегменту

    Странично-сегментное распределение

Идея: Адресное пространство задания разбивается на логически законченные сегменты, а сегменты разбиваются на куски фиксированного размера – страницы. Страницы получают блоки физической памяти.

    Устройства. Виды устройств. Драйверы устройств.

Устройство - искусственный объект, имеющий внутреннюю структуру, созданный для выполнения определённых функций.

Устройства ввода: клавиатура, мышь, микрофоны, сканеры, графические планшеты.

Устройства вывода: мониторы, колонки, принтеры, плоттеры, виртуальные манипуляторы.

Драйвер устройства – программа ОС для управления работой периферийных устройств: дисководами, дисплеем, клавиатурой, мышью, принтером.

Функции драйвера устройств:

    Прием и обработка запроса, который поступает к данному периферийному устройству.

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

    Обработка сигнала прерывания, который поступает от соответствующего этому драйверу периферийного устройства.

    Понятие виртуальности. Понятие логического диска.

Виртуальное устройство – моделирование одного физического устройства в несколько логических.

Достоинства и недостатки:

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

–: дополнительная схема управления.

Логический диск или том - часть долговременной памяти компьютера, рассматриваемая как единое целое для удобства работы. Термин «логический диск» используется в противоположность «физическому диску», под которым рассматривается память одного конкретного дискового носителя.

Для операционной системы не имеет значения, где располагаются данные - на лазерном диске, в разделе жёсткого диска, или во флеш-памяти. Для унификации представляемых участков долговременной памяти вводится понятие логического диска.

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

    Понятие файловой системы. Способы реализации (примеры).

Файловая система – набор соглашений, определяющих организацию данных на носителе информации.

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

Наиболее распространенные способы выделения дискового пространства: непрерывное выделение, организация связного списка и система с индексными узлами.

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

Файловая система определяет :

    Как хранятся файлы и каталоги на диске.

    Какие сведения о файлах и каталогах хранятся.

    Как можно узнать, какие участки диска свободны, а какие – нет.

    Формат каталогов и другой служебной информации на диске.

    Трансляторы. Функции. Варианты построения.

Транслятор – это программа, которая переводит входную программу на исходном (входном) языке в эквивалентную ей выходную программу на результирующем (выходном) языке.

Функции:

    Трансляция мнемонических кодов операций в их эквиваленты на машинном языке.

    Присваивание символьным именам соответствующие им машинные адреса.

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

Варианты построения:

Недостаток – трудно реализовать ссылки вперед. Для реализации таких ссылок необходимо размещать сегмент данных в самом начале программы, то есть сначала определение имен, а затем их использование. Существует два типа таких ассемблеров:

а) Ассемблер записывает объектную программу непосредственно в оперативную память для немедленного использования.

б) Ассемблер создает объектную программу, которая будет использоваться позднее.

    Компиляторы. Функции. Отличие от трансляторов. Варианты построения.

Компилятор – программа, преобразующая исходный текст на языке высокого уровня в объектный код.

Функции :

    Просмотр исходного текста, распознавание и классификация различных лексем (лексический анализ).

    Разбор каждого предложения как некоторой конструкции языка (синтаксический анализ).

    Генерация объектного кода.

Компиляция – поиск соответствия конструкций входного потока структурам, определенным грамматикой и генерация соответствующего кода для каждого предложения.

Отличие от трансляторов – в качестве конструкций языка используются более сложные составные конструкции, описанные на множестве простых конструкций.