Softvér

[náhľad|[Textový procesor Writer z&nbsp;kancelárskeho balíka LibreOffice.]]

**Softvér** (-kodifikovaný tvar; nekodifikované a staršie tvary: **software**, **softvér**; staršie názvy: **programové vybavenie počítača**, **programové vybavenie**, **programové prostriedky (počítača)**, **funkčné vybavenie počítača**, **operačné vybavenie počítača**, **funkčné vystrojenie počítača**, **operačné vystrojenie počítača**, **kultúra počítača**; ; skratka **SW**, **sw**) je súhrn všetkých programov, ktoré sa dajú použiť na výpočtovom zariadení. Na rozdiel od hardvéru má nemateriálnu povahu. Rozlišujeme systémový softvér a aplikačný softvér. 

Na najnižšej úrovni programovania, spustiteľný kód pozostáva z inštrukcií v strojovom jazyku podporovaných konkrétnym procesorom – typicky centrálnou procesorovou jednotkou (CPU) alebo grafickou procesorovou jednotkou (GPU). Strojový jazyk je tvorený skupinou binárnych hodnôt, označujúcich inštrukcie pre procesor, ktoré menia stav počítača, pričom vychádzajú z jeho doterajšieho stavu. Napríklad, inštrukcia môže zmeniť hodnotu uloženú v istej časti úložného priestoru počítača – efekt, ktorý nie je priamo pozorovateľný používateľom. Inštrukcia tiež môže vyvolať niektorú z vstupných, alebo výstupných operácií, ako napríklad zobrazenie nejakého textu na obrazovke počítača; čo spôsobí zmenu stavu viditeľnú aj pre používateľa. Procesor spúšťa inštrukcie v poradí stanovenom programátorom (v prípade imperatívneho programovania, ide o poradie totožné s tým, v akom sú zapísané), z výnimkou inštrukcie popisujúcej "skok" na inú inštrukciu, alebo prípadu, keď je vykonávanie programu prerušené. 

Väčšina softvéru je napísaná pomocou jazykov vyššej úrovne. Tie sú pre programátorov jednoduchšie a efektívnejšie, nakoľko sú podobnejšie prirodzeným jazykom, ako strojové jazyky. Jazyky vyššej úrovne sú prekladané do strojového jazyka pomocou kompilátora alebo interpretéra, alebo ich kombináciou. Softvér môže byť tiež zapísaný v nízko-úrovňovom jazyku symbolických inštrukcií (), ktorý vychádza z inštrukcií strojového jazyka počítača a je prekladaný do strojového jazyka asemblerom.

## História
Algoritmus toho, čo by mohol byť prvý softvér bol napísaný Adou Lovelace v 19. storočí pre plánovaný Analytický stroj. Vytvorila dôkazy, ktoré ukázali, ako by tento stroju vypočítal bernouliho čísla. Vďaka týmto dôkazom a algoritmu je považovaná, za prvého programátora.

Prvá teória o sofvéri, ešte pred vytvorením počítačov, ako ich poznáme dnes, bola prednesená Alanom Turingom v jeho eseji z roku 1935 „*On Computable Numbers, With an Application to the Entscheidungsproblem*“ (slovensky voľne preložiteľné ako „O spočítateľných číslach s aplikáciou v probléme rozhodnuteľnosti“). To eventuálne viedlo k vytvoreniu informatiky ako akademického odboru, ktorý sa zaoberá (nie len) štúdiom softvéru a jeho tvorby. Do roku 1946 softvérom ešte neboli programy uložené v pamäti digitálnych počítačov, ako tomu rozumieme dnes, ale prvé elektronické výpočtové zariadenia vyžadovali fyzickú zmenu zapojenia elektrických súčiastok počítača za cieľom ich „preprogramovania“.

V roku 2000, Fred Shapiro, knihovník v Yale Law School, publikoval list odhaľujúci, že práca Johna Wildera Tukeyho z roku 1958 „*The Teaching of Concrete Mathematics*“, obsahuje najskoršie známe použitie pojmu „*software*“. V slovenčine sa kodifikoval tvar „softvér“.

## Terminológia
Medzi softvér zaraďujeme operačné systémy, ovládače zariadení, ako aj všetky druhy aplikačných programov, napríklad textové editory a iné kancelárske aplikácie, grafické aplikácie, aplikácie na prehrávanie multimédií, hry a pod.

Počítačový softvér vyvíjajú programátori, grafici atď v rôznych spoločnostiach, v komunite používateľov alebo tiež individuálne. 

## Rozdelenie softvéru

