Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

Особенности [ править ]

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

История [ править ]

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

Языки среднего уровня [ править ]

Языки среднего уровня «имеют большую часть синтаксиса и возможностей языка более высокого уровня, но также обеспечивают прямой доступ на языке (а также предоставляют язык ассемблера) к машинным функциям». [2] Самый ранний из них был ESPOL на Burroughs мэйнфреймы примерно 1960, а затем Никлаус Вирт «S ПЛ360 (первый написанный на системе 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], который расширил Fortran функциями для символьных и битовых манипуляций, указателей и таблиц переходов с прямой адресацией.

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

Язык системного программирования (SPL) - это также название определенного языка на компьютерах серии HP 3000 , используемого для его операционной системы HP Multi-Programming Executive (MPE) и других частей системного программного обеспечения.

Основные языки [ править ]

See also[edit]

  • Ousterhout's dichotomy
  • Language for Systems Development
  • PreScheme

Notes[edit]

  1. ^ Swift uses Automatic Reference Counting

References[edit]

  1. ^ a b van der Poel, W. L.; Maarssen, L. A., eds. (27–31 August 1973). Machine oriented higher level languages. IFIP Working Conference on Machine Oriented Higher Level Languages (MOHL). Trondheim, Norway: International Federation for Information Processing. Proceedings published 1974.
  2. ^ a b Sammet, Jean (October 1971). "Brief Survey of Languages Used for Systems Implementation". ACM SIGPLAN Notices. 6 (9): 1–19. doi:10.1145/942596.807055.
  3. ^ Wirth, Niklaus. "PL360, A Programming Language for the 360 Computers". Journal of the ACM. 15 (1): 37–74.
  4. ^ Mendicino, Sam F.; Hughes, Robert A.; Martin, Jeanne T.; McMahon, Frank H.; Ranelletti, John E.; Zwakenberg, Richard G. "The LRLTRAN Compiler". Communications of the ACM. 11 (11): 747–755.
  5. ^ Wulf, W. A.; Russell, D. B.; Haberman, A. N. (December 1971). "BLISS: A Language for Systems Programming". Communications of the ACM. 14 (12): 780–790. CiteSeerX 10.1.1.691.9765. doi:10.1145/362919.362936.
  6. ^ "C++ applications".
  7. ^ "Mozilla Research". 1 January 2014.

External links[edit]

  • Corbató, Fernando (1969-05-06). "PL/I as a Tool for System Programming". Datamation: 68–76. Retrieved 2012-01-23.
  • System Programming Languages

This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.