API (concetto generale) e OpenGL
Sono al terzo anno di informatica e,quasi mi vergogno a dirlo (ma d'altra parte nessuno si è preso la briga di spiegarlo), non ho ancora chiaro il concetto di API. In generale cos'è una API,lasciando perdere le definizioni rigorose da wikipedia? Praticamente qual è il loro uso/ambito/scopo?
Ad esempio attualmente ne sto sentendo parlare studiando OpenGL, e non mi è proprio chiara la cosa. Sulle slide trovo scritto che è una specifica che definisce una API... (
?? ), mentre altrove trovo scritto che è una API, e altrove ancora che è una libreria, o uno standard grafico...,insomma 5/6 definizioni diverse.
Ad esempio attualmente ne sto sentendo parlare studiando OpenGL, e non mi è proprio chiara la cosa. Sulle slide trovo scritto che è una specifica che definisce una API... (

Risposte
Una API (application programming interface) è definita come l'interfaccia pubblica di una libreria. È quindi l'insieme di tutte le funzioni, variabili, costanti, classi.. a cui un utente della libreria ha accesso. Nel caso delle OpenGL, Khronos Group (precedentemente ARB) pubblica più o meno regolarmente nuove specifiche di questa interfaccia. Pubblica cioè un documento in cui vengono descritte le funzioni che fanno parte delle OpenGL e come queste funzioni devono comportarsi. L'implementazione di questa interfaccia non viene però fornita da Khronos. Ogni fornitore di schede video (o in alcuni casi sistemi operativi) fornisce la propria implementazione di questa interfaccia. Spero sia chiaro.
Si,chiaro. E questo concetto di "interfaccia di una libreria" vale per tutti gli altri ambiti? Ad esempio spesso sento parlare di API di windows: a che servono le API per un sistema operativo?
È l'insieme di tutte le funzioni, strutture, costanti.. messe a disposizione dal sistema operativo per creare applicazioni. Permetteranno quindi ad esempio di accedere al filesystem, creare GUIs, modificare variabili d'ambiente o altro..
"apatriarca":
È l'insieme di tutte le funzioni, strutture, costanti.. messe a disposizione dal sistema operativo per creare applicazioni
trasparenti al programmatore grazie all'uso dei linguaggi di programmazione?
Normalmente una API è legata allo specifico linguaggio di programmazione. Le Windows API sono tradizionalmente in C++, ma Microsoft mette a disposizione anche altri API in C++ o per i linguaggi che supportano il framework .NET.
Grazie,ora è tutto un po' più chiaro