### Podľa funkcie
* Systémový softvér umožňuje používanie počítača 
** Firmvér interne riadi hardvérové zariadenia, býva typicky umiestnený v pamäti ROM, PROM, alebo flash pamäť (Flash-EEPROM) ako napríklad BIOS, firmvér vstupno-výstupných zariadení a pod.
** Operačné systémy spravujú počítač, vytvára prostredie pre programy a používateľa, prideľuje programom zdroje (pamäť a pod.) 
*** jadro operačného systému (kernel) vrátane ovládačov zariadení
*** pomocné systémové nástroje - pre správu operačného systému (formátovanie diskov, nastavenie oprávnení, utility, démoni ...)
* Aplikačný softvér umožňuje užívateľovi vykonávať nejakú užitočnú činnosť, napríklad:
** kancelárske balíky: textový editor, tabuľkový procesor, prezentačný program ...
** grafické programy: vektorový grafický editor, bitmapový grafický editor ...
** vývojové nástroje: vývojové prostredie, prekladač ...
** zábavný softvér: počítačové hry, prehrávače digitálneho zvuku a videa a pod.
* Škodlivý softvér, alebo malvér, je softvér vytvorený za účelom poškodenia, alebo narušenia činnosti počítačov. Malvér je blízko previazaný s počítačovou kriminalitou. 

### Podľa licenčnej dostupnosti
* Open-source softvér (voľný alebo slobodný softvér najčastejšie obsahuje zdrojový kód väčšinou s možnosťou jeho zmien a vylepšení a ďalšiu redistribúciu - voľne šírený v súlade s udelenou licenciou, napr. public domain)
* Freeware (bezplatný)
* Komerčný softvér (platený) - môžete používať iba vtedy, ak zaplatíte za licenciu softvéru, a nebudete túto licenciu porušovať
* Iné: shareware, demo alebo testovacie (trial) verzie a pod. (bezplatne možné vyskúšať alebo používať po obmedzenú dobu alebo s inými obmedzeniami)
*Softvér vytvorený na zákazku

Softvér môže byť distribuovaný prostredníctvom Internetu alebo lokálnej sieti, na pamäťových médiách (CD, DVD, USB...), alebo je už pred-inštalovaný na pevnom disku počítača.

### Iné typy softvéru
* Webová aplikácia alebo Internetová aplikácia je aplikácia typu klient-server vytvorená pre prostredie internetu alebo intranetu.
* Middleware - prepája softvérové komponenty alebo osoby a ich aplikácie
* Okrem užitočného existuje aj škodlivý softvér ako sú: počítačový vírus, malware a pod.
* Bloatware - nechcenný a potencionálne škodlivý software predinštalovaný na nových zariadeniach
* Orphanware (orphaned technology)

## Historické príklady softvéru
Táto časť tohto článku nie je aktuálna a preto slúži ako historický prehľad rôznych typov softvéru.

### [[Kancelársky balík|Kancelárske balíky]]
* Textový editor (MS Word, Word, Writer a pod.) - umožňuje navrhovať a tlačiť stránky, na ktorých je text v kombinácií s grafikou. Aby bola čo najlepšia obsahová i estetická úroveň tlačoviny, musí mať program niekoľko špecifických vlastností: 
** Práca s množstvom typov a veľkostí písma (fonty) na vytváranie nadpisov a zvýrazneného textu. Umožnenie proporcionálneho písma (tzn. písmeno "w" a "i" budú v riadku zaberať nerovnako široké miesto) 
** Vytváranie stĺpcov a rámčekov s textom, orámovanie celej strany a iné efekty
** Vloženie grafických objektov vytvorených externým grafickým editorom
** Možnosť vloženia špeciálnych znakov, ktoré nie sú priamo na klávesnici počítača
** WYSIWYG - What You See Is What You Get. Programy umožňujúce vidieť vytváraný dokument na obrazovke tak, ako bude vyzerať v skutočnosti vytlačený na tlačiarni. Táto vlastnosť vylučuje, aby ste urobili chybu pri formátovaní stránky. Ušetrí vám papier, pretože si vytlačíte stranu presne tak ako ste ju chceli mať upravenú.

* Tabuľkový kalkulátor (MS Excel, Quattro, Calc atď.) Je program na vytváranie tabuliek. Je to matica čísel (textu, vzorcov) medzi ktorými je možné vykonávať matematické a textové operácie.

* Databázové systémy (Microsoft Access, MySQL) Programy na vytváranie a správu databáz.

* Prezentačný softvér (Microsoft PowerPoint) Programy na vytváranie prezentácií, multimedálnych súborov určených pre prezentovanie činnosti, alebo veci. Je možné vkladať text, obraz, video, zvuk ...

Textový editor a tabuľkový kalkulátor (a niekedy aj databázový a prezentačný softvér) tvoria základ kancelárskych balíkov (balík viacerých softvérov): OpenOffice, LibreOffice, Microsoft Office, StarOffice (posledná verzia z roku 2010), PC Suite 602 (posledná verzia z roku 2006) a pod.

