Kas ir API

kas ir API

the API akronīmi, tos lasot vairāk nekā vienu un divas reizes, lasot rakstus par programmatūru. Bet ne visi zina, kas patiesībā ir API. Tāpēc mēs to precizējam šajā rakstā. Vispirms jāsaka, ka tie ir lietojumprogrammu saskarnes saīsinājumi, tas ir, spāņu valodā, lietojumprogrammu saskarne. Un daudzas reizes tas rada neskaidrības pat starp tiem, kuri zina kādu programmēšanu.

Piemēram, Arduino ir savs programmēšanas API, kas piedāvā virkni funkciju, kuras varat izmantot Arduino IDE vai citās vidēs, lai ieprogrammētu mikrokontrolleru, lai jūs varētu izveidot savus projektus. Bet ... vai jūs varētu man pateikt atšķirība starp programmēšanas bibliotēku un API? Vai pastāv atšķirības starp sistēmu un API? Vai API ir tas pats, kas ABI? Ir daudz šaubu, kas, iespējams, turpina radīt neskaidrības un kuras mēs tūlīt precizēsim.

Es nezinu, vai jūs to zināt zema līmeņa valodas, tāpat kā montētājs vai ASM, ir tieši atkarīgi no aparatūras arhitektūras, savukārt augsta līmeņa abstrahējas no aparatūras, lai atvieglotu programmētāja uzdevumu, bet ir atkarīgi no operētājsistēmas (syscalls) vai no noteiktiem API utt. Lai tas viss jums neizklausītos pēc ķīniešu valodas, paskatīsimies, par ko ir runa ...

Kas ir API?

A API ir rīks, ar kuru tiek nodrošināti izstrādātāji lai viņu rīcībā būtu virkne OOP funkciju, apakšprogrammu un procedūru vai metožu, kuras var izmantot, izmantojot esošās bibliotēkas. Starp API piedāvātajām funkcijām ir vienkāršu lietotņu izveide, funkcijas, kas saistītas ar AI, ar grafikas ģenerēšanu, aparatūras resursu pārvaldību utt.

Piemēram, esmu pārliecināts, ka esat iepazinies ar tādām API kā Linux piedāvātā glibc bibliotēkā vai grafika, piemēram, OpenGL un Vulkan, vai arī citi, piemēram, OpenCL neviendabīgai skaitļošanai, OpenXR virtuālajai un paplašinātajai realitātei utt. Citas operētājsistēmas un programmatūra ietver arī savas API, lai citi programmētāji varētu izveidot šīs sistēmas papildinājumus, spraudņus vai moduļus utt.

Piemērs ar Arduino

Ja jums ir žetons Arduino un jūs bieži lietojat Arduino IDE, vai jebkuru citu Arduino izstrādes vidi, jūs zināt, ka, izveidojot kodu, jūs izmantojat vairākas iespējas, lai mikrokontrollerim liktu veikt virkni darbību. Piemēram, pinMode () ir tipiska funkcija, lai konfigurētu Arduino piespraudi, vai ne?

Kad tu raksti pinMode (9, INPUT)Piemēram, jūs norādāt, ka Arduino dēļa 9. tapai vajadzētu darboties kā ievadei, tas ir, mikrokontrolleris gaidīs, kad informācija tiks ievadīta caur šo tapu, lai to izlasītu un veiktu darbību. Bet vai jūs kādreiz esat domājis, kā viņš spēj saprast šo komandu?

Nu, Arduino ir Attīstības API, kas ir pieejams mums. Šai API var pievienot trešo pušu bibliotēkas, kā mēs esam redzējuši daudzos šī emuāra piemēros. Tāpat kā SparkFun noteiktiem sensoriem utt. Ar visu to funkcijas var ievadīt Arduino IDE, un tas pareizi pārtulkos kodu, lai to ielādētu mikrokontrollera atmiņā, lai tas to varētu apstrādāt.

