Green-sell.info

Новые технологии
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

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

Системное программирование (или программирование систем) — подраздел программирования, заключающийся в работе над системным программным обеспечением.

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

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

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

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

Подводя итог, можно утверждать, что СИСТЕМНЫМ следует называть подраздел программирования как вида инженерной деятельности, в котором программист использует специфические и часто уникальные свойства и возможности ВНУТРЕННИХ УРОВНЕЙ вычислительной системы.

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

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

Wikimedia Foundation . 2010 .

Смотреть что такое «Системное программирование» в других словарях:

системное программирование — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN systems programming … Справочник технического переводчика

системное программирование — sisteminis programavimas statusas T sritis automatika atitikmenys: angl. system programming vok. Systemprogrammierung, f rus. системное программирование, n pranc. programmation système, f … Automatikos terminų žodynas

СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ — 1) Инженерная дисциплина, разрабатывающая методы построения системных программ, т. е. программ, входящих в состав больших программных комплексов (программных систем), придающих вычислительным средствам постоянные функции нек рой специальной… … Математическая энциклопедия

Системное программное обеспечение — Системное программное обеспечение это комплекс программ, которые обеспечивают управление компонентами компьютерной системы, такими как процессор, оперативная память, устройства ввода вывода, сетевое оборудование, выступая как «межслойный… … Википедия

ПРОГРАММИРОВАНИЕ — 1) процесс составления программы, плана действий; 2) дисциплина, изучающая методы и приемы составления программ. С определенной долей условности П. как дисциплина делится на программирование теоретическое, изучающее математич. абстракции программ … Математическая энциклопедия

