API (concetto generale) e OpenGL

franbisc
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... ( :shock: ?? ), mentre altrove trovo scritto che è una API, e altrove ancora che è una libreria, o uno standard grafico...,insomma 5/6 definizioni diverse.

Risposte
apatriarca
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.

franbisc
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?

apatriarca
È 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..

franbisc
"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?

apatriarca
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.

franbisc
Grazie,ora è tutto un po' più chiaro

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.