Системное программирование | это… Что такое Системное программирование?
В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. |
Системное программирование (или программирование систем) — подраздел программирования, заключающийся в работе над системным программным обеспечением.
Определение «системное» подчеркивает тот факт, что результаты этого вида программирования существенно меняют свойства и возможности вычислительной системы. В то же время бесспорным остаётся тот факт, что в определенной степени этот результат имеет место при применении любых программ, выполняемых в вычислительной системе. Поэтому между программированием «системным» и «несистемным» (прикладным программированием») нет четкой границы.
Одной из основных отличительных черт системного программирования по сравнению с прикладным заключается в том, что результатом последнего является выпуск программ для взаимодействия с пользователем (например, текстовый процессор). В то время как результатом системного программирования является выпуск программ для взаимодействия с аппаратным обеспечением (например, дефрагментация жёсткого диска), что подразумевает сильную зависимость таких программ от аппаратной части. В частности выделим следующее:
- программист должен учитывать специфику аппаратной части и другие, часто уникальные, свойства системы в которой функционирует программа, использовать эти свойства, например, применяя специально оптимизированный для данной архитектуры алгоритм;
- часто используется низкоуровневый язык программирования или такой диалект языка программирования, который
- позволяет функционирование в окружении с ограниченным набором системных ресурсов,
- работает максимально эффективно и имеет минимальное запаздывание по времени завершения,
- имеет маленькую библиотеку времени выполнения (RTL) или не имеет её вообще,
- позволяет прямое управление (прямой доступ) к памяти и управляющей логике,
- позволяет делать ассемблерные вставки в код;
- отладка программы может быть затруднена при невозможности запустить её в отладчике из-за ограничений на ресурсы, поэтому может применяться компьютерное моделирование для решения этой проблемы.
Подводя итог, можно утверждать, что СИСТЕМНЫМ следует называть подраздел программирования как вида инженерной деятельности, в котором программист использует специфические и часто уникальные свойства и возможности ВНУТРЕННИХ УРОВНЕЙ вычислительной системы.
Системное программирование отличается от прикладного, что обычно приводит к специализации программиста в одном из них.
Часто, для системного программирования доступен ограниченный набор средств. Использование автоматической сборки мусора довольно редкое явление и отладка обычно сложна. Библиотека времени выполнения, при её наличии, часто менее способная и совершает меньшее количество проверок. В связи с этими ограничениями обычно применяют при мониторинге и записи данных — операционные системы.
Системное программирование — Энциклопедия современных знаний
Программирование
Материал из Википедии — свободной энциклопедии
Программирование – процесс и искусство создания компьютерных программ и/или программного обеспечения с помощью языков программирования. Программирование сочетает в себе элементы искусства, фундаментальных наук (прежде всего математики) и инженерии.
В узком смысле слова, программирование рассматривается как кодирование — реализация одного или нескольких взаимосвязанных алгоритмов на некотором языке программирования. Под программированием также может пониматься разработка логической схемы для ПЛИС (Программируемая логическая интегральная схема (англ. programmable logic device, PLD) – электронный компонент, используемый для создания цифровых интегральных схем), а также процесс записи информации в ПЗУ. В более широком смысле программирование — процесс создания программ, то есть разработка программного обеспечения.
Программирование включает в себя:
- Анализ
- Проектирование — разработка алгоритма
- Кодирование и Компиляцию — написание исходного текста программы и преобразование его в исполнимый код с помощью компилятора
- Тестирование и отладку — выявление и устранение ошибок
- Сопровождение
Языки программирования
Большая часть работы программиста связана с написанием исходного кода на одном из языков программирования.
Различные языки программирования поддерживают различные стили программирования (т. н. парадигмы программирования). Отчасти искусство программирования состоит в том, чтобы выбрать один из языков, наиболее полно подходящий для решения имеющейся задачи. Разные языки требуют от программиста различного уровня внимания к деталям при реализации алгоритма, результатом чего часто бывает компромисс между простотой и производительностью (или между временем программиста и временем пользователя).
Единственный язык, напрямую выполняемый процессором — это машинный язык (также называемый машинным кодом). Изначально все программисты прорабатывали каждую мелочь в машинном коде, но сейчас эта трудная работа уже не делается. Вместо этого программисты пишут исходный код, и компьютер (используя компилятор, интерпретатор или ассемблер) транслирует его, в один или несколько этапов, уточняя все детали, в машинный код, готовый к исполнению на целевом процессоре. Даже если требуется полный низкоуровневый контроль над системой, программисты пишут на языке ассемблера, мнемонические инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора.
В некоторых языках вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемый байт-кодом (byte-code). Такой подход применяется в Forth, некоторых реализациях Lisp[1], Java, Perl, Python, а также в языках платформы Microsoft .NET.
См. также
- Компьютерная программа
- Язык программирования
- Разработка программного обеспечения
- Экстремальное программирование
- Олимпиады по программированию
- Блок-схема
Ссылки
- см. Lisp 1.5 в России
- Программирование в DMOZ
- Библиотека программного кода (offline)
- Сообщество разработчиков программ
- Ассоциация ISDEF
- Теоретический минимум по информатике: Основы программирования (курсы и учебные материалы)
Литература
- Роберт В Себеста Основные концепции языков программирования, 5-е издание : Пер. с англ. — М. : 2001. — 672 стр. с ил., «Вильямс»
- Иан Соммервилл Инженерия программного обеспечения, 6-е издание : Пер. с англ. — М. : 2002. — 624 стр. с ил., «Вильямс»
- М.В.Мозговой — Занимательное программирование
- Иан Грэхем Объектно-ориентированные методы. Принципы и практика, 3-е издание : Пер. с англ. — М. : 2004. — 880 стр. с ил., «Вильямс»
- Стив Мак-Коннел, «Совершенный код» (Steve McConnel. Code Complete. Microsoft Press, 1993)
Основные понятия
Проекти?рование – процесс создания проекта, прототипа, прообраза предполагаемого или возможного объекта, состояния.
В технике — разработка проектной, конструкторской и другой технической документации, предназначенной для осуществления строительства, создания новых видов и образцов. В процессе проектирования выполняются технические и экономические расчёты, схемы, графики, пояснительные записки, сметы, калькуляции и описания.
Проект — комплект указанной документации и материалов (определённого свойства). Проект какого-либо объекта может быть индивидуальным или типовым. При разработке индивидуальных проектов широко применяются типовые или типовые проектные решения.
Исполнимый код = машинный код.
Машинный код (также употребляются термины собственный код, или платформенно-ориентированный код, или родной код, или нативный код — от англ. native code) – система команд (язык) конкретной вычислительной машины (машинный язык), который интерпретируется непосредственно микропроцессором или микропрограммами данной вычислительной машины.
Транслятор – программа, которая принимает на вход программу на одном языке (он в этом случае называется исходный язык, а программа — исходный код), и преобразует её в программу, написанную на другом языке (соответственно, целевой язык и объектный код).
Наиболее часто встречаются две разновидности трансляторов:
- Компиляторы – выдают результат в виде исполняемого файла (в данном случае считаем, что компоновка входит в компиляцию). Этот файл:
o транслируется один раз – может быть запущен самостоятельно
o не требует для работы наличия на машине создавшего его транслятора
- Интерпретаторы – исполняют программу после разбора (в этом случае в роли объектного кода выступает внутреннее представление программы интерпретатором). Исполняется она построчно. В данном случае программа
o транслируется (интерпретируется) при каждом запуске (если объектный код кэшируется, возможны варианты)
o требует для исполнения наличия на машине интерпретатора и исходного кода
Компилятор – транслятор, который осуществляет перевод всей исходной программы в эквивалентную ей результирующую программу на языке машинных команд (микропроцессора или виртуальной машины).
Интерпретатор (языка программирования) – программа для интерпретации, т.е. непосредственного исполнения программ (производства вычислений, предписываемых этими программами) из исходного кода на определённом языке.
Ассемблер (от англ. assembler – рабочий-сборщик) – компьютерная программа, компилятор исходного текста программы написанной на языке ассемблера, в программу на машинном коде.
Системное программирование
Системное программирование (или программирование систем) – род деятельности, заключающийся в работе над системным программным обеспечением. Основная отличительная черта системного программирования по сравнению с прикладным программированием заключается в том, что результатом последнего является выпуск программного обеспечения, предлагающего определённые услуги пользователям (например, текстовый процессор). в то время как результатом системного программирования является выпуск программного обеспечения, предлагающего сервисы по взаимодействию с аппаратным обеспечением (например, дефрагментация жёсткого диска), что подразумевает сильную зависимость таких программ от аппаратной части. В частности выделим следующее:
- программист должен учитывать специфику аппаратной части и другие свойства системы в которой функционирует программа, использовать эти свойства, например, применяя специально оптимизированный для данной архитектуры алгоритм.
- обычно используется низкоуровневый язык программирования или такой диалект языка программирования, который
o позволяет функционирование в окружении с ограниченным набором системных ресурсов
o работает максимально эффективно и имеет минимальное запаздывание по времени завершения
o имеет маленькую библиотеку времени выполнения (RTL) или не имеет вообще её
o позволяет прямое управление (прямой доступ) к памяти и управляющей логике
o позволяет делать ассемблерные вставки в код
- отладка программы может быть затруднена при невозможности запустить её в отладчике из-за ограничений на ресурсы, поэтому может применяться компьютерное моделирование для решения этой проблемы.
Системное программирование существенно отличается от прикладного, что обычно приводит к специализации программиста в одном из них.
Часто, для системного программирования доступен ограниченный набор средств. Использование автоматической сборки мусора довольно редкое явление и отладка обычно сложна. Библиотека времени выполнения, при её наличии, часто менее способная и совершает меньшее количество проверок. В связи с этими ограничениями обычно применяют при мониторинге и записи данных — операционные системы.
История
Изначально, программисты безвариантно писали на языке ассемблера. Эксперименты с поддержкой оборудования в языках высокого уровня (1960s привели к появлению таких, как BLISS и BCPL. Однако, язык программирования Си, сыгравший значительную роль в создании UNIX, завоевал большую популярность и распространился повсеместно к 1980-м годах.
В настоящее время (2006) некоторое применение нашлось для встраиваемого C++. Реализация основных частей в операционной системе и при использовании сетей нуждается в разработчиках системного ПО. Например, реализация постраничности (через виртуальную память) или драйверы устройств.
Термин Системное программирование непосредственно связан с термином Системный программист. Это программист, работающий (создающий, отлаживающий, диагностирующий и т. п.) над системным программным обеспечением.
Занятие 25 Системное программирование
Похожие статьи.
Системное программное обеспечение
Системное программное обеспечение эвм
Программное обеспечение и технологии программирования
Слайд 6: виды программирования.
go — Что значит «системный язык»?
спросил
Изменено 12 лет, 5 месяцев назад
Просмотрено 3к раз
В pdf-файле The Go talk 2009 есть комментарий, объясняющий, почему они придумали язык go:
Ни одного нового крупного системного языка за десятилетие.
Что означает системный язык?
- Это язык, который должен работать в целевой системе путем создания собственного двоичного кода?
- Является ли этот язык самостоятельной сборкой операционной системы?
Я вижу, что C#/Java «не» является системным языком, а C/C++ им является.
- языки программирования
- перейти
0
Это грубое, неформальное разграничение, но идея состоит в том, что существуют «языки прикладного программирования», предназначенные для программистов, разрабатывающих бизнес-приложения в сокращенной оболочке, и «языки системного программирования», предназначенные для программистов, которые программируют инструменты для других программистов (компиляторы, и т. д.) и низкоуровневое программное обеспечение, такое как ядра ОС, драйверы устройств и т. д.
Короче говоря, большинство (во всяком случае, недавно изобретенных) языков предназначены для упрощения разработки ориентированного на пользователя программного обеспечения для работы с некоторыми некомпьютерными областями — финансами, инженерией и т. д. Языки системного программирования — это такие языки, как как C, FORTH, Go и т. д., которые предназначены или, по крайней мере, подходят для программирования в области вычислений.
Они часто, но не всегда, включают компиляцию в машинный код, системы свободных типов, которые допускают расширенный «каламбур», и неуправляемый доступ к памяти с помощью указателей или эквивалентной конструкции.
2
Посмотрите сюда? Извините, если это выглядит как одноразовая ссылка, но на самом деле это все, что вам нужно. Если только вы не просите о чем-то более конкретном.
Причина, по которой C# определенно не является системным языком, заключается в его зависимости от .NET.
1
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Почему C продолжает оставаться предпочтительным языком системного программирования
администратор / 10 декабря 2018 г.
Некоторые вещи действительно остаются навсегда. Язык программирования C, появившийся несколько десятков лет назад — в 1972 году, если быть точным, — один из них. Многие из величайших продуктов в мире созданы с использованием C. Несколько десятилетий назад, и многие другие создаются сегодня. По данным на декабрь 2018 года Tiobe Index , C занимает второе место сразу после Java.
В основном это связано с тем, что C может использоваться для компиляции очень широкого спектра компьютерных платформ и требует от программистов внесения очень небольшого количества изменений в исходный код.
Несмотря на преобладание других современных языков более высокого уровня, C продолжает выдерживать испытание временем и делает мир предпочтительным языком системного программирования благодаря низкоуровневому доступу к памяти и минимальной поддержке во время выполнения.
C для системного программированияСистемное программирование, хотя и похоже на программирование приложений, требует от разработчиков создания программ, которые взаимодействуют с другими программами или системами, а не с пользователями-людьми.
Это требует особого взаимодействия, обычно с очень специфическими и иногда жесткими форматами. А из-за наличия нескольких нетривиальных структур и архитектур, а также нетрадиционных моделей исполнения необходимость построения конкретных характеристик производительности для программиста крайне важна.
Подробнее: Что входит в выбор правильного языка системного программирования
Несмотря на то, что для системного программирования используется несколько языков, C по-прежнему является идеальным выбором благодаря его гибкости, эффективности, производительности и близость к оборудованию. Давайте рассмотрим некоторые другие причины, по которым C остается предпочтительным языком системного программирования:
- Простота программирования: Одна из главных причин, почему C так хорошо подходит для системного программирования, заключается в том, что его легко программировать. Прямое 1-1 взаимодействие C с машинным кодом означает отсутствие сложных встроенных структур данных, таких как деревья или таблицы. Поскольку программист может видеть любой код и точно знать, что он делает в аппаратном обеспечении, весь бэкэнд реализуется программистом — в отличие от других языков, где бэкэнд не обязательно известен программисту.
- Язык низкого уровня: Еще одной причиной использования C для системного программирования является его близость к операционной системе. Поскольку большинство реализаций C компилируются непосредственно в машинный код, программист имеет полную власть над тем, что происходит на машинном уровне. Нет необходимости в интерпретаторе или компиляторе. Эта функция делает C эффективным языком для системного программирования, поскольку к низкоуровневым ресурсам, таким как память, можно получить доступ без особых усилий.
- Явное управление памятью : Еще одна веская причина популярности C для системного программирования — гибкость, которую он предлагает для управления памятью.
- Гибкая структура: Системное программирование никогда не бывает легким , особенно при работе с большими фрагментами кода. Однако гибкая структура C позволяет программистам разбивать программу на несколько блоков кода или функций для выполнения. Таким образом, его легко понять, и он позволяет свободно перемещать данные между различными функциями. Программисты могут вручную копировать данные в разные области, перемещать биты и обрабатывать данные в небольших количествах. Хотя это утомительный процесс, он намного эффективнее — как с точки зрения использования оперативной памяти, так и с точки зрения времени обработки, что очень важно в системном программировании.
- Нет зависимостей времени выполнения : По сравнению с другими языками, C имеет очень маленькое время выполнения. И в отличие от других языков программирования, C не имеет абсолютно никаких зависимостей во время выполнения. Программы можно запускать на минимальных системах, таких как встроенные системы. Это означает, что программисты могут создавать программы на C, которые работают непосредственно на оборудовании, не ожидая наличия какого-либо диспетчера памяти или уровня ввода или вывода. Кроме того, большая часть стандартной библиотеки не требует операционной системы. Те, что есть, могут быть реализованы программистом минимально.
- Совместимость : C чрезвычайно совместим. Большинство языков, существующих сегодня, уже имеют все необходимое для взаимодействия и взаимодействия с C. Это означает, что программисты могут разрабатывать библиотеки на C, используя стандартные соглашения о вызовах, и быть уверенными, что любой другой язык может связать их без проблем. Любое программное обеспечение, разработанное с использованием C#, Java, Perl, Python или PHP, может без особых проблем связываться с библиотеками C.
- Высокая переносимость: Отличительной чертой C является то, что это язык с высокой переносимостью. Он находится максимально близко к системе, одновременно предоставляя высокоуровневые конструкции — почти для каждой существующей архитектуры существует как минимум один компилятор C. Поскольку переносимость прямо пропорциональна гибкости программного обеспечения, системы, разработанные с использованием C, часто бывают чрезвычайно гибкими. Таким образом, для программистов, которые могут писать переносимый код на C, конечным результатом является приложение, которое может работать на любой основной платформе.
Учитывая, как долго существует C, кажется, что у языка нет срока годности.