Język programowania systemu - System programming language

Język programowania systemu to język programowania używany do programowania systemu ; takie języki są przeznaczone do pisania oprogramowania systemowego , co zwykle wymaga innych podejść do programowania w porównaniu z oprogramowaniem aplikacyjnym. Edsger Dijkstra odnosi się do tych języków jako do zorientowanych maszynowo języków wysokiego rzędu lub mohol .

Języki programowania ogólnego przeznaczenia koncentrują się na ogólnych funkcjach, aby umożliwić programom napisanym w tym języku używanie tego samego kodu na różnych platformach. Przykładami takich języków są ALGOL i Pascal . Ta ogólna jakość zazwyczaj wiąże się z kosztem odmowy bezpośredniego dostępu do wewnętrznych elementów maszyny, co często ma negatywny wpływ na wydajność.

Natomiast języki systemowe są zaprojektowane nie pod kątem zgodności, ale pod kątem wydajności i łatwości dostępu do podstawowego sprzętu, przy jednoczesnym zapewnieniu koncepcji programowania wysokiego poziomu, takich jak programowanie strukturalne . Przykłady obejmują SPL i ESPOL , z których oba są podobne do ALGOL w składni, ale dostosowane do odpowiednich platform. Inne są wieloplatformowe, ale zaprojektowane do pracy blisko sprzętu, takie jak BLISS , JOVIAL i BCPL .

Niektóre języki wykraczają poza domeny systemu i aplikacji, wypełniając lukę między tymi zastosowaniami. Przykładem kanonicznym jest C , który jest szeroko stosowany zarówno do programowania systemowego, jak i aplikacji. Robią to również niektóre współczesne języki, takie jak Rust i Swift .

Cechy

W przeciwieństwie do języków aplikacji, języki programowania systemowego zazwyczaj oferują bardziej bezpośredni dostęp do fizycznego sprzętu maszyny: archetypowym językiem programowania systemowego w tym sensie był BCPL . Języki programowania systemowego często nie mają wbudowanych funkcji wejścia/wyjścia (I/O), ponieważ projekt oprogramowania systemowego zwykle opracowuje własne mechanizmy I/O lub opiera się na podstawowych funkcjach wejścia/wyjścia monitora lub funkcji zarządzania ekranem. Rozróżnienie między językami używanymi do programowania systemowego i programowania aplikacji zostało z czasem zatarte wraz z powszechną popularnością języków PL/I , C i Pascal .

Historia

Najwcześniejsze oprogramowanie systemowe zostało napisane w języku asemblerowym głównie dlatego, że nie było alternatywy, ale także z powodów takich jak wydajność kodu wynikowego, czas kompilacji i łatwość debugowania. Języki aplikacji, takie jak FORTRAN, były używane do programowania systemu, chociaż zwykle wymagały one napisania pewnych podprogramów w języku asemblerowym.

Języki średniego poziomu

Języki średniego poziomu „mają dużo składni i udogodnień języka wyższego poziomu, ale także zapewniają bezpośredni dostęp w języku (jak również język asemblera) do funkcji maszyny”. Najwcześniejszym z nich był ESPOL na komputerach mainframe Burroughs około 1960, a następnie Niklaus Wirth „s PL360 (pierwszy opisana w systemie Burroughs w przekroju kompilator ), która ogólną składnię Algol 60 , ale których stwierdzenia manipulować bezpośrednio do rejestrów CPU i pamięć . Inne języki w tej kategorii to MOL-360 i PL/S .

Jako przykład, typowym stwierdzeniem PL360 jest R9 := R8 and R7 shll 8 or R6, oznaczające, że rejestry 8 i 7 powinny być i'ed razem, wynik przesunięty w lewo o 8 bitów, wynik tego or'ed z zawartością rejestru 6, a końcowy wynik umieszczony w zarejestruj się 9.

Języki wyższego poziomu

Podczas gdy PL360 jest na poziomie semantycznym języka asemblerowego, inny rodzaj języka programowania systemowego działa na wyższym poziomie semantycznym, ale ma określone rozszerzenia zaprojektowane tak, aby język ten był odpowiedni do programowania systemowego. Wczesnym przykładem tego rodzaju języka jest LRLTRAN, który rozszerzył Fortran o funkcje manipulacji znakami i bitami, wskaźniki i bezpośrednio adresowane tablice skoków.

Następnie opracowano języki takie jak C, w których kombinacja cech wystarczała do napisania oprogramowania systemowego, i można było opracować kompilator generujący wydajne programy obiektowe na skromnym sprzęcie. Taki język generalnie pomija funkcje, których nie można efektywnie zaimplementować, i dodaje niewielką liczbę funkcji zależnych od maszyny, potrzebnych do uzyskania dostępu do określonych możliwości sprzętowych; W tym celu często używany jest wbudowany kod asemblera , taki jak instrukcja C. Chociaż powstało wiele takich języków, C i C++ przetrwały. asm

Język programowania systemu (SPL) to także nazwa określonego języka w komputerach z serii HP 3000 , używanego w systemie operacyjnym HP Multi-Programming Executive (MPE) i innych częściach oprogramowania systemowego.

Główne języki

Język Inicjator Data urodzenia Wpływem Używany do
ESPOL Burroughs Corporation 1961 ALGOL 60 MCP
PL/I IBM , UDOSTĘPNIJ 1964 ALGOL, FORTRAN, trochę COBOL Multiki
PL/S IBM 1960 PL/I OS/360
PL360 Niklaus Wirth 1968 ALGOL 60 ALGOL W
Pascal Niklaus Wirth 1970 ALGOL W Apollo Komputer Aegis, Apple MacApp
ROZKOSZ Carnegie Mellon University 1970 ALGOL-PL/I VMS (porcje)
Język do rozwoju systemów (LSD) R. Daniel Bergeron i in. (Brązowy Uniwersytet) 1971 PL/I
C Dennis Ritchie 1972 BCPL , B (język programowania) Większość jądra systemu operacyjnego , w tym uniksowych systemów
NOWOŚĆP Burroughs 1970 ESPOL, ALGOL MCP
PL/8 IBM 1970 PL/I AIX
PL-6 Honeywell, Inc. 1970 PL/I CP-6
SYMBOL CDC 1970 JOWIALNY podsystemy NOS , większość kompilatorów, edytor FSE
C++ Bjarne Stroustrup 1979 C , Symula Aplikacje C++
Ada Jean Ichbiah , S. Tucker Taft 1983 ALGOL 68 , Pascal , C++ , Java , Eiffel Systemy wbudowane, jądra systemu operacyjnego, kompilatory, gry, symulacje, CubeSat , kontrola ruchu lotniczego, awionika
D Cyfrowy Mars 2001 C++ Wiele domen
Nimi Andreas Rumpf 2006 Python , Ada , Lisp , Oberon , C++ , Modula-3 , Object Pascal Gry, kompilatory, jądra systemu operacyjnego, tworzenie aplikacji, systemy wbudowane itp.
Rdza Badania Mozilli 2010 C++ , Haskell , Erlang , Ruby Serwo , system operacyjny Redox
Szybki Apple Inc. 2014 C , Cel-C , D , Rdza Tworzenie aplikacji na macOS , iOS , watchOS i tvOS

Zobacz też

Uwagi

Bibliografia

Zewnętrzne linki

Ten artykuł jest oparty na materiale zaczerpniętym z bezpłatnego słownika komputerowego on-line sprzed 1 listopada 2008 r. i włączonym na warunkach „ponownego licencjonowania” GFDL w wersji 1.3 lub nowszej.