Što je API

što je API

Las API kratice vidjet ćete ih više puta i dvaput kada čitate članke o softveru. Ali ne znaju svi što je zapravo API. Zbog toga smo to pojasnili u ovom članku. Prvo što treba reći je da su to kratice sučelja za programiranje aplikacija, odnosno na španjolskom jeziku sučelje za programiranje aplikacija. A mnogo puta stvara zabunu čak i među onima koji poznaju neko programiranje.

Na primjer, Arduino ima vlastiti API za programiranje, nudeći brojne funkcije koje možete koristiti u Arduino IDE-u ili drugim okruženjima za programiranje mikrokontrolera kako bi vam omogućili stvaranje vaših projekata. Ali ... možete li mi reći razlika između programske knjižnice i API-ja? Postoje li razlike između okvira i API-ja? Je li API isti kao ABI? Mnogo je sumnji koje možda i dalje stvaraju zabunu i koje ćemo sada razjasniti.

Ne znam znate li to jezici niske razine, poput asemblera ili ASM-a, izravno ovise o hardverskoj arhitekturi, dok se oni na visokoj razini apstrahiraju od hardvera kako bi olakšali zadatak programera, ali ovise o operativnom sustavu (syscalls) ili o određenim API-ima itd. Da sve ovo ne bi zvučalo poput kineskog, da vidimo o čemu se radi ...

Što je API?

Una API je alat s kojim se pružaju programeri tako da im je na raspolaganju niz funkcija, potprograma i postupaka ili metoda za OOP koji se mogu koristiti kroz postojeće knjižnice. Među onim što API nudi su funkcije za stvaranje jednostavnih aplikacija, funkcije povezane s AI-jem, s generiranjem grafike, upravljanjem hardverskim resursima itd.

Na primjer, siguran sam da su vam poznati API-ji poput onoga koji nudi Linux putem glibc biblioteke ili grafike poput OpenGL i Vulkan, ili također drugi poput OpenCL-a za heterogeno računanje, OpenXR za virtualnu i proširenu stvarnost itd. Ostali operativni sustavi i softver također uključuju vlastite API-je tako da drugi programeri mogu stvoriti dodatke, dodatke ili module za taj sustav itd.

Primjer s Arduinom

Ako imate značku Arduino i često koristite Arduino IDE, ili bilo koje drugo razvojno okruženje za Arduino, znat ćete da kada kreirate kôd koristite više opcija kako biste naredili mikrokontroleru da izvrši niz radnji. Na primjer, pinMode () je tipična funkcija za konfiguriranje Arduino pina, zar ne?

Kad pišete pinMode (9, INPUT)Na primjer, naznačujete da bi pin 9 ploče Arduino trebao raditi kao ulaz, odnosno mikrokontroler će čekati da informacija uđe kroz taj pin da bi ga pročitao i izvršio radnju. Ali jeste li se ikad zapitali kako on može razumjeti tu zapovijed?

Pa, Arduino ima Razvojni API koji nam je dostupan. Biblioteke trećih strana mogu se dodati ovom API-u, kao što smo vidjeli u mnogim primjerima na ovom blogu. Poput SparkFuna za određene senzore itd. Uz sve to, funkcije se mogu unijeti u Arduino IDE i on će pravilno prevesti kôd kako bi ga učitao u memoriju mikrokontrolera kako bi ga mogao obraditi.

Ako niste imali ovaj API, ne biste mogli stvoriti ove programe za Arduino na tako jednostavan način, jer bismo ih trebali pokušati izraditi u montažnom kodu za mikrokontroler ATMega328P, tj. ASM za AVR arhitekturu. A to bi bilo puno složenije, jer biste se morali izravno koristiti uputama koje nudi ovaj ISA. Ako je to slučaj, ne samo da biste morali adekvatno znati repertoar tog ISA-a, već i druge aspekte poput broja registracija itd. Odnosno, trebali biste imati nisko znanje o hardveru za koji radite.

Po na primjer, ASM kod Ono što biste trebali generirati da bi lampica trepnula u petlji bilo bi:

<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

Dok zahvaljujući API-ju objekti su ukupni, pisanje na visokoj razini sljedećeg ekvivalentnog koda (puno kraćeg i intuitivnijeg):

<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 

Razlike s ABI

API vs Linux ABI

ABI je manje poznati pojam, to je a Aplikacijsko binarno sučelje, ili na engleskom jeziku Application Binary Interface. U ovom je slučaju riječ o sučelju između modula programa, obično između knjižnice ili operativnog sustava strojnog jezika za arhitekturu u kojoj se nalazite: SPARC, AMD64, ARM, PPC, RISC-V itd.

Zahvaljujući ABI, određen je način pozivanja funkcija, binarni format koji mogu razumjeti stroj za koji kompilirate ili sistemske pozive, kako se postupa s iznimkama, kako se prosljeđuju podaci itd.

Razlike s okvirom

Un framework ili framework je više skup alata na raspolaganju za pomoć u razvoju određenog projekta. Obitelj obično postavlja neke standarde kodiranja, pruža korisne komponente itd. Na primjer, JUnit je okvir za Javu, ili Symfony / Cake za PHP itd.

Razlike sa SDK-om i NDK-om

SDK je komplet za razvoj softvera, odnosno komplet za razvoj softvera. Prelazi ono što je okvir ili API. Primjer bi mogao biti Android Studio ili iOS xCode itd. Primjerice, prvi, uz sam Android API, također uključuje IDE ili integrirano razvojno okruženje za programiranje i kompajliranje, knjižnice, alate itd.

Nadalje, NDK (Native Development Kit) to je dopuna. Na primjer, Android NDK omogućuje programerima ponovnu upotrebu C / C ++ koda uvođenjem u aplikacije putem JNI (Java Native Interface) ...

Razlike s knjižnicom

Glibc dijagram Wikipedia

konačno, knjižnica je zbirka izvornog koda za višekratnu upotrebu to olakšava život programerima. Na primjer, unutar biblioteke C stdio.h nalazi se funkcija printf za ispis teksta na zaslon. Da bi to bilo moguće, potreban je izvorni kod koji tjera operativni sustav da izvrši ovaj zadatak. No budući da se često koristi vrlo često, jednostavno pozivanjem te biblioteke možete koristiti printf bez da ispisujete sav kôd ispočetka. Drugim riječima, drugim riječima, mogu se promatrati kao montažni blokovi.

Knjižnica i API mogu se lako zbuniti, zapravo, knjižnice su umotane u API. Primjer glibc...

Nadam se da nakon ovoga imate ideju jasnije o tome što su API, ABI, framework, SDK i knjižnica, uz mogućnost da ih od sada razlikuje.


Budite prvi koji će komentirati

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.