Ja jums nebūtu šīs API, jūs nevarētu izveidot šīs programmas Arduino tik vienkārši, jo mums jācenšas tās izveidot ATMega328P mikrokontrollera montāžas kodā, tas ir, ASM AVR arhitektūrai. Un tas būtu daudz sarežģītāk, jo jums tieši jāizmanto šīs ISA pieejamās instrukcijas. Ja tā, jums ne tikai būs pienācīgi jāzina šīs ISA repertuārs, bet arī citi aspekti, piemēram, reģistrāciju skaits utt. Tas ir, jums vajadzētu būt zema līmeņa zināšanām par aparatūru, kuras labā strādājat.

Ar piemērs, ASM kods Tas, kas jums jāģenerē, lai gaismas diode mirgot cilpā, būtu:

<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

kamēr pateicoties API, iespējas ir kopīgas, rakstot augstā līmenī šādu ekvivalentu kodu (daudz īsāku un intuitīvāku):

<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 

Atšķirības ar ABI

API pret Linux ABI

ABI ir mazāk zināms termins, tas ir a Lietojumprogrammas binārā saskarne vai angļu valodā Lietojumprogrammas binārā saskarne. Šajā gadījumā tā ir saskarne starp programmas moduļiem, parasti starp bibliotēku vai mašīnvalodas operētājsistēmu arhitektūrai, kurā atrodaties: SPARC, AMD64, ARM, PPC, RISC-V utt.

Pateicoties ABI, tiek noteikts funkciju izsaukšanas veids, binārs formāts kas var saprast mašīnu, kurai jūs apkopojat, vai sistēmu izsauc, kā tiek apstrādāti izņēmumi, kā tiek nodoti dati utt.

Atšķirības ar sistēmu

Un ietvars vai ietvars ir vairāk rīku kopums jūsu rīcībā, lai palīdzētu izstrādāt konkrētu projektu. Slavas darbs parasti nosaka dažus kodēšanas standartus, nodrošina noderīgus komponentus utt. Piemēram, JUnit ir Java pamatsistēma vai Symfony / Cake PHP utt.

Atšķirības ar SDK un NDK

SDK ir programmatūras izstrādes komplekts, tas ir, programmatūras izstrādes komplekts. Tas pārsniedz to, kas ir ietvars vai API. Piemērs varētu būt Android Studio vai iOS xCode utt. Piemēram, pirmais bez pašas Android API ietver arī IDE vai integrētu izstrādes vidi programmēšanai un apkopošanai, bibliotēkas, rīkus utt.

Turklāt, NDK (vietējās attīstības komplekts) tas ir papildinājums. Piemēram, Android NDK ļauj izstrādātājiem atkārtoti izmantot C / C ++ kodu, ieviešot to lietojumprogrammās, izmantojot JNI (Java Native Interface) ...

Atšķirības ar bibliotēku

Glibc diagramma Wikipedia

Visbeidzot, bibliotēka ir atkārtoti izmantojama pirmkoda kolekcija tas atvieglo programmētāju dzīvi. Piemēram, C bibliotēkas stdio.h iekšpusē ir funkcija printf, lai ekrānā drukātu tekstu. Lai tas būtu iespējams, ir nepieciešams avota kods, kas liek operētājsistēmai veikt šo uzdevumu. Tā kā tas ir kaut kas ļoti atkārtots, kas tiek izmantots bieži, vienkārši atsaucoties uz šo bibliotēku, jūs varat izmantot printf, nerakstot visu kodu no jauna. Citiem vārdiem sakot, citiem vārdiem sakot, tos var uzskatīt par saliekamiem blokiem.

Bibliotēku un API var viegli sajaukt, patiesībā bibliotēkas ir ietītas API iekšpusē. Piemērs glibc...

Es ceru, ka pēc tam jums ir ideja skaidrāk par to, kas ir API, ABI, ietvars, SDK un bibliotēka, papildus tam, ka turpmāk tos var atšķirt.


Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.