Application programming interface

Da Wikipedia, l'enciclopedia libera.

Con Application Programming Interface (in acronimo API, in italiano Interfaccia di Programmazione di un'Applicazione), in informatica, si indica ogni insieme di procedure disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per l'espletamento di un determinato compito all'interno di un certo programma. Spesso con tale termine si intendono le librerie software disponibili in un certo linguaggio di programmazione.[1]

Caratteristiche[modifica | modifica wikitesto]

Le API sono essenziali per il computer come gli standard elettrici lo sono per una casa. Chiunque può inserire la spina del tostapane nella presa a muro della sua casa o dal vicino perché entrambe le case sono conformi ad uno standard. Se non ci fosse una interfaccia standard, occorrerebbe avere una centrale elettrica per fare un toast. Niente vieta che esistano più tipi di interfacce diverse, per esempio un tostapane europeo non può funzionare negli Stati Uniti senza un trasformatore; in modo simile, un programma scritto per Microsoft Windows non può essere eseguito direttamente su un sistema UNIX senza un API adapter come WINE.

Esistono vari design model per le API. Le interfacce intese per la massima velocità di esecuzione spesso consistono in una serie di funzioni, procedure, variabili e strutture dati. Esistono anche altri modelli come gli interpreti usati per valutare le espressioni come con ECMAScript/Javascript. Una buona API fornisce una "scatola nera", cioè un livello di astrazione che evita al programmatore di sapere come funzionano le API ad un livello più basso. Questo permette di riprogettare o migliorare le funzioni all'interno dell'API senza cambiare il codice che si affida ad essa.

Esistono due linee di condotta per quanto riguarda la pubblicazione delle API:

  1. Alcune compagnie conservano gelosamente le loro API. Per esempio, la Sony e la Microsoft forniscono le API ufficiali solamente agli sviluppatori per rispettivamente PlayStation e X-Box registrati. Questo perché ambedue intendono restringere il numero di persone che possono scrivere giochi per le rispettive console in modo da ricavare il più possibile. Questo atteggiamento è tipico delle compagnie che non traggono profitto dalla vendita dell'implementazione delle API.
  2. 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 Windows. La vendita di applicazioni di terze parti fa vendere copie di Windows. Questo è tipico di compagnie che traggono profitto dalla vendita dell'implementazione delle API.

Alcune API, come quelle standard di un sistema operativo, sono implementate come una libreria separata e distribuite con il sistema operativo.
Altre 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 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 Free software, come software distribuito sotto licenza GPL, sono aperte per definizione, dal momento che si può accedere al 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. La situazione legale in questi casi presenta ambiguità quindi conviene affrontare il problema prima che l'attività di reverse engineering sia iniziata. Per esempio, una API può contenere a sua volta un brevetto.

Finalità[modifica | modifica wikitesto]

La finalità è ottenere un'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. Le API permettono infatti di evitare ai programmatori di riscrivere ogni volta tutte le 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[modifica | modifica wikitesto]

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[modifica | modifica wikitesto]

Si può pensare ad un'applicazione che scriva le parole "Hello world" su uno schermo con vari livelli di astrazione:

  1. Scrivere tutto da soli:
    1. Disegnare su un foglio le forme delle lettere H, e, l, l, o, W, o, r, l, d.
    2. Preparare una matrice di quadrati bianchi e neri avente la forma di ognuna delle lettere
    3. Ideare un modo per programmare la CPU in modo che ponga questa matrice nel frame buffer della scheda video.
    4. Predisporre la scheda video per generare il segnale corretto a partire dal contenuto frame buffer.
  2. Utilizzare un sistema operativo per effettuare parte del compito:
    1. Caricare in memoria una struttura dati chiamata "font" fornita dal sistema operativo.
    2. Far visualizzare al sistema operativo una finestra vuota.
    3. Far disegnare al sistema operativo il testo "Hello World" sulla finestra utilizzando il font caricato.
  3. Utilizzare un'applicazione (che a sua volta utilizza il sistema operativo) per tutto il lavoro:
    1. Scrivere un documento HTML contenente le parole "Hello World".
    2. Aprire il documento con un web browser.

Ovviamente, l'approccio del primo livello richiede molti passaggi ed ognuno di questi è molto più complesso di quelli dei livelli successivi. Altro svantaggio del primo approccio è che è poco pratico utilizzarlo nel caso in cui sia necessario visualizzare una certa quantità di informazioni sullo schermo; col secondo approccio l'operazione è molto più semplice, e nel terzo è sufficiente scrivere "Hello World". In genere utilizzare API di livello più alto di solito comporta una certa perdita di flessibilità; per esempio, potrebbe essere molto difficile a livello di web browser ruotare attorno ad un punto un testo con i bordi lampeggianti, mentre questo compito potrebbe essere svolto in modo semplice ad un livello più basso. Questa differenza è un tipico esempio di compromesso che si può incontrare utilizzando un'API.

Esempi di API[modifica | modifica wikitesto]

Note[modifica | modifica wikitesto]

  1. ^ Calling Windows API, Microsoft. URL consultato il 13 febbraio 2014.

Voci correlate[modifica | modifica wikitesto]