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




Программирование

Материал из Википедии — свободной энциклопедии

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

В узком смысле слова, программирование рассматривается как кодирование — реализация одного или нескольких взаимосвязанных алгоритмов на некотором языке программирования. Под программированием также может пониматься разработка логической схемы для ПЛИС (Программируемая логическая интегральная схема (англ. programmable logic device, PLD) – электронный компонент, используемый для создания цифровых интегральных схем), а также процесс записи информации в ПЗУ. В более широком смысле программирование — процесс создания программ, то есть разработка программного обеспечения.

Программирование включает в себя:

  • Анализ
  • Проектирование - разработка алгоритма
  • Кодирование и Компиляцию - написание исходного текста программы и преобразование его в исполнимый код с помощью компилятора
  • Тестирование и отладку - выявление и устранение ошибок
  • Сопровождение

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

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

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

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

В некоторых языках вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемый байт-кодом (byte-code). Такой подход применяется в Forth, некоторых реализациях Lisp[1], Java, Perl, Python, а также в языках платформы Microsoft.NET.

См. также

  • Компьютерная программа
  • Язык программирования
  • Разработка программного обеспечения
  • Экстремальное программирование
  • Олимпиады по программированию
  • Блок-схема

Ссылки

  1. см. 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++. Реализация основных частей в операционной системе и при использовании сетей нуждается в разработчиках системного ПО. Например, реализация постраничности (через виртуальную память) или драйверы устройств.

 

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

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: