stringtranslate.com

Язык системного программирования

Язык системного программирования — это язык программирования, используемый для системного программирования ; такие языки предназначены для написания системного программного обеспечения , которое обычно требует иных подходов к разработке по сравнению с прикладным программным обеспечением. Эдсгер Дейкстра называл эти языки машинно-ориентированными языками высокого порядка , или мохол . [1]

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

Системные языки, напротив, разработаны не для совместимости, а для обеспечения производительности и простоты доступа к базовому оборудованию, в то же время обеспечивая концепции программирования высокого уровня, такие как структурированное программирование . Примеры включают ESPOL и SPL , оба из которых похожи на ALGOL по синтаксису, но настроены на соответствующие платформы. Другие являются кроссплатформенными, но предназначены для работы близко к оборудованию, например BLISS , JOVIAL и BCPL .

Некоторые языки охватывают домены системы и приложений, устраняя разрыв между этими использованиями. Каноническим примером является C , который широко используется как для системного, так и для прикладного программирования. Некоторые современные языки также делают это, например Rust и Swift .

Функции

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

История

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

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

Языки среднего уровня «имеют большую часть синтаксиса и возможностей языка более высокого уровня, но также обеспечивают прямой доступ к языку (а также ассемблеру) к функциям машины». [2] Самым ранним из них был ESPOL на мэйнфреймах Burroughs примерно в 1960 году, за ним последовал PL360 Никлауса Вирта ( впервые написанный на системе Burroughs как кросс-компилятор ), который имел общий синтаксис ALGOL 60 , но чьи операторы напрямую манипулировали процессором. регистры и память. Другие языки этой категории включают MOL-360 и PL/S .

Например, типичный оператор PL360 имеет вид R9 := R8 and R7 shll 8 or R6, означающий, что регистры 8 и 7 должны быть объединены и объединены, результат сдвинут влево на 8 бит, результат этого объединен с содержимым регистра 6, а окончательный результат помещен в регистр 9. [3]

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

Хотя PL360 находится на семантическом уровне языка ассемблера, другой вид языка системного программирования работает на более высоком семантическом уровне, но имеет специальные расширения, предназначенные для того, чтобы сделать язык подходящим для системного программирования. Ранним примером такого рода языка является LRLTRAN [4] , который расширил Фортран функциями для манипуляций с символами и битами, указателями и таблицами переходов с прямой адресацией.

Впоследствии были разработаны такие языки, как C, в которых комбинации функций было достаточно для написания системного программного обеспечения, а также можно было разработать компилятор , который генерировал эффективные объектные программы на скромном оборудовании. В таком языке обычно отсутствуют функции, которые не могут быть эффективно реализованы, и добавляется небольшое количество машинно-зависимых функций, необходимых для доступа к определенным аппаратным возможностям; Для этой цели часто используется встроенный ассемблерный код, такой как оператор C. asmХотя было разработано множество таких языков, [1] выжили только C и C++ .

Основные языки

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

Примечания

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

  1. ^ Аб ван дер Поэль, WL; Маарссен, Лос-Анджелес, ред. (27–31 августа 1973 г.). Машинно-ориентированные языки высокого уровня . Рабочая конференция ИФИП по машинно-ориентированным языкам высокого уровня (MOHL). Тронхейм, Норвегия: Международная федерация обработки информации.Труды опубликованы в 1974 году.
  2. ^ аб Саммет, Жан (октябрь 1971 г.). «Краткий обзор языков, используемых для реализации систем». Уведомления ACM SIGPLAN . 6 (9): 1–19. дои : 10.1145/942596.807055 .
  3. ^ Вирт, Никлаус (1968). «PL360, язык программирования для компьютеров 360°». Журнал АКМ . 15 (1): 37–74. дои : 10.1145/321439.321442.
  4. ^ Мендичино, Сэм Ф.; Хьюз, Роберт А.; Мартин, Жанна Т.; МакМахон, Фрэнк Х.; Ранеллетти, Джон Э.; Цвакенберг, Ричард Г. (1968). «Компилятор LRLTRAN». Коммуникации АКМ . 11 (11): 747–755. дои : 10.1145/364139.364154.
  5. ^ Вульф, Вашингтон; Рассел, Д.Б.; Хаберман, А.Н. (декабрь 1971 г.). «БЛИСС: язык системного программирования». Коммуникации АКМ . 14 (12): 780–790. CiteSeerX 10.1.1.691.9765 . дои : 10.1145/362919.362936. 
  6. ^ «Пример использования BAE Systems Eurofighter Typhoon» (PDF) .
  7. ^ «Какие языки программирования используются для бортового оборудования самолетов?».
  8. ^ «TGVweb - система сигнализации TGV» .
  9. ^ "Броненосец".
  10. ^ «M2OS. RTOS с поддержкой простых задач для небольших микроконтроллеров» .
  11. ^ "Jгривера67/HiRTOS". Гитхаб .
  12. ^ "Модуляр Инк." www.modular.com . Проверено 25 марта 2024 г.
  13. ^ «Исследовательские проекты Mozilla». Архивировано из оригинала 4 января 2014 г.

Внешние ссылки