Softver

S Vikipedije, slobodne enciklopedije
Dijagram prikazuje kako korisnik upotrebljava aplikacioni softver[1] na tipičnom računaru. Sloj aplikacionog softvera se sučeljava sa operativnim sistemom, koji zatim komunicira sa hardverom. Strelice pokazuju protok informacija.[2]

Softver su programi (naredbe, instrukcije) koji upućuju računar kako treba da izvršava određene zadatke. Softver je način zapisa algoritama u obliku koji je razumljiv računaru. Povezan je sa hardverom, koji predstavlja komponente računara. Ukoliko hardver i softver nisu povezani, računar ne funkcioniše. Softver se sastoji od programa i biblioteka, kao i dokumenata koji su povezani sa njima. Pojam softvera se često koristi u užem smislu, kao softver aplikacija.[3]

Izvršni kod se sastoji od programskog tj. mašinskog jezika sa instrukcijama specifične za svaki procesor (engl. central processing unit – CPU ).[4][5] Mašinski jezik čine grupa binarnih vrednosti koje prosleđuju instrukcije do procesora o promeni stanja računara. Kao primer toga imamo kada instrukcija menja vrednost sačuvana u posebnoj lokaciji računara, i u tom slučaju rezultat promene nije vidljiv korisniku. Takođe, instrukcije mogu dovesti do promene na ekranu računara, koji su, dakle, vidljivi korisniku. Procesor će izvršavati radnje sa instrukcijama po redosledu po kom su mu instrukcije dostavljene, ukoliku mu nije zadato da preskoči sa jedne na drugu instrukciju, ili je prekinuto (u današnje vreme su višejezgarni procesori dominantni,[6] kod kojih svako jezgro može da izvršava instrukcije po redosledu; mada svaki aplikacioni softver može da se izvršava na jednom jezgru, znatan porcija softvera je napravljena tako da koristi mnoštvo jezgara[7][8]).

Softver zapisan u mašinskom jeziku je poznat kao mašinski kod, dok je u praksi najčešće zapisan kao skup programskih jezika visokog nivoa,[9] zbog toga što su mnogo efikasniji, a takođe i jednostavniji za korišćenje čoveku nego mašinskom jeziku.[10] Ovakvi programi se prevode u mašinski jezik pomoću kompajlera ili interpretatora, kao i kombinacijom ova dva programa. Softver takođe može biti zapisan u programskom jeziku niskog nivoa – asembleru,[11] programu koji predstavlja mašinski jezik korišćenjem alfabeta.[12]

Istorijat[uredi | uredi izvor]

Prvi deo softvera (algoritam) je u devetnaestom veku napisala Ejda King Lavlejs[13][14] za analitički motor,[15][16][17] međutim niti je softver uspešno napravljen niti analitički motor, dok je prva teorija o softveru, još pre pojavljivanja računara kakav postoji danas, predstavljena 1935. godine u eseju Computable numbers with an application to the Entscheidungsproblem.[18][19]

Zahvaljujući ovoj teoriji došlo je do polja računarske nauke i softverskog inženjeringa, u kojima je izučavan softver i njegovo stvaranje. Softverski inženjering se bavio praktičnim delom, dok se računarska nauka bavila time više teoretski nego praktično.

Tipovi softvera[uredi | uredi izvor]

Pogledaj : Kategorije softvera

Softver se deli na:

  1. Softver Aplikacija — koje računar koristi za izvršavanje specijalnih funkcija ili za zabavu (operacije koje ne uključuju osnovne operacije računara). Postoji mnogo vrsta softvera aplikacija, zbog velikog spektra zadataka koje moderan računar izvršava.
  2. Sistemski softver — je napravljen za direktnu komunikaciju sa hardverom, da bi omogućio osnovne funkcije korisnicima, kao i drugim softverima, i da osposobi platformu za aktivne aplikacije.[20][21]

Sistemski softver sadrži:

  • Operativne sisteme — koji su, zapravo, kolekcija softvera napravljena za upravljanje resursima i koja omogućava zajedničke usluge ostalim softverima.[22][23] Nadzorni programi, pokretač operativnog sistema i višeznačna jedinica (ljuska – shell) su ključni delovi operativnog sistema. U praksi, operativni sistem dobijamo sa dodatnim softverom (uključujući i softver aplikacija).
  • Upravljačke programe – drajvere

