Korisnik:Ivanaostojic/prevod1

Sistemsko programiranje

uredi

Programiranje sistema, ili sistemsko programiranje, je aktivnost programiranja[1] softvera računarskog sistemasoftvera računarskog sistema. Osnovna razlika sistemskog programiranja u poređenju sa aplikativnim programiranjem je to što programiranje aplikacija ima za cilj da proizvede softver koji direktno pruža usluge korisniku (npr. program za obradu teksta), dok sistemsko programiranje ima za cilj da proizvede softver i softverske platforme koje pružaju usluge drugom softveru i ograničene su performansama ili oboje (npr. operativni sistemi, računarske naučne aplikacije, motori za igre, industrijska automatizacija i softver kao uslužne aplikacije).[1]

Sistemsko programiranje zahteva veliki stepen svesti o hardveru. Njegov cilj je da postigne efikasno korišćenje raspoloživih resursa, bilo zato što je sam softver kritičan za performanse ili zato što se čak i mala poboljšanja efikasnosti direktno pretvaraju u značajnu uštedu vremena ili novca.

Pregled

uredi

Sistemsko programiranje karakterišu sledeći atributi:

  • Programer može da napravi pretpostavke o hardveru i drugim svojstvima sistema na kojem 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 ili dijalekt programskog jezika tako da:
    • Programi mogu da rade u okruženjima sa ograničenim resursima
    • Programi mogu biti efikasni sa malim troškovima za vreme izvršavanja, možda imaju ili malu biblioteku vremena izvršavanja ili je nemaju uopšte
    • Programi mogu da koriste direktnu i "sirovu" kontrolu nad pristupom memoriji i tokom kontrole
    • Programer može pisati delove programa direktno u asemblerskom jeziku
  • Često se sistemski programi ne mogu pokrenuti u debageru. Pokretanje programa u simuliranom okruženju se ponekad može koristiti za smanjenje ovog problema.

U sistemskom programiranju, često su dostupna ograničena sredstva za programiranje. Upotreba automatskog sakupljanja smeća nije uobičajena i ponekad je teško izvršiti otklanjanje grešaka. Biblioteka vremena izvršavanja, ako je uopšte dostupna, obično je daleko manje moćna i manje proverava greške. Zbog tih ograničenja često se koriste praćenje i evidentiranje; operativni sistemi mogu imati izuzetno razrađene podsisteme za evidentiranje.

Implementacija određenih delova u operativnim sistemima i umrežavanju zahteva sistemsko programiranje, na primer implementaciju straničnog (virtuelne memorije) ili drajvera uređaja za operativni sistem.

Istorija

uredi

Prvobitno su sistemski programeri pisali na asemblerskom jeziku. Eksperimenti sa hardverskom podrškom na jezicima visokog nivoa u kasnim 1960-im doveli su do jezika kao što su PL/S, BLISS, BCPL i prošireni ALGOL za velike sisteme Burroughs. Forth takođe ima aplikacije kao sistemski jezik. U 1970-im, C je postao široko rasprostranjen, potpomognut rastom Unik-a. U skorije vreme, podskup C++-a koji se zove Embedded C++ video je izvesnu primenu, na primer, koristi se u upravljačkim programima I/O Kit-a za macOS.[2] Inženjeri koji rade u Google-u kreirali su Go 2007. godine kako bi se pozabavili produktivnošću programera u velikim distribuiranim sistemima, sa funkcijama usmerenim na programere kao što su istovremenost, sakupljanje smeća i brža kompilacija programa od C i C++.[3] Godine 2015. izašao je Rust, programski jezik opšte namene koji se često koristi u sistemskom programiranju. Rust je dizajniran imajući na umu bezbednost memorije i da bude jednako efikasan kao C i C++.

Alternativno značenje

uredi

Iz istorijskih razloga, neke organizacije koriste termin sistemski programer da opišu funkciju posla koja bi se preciznije nazvala sistemski administrator. Ovo je posebno tačno u organizacijama čijim su računarskim resursima istorijski dominirali mejnfrejmovi, iako se taj termin čak koristi i za opisivanje radnih funkcija koje ne uključuju glavne računare. Ova upotreba je nastala zato što je administracija IBM velikih računara često uključivala pisanje prilagođenog asemblerskog koda (IBM-ov osnovni jezik asemblera (BAL)), koji se integrisao sa operativnim sistemom kao što je OS/MVS, DOS/VSE ili VM/CMS. Zaista, neki IBM softverski proizvodi imali su značajan doprinos kodu od strane osoblja programskog osoblja. Ova vrsta programiranja je progresivno sve manje uobičajena i sve se više radi na C-u, a ne na asembleru, ali se termin sistemski programer i dalje koristi kao de-fakto naziv posla za osoblje koje administrira IBM mejnfrejmove čak i u slučajevima kada se ne bave redovno programiranjem sistema aktivnosti.

Vidi takođe

uredi
  • Ousterhautova dihotomija
  • Sistemski programski jezik
  • Jezik skripte
  • Obrađivač prekida
  • Computer Programming

Reference

uredi