### Grafický editor
* Grafický editor (Adobe Photoshop, Paint Shop Pro, Corel Draw!, Corel Photo-Paint)

*Bitmapové* (rastrové) grafické editory sú určené na úpravu fotografií a iných bitmapových obrázkov pre použitie na internete alebo tlač. Od programov tohto typu treba očakávať základné funkcie zmeny veľkosti, orezu, pootočenia obrazu, ručnú či automatickú korekciu farieb, rôzne filtre, zásuvné moduly (tzv. pluginy), efekty, prácu s vrstvami, množstvo automatických funkcií na odstraňovanie chýb fotografií, retuš, prácu s textom, použitie niektorých webových funkcií pre rýchlejšie vytváranie grafiky webových stránok. Množstvom a prevedením týchto funkcií sa jednotlivé programy od seba odlišujú. Do tejto skupiny programov treba zaradiť najmä dva vysoko kvalitné no aj cenovo pre amatérskych grafikov nedostupné produkty známych firiem: Adobe Photoshop a CorelPHOTO-PAINT (v balíku Corel Graphic Suite). Najlepším zástupcom lacnejších programov, ktoré sa snažia podobať spomenutým profesionálnym produktom, je Paint Shop Pro (www.jasc.com), ktorý je dodávaný spolu s programom Animation Shop na vytváranie animácií. Existuje i kvalitný grafický editor pod názvom GIMP distribuovaný pod licenciou GPL (t. j. zadarmo), hoci bol pôvodne určený pre OS Linux, dnes existuje aj rovnako kvalitná verzia pre Windows.

*Vektorové* grafické editory nazapisujú farby jednotlivých obrazových bodov (pixelov), ale vlastnosti jednotlivých objektov vložených do obrazu (napr. čiara - farba, hrúbka, začiatočný bod, koncový bod, ...).

### Iný softvér
* Antivírusové programy a antispywarové (NOD32, AVG, Avast, Norton Antivirus) slúžia na ochranu počítača pred tzv. škodlivými programami - vírusami, trójskymi koňami, spyware a pod.

* Správa súborov (Windows Commander, Servant Salamander, Turbo Navigator) Programy na správu súborov. Umožňujú kopírovanie, prenášanie, náhľady, sledovanie zmien, vytváranie a správu adresárovej štruktúry.

* Zálohovacie, archivačné a kompresné nástroje (Nero Burning ROM, WinZip, WinRAR, Power Archiver, UltimateZip, ...) Programy pre vytváranie záloh, kompresiu dát a pod.

* Multimediálne utility (CD a DVD prehrávač, MP3player, prezerač grafických súborov) Programy pre prehrávanie a vytváranie multimediálneho obsahu.
* Vývojové prostredia programovacích jazykov (Turbo Pascal, Borland Delphi, MS Visual Basic, ...) Sú programy na vytváranie softvéru. Vyššie programovacie jazyky umožňujú naprogramovať aplikačný softvérˇ. Súčasťou balíka sú ladiace programy a simulátory.

* Internetové nástroje (Internet Explorer, Netscape, off-line sťahovače www stránok, FTP, downloadery, HTML editory, ... ) Nástroje na prezeranie obsahu internetu, sťahovanie, vyhľadávanie stránok, sťahovanie a odosielanie pošty.

* Systémové nástroje (ovládače, defragmentácia) Systémové nástroje sú programy na správu operačného systému, správu a údržbu softvéru.

* Vzdelávacie programy (SmartBooks, encyklopédie, slovníky, prekladače, Route66) 

* Geografické informačné systémy a GPS Programy pre prácu s GPS, mapové softvéry, navigačné softvéry.

* Ekonomické aplikácie (účtovnícke, skladové, výpožičné) Ekonomické balíky, účtovníctvo, mzdy, fakturácia, správa skladu, spolupráca s registračnými pokladňami.

* DTP (DeskTop publishing) Programy pre prípravu tlače - kníh a časopisov.

* CAD a 3D modelovanie Programy pre kreslenie stavebným a strojárskych výkresov, modelovanie, 3D výstupy, renderovanie a pod.

* Programy na oddych a relax (hry)

Keď sa autor rozhodne distribuovať svoj softvér ako public domain, vzdáva sa tak všetkých práv diktovať, čo smie a nesmie byť zmenené. Open source kód, hoci je tiež zadarmo, nesie so sebou aj zopár obmedzení spomenutých v licencii. Používatelia musia vedieť čo môžu a nemôžu robiť s daným kusom programu. Pod pojmom otvorený (open) kód sa myslí to, že používateľ má prístup k zdrojovému kódu programu v jazyku, v ktorom bol napísaný. Naproti tomu väčšina komerčných programov prichádza už v binárnej verzii zdrojového kódu - bez pribaleného zdrojového kódu. Éra open source nástrojov a programov sa do dnešnej podoby dostala vďaka Linuxu.

## Referencie