Drajveri omogućavaju funkciju određenoj vrsti uređaja prikačenoj na računar.[24][25] Svakom uređaju je potreban najmanje jedan drajver.

Domen izvršenja[uredi | uredi izvor]

  • Aplikacije radne površine, kao što su internet pretraživači i Microsoft Office, kao i smartphone [27] i tablet aplikacije ( "apps"). Postoji pritisak u nekim delovima softverske industrije da se spoje aplikacije radne površine sa mobilnim aplikacijama do određene mere. Windows 8, kasnije Ubuntu Touch, pokušali su da dozvole korišćenje iste vrste aplikacijskog korisničkog interfejsa na desktop i laptop, mobilnim uređajima i hibridnim tabletima.
  • JavaScript skripte su delovi softvera tradicionalno ugrađene u veb stranice koje se pokreću direktno iz internet pretraživača kada se učita internet stranica bez potrebe za priključkom za internet pretraživač.

Softver napisan drugim programskim jezicima se takođe može pokrenuti u internet pretraživaču ako je softver preveden u JavaScript, ili ako je priključak za internet pretraživač koji podržava taj jezik instaliran; Najčešći prethodno pomenuti primer su ActionScript skripte, koje podržava Adobe Flash. Serverski softver koji uključuje:

  • Internet aplikacije, koje obično rade na internet serveru i prenose dinamično stvorene internet stranice na internet pretraživače, koristeći npr. PHP, Java ili ASP.NET, ili čak JavaScript koji radi na serveru. U moderna vremena uobičajeno je da neki JavaScript takođe radi u internet pretraživaču, u kom slučaju oni delimično rade na serveru a delimično na internet pretraživaču.
  • Prikljuci i ekstenzije su softver koji dopunjuje ili menja funkcionalnost drugog dela softvera, i zahtevaju da se koristi taj softver da bi mogli da funkcionišu;
  • Ugrađeni softver — postoji kao firmware u ugrađenim sistemima, uređajima namenjenim jednoj ili više funkcija kao što su automobili i televizori (iako neki ugrađeni uređaji kao što su bežični čipsetovi, mogu sami biti deo običnog, ne-ugrađenog računarskog sistema kao što je PC ili [28]). U pogledu ugrađenih sistema nekad nema jasne razlike između sistemskog softvera i aplikacijskog softvera, ali neki ugrađeni sistemi pokreću ugrađene operativne sisteme, i ovi sistemi zadržavaju razliku između sistemskog softvera i aplikacijskog softvera (iako će tipično biti samo jedna fiksna aplikacija koja je uvek pokrenuta).
  • Mikrokod je specijalni, relativno nepoznat tip ugrađenog softvera koji govori samom procesoru kako da izvrši mašinski kod, tako da je u stvari nižeg ranga od mašinskog koda.[29] Tipično je svojstveno procesorovom proizvođaču, i bilo koja neophodna ispravljačka mikrokod softver ažuriranja su dostavljena od njih korisnicima (što je mnogo jeftinije od slanja zamene procesorskog hardvera). Tako da običan programer ne očekuje da će ikad morati da se bavi time.

Programski alat[uredi | uredi izvor]

Glavni članak : Programski alat

Programski alat je softver u obliku programa ili aplikacija koje proizvođači softvera (takođe znani kao programeri, koderi, hakeri ili softverski inženjeri) koriste da stvaraju, odstrane nepravilnosti, održavaju (poboljšaju ili poprave), ili jednostavno doprinose softveru. Kao što je već rečeno, softver je napisan u jednom ili više programskih jezika – postoji veliki broj programskih jezika, a svaki od njih ima posebnu vrstu implementacije i svaki sadrži sebi svojstven set programskih alata. Ovi alati mogu biti kompajleri, [„debager“]i, interpretatori, linkeri i tekst editori, koji mogu biti kombinovani međusobno da bi izvršili određeni zadatak; ili mogu formirati integrisano razvojno okruženje, koje kombinuje većinu od svih alata. Integrisano razvojno okruženje (IDE) to može izvesti ili pozivajući relevantne individualne alate, ili re-implementiranjem njihovih funkcija na nov način. Integrisano razvojno okruženje omogućava lakše izvođenje određenih zadataka, kao što su pretraga podataka u određenom projektu. Mnoštvo implementacija programskih jezika omogućavaju obe opcije – i korišćenje individualnih alatki i integrisano radno okruženje.

