miniatura|Imatge del sistema operatiu per a dispositius mòbils Android. El programari (software, en anglès) és el conjunt dels programes informàtics, procediments i documentació que fan alguna tasca en un ordinador. Comprèn el conjunt sistemàtic dels programes d'explotació i dels programes informàtics que serveixen per a aplicacions determinades. El terme inclou aplicacions com els processadors de text, programari de sistema com el sistema operatiu, que fa d'interfície entre el maquinari i les aplicacions, i finalment el programari intermediari, que controla i coordina sistemes distribuïts.
Moltes vegades, el terme és usat per contraposició a maquinari. S'usa el primer per a descriure la part lògica d'un sistema informàtica i el segon, per a descriure la part física. A diferència del maquinari, el programari «no es pot tocar».
Història miniatura|Estàtua en homenatge a Alan Turing, situada als Jardins de Whitworth, Manchester (Anglaterra). La primera teoria sobre el programari va ser proposada per Alan Turing en el seu assaig del 1935 anomenat «On Computable Numbers, with an application to the Entscheidungsproblem» (Sobre els nombres calculables, amb una aplicació a lEntscheidungsproblem)Hally, Mike (2005:79). Electronic brains/Stories from the dawn of the computer age. British Broadcasting Corporation and Granta Books, London. (i ) El terme «programari» va ser utilitzat per primera vegada en un document imprès el 1958 per John Tukey a un article publicat a la revista de matemàtiques American Mathematical Monthly. Col·loquialment, el terme s'utilitza sovint en el sentit de programari d'aplicació. En informàtica i en enginyeria de programari, el programari és tota la informació processada per sistema informàtic, els programes i les dades. A l'àmbit acadèmic l'estudi de programari s'inclou dins dels camps de la informàtica i l'enginyeria de programari actual.
Sovint es considera que la història dels programes informàtics es remunta fins al primer error de programari, el 1946. Atès que cada vegada hi ha més programes que passen a formar part del món del microprogramari i el maquinari esdevé cada vegada més petit, més barat i més ràpid a causa de la llei de Moore, hi ha elements que abans eren considerats com a programari que avui dia han passat al domini del maquinari. La majoria de les companyies de maquinari actuals tenen força més programadors de programari en nòmina que dissenyadors de maquinari, ja que les eines de programari han automatitzat moltes de les tasques dels enginyers que creen els circuits impresos.
De la mateixa manera que ho va fer la indústria automotriu, la indústria del programari ha evolucionat a partir d'uns pocs visionaris que treballaven amb prototips al seu garatge. Steve Jobs i Bill Gates van ser el Henry Ford i el Louis Chevrolet de la seva època, que van aprofitar i capitalitzar les idees ja conegudes abans que iniciessin el seu negoci. En el cas del desenvolupament de programari, s'accepta de manera generalitzada que el moment inicial va ser la publicació a la dècada del 1980 de les especificacions de l'IBM Personal Computer per part de l'empleat d'IBM Don Estridge. Avui aquest moviment seria vist com un tipus de crowdsourcing (subcontractació oberta).
Fins a aquest moment, el programari era empaquetat juntament amb el maquinari pels OEMs (fabricants d'equips originals), com Data General, Digital Equipment o IBM. En aquell moment, quan un client comprava un miniordinador, l'ordinador més petit de l'època, l'equip no venia amb cap programari preinstal·lat, sinó que havia de ser instal·lat per enginyers empleats per l'OEM. Les empreses de maquinari, no només venien els seus paquets de programari, també les demandes d'ubicar els equips en uns espais refrigerats anomenats sales d'ordinadors. La majoria de les empreses tenien el seu programari en els catàlegs a cap preu (0 €), de manera que no es podia considerar com un actiu (de manera similar a alguns casos de música popular d'avui dia). Quan Data General va presentar el seu miniordinador de 16 bits anomenat Data General Nova, una companyia anomenada Digidyne va voler utilitzar el seu sistema operatiu RDOS (Real-time Disk Operating System en el seu propi clon del maquinari. Data General es van negar a llicenciar el seu programari (cosa que era difícil, ja que era publicat com un bé lliure), i va reclamar els seus drets. La Cort Suprema va crear un precedent anomenat Digidyne v. Data General in 1985 i finalment Data General es va veure obligada a la concessió de llicències de programari del sistema operatiu, ja que es va fallar que la restricció de la llicència al maquinari de Data General era il·legal.Tying Arrangements and the Computer Industry: Digidyne Corp. vs. Data General Poc després, IBM publicava el codi font del seu sistema operatiu de disc de manera gratuïta, i va néixer Microsoft. Data General va acabar sent absorbida per EMC Corporation en ser incapaç de suportar les pèrdues causades pels honoraris dels advocats. La decisió de la Cort Suprema va permetre valorar el programari i també comprar patents de programari. En aquell moment la decisió d'IBM de publicar el codi era gairebé com una protesta. Pocs dins la indústria creien que algú fora de la mateixa IBM (gràcies a la publicitat gratuïta de la seva decisió) podria arribar a treure'n algun benefici. Microsoft i Apple van ser capaces de treure profit dels productes soft. Avui dia es fa difícil d'imaginar que va haver-hi una vegada que la gent pensava que el programari no valia res sense una màquina. Avui en dia hi ha moltes empreses d'èxit que venen només productes de programari, tot i que habitualment encara hi ha molts problemes relacionats amb la concessió de llicències a causa de la complexitat dels dissenys i la poca documentació, el que porta a les patents troll.
Amb les especificacions de programari de codi obert i la possibilitat de concessió de llicències de programari, van aparèixer noves oportunitats per a eines de programari que després van esdevenir estàndards de facto, com per exemple DOS per als sistemes operatius, però també diferents sistemes propietaris de tractament text i fulls de càlcul. Seguint un patró de similar, els mètodes de desenvolupament propietaris van esdevenir metodologies estàndards de desenvolupament de programari.
Definició La definició més formal de programari és la següent:
En aquesta definició, el concepte de programari va més enllà dels programes de computació en els seus diferents estats: codi font, binari o executable; també la seva documentació, les dades a processar i la informació d'usuari forma part del software: és a dir, abasta tot el que és intangible, tot el «no físic» relacionat.
El terme «software» va ser utilitzat per primera vegada en aquest sentit per John Tukey el 1958. En informàtica i en l'enginyeria de programari, el programari és tota la informació processada pels sistemes informàtics: programes i dades. El concepte de llegir diferents seqüències d'instruccions des de la memòria d'un dispositiu per a controlar els càlculs va ser introduït per Charles Babbage com una part de la seva màquina diferencial. La teoria que forma la base de la major part del programari modern va ser proposada per primera vegada per Alan Turing en el seu assaig del 1936, Els nombres computables, amb una aplicació al problema de la decisió.
Classificació miniatura|Els paquets ofimàtics són aplicacions àmpliament esteses. Si bé aquesta distinció és, en certa manera, arbitrària, i de vegades confusa, prioritzant la finalitat pràctica de l'objecte, el programari es pot classificar en tres grans grups: Programari de sistema: el seu objectiu és desvincular adequadament a l'usuari i al programador dels detalls de la computadora en particular que s'usi, aïllant-lo especialment del processament referit a les característiques internes de: memòria, discs, ports i dispositius de comunicacions, impressores, pantalles, teclats, etc. El programari de sistema li procura l'usuari i programador adequades interfícies d'alt nivell, eines i utilitats de suport que permeten el seu manteniment. Programari de programació: és el conjunt d'eines que permeten al programador desenvolupar programes informàtics, usant diferents alternatives i llenguatges de programació, d'una manera pràctica. Programari d'aplicació: és aquell que permet als usuaris dur a terme una o diverses tasques específiques, en qualsevol camp d'activitat susceptible de ser automatitzada o assistit, amb especial èmfasi en els negocis.
Tanmateix hi ha d'altres classificacions possibles i d'altres possibles tipus de programari que es poden considerar: El microprogramari (firmware, en anglès) és el programari específic que controla un dispositiu (un mòdem, una unitat de DVD, un microprocessador…) El programari portàtil és aquell que es pot ubicar normalment en un medi que es pot extreure i que pot executar-se en qualsevol maquinari. Les biblioteques contenen funcions comunes del sistema operatiu, que són utilitzades des d'altres programes. Les aplicacions són programes que executa un usuari amb una funció concreta; calculadora, processador de textos, gestors de fulls de càlcul, videojocs, missatgeria…
Programari de sistema miniatura|Una captura de pantalla del sistema operatiu Ubuntu GNU/Linux. El programari del sistema proporciona les funcions bàsiques per a la utilització de l'ordinador, i pot ser dividit en sistema operatiu i sistema de suport. El sistema operatiu és el programari més bàsic. El programari de sistema ajuda a executar el maquinari i el sistema informàtic i proporciona a l'usuari i al programador interfícies adequades d'alt nivell, eines i utilitats de suport que permeten el seu manteniment. Inclou una combinació dels següents elements:
Sistemes operatius. És el programari que s'inicia en engegar un ordinador, i que controla l'execució de tots els altres programes. Controladors de dispositiu Sistema de finestres Eines de diagnòstic Eines de correcció i optimització Servidors Utilitats
S'encarrega de gestionar la gran varietat de maquinari que pot haver-hi en un ordinador per tal que tots els elements puguin treballar junts harmoniosament. El programari de sistema s'encarrega de presentar l'ordinador com un tot als usuaris i en altres programaris sense que s'hagin de preocupar sobre com treballa cada maquinari particular. El seu objectiu és desvincular el programador dels detalls, sovint de gran complexitat, inherents a l'ordinador particular que estigui utilitzant, incloent-hi accessoris com dispositius de comunicacions, impressores, lectors de disc òptic o d'altres, monitors o teclats i també possibilitar la compartició de recursos com la memòria i el temps d'utilització del processador d'una manera segura i estable. Alguns exemples són - Microsoft Windows, Linux i Mac OS X.
Programari de programació miniatura|App Inventor És el conjunt d'eines que permeten al programador desenvolupar programes informàtics, utilitzant diferents alternatives i llenguatges de programació, d'una manera pràctica. Inclou entre altres: Compiladors Intèrprets Enllaçadors (linkers) Depuradors (debuggers) Editors de text
Els entorns integrats de desenvolupament (o IDE, acrònim de Integrated development environment) agrupen les eines anteriors, normalment en un entorn gràfic, de manera que el programador no necessiti introduir múltiples ordres per, entre altres coses, compilar, interpretar o depurar. Aquestes eines de programació compten habitualment amb una avançada interfície gràfica d'usuari (o GUI, de Graphical user interface).
Programari d'aplicació miniatura|Captura de pantalla del videojoc lliure Neverball. El programari d'aplicació és aquell que permet als usuaris dur a terme una o diverses tasques específiques, en qualsevol camp d'activitat susceptible de ser automatitzat o assistit, amb especial èmfasi en els negocis. Inclou entre d'altres:
Aplicacions de sistema de control i automatització industrial