Application programming interface: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m spazi
m rimuovo corsivi inappropriati
Riga 1:
[[File:Database management system diagram from 1978 workshop.png|thumb|alt=Application programming interface|Application programming interface]]
In un [[programma (informatica)|programma informatico]], con '''''application programming interface'''''<ref>In [[Lingua italiana|italiano]] "interfaccia di programmazione di applicazione".</ref> ('''API''') si indica un insieme di [[funzione (informatica)|procedure]] (in genere raggruppate per strumenti specifici) atte all'espletamento di un dato compito; spesso tale termine designa le [[Libreria (software)|librerie software]] di un [[linguaggio di programmazione]]<ref>{{cita web|https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/com-interop/walkthrough-calling-windows-apis|titolo=Walkthrough: Calling Windows API (Visual Basic)|sito=Docs.Microsoft.com|lingua=en|data=20 luglio 2015|accesso=13 febbraio 2019}}</ref>.
 
== Caratteristiche ==
Riga 7:
Esistono due linee di condotta per quanto riguarda la pubblicazione delle API:
# Alcune compagnie conservano gelosamente le loro API. Per esempio, [[Microsoft]] fornisce API ufficiali solamente agli sviluppatori [[Xbox]] registrati. Questo perché intende restringere il numero di persone che possono scrivere [[gioco|giochi]] per la [[Console (sistema per videogiochi)|console]] per limitare la pirateria.
# Altre compagnie distribuiscono le API pubblicamente. Per esempio la stessa [[Microsoft]] fornisce al pubblico informazioni sulle sue [[Windows API]], tra cui le [[Microsoft Foundation Classes]] (MFC), per scrivere ''software'' per la piattaforma [[Microsoft Windows|Windows]].
 
Alcune API, come quelle standard di un [[sistema operativo]], sono implementate come una [[Libreria software|libreria]] separata e distribuite con il sistema operativo. Altre API richiedono a chi pubblica il software di integrare l'API direttamente nell'applicazione. Questo costituisce un'ulteriore distinzione nell'esempio precedente.
 
Le API di Microsoft Windows sono fornite con il sistema operativo e chiunque può utilizzarle. Il ''software'' per i [[sistema embedded|sistemi embedded]] come le console per videogiochi generalmente ricadono nella categoria in cui le API sono integrate con l'applicazione. Anche se la documentazione ufficiale dell'API della Playstation può essere una lettura interessante, è quasi inutile senza la corrispondente implementazione sotto forma di una libreria separata o di un ''kit'' per sviluppatori.
 
Una API che non richiede il pagamento di diritti per il suo accesso ed utilizzo è detta "aperta". Le API fornite dal [[software libero]], come ''software'' distribuito sotto licenza [[GNU General Public License|GPL]], sono aperte per definizione, dal momento che si può accedere al [[Codice sorgente|sorgente]] del ''software'' e capire come funziona. Anche se esiste una "[[implementazione di riferimento]]" per una API (come quella di [[Microsoft Windows]] per la [[Windows API]]), non c'è nulla che impedisce la creazione di un'implementazione alternativa. Per esempio, la maggior parte della API di Windows può essere fornita in un sistema [[Unix]] da un ''software'' chiamato [[Wine]].
 
In generale l'analisi dell'implementazione di una API per produrne una compatibile costituisce una violazione alla legge. Questa tecnica è chiamata [[reverse engineering|ingegneria inversa]]. La situazione legale in questi casi presenta ambiguità quindi conviene affrontare il problema prima che l'attività di ingegneria inversa sia iniziata. Per esempio, una API può contenere a sua volta un [[brevetto]].
 
== Finalità ==
La finalità è ottenere un'[[astrazione (informatica)|astrazione]] a più alto livello, di solito tra l'[[hardware]] e il programmatore o tra [[software]] a basso e quello ad alto livello semplificando così il lavoro di [[programmazione (informatica)|programmazione]]. Le API permettono infatti di evitare ai [[programmatore|programmatori]] di riscrivere ogni volta tutte le [[funzione (informatica)|funzioni]] necessarie al programma dal nulla, ovvero dal basso livello, rientrando quindi nel più vasto concetto di [[riuso di codice]]. Le API stesse rappresentano quindi un livello di astrazione intermedio: il ''software'' che fornisce una certa API è detto ''implementazione dell'API''.
 
== Posix ==
Poiché esistono molte varianti di API, nel 1985 è stato creato un progetto finalizzato alla creazione di uno standard. La famiglia che racchiude questi standard prende il nome di [[Posix]] (acronimo di ''"Portable Operating System Interface for Unix''"), il cui nome è stato ideato da Richard Stallman dopo la richiesta da parte dell'IEEE di un nome di facile memorizzazione.
 
== Esempio di utilizzo ==