Корисник:Ivanaostojic/prevod1

Системско програмирање

уреди

Програмирање система, или системско програмирање, је активност програмирања[1] софтвера рачунарског системасофтвера рачунарског система. Основна разлика системског програмирања у поређењу са апликативним програмирањем је то што програмирање апликација има за циљ да произведе софтвер који директно пружа услуге кориснику (нпр. програм за обраду текста), док системско програмирање има за циљ да произведе софтвер и софтверске платформе које пружају услуге другом софтверу и ограничене су перформансама или обоје (нпр. оперативни системи, рачунарске научне апликације, мотори за игре, индустријска аутоматизација и софтвер као услужне апликације).[1]

Системско програмирање захтева велики степен свести о хардверу. Његов циљ је да постигне ефикасно коришћење расположивих ресурса, било зато што је сам софтвер критичан за перформансе или зато што се чак и мала побољшања ефикасности директно претварају у значајну уштеду времена или новца.

Преглед

уреди

Системско програмирање карактеришу следећи атрибути:

  • Програмер може да направи претпоставке о хардверу и другим својствима система на којем програм ради и често ће искористити та својства, на пример коришћењем алгоритма за који се зна да је ефикасан када се користи са одређеним хардвером.
  • Обично се користи програмски језик ниског нивоа или дијалект програмског језика тако да:
    • Програми могу да раде у окружењима са ограниченим ресурсима
    • Програми могу бити ефикасни са малим трошковима за време извршавања, можда имају или малу библиотеку времена извршавања или је немају уопште
    • Програми могу да користе директну и "сирову" контролу над приступом меморији и током контроле
    • Програмер може писати делове програма директно у асемблерском језику
  • Често се системски програми не могу покренути у дебагеру. Покретање програма у симулираном окружењу се понекад може користити за смањење овог проблема.

У системском програмирању, често су доступна ограничена средства за програмирање. Употреба аутоматског сакупљања смећа није уобичајена и понекад је тешко извршити отклањање грешака. Библиотека времена извршавања, ако је уопште доступна, обично је далеко мање моћна и мање проверава грешке. Због тих ограничења често се користе праћење и евидентирање; оперативни системи могу имати изузетно разрађене подсистеме за евидентирање.

Имплементација одређених делова у оперативним системима и умрежавању захтева системско програмирање, на пример имплементацију страничног (виртуелне меморије) или драјвера уређаја за оперативни систем.

Историја

уреди

Првобитно су системски програмери писали на асемблерском језику. Експерименти са хардверском подршком на језицима високог нивоа у касним 1960-им довели су до језика као што су PL/S, BLISS, BCPL и проширени ALGOL за велике системе Бурроугхс. Фортх такође има апликације као системски језик. У 1970-им, C је постао широко распрострањен, потпомогнут растом Уник-а. У скорије време, подскуп C++-а који се зове Embedded C++ видео је извесну примену, на пример, користи се у управљачким програмима I/O Kit-a за macOS.[2] Инжењери који раде у Google-у креирали су Go 2007. године како би се позабавили продуктивношћу програмера у великим дистрибуираним системима, са функцијама усмереним на програмере као што су истовременост, сакупљање смећа и бржа компилација програма од C и C++.[3] Године 2015. изашао је Rust, програмски језик опште намене који се често користи у системском програмирању. Rust је дизајниран имајући на уму безбедност меморије и да буде једнако ефикасан као C и C++.

Алтернативно значење

уреди

Из историјских разлога, неке организације користе термин системски програмер да опишу функцију посла која би се прецизније назвала системски администратор. Ово је посебно тачно у организацијама чијим су рачунарским ресурсима историјски доминирали мејнфрејмови, иако се тај термин чак користи и за описивање радних функција које не укључују главне рачунаре. Ова употреба је настала зато што је администрација IBM великих рачунара често укључивала писање прилагођеног асемблерског кода (IBM-ов основни језик асемблера (BAL)), који се интегрисао са оперативним системом као што је OS/МVS, DOS/VSE или VM/CMS. Заиста, неки IBM софтверски производи имали су значајан допринос коду од стране особља програмског особља. Ова врста програмирања је прогресивно све мање уобичајена и све се више ради на C-у, а не на асемблеру, али се термин системски програмер и даље користи као де-факто назив посла за особље које администрира IBM мејнфрејмове чак и у случајевима када се не баве редовно програмирањем система активности.

Види такође

уреди
  • Оустерхаутова дихотомија
  • Системски програмски језик
  • Језик скрипте
  • Обрађивач прекида
  • Цомпутер Программинг

Референце

уреди