Izvršenje[uredi | uredi izvor]

Glavni članak : Izvršavanje (računarstvo)

  • Računarski softver je skladišten u memoriji računara (kao što je hard disk). Kada se softver učita, računar počinje sa izvršavanjem naredbi softvera. Ovaj proces uključuje prosleđivanje instrukcija od softvera aplikacija, preko sistemskog softvera, do hardvera, gde se dobija instrukcija u vidu mašinskog koda. Svaka instrukcija je uzrok nekih operacija, npr. prenos podataka, prenošenje nekog računanja ili menjanje kontrolnog toka instrukcija.

Softverske licence[uredi | uredi izvor]

  • Softverske licence korisniku daju pravo na korišćenje vlasničkog okruženja, kao i da u slučaju besplatnih softverskih licenci korisnici imaju pravo da proizvode kopije istih.

Vlasnički softver se deli na dve grupe:

  • Friver koji uključuje i kategoriju besplatnog testiranja (free trial) softvera ili Freemium softvera. Kao što samo ime kaže, ovaj softver se može koristiti besplatno, iako kod besplatnog testiranja ili nekad i kod freemium softvera, to nekad može biti samo na određeni vremenski period ili može biti ograničeno na korišćenje samo određenih funkcija softvera.
  • softver koji se naplaćuje, često nazvan komercijalni softver je legalan samo uz kupljenu licencu.

Dizajn i izvršenje[uredi | uredi izvor]

Glavni članci : Razvoj softvera, Programiranje i Inženjering softvera

Dizajn i izvršenje softvera zavisi od kompleksnosti softvera. Npr. Dizajnerima i osnivačima Microsoft Word-a je trebalo znatno više vreme nego pri dizajniranju i osnivanju Microsoft Notepad-a, zbog znatno velikog broja funkcija koje program omogućava.

Softver je uglavnom dizajniran i napravljen u integrisanom razvojnom okruženju, kao što su Eklipsa, IntelliJ i Microsoft Visual Studio, koji pojednostavljuju proces kompilacije softvera. Kao što je već navedeno, softver je uglavnom napravljen po osnovu na postojeće softvere i „aplikacionog programskog interfejsa“ (API) koji osnovni softver sadrži, kao što su GTK+, JavaBeans i Swing. Biblioteke (API) se klasifikuju po njihovoj svrsi. Na primer, Spring Framework se koristi za implementiranje aplikacija preduzeća, Windows Forms biblioteka se koristi za dizajniranje grafičkog interfejsa (GUI) aplikacija kao što je Microsoft Word. Kada je program dizajniran, on se oslanja na API. Primer za to je Microsoft Windows aplikacija dizajnirana za radnu površinu, gde korisnik može koristiti .NET Windows Forms biblioteke da sam dizajnira aplikacije na radnoj površini. Sakriva ih komandama Form1.Close(), a otkriva sa Form1.Show [30], gde takođe može i da doda određene operacije prema svojim potrebama. Bez ovih biblioteka, programer bi morao sam da piše celu jednu API biblioteku sam. Kompanije kao što su Oracle i Majkrosoft imaju svoje jedinstvene biblioteke, da bi većina njihovih aplikacija koje u ispisane pomoći njihovih softverskih biblioteka sadržale API biblioteke u njima.

Računarski softver ima posebne ekonomske karakteristike koji čine njenog dizajn i distribuciju drugačijim od drugih ekonomskih dobara.[31][32][33]

Osoba koja proizvodi, odnosno kreira softverske programe naziva se programer, softverski inženjer ili softverski razvijač – različiti termini za približno isto značenje. Termini koji se često koriste za programere su takođe i koder ili haker – termini koji često dovode do zabune, jer u većini slučajeva se koderima ili hakerima nazivaju oni koji neovlašćeno pristupaju računarskim sistemima.

