Snímek softwaru pro zpracování slov AbiWord.
Počítačový software je obecný termín používaný k popisu kolekce počítačových programů, postupů a dokumentace, které provádějí některé úkoly v počítačovém systému.
Termín zahrnuje aplikační software, jako jsou textové procesory a databáze, které provádějí produktivní úkoly pro uživatele, systémový software, jako jsou operační systémy, které se propojují s hardwarem a poskytují potřebné služby pro aplikační software, a middleware, který řídí a koordinuje distribuované systémy.
Termín „software“ se někdy používá v širším kontextu k popisu jakéhokoliv obsahu elektronických médií, který ztělesňuje vyjádření myšlenek, jako je film, pásky, záznamy atd.
Vztah k počítačovému hardwaru
Počítačový software se tak nazývá, aby se odlišil od počítačového hardwaru, což zahrnuje fyzická propojení a zařízení potřebná k uložení a spuštění (nebo spuštění) softwaru. V počítačích se software nahrává do RAM a provádí se v centrální procesorové jednotce. Na nejnižší úrovni se software skládá ze strojového jazyka specifického pro jednotlivý procesor. Strojový jazyk se skládá ze skupin binárních hodnot znamenajících instrukce procesoru, které mění stav počítače z předchozího stavu. Software je uspořádaná posloupnost instrukcí pro změnu stavu počítačového hardwaru v určité posloupnosti. Obvykle se píše ve vysokoúrovňových programovacích jazycích, které jsou pro člověka jednodušší a efektivnější (blíže přirozenému jazyku) než strojový jazyk. Vysokoúrovňové jazyky se kompilují nebo interpretují do strojového jazyka objektový kód. Software může být také napsán v jazyce symbolických instrukcí, což je v podstatě mnemotechnická reprezentace strojového jazyka používající abecedu přirozeného jazyka. Jazyk symbolických instrukcí musí být kompilován do objektového kódu prostřednictvím assembleru.
Pojem „software“ poprvé použil v tomto smyslu John W. Tukey v roce 1958. V informatice a softwarovém inženýrství je počítačový software všechny počítačové programy. Teorii, která je základem většiny moderního softwaru, poprvé navrhl Alan Turing ve své eseji Computable numbers with a application to the Entscheidungsproblem (Počítatelná čísla s aplikací na Entscheidungsproblem).
Počítačový software pro spuštění experimentu
Počítačový software pro analýzu dat
Program nemusí být dostatečně úplný, aby jej počítač mohl spustit. Aby byl úplný, může zejména vyžadovat dodatečný software z knihovny softwaru. Taková knihovna může obsahovat softwarové komponenty používané samostatnými programy, které však nemohou pracovat samy o sobě. Programy tedy mohou obsahovat standardní rutiny, které jsou společné mnoha programům a které jsou z těchto knihoven extrahovány. Knihovny mohou také obsahovat ‚samostatné‘ programy, které jsou aktivovány nějakou počítačovou událostí a/nebo vykonávají nějakou funkci (např. počítačové ‚housekeeping‘), ale nevracejí data do svého volajícího programu. Knihovny mohou být volány jedním do mnoha jiných programů; programy mohou volat nulu do mnoha jiných programů.
Od 80. let 20. století se aplikační software prodával v sériově vyráběných balíčcích prostřednictvím prodejců.
Uživatelé často vidí věci jinak než programátoři. Lidé, kteří používají moderní počítače pro všeobecné účely (na rozdíl od vestavěných systémů, analogových počítačů, superpočítačů apod.), obvykle vidí tři vrstvy softwaru, které provádějí různé úkoly: platformu, aplikace a uživatelský software.
Počítačový software musí být „nahrán“ do úložiště počítače (například pevný disk, paměť nebo RAM). Jakmile je software nahrán, je počítač schopen software spustit. Počítače pracují tak, že spustí počítačový program. To zahrnuje předávání instrukcí z aplikačního softwaru, prostřednictvím systémového softwaru, hardwaru, který nakonec obdrží instrukci jako strojový kód. Každá instrukce způsobí, že počítač provede operaci – přesun dat, provedení výpočtu nebo změnu kontrolního toku instrukcí.
Pohyb dat je typicky z jednoho místa v paměti na druhé. Někdy se jedná o přesun dat mezi pamětí a registry, které umožňují vysokorychlostní přístup k datům v procesoru. Přesun dat, zejména jejich velkého množství, může být nákladný. Někdy se tomu tedy zabrání tím, že se místo toho použijí „ukazatele“ na data. Výpočty zahrnují jednoduché operace, jako je zvýšení hodnoty proměnného datového prvku. Složitější výpočty mohou zahrnovat mnoho operací a datových prvků dohromady.
Pokyny mohou být prováděny sekvenčně, podmíněně nebo iterativně. Sekvenční pokyny jsou operace, které jsou prováděny jedna za druhou. Podmíněné pokyny jsou prováděny tak, že různé sady pokynů jsou prováděny v závislosti na hodnotě (hodnotách) některých dat. V některých jazycích je to známé jako příkaz „pokud“. Iterační pokyny jsou prováděny opakovaně a mohou záviset na nějaké datové hodnotě. Někdy se tomu říká „smyčka“. Často může jedna instrukce „volat“ jinou sadu pokynů, které jsou definovány v nějakém jiném programu nebo modulu. Pokud se používá více než jeden počítačový procesor, mohou být pokyny prováděny současně.
Jednoduchým příkladem fungování softwaru je to, co se stane, když uživatel vybere z nabídky položku jako například „Kopírovat“. V tomto případě je vykonána podmíněná instrukce pro zkopírování textu z dat v oblasti „dokument“ uložené v paměti, třeba do mezipaměti známé jako datová oblast „schránka“. Pokud je vybrána jiná položka nabídky jako například „Vložit“, může software provést instrukce pro zkopírování textu z datové oblasti schránky na určité místo ve stejném nebo jiném dokumentu v paměti.
V závislosti na aplikaci by se i výše uvedený příklad mohl zkomplikovat. Oblast softwarového inženýrství se snaží zvládnout složitost fungování softwaru. To platí zejména pro software, který pracuje v kontextu velkého nebo výkonného počítačového systému.
V současné době je téměř jediným omezením používání počítačového softwaru v aplikacích vynalézavost konstruktéra/programátora. V důsledku toho jsou dnes běžně programovány velké oblasti činností (jako je hraní šachů na úrovni grand master), o kterých se dříve předpokládalo, že nejsou schopny softwarové simulace. Jedinou oblastí, která se dosud ukázala jako přiměřeně bezpečná od softwarové simulace, je oblast lidského umění – zejména líbivá hudba a literatura.[Jak odkazovat a odkazovat na shrnutí nebo text]
Softwarová spolehlivost bere v úvahu chyby, chyby a selhání související s tvorbou a provozem softwaru.
Viz Softwarový audit, Kvalita softwaru, Testování softwaru a Softwarová spolehlivost.
Problematika softwarových patentů je kontroverzní. Někteří se domnívají, že brání vývoji softwaru, zatímco jiní tvrdí, že softwarové patenty představují důležitý podnět k podněcování softwarových inovací. Viz debata o softwarových patentech.
Etika a práva uživatelů softwaru
Představa o tom, jaká práva by měli mít uživatelé softwaru, není jako nová součást společnosti příliš rozvinutá. Někteří, jako například komunita svobodného softwaru, se domnívají, že uživatelé softwaru by měli mít možnost svobodně upravovat a redistribuovat software, který používají. Tvrdí, že tato práva jsou nezbytná k tomu, aby každý jednotlivec mohl ovládat svůj počítač a aby každý mohl spolupracovat, pokud se tak rozhodne, spolupracovat jako komunita a kontrolovat směr, kterým software postupuje. Jiní se domnívají, že autoři softwaru by měli mít pravomoc říkat, jaká práva uživatel získá.
Bývalá filozofie je poněkud odvozena od „hackerské etiky“, která byla běžná v 60. a polovině 80. let.