Cos'è un'API

cos'è un'API

Le Gli acronimi API li avrai visti più di una e due volte quando leggi articoli sul software. Ma non tutti sanno cosa sia veramente un'API. Ecco perché lo chiariamo in questo articolo. La prima cosa da dire è che sono le abbreviazioni di Application Programming Interface, ovvero, in spagnolo, Application Programming Interface. E molte volte genera confusione anche tra chi conosce un po 'di programmazione.

Ad esempio, Arduino ha una propria API di programmazione, che offre una serie di funzioni che puoi utilizzare nell'IDE di Arduino o in altri ambienti per programmare il microcontrollore per consentirti di creare i tuoi progetti. Ma ... potresti dirmelo la differenza tra una libreria di programmazione e un'API? Esistono differenze tra un framework e un'API? Un'API è uguale a un'ABI? Sono tanti i dubbi che forse continuano a generare confusione e che andremo a chiarire in questo momento.

Non so se lo sai linguaggi di basso livello, come l'assemblatore o l'ASM, dipendono direttamente dall'architettura hardware, mentre quelli di alto livello astraggono dall'hardware per facilitare il compito del programmatore, ma dipendono dal sistema operativo (syscalls) o da alcune API, ecc. Affinché tutto questo non ti sembri cinese, vediamo di cosa si tratta ...

Cos'è un'API?

Un L'API è uno strumento con cui vengono forniti gli sviluppatori in modo da avere a disposizione una serie di funzioni, subroutine e procedure o metodi per l'OOP utilizzabili tramite le librerie esistenti. Tra ciò che offre un'API ci sono funzioni per creare semplici app, funzioni legate all'IA, con la generazione di grafici, la gestione delle risorse hardware, ecc.

Ad esempio, sei certo API ben note come quella offerta da Linux tramite la libreria glibc, o grafica come OpenGL e Vulkan, o anche altri come OpenCL per il calcolo eterogeneo, OpenXR per la realtà virtuale e aumentata, ecc. Altri sistemi operativi e software includono anche le proprie API in modo che altri programmatori possano creare componenti aggiuntivi, plug-in o moduli per quel sistema, ecc.

Esempio con Arduino

Se hai un badge Arduino e usi spesso l'IDE di Arduino, o qualsiasi altro ambiente di sviluppo per Arduino, saprai che quando crei un codice utilizzi più opzioni per ordinare al tuo microcontrollore di eseguire una serie di azioni. Ad esempio, pinMode () è una funzione tipica per configurare un pin Arduino, giusto?

Quando scrivi pinMode (9, INPUT)Ad esempio, stai indicando che il pin 9 della scheda Arduino dovrebbe funzionare come input, ovvero il microcontrollore attenderà che le informazioni entrino attraverso quel pin per leggerlo ed eseguire un'azione. Ma ti sei mai chiesto come fa a capire quel comando?

Bene, Arduino ha un file API di sviluppo che ci viene messa a disposizione. Le librerie di terze parti possono essere aggiunte a questa API come abbiamo visto in molti esempi su questo blog. Come SparkFun per alcuni sensori, ecc. Con tutto ciò, le funzioni possono essere inserite nell'IDE di Arduino e tradurrà il codice correttamente per caricarlo nella memoria del microcontrollore in modo che possa elaborarlo.

Se non avessi questa API, non potresti creare questi programmi per Arduino in modo così semplice, dato che dovremmo provare a farli in codice assembly per il microcontrollore ATMega328P, cioè ASM per architettura AVR. E sarebbe molto più complicato, poiché dovresti usare direttamente le istruzioni disponibili da questo ISA. In tal caso, non solo dovresti conoscere adeguatamente il repertorio di quell'ISA, ma anche altri aspetti come il numero di record, ecc. Cioè, dovresti avere una conoscenza di basso livello dell'hardware per cui stai lavorando.

da esempio, codice ASM Quello che dovresti generare affinché un LED lampeggi in un ciclo sarebbe:

<br data-mce-bogus="1">

