Введение

Разработка программ для компьютерных систем. Системное программирование — это деятельность по созданию программного обеспечения.

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

История

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

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

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