stringtranslate.com

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

Системное программирование , или системное программирование , — это деятельность по программированию [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, даже в тех случаях, когда они не занимаются системным программированием регулярно. деятельность.

Смотрите также

Рекомендации

  1. ^ ab «Панель: Системное программирование в 2014 году и далее». Майкрософт . Проверено 4 декабря 2015 г.
  2. ^ Apple Inc (14 августа 2009 г.). «Руководство по разработке драйверов устройств комплекта ввода-вывода». разработчик.apple.com . Apple Inc. Проверено 16 сентября 2014 г.
  3. ^ «Go at Google: языковой дизайн на службе разработки программного обеспечения - язык программирования Go» . go.dev . Проверено 11 апреля 2024 г.

дальнейшее чтение