Sto scrivendo del materiale pedagogico e quando ho iniziato a spiegare cos'è un'API mi sono reso conto che non sapevo perché diciamo " application programming interface" invece di solo "interfaccia di programmazione". Qualcuno conosce la storia?
Sto scrivendo del materiale pedagogico e quando ho iniziato a spiegare cos'è un'API mi sono reso conto che non sapevo perché diciamo " application programming interface" invece di solo "interfaccia di programmazione". Qualcuno conosce la storia?
Il motivo è perché un'API spesso non è un'interfaccia di tipo generale del codice macchina, ma è un'interfaccia per un modulo software che esegue una particolare funzione, ovvero un'applicazione particolare.
Le librerie per eseguire l'elaborazione delle immagini, per comprimere i file, per programmare appuntamenti dal dentista, per auto-tune dei firmatari, sono tutti moduli che forniscono un'applicazione di software per risolvere un particolare problema. Gran parte delle scelte dell'API che vanno in auto-tune sono diverse rispetto alla pianificazione degli appuntamenti del dentista e le strutture dei dati e i processi di manipolazione sono diversi.
Se hai appena detto "interfaccia di programmazione", io e io sospettiamo che molti altri penserebbero ad una funzione di livello molto basso ad es. caricamento del codice eseguibile dal disco in memoria, caricamento del codice su un chip flash, ecc.
Una "interfaccia di programmazione" sarebbe qualcosa su cui gli scrittori di compilatori e i progettisti di chip sarebbero interessati, mentre una "interfaccia di programmazione di applicazioni" è un livello più alto di astrazione.
A volte viene disegnata una distinzione tra software applicativo e software di sistema . Il software applicativo è un software per risolvere problemi specifici o per interagire con gli utenti. Al contrario, il software di sistema fornisce servizi ad altri software. I sistemi operativi e le librerie software sono esempi di software di sistema.
L'interfaccia di programmazione delle applicazioni è l'interfaccia esposta dal software di sistema tramite il quale fornisce servizi per il software applicativo.
Al giorno d'oggi, la distinzione tra applicazioni e software di sistema è quasi del tutto inutile e poco chiara. Molti programmi sono sia come applicazioni che come piattaforme (ad esempio, un browser Web offre non solo un'interfaccia utente per il Web, ma anche un ambiente di runtime per le applicazioni Web). Inoltre, più livelli di software di sistema sono spesso sovrapposti l'uno sull'altro, che deve anche comunicare attraverso alcune interfacce
Pertanto, il termine "interfaccia di programmazione dell'applicazione" si riferisce effettivamente a qualsiasi interfaccia software-software.
La "domanda" si riferisce alla programmazione del software; al contrario della programmazione per un'interfaccia hardware (come un driver di dispositivo) o un'interfaccia umana (come un mouse).
Da SmartyStreets :
APIs allow one program, or part of a program, to interface with another.
Allo stesso modo, da Wikipedia :
In general terms, it is a set of clearly defined methods of communication between various software components.
API Evangelist definisce un'API come:
The principal of a well documented set of publicly addressable "entry points" that allow an application to interact with another system....
il flusso del programma è come questo
yourApp -> api -> os -> spi -> device driver
Esempi
main()
è la spi che devi implementare quando vuoi scrivere un file della console. Leggi altre domande sui tag history api terminology