Системное программирование или системное программирование - это деятельность по программированию [1] программного обеспечения компьютерной системы . Основная отличительная характеристика системного программирования по сравнению с прикладным программированием заключается в том, что прикладное программирование направлено на создание программного обеспечения, которое предоставляет услуги пользователю напрямую (например, текстовый процессор ), тогда как системное программирование направлено на создание программного обеспечения и программных платформ, которые предоставляют услуги другому программному обеспечению, ограничены производительностью или и то, и другое (например, операционные системы , приложения для вычислительной науки , игровые движки , промышленная автоматизация, и программное обеспечение как сервисные приложения). [1]
Системное программирование требует большой степени осведомленности об оборудовании. Его цель - добиться эффективного использования доступных ресурсов либо потому, что само программное обеспечение критично к производительности, либо потому, что даже небольшие улучшения эффективности напрямую приводят к значительной экономии времени или денег.
Обзор [ править ]
Следующие атрибуты характеризуют системное программирование:
- Программист может делать предположения об аппаратном и других свойствах системы , что программа работает на, и часто будет использовать эти свойства, например , с помощью алгоритма , который , как известно , чтобы быть эффективным при использовании конкретного оборудования.
- Обычно используется низкоуровневый язык программирования или диалект языка программирования, чтобы:
- Программы могут работать в средах с ограниченными ресурсами
- Программы могут быть эффективными с небольшими накладными расходами во время выполнения , возможно, имея небольшую библиотеку времени выполнения или вообще не имея
- Программы могут использовать прямой и "грубый" контроль доступа к памяти и потока управления.
- Программист может писать части программы прямо на ассемблере.
- Часто системные программы невозможно запустить в отладчике . Иногда для решения этой проблемы можно использовать запуск программы в смоделированной среде .
Системное программирование существенно отличается от прикладного программирования, поэтому программисты склонны специализироваться на том или другом. [ необходима цитата ]
В системном программировании часто доступны ограниченные возможности программирования. Использование автоматической сборки мусора не является распространенным явлением, и иногда бывает трудно выполнить отладку . Библиотека времени выполнения , если она вообще доступна, обычно гораздо менее мощная и меньше проверяет ошибки. Из-за этих ограничений часто используются мониторинг и ведение журнала ; операционные системы могут иметь чрезвычайно сложные подсистемы ведения журнала.
Реализация определенных частей в операционных системах и сети требует системного программирования, например, реализации подкачки ( виртуальной памяти ) или драйвера устройства для операционной системы.
История [ править ]
Первоначально системные программисты неизменно писали на ассемблере . Эксперименты с аппаратной поддержкой языков высокого уровня в конце 1960-х годов привели к появлению таких языков, как PL / S , BLISS , BCPL и расширенный ALGOL для больших систем Burroughs . Форт также имеет приложения в качестве системного языка. В 1970-х годах C стал повсеместным, чему способствовал рост Unix . Совсем недавно подмножество C ++, называемое Embedded C ++ , нашло некоторое применение, например, оно используется в драйверах набора ввода-вывода для macOS . [2]
Альтернативное использование [ править ]
По историческим причинам некоторые организации используют термин « системный программист» для описания должностных функций, которые можно было бы более точно назвать системным администратором . Это особенно верно в отношении организаций, в компьютерных ресурсах которых исторически преобладали мэйнфреймы , хотя этот термин даже используется для описания должностных функций, не связанных с мэйнфреймами. Такое использование возникло из-за того, что администрирование мэйнфреймов IBM часто связано с написанием специального кода ассемблера ( IBM's Basic Assembly Language (BAL)), который интегрирован с операционной системой, такой как OS / MVS , DOS / VSE или VM / CMS.. Действительно, некоторые программные продукты IBM внесли значительный вклад в код со стороны программистов-заказчиков. Этот тип программирования все реже встречается, но термин « системный программист» по-прежнему остается фактическим названием должности для сотрудников, непосредственно управляющих мэйнфреймами IBM.
См. Также [ править ]
- Дихотомия Остерхаута
- Язык системного программирования
- Язык сценариев
- Обработчик прерывания
Ссылки [ править ]
- ^ a b «Панель: Системное программирование в 2014 году и далее» . Microsoft . Дата обращения 4 декабря 2015 .
- ↑ Apple Inc (14 августа 2009 г.). «Рекомендации по проектированию драйверов устройств набора ввода / вывода» . developer.apple.com . Apple , Inc . Проверено 16 сентября 2014 года .
Эта статья требует дополнительных ссылок для проверки . сентябрь 2014 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) ( |
Дальнейшее чтение [ править ]
- Программирование системы с помощью John J. Donovan