Введение

Системный язык программирования — это язык программирования, используемый для системного программирования; такие языки предназначены для разработки системного программного обеспечения, которое обычно требует иных подходов к разработке, чем прикладное программное обеспечение. Эдсгер Дейкстра называл эти языки машинно-ориентированными языками высокого уровня, или МОЯВ. Языки программирования общего назначения, как правило, ориентированы на универсальные возможности, чтобы программы, написанные на этих языках, могли использовать один и тот же код на различных платформах. Примерами таких языков являются ALGOL и Pascal. Эта универсальность обычно достигается за счет отсутствия прямого доступа к внутренним механизмам машины, что часто негативно сказывается на производительности. Системные языки, напротив, разрабатываются не для обеспечения совместимости, а для достижения высокой производительности и упрощения доступа к базовому аппаратному обеспечению, при этом сохраняя концепции высокоуровневого программирования, такие как структурированное программирование. Примерами служат ESPOL и SPL, синтаксически схожие с ALGOL, но оптимизированные для соответствующих платформ. Другие языки являются кроссплатформенными, но предназначены для работы в непосредственной близости от аппаратного обеспечения, например, BLISS, JOVIAL и BCPL. Некоторые языки занимают промежуточное положение между системной и прикладной областями, объединяя возможности обоих типов. Классическим примером является C, который широко используется как для системного, так и для прикладного программирования. Некоторые современные языки также сочетают эти возможности, например, Rust и Swift.

Особенности

В отличие от прикладных языков, языки системного программирования обычно предоставляют более прямой доступ к физическому аппаратному обеспечению машины: типичным примером языка системного программирования в этом смысле был BCPL. В языках системного программирования часто отсутствуют встроенные средства ввода-вывода (I/O), поскольку проект системного программного обеспечения обычно разрабатывает собственные механизмы ввода-вывода или использует базовые средства мониторного ввода-вывода или управления экраном. Со временем различие между языками, используемыми для системного и прикладного программирования, стало менее четким с распространением PL/I, C и Pascal.

История

Самые ранние системные программы были написаны на языке ассемблера главным образом из-за отсутствия альтернативы, но также и по соображениям эффективности объектного кода, времени компиляции и удобства отладки. Для системного программирования использовались языки прикладного программирования, такие как FORTRAN, хотя зачастую все равно требовалось написание некоторых подпрограмм на языке ассемблера.

Языки среднего уровня

Языки среднего уровня "обладают большей частью синтаксиса и средств языка высокого уровня, но также предоставляют прямой доступ из языка (наряду с ассемблером) к аппаратным возможностям".