Korisnik:Ivanaostojic/prevod1
Sistemsko programiranje
[uredi]Sistemsko programiranje je aktivnost programiranja[1] Računarskog sistemskog softvera. Glavna razlika između sistemskog i aplikativnog programiranja je u tome što aplikativno programiranje proizvodi softver koji direktno pruža usluge korisniku (npr. za obradu teksta), dok je cilj sistemskog programiranja izrada softvera i platformi koje pružaju usluge drugom softveru, često pod ograničenjima performansi (npr. operativni sistemi, naučni proračuni, endžini za igre, industrijska automatizacija i softver kao usluga).[1]
Sistemsko programiranje zahteva visok nivo svesti o hardveru, jer mu je cilj efikasna upotreba resursa.
Pregled
[uredi]Karakteristike sistemskog programiranja uključuju:
- Programer može pretpostaviti specifične karakteristike hardvera i druga svojstva sistema na kojima program radi, i često će iskoristiti ta svojstva, na primer korišćenjem algoritma za koji se zna da je efikasan kada se koristi sa određenim hardverom..
- Obično se koristi programski jezik niskog nivoa, što omogućava:
- Efikasan rad u okruženjima sa ograničenim resursima.
- Male režijske troškove pri izvršavanju programa, sa minimalnom ili nikakvom run-time bibliotekom.
- Direktnu kontrolu nad memorijom i tokom izvršavanja.
- Programer može pisati delove programa direktno u asemblerskom jeziku
- Programi često ne mogu da se izvršavaju u debuggeru. Simulacije se ponekad koriste za rešavanje ovog problema.
Većina softvera napisanog savremenim jezicima može se izvršavati u debuggeru, ali to često nije prihvatljivo u produkciji ili ugrađenim sistemima.
U sistemskom programiranju, automatsko upravljanje memorijom nije uobičajeno i debugging može biti složen.
Istorija
[uredi]Prvobitno su sistemski programeri pisali isključivo u assembler jezicima. Tokom kasnih 1960-ih istraživana je podrška za jezike višeg nivoa, što je dovelo do jezika kao što su PL/S, BLISS, BCPL i proširenog ALGOL-a, korišćenog za Burroughs velike sisteme. Forth je takođe našao primenu kao sistemski jezik.
U 1970-im, širenje C jezika uz podršku Unix sistema omogućilo je njegovu široku upotrebu. Kasniji jezik, Embedded C++, korišćen je u macOS drajverima I/O Kita.[2]
Inženjeri iz Google-a su 2007. razvili Go kako bi poboljšali produktivnost programera za rad u velikim distribuiranim sistemima, sa karakteristikama kao što su konkurentnost i upravljanje memorijom.[3]
Rust, predstavljen 2015. godine, jezik je usmeren na sigurnost memorije i često se koristi u sistemskom programiranju, pružajući performanse uporedive sa C i C++ jezicima.
Alternativno značenje
[uredi]Iz istorijskih razloga, u nekim organizacijama se izraz sistemski programer koristi za radna mesta koja bi preciznije mogla biti opisana kao sistemski administrator. Ovaj termin se često koristi u kompanijama sa mainframe računarima, gde administracija uključuje pisanje prilagođenog assembler koda za integraciju sa operativnim sistemima kao što su OS/MVS, DOS/VSE ili VM/CMS. Iako se ova praksa smanjuje, termin sistemski programer i dalje označava administratore u IBM mainframe okruženju.
Vidi još
[uredi]- Ousterhoutova dihotomija
- Sistemski programski jezik
- Skriptni jezik
- Rukovalac prekidima
- Računarsko programiranje
Reference
[uredi]- ↑ 1,0 1,1 „Panel: Systems Programming in 2014 and Beyond“. Microsoft.
- ↑ Apple Inc (14 August 2009). „I/O Kit Device Driver Design Guidelines“. Apple Inc.
- ↑ „Go at Google: Language Design in the Service of Software Engineering - The Go Programming Language“ (на en).