Софтвер

програми (наредбе, инструкције) који упућују рачунар како треба да извршава одређене задатке
(преусмерено са Рачунарски софтвер)

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

Дијаграм приказује како корисник употребљава апликациони софтвер[1] на типичном рачунару. Слој апликационог софтвера се сучељава са оперативним системом, који затим комуницира са хардвером. Стрелице показују проток информација.[2]

Извршни код се састоји од програмског тј. машинског језика са инструкцијама специфичне за сваки процесор (енгл. central processing unit – CPU ).[4][5] Машински језик чине група бинарних вредности које прослеђују инструкције до процесора о промени стања рачунара. Као пример тога имамо када инструкција мења вредност сачувана у посебној локацији рачунара, и у том случају резултат промене није видљив кориснику. Такође, инструкције могу довести до промене на екрану рачунара, који су, дакле, видљиви кориснику. Процесор ће извршавати радње са инструкцијама по редоследу по ком су му инструкције достављене, уколику му није задато да прескочи са једне на другу инструкцију, или је прекинуто (у данашње време су вишејезгарни процесори доминантни,[6] код којих свако језгро може да извршава инструкције по редоследу; мада сваки апликациони софтвер може да се извршава на једном језгру, знатан порција софтвера је направљена тако да користи мноштво језгара[7][8]).

Софтвер записан у машинском језику је познат као машински код, док је у пракси најчешће записан као скуп програмских језика високог нивоа,[9] због тога што су много ефикаснији, а такође и једноставнији за коришћење човеку него машинском језику.[10] Овакви програми се преводе у машински језик помоћу компајлера или интерпретатора, као и комбинацијом ова два програма. Софтвер такође може бити записан у програмском језику ниског нивоа – асемблеру,[11] програму који представља машински језик коришћењем алфабета.[12]

Историјат

уреди

Први део софтвера (алгоритам) је у деветнаестом веку написала Ејда Кинг Лавлејс[13][14] за аналитички мотор,[15][16][17] међутим нити је софтвер успешно направљен нити аналитички мотор, док је прва теорија о софтверу, још пре појављивања рачунара какав постоји данас, представљена 1935. године у есеју Computable numbers with an application to the Entscheidungsproblem.[18][19]

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

Типови софтвера

уреди

Погледај : Категорије софтвера

Софтвер се дели на:

  1. Софтвер Апликација — које рачунар користи за извршавање специјалних функција или за забаву (операције које не укључују основне операције рачунара). Постоји много врста софтвера апликација, због великог спектра задатака које модеран рачунар извршава.
  2. Системски софтвер — је направљен за директну комуникацију са хардвером, да би омогућио основне функције корисницима, као и другим софтверима, и да оспособи платформу за активне апликације.[20][21]

Системски софтвер садржи:

  • Оперативне системе — који су, заправо, колекција софтвера направљена за управљање ресурсима и која омогућава заједничке услуге осталим софтверима.[22][23] Надзорни програми, покретач оперативног система и вишезначна јединица (љуска – shell) су кључни делови оперативног система. У пракси, оперативни систем добијамо са додатним софтвером (укључујући и софтвер апликација).
  • Управљачке програме – драјвере

Драјвери омогућавају функцију одређеној врсти уређаја прикаченој на рачунар.[24][25] Сваком уређају је потребан најмање један драјвер.

Домен извршења

уреди
  • Апликације радне површине, као што су интернет претраживачи и Microsoft Office, као и smartphone[27] и таблет aplikacije ( "apps"). Постоји притисак у неким деловима софтверске индустрије да се споје апликације радне површине са мобилним апликацијама до одређене мере. Windows 8, касније Ubuntu Touch, покушали су да дозволе коришћење исте врсте апликацијског корисничког интерфејса на десктоп и лаптоп, мобилним уређајима и хибридним таблетима.
  • JavaScript скрипте су делови софтвера традиционално уграђене у веб странице које се покрећу директно из интернет претраживача када се учита интернет страница без потребе за прикључком за интернет претраживач.