Industrija i organizacije[uredi | uredi izvor]

Veliki broj softverskih kompanija i programera u svetu sačinjava softversku industriju. Softver može biti prilično profitabilna industrija: Bil Gejts, saosnivač Majkrosofta[34][35][36] je bio najbogatiji čovek na svetu u 2009. godini,[37] uglavnom zbog njegovog vlasništva nad znatnim brojem akcija u Majkrosoftu, kompaniji odgovornoj za softverske proizvode Microsoft Windows i Microsoft Office.

Besprofitne softverske organizacije obuhvataju Zadužbinu za slobodni softver, GNU projekat i Mozila fondaciju. Softverske standardizacione organizacije kao što su W3C i IETF razvijaju preporuke softverskih standarda kao što su: XML, HTTP i HTML, tako da softver može da interoperabilno funkcioniše.

Druge dobro poznate velike softverske kompanije obuhvataju: Orakl, Novell, SAP, Symantec, Adobe Systems, Sidetrade i Corel, dok male kompanije često pružaju inovacije.

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  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, str. 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. Pristupljeno 06. 03. 2013. 
  7. ^ „CSA Organization” (PDF). Arhivirano iz originala (PDF) 25. 11. 2011. g. Pristupljeno 26. 08. 2017. 
  8. ^ Suleman, Aater (20. 05. 2011). „What makes parallel programming hard?”. FutureChips. Arhivirano iz originala 29. 05. 2011. g. Pristupljeno 06. 03. 2013. 
  9. ^ HThreads - RD Glossary
  10. ^ „Compiler construction”. Arhivirano iz originala 02. 11. 2013. g. Pristupljeno 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. Pristupljeno 10. 12. 2012. 
  15. ^ „Babbage's Analytical Engine, 1834-1871. (Trial model)”. Science Museum. Pristupljeno 23. 08. 2017. 
  16. ^ John Graham-Cumming (04. 10. 2010). „The 100-year leap”. O'Reilly Radar. Arhivirano iz originala 18. 08. 2012. g. Pristupljeno 01. 08. 2012. 
  17. ^ „The Babbage Engine: The Engines”. Computer History Museum. 2016. Pristupljeno 07. 05. 2016. 
  18. ^ Turing, A.M. (1936), „On Computable Numbers, with an Application to the Entscheidungsproblem”, Proceedings of the London Mathematical Society, 2 (objavljeno 1937), 42 (1), str. 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 (objavljeno 1937), 43 (6), str. 544—6, doi:10.1112/plms/s2-43.6.544 )
  20. ^ „What is software? - Definition from WhatIs.com”. Searchsoa.techtarget.com. Arhivirano iz originala 27. 10. 2010. g. Pristupljeno 24. 06. 2012. 
  21. ^ „Panel: Systems Programming in 2014 and Beyond”. Microsoft. Arhivirano iz originala 09. 05. 2019. g. Pristupljeno 04. 12. 2015. 
  22. ^ Stallings 2005, str. 6.
  23. ^ Dhotre 2009, str. 1.
  24. ^ „What is a device driver?, The purpose of device drivers”. PC. 08. 11. 2012. Arhivirano iz originala 21. 10. 2014. g. 
  25. ^ Services, EMC Education (2010). Information Storage and Management: Storing, Managing, and Protecting Digital Information. John Wiley & Sons. ISBN 9780470618332. 
  26. ^ Parsons & Oja 2013, str. 129.
  27. ^ IEEE computer society
  28. ^ Smarthphone
  29. ^ „Microcode”. Arhivirano iz originala 01. 06. 2015. g. Pristupljeno 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 (na jeziku: engleski). Pristupljeno 26. 01. 2017. 
  35. ^ „Market Cap Rankings”. Ycharts. Zacks Investment Research. 08. 04. 2012. Arhivirano iz originala 31. 03. 2012. g. Pristupljeno 09. 04. 2012. 
  36. ^ „Microsoft Corporation”. Encyclopædia Britannica. 9. 10. 2023. 
  37. ^ „The $600 billion challenge”. Fortune. Pristupljeno 16. 04. 2017. 

Literatura[uredi | uredi izvor]

Spoljašnje veze[uredi | uredi izvor]