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
- Corbató, Fernando (1969-05-06). „PL/I jako narzędzie programowania systemowego” . Dane : 68–76 . Źródło 2012-01-23 .
- Języki programowania systemu
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.