Софтвер написан другим програмским језицима се такође може покренути у интернет претраживачу ако је софтвер преведен у JavaScript, или ако је прикључак за интернет претраживач који подржава тај језик инсталиран; Најчешћи претходно поменути пример су ActionScript скрипте, које подржава Adobe Flash. Серверски софтвер који укључује:

  • Интернет апликације, које обично раде на интернет серверу и преносе динамично створене интернет странице на интернет претраживаче, користећи нпр. PHP, Java или ASP.NET, или чак JavaScript који ради на серверу. У модерна времена уобичајено је да неки JavaScript такође ради у интернет претраживачу, у ком случају они делимично раде на серверу а делимично на интернет претраживачу.
  • Прикљуци и екстензије су софтвер који допуњује или мења функционалност другог дела софтвера, и захтевају да се користи тај софтвер да би могли да функционишу;
  • Уграђени софтвер — постоји као firmware у уграђеним системима, уређајима намењеним једној или више функција као што су аутомобили и телевизори (иако неки уграђени уређаји као што су бежични чипсетови, могу сами бити део обичног, не-уграђеног рачунарског система као што је PC или[28]). У погледу уграђених система некад нема јасне разлике између системског софтвера и апликацијског софтвера, али неки уграђени системи покрећу уграђене оперативне системе, и ови системи задржавају разлику између системског софтвера и апликацијског софтвера (иако ће типично бити само једна фиксна апликација која је увек покренута).
  • Микрокод је специјални, релативно непознат тип уграђеног софтвера који говори самом процесору како да изврши машински код, тако да је у ствари нижег ранга од машинског кода.[29] Типично је својствено процесоровом произвођачу, и било која неопходна исправљачка микрокод софтвер ажурирања су достављена од њих корисницима (што је много јефтиније од слања замене процесорског хардвера). Тако да обичан програмер не очекује да ће икад морати да се бави тиме.

Програмски алат

уреди

Главни чланак : Програмски алат

Програмски алат је софтвер у облику програма или апликација које произвођачи софтвера (такође знани као програмери, кодери, хакери или софтверски инжењери) користе да стварају, одстране неправилности, одржавају (побољшају или поправе), или једноставно доприносе софтверу. Као што је већ речено, софтвер је написан у једном или више програмских језика – постоји велики број програмских језика, а сваки од њих има посебну врсту имплементације и сваки садржи себи својствен сет програмских алата. Ови алати могу бити компајлери, [„дебагер“]и, интерпретатори, линкери и текст едитори, који могу бити комбиновани међусобно да би извршили одређени задатак; или могу формирати интегрисано развојно окружење, које комбинује већину од свих алата. Интегрисано развојно окружење (IDE) то може извести или позивајући релевантне индивидуалне алате, или ре-имплементирањем њихових функција на нов начин. Интегрисано развојно окружење омогућава лакше извођење одређених задатака, као што су претрага података у одређеном пројекту. Мноштво имплементација програмских језика омогућавају обе опције – и коришћење индивидуалних алатки и интегрисано радно окружење.

Извршење

уреди

Главни чланак : Извршавање (рачунарство)

  • Рачунарски софтвер је складиштен у меморији рачунара (као што је хард диск). Када се софтвер учита, рачунар почиње са извршавањем наредби софтвера. Овај процес укључује прослеђивање инструкција од софтвера апликација, преко системског софтвера, до хардвера, где се добија инструкција у виду машинског кода. Свака инструкција је узрок неких операција, нпр. пренос података, преношење неког рачунања или мењање контролног тока инструкција.

Софтверске лиценце

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

Власнички софтвер се дели на две групе:

  • Фривер који укључује и категорију бесплатног тестирања (free trial) софтвера или Freemium софтвера. Као што само име каже, овај софтвер се може користити бесплатно, иако код бесплатног тестирања или некад и код freemium софтвера, то некад може бити само на одређени временски период или може бити ограничено на коришћење само одређених функција софтвера.
  • софтвер који се наплаћује, често назван комерцијални софтвер је легалан само уз купљену лиценцу.