.ORG 0x0000
; the next instruction has to be written to
; address 0x0000
rjmp START
; the reset vector: jump to "main"
START:
ldi r16, low(RAMEND) ; set up the stack
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16
ldi r16, 0xFF
; load register 16 with 0xFF (all bits 1)
out DDRB, r16
; write the value in r16 (0xFF) to Data
; Direction Register B
LOOP:
sbi PortB, 5
; switch off the LED
rcall delay_05
cbi PortB, 5
; wait for half a second
; switch it on
rcall delay_05 ; wait for half a secon
rjmp LOOP ; jump to loop
DELAY_05:
; the subroutine:
ldi r16, 31
; load r16 with 31
OUTER_LOOP:
; outer loop label
ldi r24, low(1021) ; load registers r24:r25 with 1021, our new
; init value
ldi r25, high(1021) ; the loop label
DELAY_LOOP:
; "add immediate to word": r24:r25 are
; incremented
adiw r24, 1
; if no overflow ("branch if not equal"), go
; back to "delay_loop"
brne DELAY_LOOP
dec r16
; decrement r16
brne OUTER_LOOP
ret
; and loop if outer loop not finished
; return from subroutine

Mentre grazie all'API le facilitazioni sono totali, scrivendo ad alto livello il seguente codice equivalente (molto più breve e più intuitivo):

<br data-mce-bogus="1">

int ledPin = 13; 		// LED que se encuentra en el pin 13
   void setup(){ 
   pinMode(ledPin, OUTPUT);	// El p1n 13 será una salida digital 
} 
void loop(){ 
   digitalWrite(ledPin, HIGH);	// Enciende el LED
   delay(1000); 				// Pausa de 1 segundo 
   digitalWrite(ledPin, LOW); 	// Apaga el LED 
   delay(1000);				// Pausa de 1 segundo 

Differenze con un ABI

API vs Linux ABI

ABI è un termine meno noto, è un Interfaccia binaria dell'applicazione, o in inglese Interfaccia binaria dell'applicazione. In questo caso, è un'interfaccia tra i moduli di un programma, generalmente tra una libreria o un sistema operativo in linguaggio macchina per l'architettura in cui ti trovi: SPARC, AMD64, ARM, PPC, RISC-V, ecc.

Grazie all'ABI si determina il modo di chiamare le funzioni, formato binario che può capire la macchina per cui stai compilando o le chiamate di sistema, come vengono gestite le eccezioni, come vengono passati i dati, ecc.

Differenze con un Framework

Un framework o framework è più di un insieme di strumenti a tua disposizione per aiutare a sviluppare un determinato progetto. Il lavoro di fama di solito stabilisce alcuni standard di codifica, fornisce componenti utili, ecc. Ad esempio, JUnit è un framework per Java, o Symfony / Cake per PHP, ecc.

Differenze con un SDK e NDK

SDK è un kit di sviluppo software, ovvero un kit di sviluppo software. Va oltre ciò che è un framework o un'API. Un esempio potrebbe essere Android Studio o iOS xCode, ecc. Ad esempio, il primo, oltre alla stessa API Android, include anche un IDE o un ambiente di sviluppo integrato per la programmazione e la compilazione, librerie, strumenti, ecc.

Inoltre, NDK (kit di sviluppo nativo) è un complemento. Ad esempio, Android NDK consente agli sviluppatori di riutilizzare il codice C / C ++ introducendolo nelle applicazioni tramite JNI (Java Native Interface) ...

Differenze con una libreria

Diagramma di Glibc Wikipedia

Infine, la libreria è una raccolta di codice sorgente riutilizzabile che semplifica la vita ai programmatori. Ad esempio, all'interno della libreria C stdio.h c'è una funzione printf per stampare il testo sullo schermo. Affinché ciò sia possibile, è necessario un codice sorgente che consenta al sistema operativo di eseguire questa operazione. Ma poiché è qualcosa di molto ricorrente che viene utilizzato frequentemente, semplicemente invocando quella libreria è possibile utilizzare printf senza scrivere tutto il codice da zero. In altre parole, in altre parole, possono essere visti come blocchi prefabbricati.

Una libreria e un'API possono essere facilmente confuse, infatti, le librerie sono racchiuse in un'API. Esempio glibc...

Spero che dopo questo tu abbia un'idea più chiaro su cosa siano un'API, un ABI, un framework, un SDK e una libreria, oltre a essere in grado di distinguerli da ora in poi.


Puoi essere il primo a lasciare un commento

Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.