Системное программирование
Системное программирование , или системное программирование , — это деятельность по программированию. [1] программное обеспечение компьютерной системы . Основная отличительная характеристика системного программирования по сравнению с прикладным программированием заключается в том, что прикладное программирование направлено на создание программного обеспечения, которое предоставляет услуги непосредственно пользователю (например, текстовый процессор ), тогда как системное программирование направлено на создание программного обеспечения и программных платформ , которые предоставляют услуги другому программному обеспечению. имеют ограничения по производительности или и то и другое (например, операционные системы , для вычислительной науки приложения , игровые движки , промышленная автоматизация и приложения «программное обеспечение как услуга» ). [1]
Системное программирование требует высокой степени осведомленности об аппаратном обеспечении. Его цель — добиться эффективного использования доступных ресурсов либо потому, что само программное обеспечение критически важно для производительности, либо потому, что даже небольшое повышение эффективности напрямую приводит к значительной экономии времени или денег.
Обзор
[ редактировать ]Следующие атрибуты характеризуют системное программирование:
- Программист алгоритм может делать предположения об оборудовании и других свойствах системы, на которой работает программа, и часто будет использовать эти свойства, например, используя , который, как известно, эффективен при использовании с конкретным оборудованием.
- Обычно язык программирования низкого уровня или диалект языка программирования используется для того, чтобы:
- Программы могут работать в средах с ограниченными ресурсами.
- Программы могут быть эффективными с небольшими накладными расходами во время выполнения , возможно, имея либо небольшую библиотеку времени выполнения , либо вообще ее не иметь.
- Программы могут использовать прямой и «грубый» контроль над доступом к памяти и потоком управления.
- Программист может писать части программы непосредственно на языке ассемблера.
- Часто системные программы невозможно запустить в отладчике . запуск программы в моделируемой среде . Иногда для решения этой проблемы можно использовать [ сомнительно – обсудить ]
При системном программировании часто доступны ограниченные возможности программирования. используется Автоматическая сборка мусора нечасто, и отладка иногда затруднена. Библиотека времени выполнения , если она вообще доступна, обычно гораздо менее мощна и выполняет меньше проверок ошибок. Из-за этих ограничений мониторинг и журналирование часто используются ; операционные системы могут иметь чрезвычайно сложные подсистемы журналирования.
Реализация определенных частей в операционных системах и сетях требует системного программирования, например реализации подкачки ( виртуальной памяти ) или драйвера устройства для операционной системы.
История
[ редактировать ]Первоначально системные программисты всегда писали на языке ассемблера . Эксперименты с аппаратной поддержкой языков высокого уровня в конце 1960-х годов привели к появлению таких языков, как PL/S , BLISS , BCPL и расширенного ALGOL для больших систем Берроуза . Форт также имеет приложения в качестве системного языка. В 1970-х годах язык C получил широкое распространение, чему способствовал рост Unix . Совсем недавно некоторое применение получило подмножество C++ под названием Embedded C++ , например, оно используется в драйверах набора ввода-вывода macOS . [2] Инженеры, работающие в Google, создали Go в 2007 году для повышения производительности разработчиков в больших распределенных системах с ориентированными на разработчиков функциями, такими как параллелизм , сбор мусора и более быстрой компиляцией программ, чем C и C++. [3] В 2015 году Rust вышел — язык программирования общего назначения, часто используемый в системном программировании. Rust был разработан с учетом безопасности памяти и с целью обеспечения такой же производительности, как C и C++.
Альтернативное значение
[ редактировать ]По историческим причинам некоторые организации используют термин «системный программист» для описания должностной функции, которую точнее было бы назвать системным администратором . Это особенно верно для организаций, в чьих компьютерных ресурсах исторически доминировали мэйнфреймы , хотя этот термин даже используется для описания рабочих функций, которые не задействуют мэйнфреймы. Такое использование возникло из-за того, что администрирование мэйнфреймов IBM часто включало написание специального ассемблерного кода ( базового языка ассемблера IBM (BAL)), который интегрировался с такими операционными системами , как OS/MVS , DOS/VSE или VM/CMS . Действительно, некоторые программные продукты IBM внесли значительный вклад в код, написанный программистами клиентов. Этот тип программирования становится все менее распространенным и все чаще выполняется на C, а не на ассемблере, но термин «системный программист» по-прежнему используется как фактическое название должности для сотрудников, администрирующих мэйнфреймы IBM, даже в тех случаях, когда они не занимаются системным программированием регулярно. деятельность.
См. также
[ редактировать ]- Дихотомия Оустерхаута
- Язык системного программирования
- Язык сценариев
- Обработчик прерываний
- Компьютерное программирование
Ссылки
[ редактировать ]- ^ Jump up to: а б «Панель: Системное программирование в 2014 году и далее» . Майкрософт . Проверено 4 декабря 2015 г.
- ^ Apple Inc (14 августа 2009 г.). «Руководство по проектированию драйверов устройств комплекта ввода-вывода» . разработчик.apple.com . Apple Inc. Проверено 16 сентября 2014 г.
- ^ «Go в Google: языковой дизайн на службе разработки программного обеспечения — язык программирования Go» . go.dev . Проверено 11 апреля 2024 г.
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2014 г. ) |