Дизајн и извршење

уреди

Главни чланци : Развој софтвера, Програмирање и Инжењеринг софтвера

Дизајн и извршење софтвера зависи од комплексности софтвера. Нпр. Дизајнерима и оснивачима Microsoft Word-а је требало знатно више време него при дизајнирању и оснивању Microsoft Notepad-а, због знатно великог броја функција које програм омогућава.

Софтвер је углавном дизајниран и направљен у интегрисаном развојном окружењу, као што су Еклипсa, IntelliJ и Microsoft Visual Studio, који поједностављују процес компилације софтвера. Као што је већ наведено, софтвер је углавном направљен по основу на постојеће софтвере и „апликационог програмског интерфејса“ (API) који основни софтвер садржи, као што су GTK+, JavaBeans и Swing. Библиотеке (API) се класификују по њиховој сврси. На пример, Spring Framework се користи за имплементирање апликација предузећа, Windows Forms библиотека се користи за дизајнирање графичког интерфејса (GUI) апликација као што је Microsoft Word. Када је програм дизајниран, он се ослања на API. Пример за то је Microsoft Windows апликација дизајнирана за радну површину, где корисник може користити .NET Windows Forms библиотеке да сам дизајнира апликације на радној површини. Сакрива их командама Form1.Close(), а открива са Form1.Show[30], где такође може и да дода одређене операције према својим потребама. Без ових библиотека, програмер би морао сам да пише целу једну API библиотеку сам. Компаније као што су Oracle и Мајкрософт имају своје јединствене библиотеке, да би већина њихових апликација које у исписане помоћи њихових софтверских библиотека садржале API библиотеке у њима.

Рачунарски софтвер има посебне економске карактеристике који чине њеног дизајн и дистрибуцију другачијим од других економских добара.[31][32][33]

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

Индустрија и организације

уреди

Велики број софтверских компанија и програмера у свету сачињава софтверску индустрију. Софтвер може бити прилично профитабилна индустрија: Бил Гејтс, саоснивач Мајкрософта[34][35][36] је био најбогатији човек на свету у 2009. години,[37] углавном због његовог власништва над знатним бројем акција у Мајкрософту, компанији одговорној за софтверске производе Microsoft Windows и Microsoft Office.

Беспрофитне софтверске организације обухватају Задужбину за слободни софтвер, ГНУ пројекат и Мозила фондацију. Софтверске стандардизационе организације као што су W3C и IETF развијају препоруке софтверских стандарда као што су: XML, HTTP и HTML, тако да софтвер може да интероперабилно функционише.

Друге добро познате велике софтверске компаније обухватају: Оракл, Novell, SAP, Symantec, Adobe Systems, Sidetrade и Corel, док мале компаније често пружају иновације.

Види још

уреди

Референце