ПРОГРАММИРОВАНИЕ — 1) процесс составления программы, плана действий. 2) Раздел информатики, изучающий методы и приёмы составления программ. С долей условности П. как дисциплина разделяется на: теоретическое, изучающее матем. абстракции программ (как объектов с… … Физическая энциклопедия

ПРОГРАММИРОВАНИЕ — совокупность и последовательность действий в целях получения конкретного результата; (1) П. в вычислительной технике процесс составления (см.) в соответствии с данным (см.) на ЭВМ, а также создание средств программного обеспечения, с помощью… … Большая политехническая энциклопедия

Перехват (программирование) — У этого термина существуют и другие значения, см. Перехват. Перехват (англ. hooking) технология, позволяющая изменить стандартное поведение тех или иных компонентов информационной системы. Содержание 1 Назначение технологии перехвата … Википедия

Событийно-ориентированное программирование — Парадигмы программирования Агентно ориентированная Компонентно ориентированная Конкатенативная Декларативная (контрастирует с Императивной) Ограничениями Функциональная Потоком данных Таблично ориентированная (электронные таблицы) Реактивная … Википедия

RAD (программирование) — У этого термина существуют и другие значения, см. RAD. Разработка программного обеспечения Процесс разработки ПО Шаги процесса Анализ • Проектиро … Википедия

Системное программирование — это престижно, но ответственно

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

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

Программирование и системы

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

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

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

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

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

Престиж и ответственность

Характерная черта программирования в прошлом веке — системное и прикладное программирование — это, прежде всего, разные языки. Существовала их градация на нижний и верхний уровень. Фортран, Кобол или PL/1 существенно отличались от кода операционных систем, компиляторов и интерпретаторов. Но даже на языках высокого уровня допускалось писать машинный код (С/С++, Pascal).

Тот факт, что языки высокого уровня допускали ассемблерные вставки, говорит: не все предусмотрел разработчик компилятора (интерпретатора). Факт наличия в современных языках возможности создания и выполнения команды в процессе работы программы — наследие прошлого на более высоком уровне.

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

Центр тяжести сместился в область распределенной обработки информации посредством веб-ресурсов. Обычное программирование (С/С++, С#, Pascal, . ) сохранило свое значение. Остались также локальные задачи. Однако основная масса задач «ушла» в интернет и системное программирование перешло на следующий уровень: установка серверов, настройка сетей и протоколов связи, оптимизация хостинга, обслуживание виртуальных машин.

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

Читать еще:  Основные конструкции языка программирования паскаль

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

Языки систем

Языки системного программирования в современном мире — абстрактное понятие. Раньше было просто: ассемблер или язык машинных кодов. Язык высокого уровня: синтаксические конструкции словами естественного языка. Сегодня языком системного программирования можно считать две-три команды загрузчика и далеко не каждый системный администратор сможет правильно настроить процесс установки сложного программно-аппаратного комплекса.

Пример. Установить Debian & Proxmox VE — это не просто выполнить чек-лист конкретных действий. Это реальная потребность что-то «подпрограммировать» в конкретной ситуации. В первую очередь — это протоколы настройки сети, а затем по пунктам в зависимости от назначения каждой виртуальной машины, ее функциональности и правил взаимодействия.

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

Квалифицированный системный программист настроит классическую триаду: Apache, PHP и MySQL за 30 минут. Обычный программист будет искать ошибки и не сможет получить работающий результат за целый день. Цена знания определяет затраченное время, но многие из них приходят с опытом. Внешне — это не программирование, но каждый конфигурационный файл управляет конкретным продуктом на системном уровне.

Фактически теперь системное программное обеспечение — это конкретная область системных задач. Как будет решена конкретная задача — не важно. Не имеет значения, что программу писать не потребуется, но задача должна быть решена, информационная система обязана стабильно и непрерывно работать на конкретном системном фундаменте.

Стиль работы системного программиста

Знать и уметь — мало, нужно делать так, чтобы все ясно было. Комментирование в области системного программирования существенно изменилось. Раньше считалось нормой вещей пояснить что делает конкретная команда одним или двумя словами. Сегодня одна команда может поясняться страницей плотного текста.

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

Квалифицированный системный программист (администратор) в обязательном порядке будет фиксировать свои действия, описывать использованные команды и мониторить все события. Идеальный стиль работы специалиста — когда коллега может заменить его в любой момент времени.

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

Раньше системное программирование интересовал процессор, сегодня в его компетенции находится пользователь. Управление пользователями — это системное программирование высокого порядка, существенной ответственности и престижное с точки зрения оплаты.

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

Ошибка в сценарии работы пользователя — нарушение периметра безопасности, проникновение злоумышленника и крах системы или кража информации.

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

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

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

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

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

Уроки 22 — 23
Понятие о программировании
Алгоритмы работы с величинами: константы, переменные, основные типы, присваивание, ввод и вывод данных
(§ 8. Что такое программирование)

Содержание урока

Что такое программирование

Что такое программирование

Кто такие программисты

Теперь вам предстоит ближе познакомиться еще с одним разделом информатики, который называется «Программирование».

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

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

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

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

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

Что такое язык программирования

Для составления программ существуют разнообразные языки программирования.

Язык программирования — это фиксированная система обозначений для описания алгоритмов и структур данных.

За годы существования ЭВМ было создано много языков программирования. Наиболее известные среди них: Фортран, Паскаль, Бейсик, С (Си) и др.

Распространенными языками программирования сегодня являются С++, Java, Pascal, Basic, Python.

Что такое система программирования

Для создания и исполнения на компьютере программы, написанной на языке программирования, используются системы программирования.

Система программирования — это программное обеспе чение компьютера, предназначенное для разработки, от ладки и исполнения программ, записанных на определен ном языке программирования.

Существуют системы программирования на Паскале, Бейсике и других языках.

В данной главе речь будет идти о средствах и способах универсального программирования — не ориентированного на какую-то узкую прикладную область. Примером узкоспециализированного программирования является Web-программирование, ориентированное на создание Web-сайтов. Для этих целей, например, используется язык JavaScript. Языки Паскаль, Бейсик, Си относятся к числу универсальных языков программирования.

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

Коротко о главном

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

Программирование бывает системным и прикладным.

Паскаль, Бейсик, Си, Фортран — это универсальные языки программирования.

Система программирования — это программное обеспечение компьютера, предназначенное для разработки, отладки и исполнения программ, записанных на определенном языке программирования.

Вопросы и задания

1. Что такое программирование?

2. Какие задачи решают системные и прикладные программисты?

3. Назовите наиболее распространенные языки программирования.

4. В чем состоит назначение систем программирования?

Следующая страница Компьютерный практикум ЦОР. Что такое программирование

Системы программирования

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

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

Читать еще:  Типы данных программирование

Специальное программное обеспечение состоит из прикладных программ, проблемно ориентированных на решение определенных задач.

Состав систем программирования

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

Попробуй обратиться за помощью к преподавателям

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

Системы программирования состоят из: трансляторов с языков высокого уровня; редактирующих и компонующих средств, а также средств загрузки программ; макроассемблеров (машинно-ориентированных языков); отладчиков машинных программ.

Языки программирования

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

Процедурные (или алгоритмические) программы — это системы предписаний для решения определенных задач.

Компьютер лишь механически выполняет эти предписания.

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

С использованием языков низкого уровня (машинно-ориентированных) создаются программы в машинных кодах. С такими языками тяжело работать, однако созданные на них программы малы по объему и быстродейственны. Используя языки программирования низкого уровня, разрабатывают системные программы, драйвера и др.

Задай вопрос специалистам и получи
ответ уже через 15 минут!

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

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

  1. Fortran, один из старейших и по сей день используемых в решении задач математической ориентации язык.
  2. Basic, являющийся универсальным символическим кодом инструкций для начинающих пользователей, самый популярный среди пользователей.
  3. ALGOL, представляющий собой алгоритмический язык, сыгравший большую роль в теории, в настоящее время практически не используется.
  4. PL/1 — многоцелевой язык, который в настоящее время не используется.
  5. Си – широко используемый язык при создании систем программного обеспечения.
  6. Pascal – чрезвычайно популярный язык как среди новичков в программировании, так и среди профессионалов. На его основе созданы более мощные языки такие, как Ada, Delphi.
  7. COBOL – язык, ориентированный на общий бизнес, сейчас практически не используется.
  8. Delphi – очень популярный объективно-ориентированный язык визуального программирования.
  9. Java – платформенно независимый язык объективно-ориентированного программирования, эффективен при создании интерактивных web-страниц.

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

Машинно-ориентированные системы программирования

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

Машинно-ориентированные состоят из входного языка, наборов операторов и изобразительных средств. Для систем подобного типа характерны:

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

По степени автоматического программирования машинно-ориентированные системы подразделяют на классы:

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

Машинно-независимые системы программирования

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

Машинно-независимые системы программирования подразделяют на:

  1. Процедурно-ориентированные системы. В этих системах входные языки программирования предназначены для записи при решении задач алгоритмов обработки информации. Эти языки обеспечивают программиста средствами четкого формулирования задач и получения результатов в требуемой форме.
  2. Проблемно-ориентированные системы используют в качестве входного языка язык программирования с проблемной ориентацией. Языки подобного типа обеспечивают программиста средствами короткой и четкой формулировки задач и средствами получения результатов в требуемой форме. Программы на этих языках программирования записываются в терминах решаемой задачи и реализуются через выполнение определенных процедур.
  3. Диалоговые языки. Обеспечивают оперативное взаимодействие пользователя с компьютером через сохранение в его памяти копии исходной программы в машинных кодах. В процессе изменений в программе система программирования устанавливает с помощью специальных таблиц взаимосвязь между структурами исходной и объектной программ, что дает возможность в дальнейшем редактировать объектную программу.
  4. Непроцедурные языки. Составляют группу языков, с помощью которых описывается организация обрабатываемых данных и языков связи с операционными системами. Являются табличными языками, позволяющими четко описывать как задачу, так и ее решения в наглядной форме. В одной таблице решений, описывающей некоторую ситуацию, содержатся все возможные блок-схемы реализаций алгоритмов решения.

Интерпретаторы и компиляторы

Компилятор прежде чем запустить программу на выполнение полностью обрабатывает ее текст:

  • выполняет поиск синтаксических ошибок;
  • делает смысловой анализ;
  • автоматически генерирует машинный код.

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

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

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

Так и не нашли ответ
на свой вопрос?

Просто напиши с чем тебе
нужна помощь

Си. ЯзыкС как инструмент системного программирования

Си (англ. C) — стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками BellLabs Кеном Томпсоном и Денисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX. С тех пор он был портирован на многие другие операционные системы и стал одним из самых используемых языков программирования. Он является самым популярным языком для создания системного программного обеспечения.

Читать еще:  Объектно ориентированное программирование программы

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

Системное программирование (или программирование систем) — подраздел программирования, заключающийся в работе над системным программным обеспечением.

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

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

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

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

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

— ориентацию на процедурное программирование, обеспечивающую удобство применения структурного стиля программирования;

— систему типов, предохраняющую от бессмысленных операций;

— использование препроцессора для, например, определения макросов и включения файлов с исходным кодом;

— непосредственный доступ к памяти компьютера через использование указателей;

— минимальное число ключевых слов;

— передачу параметров в функцию по значению, а не по ссылке (при этом передача по ссылке эмулируется с помощью указателей);

— указатели на функции и статические переменные

— области действия имён;

— структуры и объединения — определяемые пользователем собирательные типы данных, которыми можно манипулировать как одним целым.

Вот некоторые особенности других языков программирования, которых не имеет Си:

— автоматическое управление памятью;

— поддержка объектно-ориентированного программирования (при этом первые версии C++ генерировали код программы на языке Си);

— вложенные функции (существуют компиляторы языка Си реализующие эту функцию, например компилятор GNU);

— полиморфизм функций и операторов;

— встроенная поддержка многозадачности и сети;

— функции высшего порядка;

Главным качеством языка C, которое делает его именно языком системного программиста, является то, что «C — это язык относительно «низкого уровня». Это означает, что C имеет дело с объектами того же вида, что и большинство ЭВМ, а именно, с символами, числами и адресами. Чрезвычайно важным свойством языка C, которого нет в других языках, является адресная арифметика. Над данными типа «указатель» возможны арифметические операции, причем в них могут учитываться размеры тех объектов, которые адресуются указателем.

Еще некоторые средства языка не ориентированы непосредственно на низкоуровневое системное программирование, но могут бути очень полезны при разработке системных программ:

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

процедурно-ориентированный язык C вместе с тем представляет все кодовые составляющие программы в виде функций. Это дает возможность применять язык C и як инструмент функционально-ориентированного программирования.

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

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

· Виртуальные машины могут использоваться для:

· защиты информации и ограничения возможностей программ ;

· исследования производительности ПО или новой компьютерной архитектуры;

· эмуляции различных архитектур;

· оптимизации использования ресурсов мейнфреймов и прочих мощных компьютеров;

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

· Тестирования и отладки системного программного обеспечения;

JavaVirtualMachine —виртуальная машина Java, часть среды исполнения Java, выполняющая интерпретацию Java байт-кода.JavaVirtualMachine специфицируется набором команд байт-кода, набором регистров, стеком, сборщиком мусора и пространством хранения методов.Java байт-код – машинно-независимый код, который генерирует Java-компилятор. Байт-код выполняется Java-интерпретатором. Виртуальная машина Java полностью стековая: не требуется сложная адресация ячеек памяти и большое количество регистров. Поэтому команды JVM короткие, большинство из них имеет длину 1 байт, отчего команды JVM называют байт-кодами (bytecodes), хотя имеются команды длиной 2 и 3 байта (средняя длина команды составляет 1,8 байта).

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

В архитектуре AS/400 сочетаются концепции иерархической архитектуры, архитектуры на базе микроядра, виртуальной машины и объектно-ориентированного подхода. В иерархической структуре самый нижний слой программного обеспечения выделен в, так называемый, Системный Лицензионный Внутренний Код (SLIC) и составляет микроядро. SLIC обеспечивает аппаратную независимость верхних уровней программного обеспечения — приложений и OS/400.

Интерфейс микроядра — в AS/400 он называется MI (machineinterface — машинный интерфейс) — обеспечивает функционально полную систему команд, в символьном виде представляемую высокоуровневым языком ассемблера. Таким образом, MI предоставляет лежащему выше программному обеспечению интерфейс некоторой виртуальной машины. И приложения, и сама ОС OS/400 разрабатываются на уровне MI (или выше), не имея доступа к интерфейсам, лежащим ниже MI, в том числе, и к командам реального процессора. Переносимость программного обеспечения — приложений и ОС — обеспечивается на уровне MI-кодов. MI-код не является непосредственно исполняемым, он должен быть переведен в команды реального процессора. Однако, процесс трансляции расположен ниже уровня MI, он совершенно прозрачен для приложений и для ОС. Среди команд MI имеются как команды, близкие к обычным машинным командам, оперирующие байтами, словами, числами и т.п., так и команды, оперирующие с интегрированными структурами данных — объектами, обрабатываемыми микроядром. Впрочем, «обычные» команды MI также можно назвать объектно-ориентированными: команды содержат не собственно данные, а ссылки на объекты, содержащие наряду с самими данными и описания их типа, размера и т. п.

AS/400 отличается значительной степенью системной интеграции и высоким уровнем системных интерфейсов. Ряд системных функций в AS/400 выполняются SLIC (лежат ниже уровня MI), ряд — OS/400, выполнение же большинства функций распределено между ОС и микроядром.

Ссылка на основную публикацию
Adblock
detector