stringtranslate.com

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

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

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

Обзор

Системное программирование характеризуется следующими атрибутами:

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

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

История

Первоначально системные программисты неизменно писали на языке ассемблера . Эксперименты с аппаратной поддержкой в ​​языках высокого уровня в конце 1960-х годов привели к появлению таких языков, как PL/S , BLISS , BCPL и расширенного ALGOL для больших систем Burroughs . Forth также имеет приложения в качестве системного языка. В 1970-х годах C получил широкое распространение, чему способствовал рост Unix . Совсем недавно подмножество C++, называемое Embedded C++, нашло некоторое применение, например, оно используется в драйверах I/O Kit macOS . [2] Инженеры, работающие в Google, создали Go в 2007 году для решения проблемы производительности разработчиков в больших распределенных системах с такими ориентированными на разработчиков функциями, как Concurrency , Garbage Collection и более быстрой компиляцией программ , чем в C и C++. [3] В 2015 году вышел Rust , язык программирования общего назначения, часто используемый в системном программировании. Rust был разработан с учетом безопасности памяти и должен был быть таким же производительным, как C и C++.

Альтернативное значение

По историческим причинам некоторые организации используют термин системный программист для описания должностной функции, которую было бы точнее назвать системным администратором . Это особенно верно в организациях, чьи компьютерные ресурсы исторически доминировали на мэйнфреймах , хотя этот термин используется даже для описания должностных функций, которые не связаны с мэйнфреймами. Такое использование возникло из-за того, что администрирование мэйнфреймов IBM часто включало написание пользовательского ассемблерного кода ( язык Basic Assembly Language (BAL) IBM ), который интегрировался с операционной системой , такой как OS/MVS , DOS/VSE или VM/CMS . Действительно, некоторые программные продукты IBM имели существенный вклад кода от персонала по программированию клиентов. Этот тип программирования становится все менее распространенным и все чаще выполняется на языке C, а не на языке Assembly, но термин системный программист по-прежнему используется как фактическое название должности для персонала, администрирующего мэйнфреймы IBM, даже в тех случаях, когда они регулярно не занимаются деятельностью по системному программированию.

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

Ссылки

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

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