уреди
  1. ^ „Application software”. PC Magazine. Ziff Davis. 
  2. ^ Ulrich, William. „Application Package Software: The Promise Vs. Reality”. Cutter Consortium. 
  3. ^ Ceruzzi, Paul E. (2000). A History of Modern Computing. Cambridge, Massachusetts: MIT Press. ISBN 978-0-262-03255-1. 
  4. ^ Kuck 1978, стр. 12
  5. ^ Weik, Martin H. (1961). „A Third Survey of Domestic Electronic Digital Computing Systems”. Ballistic Research Laboratory. 
  6. ^ Rouse, Margaret (2007). „Definition: multi-core processor”. TechTarget. Приступљено 06. 03. 2013. 
  7. ^ „CSA Organization” (PDF). Архивирано из оригинала (PDF) 25. 11. 2011. г. Приступљено 26. 08. 2017. 
  8. ^ Suleman, Aater (20. 05. 2011). „What makes parallel programming hard?”. FutureChips. Архивирано из оригинала 29. 05. 2011. г. Приступљено 06. 03. 2013. 
  9. ^ HThreads - RD Glossary
  10. ^ „Compiler construction”. Архивирано из оригинала 02. 11. 2013. г. Приступљено 14. 05. 2015. 
  11. ^ Assembler language, IBM Knowledge center
  12. ^ Saxon, James; Plette, William (1962). „Programming the IBM 1401” (PDF). Prentice-Hall. LoC 62-20615] 
  13. ^ Phillips, Ana Lena (2011). „Crowdsourcing Gender Equity: Ada Lovelace Day, and its companion website, aims to raise the profile of women in science and technology”. American Scientist. 99 (6): 463. doi:10.1511/2011.93.463. 
  14. ^ „Ada Lovelace honoured by Google doodle”. The Guardian. 10. 12. 2012. Приступљено 10. 12. 2012. 
  15. ^ „Babbage's Analytical Engine, 1834-1871. (Trial model)”. Science Museum. Приступљено 23. 08. 2017. 
  16. ^ John Graham-Cumming (04. 10. 2010). „The 100-year leap”. O'Reilly Radar. Архивирано из оригинала 18. 08. 2012. г. Приступљено 01. 08. 2012. 
  17. ^ „The Babbage Engine: The Engines”. Computer History Museum. 2016. Приступљено 07. 05. 2016. 
  18. ^ Turing, A.M. (1936), „On Computable Numbers, with an Application to the Entscheidungsproblem”, Proceedings of the London Mathematical Society, 2 (објављено 1937), 42 (1), стр. 230—65, doi:10.1112/plms/s2-42.1.230 
  19. ^ Turing, A.M. (1938), „On Computable Numbers, with an Application to the Entscheidungsproblem: A correction”, Proceedings of the London Mathematical Society, 2 (објављено 1937), 43 (6), стр. 544—6, doi:10.1112/plms/s2-43.6.544 )
  20. ^ „What is software? - Definition from WhatIs.com”. Searchsoa.techtarget.com. Архивирано из оригинала 27. 10. 2010. г. Приступљено 24. 06. 2012. 
  21. ^ „Panel: Systems Programming in 2014 and Beyond”. Microsoft. Архивирано из оригинала 09. 05. 2019. г. Приступљено 04. 12. 2015. 
  22. ^ Stallings 2005, стр. 6.
  23. ^ Dhotre 2009, стр. 1.
  24. ^ „What is a device driver?, The purpose of device drivers”. PC. 08. 11. 2012. Архивирано из оригинала 21. 10. 2014. г. 
  25. ^ Services, EMC Education (2010). Information Storage and Management: Storing, Managing, and Protecting Digital Information. John Wiley & Sons. ISBN 9780470618332. 
  26. ^ Parsons & Oja 2013, стр. 129.
  27. ^ IEEE computer society
  28. ^ Smarthphone
  29. ^ „Microcode”. Архивирано из оригинала 01. 06. 2015. г. Приступљено 14. 05. 2015. 
  30. ^ Microsoft API and reference catalog
  31. ^ Dan Kaminsky's blog
  32. ^ v. Engelhardt; Sebastian (2008). „The Economic Properties of Software”. Jena Economic Research Papers. 2 (2008–045). 
  33. ^ Kaminsky, Dan (1999). „Why Open Source Is The Optimum Economic Paradigm for Software”. 
  34. ^ „The World's Biggest Public Companies”. Forbes (на језику: енглески). Приступљено 26. 01. 2017. 
  35. ^ „Market Cap Rankings”. Ycharts. Zacks Investment Research. 08. 04. 2012. Архивирано из оригинала 31. 03. 2012. г. Приступљено 09. 04. 2012. 
  36. ^ „Microsoft Corporation”. Encyclopædia Britannica. 9. 10. 2023. 
  37. ^ „The $600 billion challenge”. Fortune. Приступљено 16. 04. 2017. 

Литература

уреди

Спољашње везе

уреди