Zer da API bat

zer den API bat

du API siglak behin eta bitan baino gehiagotan ikusiko dituzu softwareari buruzko artikuluak irakurtzean. Baina denek ez dakite zer den benetan API bat. Horregatik argitzen dugu artikulu honetan. Esan beharreko lehenengo gauza da Application Programming Interface-ren laburdurak direla, hau da, gaztelaniaz, Application Programming Interface. Eta askotan nahasmena sortzen du programazio batzuk ezagutzen dituztenen artean ere.

Adibidez, Arduinok bere programazio APIa du, Arduino IDEan edo beste ingurune batzuetan erabil ditzakezun funtzio ugari eskaintzen ditu mikrokontroladorea programatzeko zure proiektuak sortzea ahalbidetzeko. Baina ... esango al zenidake programazio liburutegi eta API baten arteko aldea? Ba al dago desberdintasunik esparru baten eta API baten artean? API bat ABI baten berdina al da? Nahasmena sortzen jarraitzen duten eta oraintxe argitzera goazen zalantzak daude.

Ez dakit hori ezagutzen duzun maila baxuko hizkuntzak, mihiztatzailea edo ASM bezala, hardwarearen arkitekturaren mende daude, goi mailakoak, berriz, hardwareari ateratzen zaizkio programatzailearen zeregina errazteko, baina sistema eragilearen (syscalls) edo API batzuen eta abarren araberakoak dira. Guzti honek txinatar itxura izan ez dezan, ikus dezagun zertaz ari den ...

Zer da APIa?

a API garatzaileekin hornitutako tresna da beraz, eskura dituzte hainbat liburutegi bidez erabil daitezkeen OOPrako funtzio, azpierrutina eta prozedura edo metodo batzuk. API batek eskaintzen dituenen artean daude aplikazio sinpleak sortzeko funtzioetatik, AIrekin lotutako funtzioekin, grafikoen sorrerarekin, hardware baliabideen kudeaketarekin, etab.

Adibidez, ziur nago ezagutzen dituzula APIak, hala nola Linuxek glibc liburutegiaren bidez eskaintzen dituenak, edo bezalako grafikoak OpenGL eta Vulkan, edo OpenCL bezalako beste batzuk ere konputazio heterogeneorako, OpenXR errealitate birtual eta areagotuarentzat, etab. Beste sistema eragile eta software batzuek beren APIak ere badituzte, beste programatzaileek sistema horretarako gehigarriak, pluginak edo moduluak sor ditzaten, etab.

Adibidez Arduinorekin

Intsignia baduzu Arduino eta zuk maiz erabiltzen duzu Arduino IDE, edo Arduinorentzako beste edozein garapen ingurune, jakingo duzu kode bat sortzerakoan aukera anitz erabiltzen dituzula zure mikrokontroladoreak ekintza ugari egin ditzan. Adibidez, pinMode () funtzio arrunta da Arduino pin bat konfiguratzeko, ezta?

Idazten duzunean pinMode (9, INPUT)Adibidez, Arduino plakako 9. pinak sarrera gisa funtzionatu behar duela adierazten ari zara, hau da, mikrokontroladoreak pin horren bidez informazioa noiz sartuko duen zain egongo da hura irakurtzeko eta ekintza bat burutzeko. Baina inoiz galdetu al zaizu nola gai den agindu hori ulertzeko?

Beno, Arduinok badu Gure eskura jartzen den garapen APIa. API honetan hirugarrenen liburutegiak gehi daitezke blog honetan adibide askotan ikusi dugun moduan. SparkFun-en antzera sentsore batzuetarako eta abar Horrekin guztiarekin, funtzioak Arduino IDEan sar daitezke eta kodea behar bezala itzuliko du mikrokontroladorearen memorian kargatzeko prozesatu ahal izateko.

API hau izango ez bazenu, ezin izango zenituzke programa hauek Arduinorako hain modu sinplean sortu, ATMega328P mikrokontroladorearentzako muntatze kodean egiten saiatu beharko ginateke, hau da, AVR arkitekturarako ASM. Eta hori askoz ere korapilatsuagoa izango litzateke, ISA honek eskaintzen dituen argibideak zuzenean erabili beharko zenituzkeelako. Horrela bada, ISA horren errepertorioa behar bezala ezagutu beharko zenuke, baita beste alderdi batzuk ere, hala nola izen emate kopurua, etab. Hau da, lanean ari zaren hardwarearen maila baxuko ezagutza izan beharko zenuke.

By adibidez, ASM kodea LED batek begizta batean keinua egin dezan sortu beharko zenukeena:

<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

bitartean APIari esker instalazioak osoak dira, maila altuan honako kode baliokide hau idatziz (askoz ere laburragoa eta intuitiboagoa):

<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 

Desberdintasunak ABI batekin

API vs Linux ABI

ABI ez da hain ezaguna den terminoa, a da Application Binary Interface, edo ingelesez Application Binary Interface. Kasu honetan, programa baten moduluen arteko interfazea da, normalean liburutegi baten edo makina-lengoaia sistema eragilearen artean zauden arkitekturaren artean: SPARC, AMD64, ARM, PPC, RISC-V, etab.

ABIri esker, funtzioei deitzeko modua zehazten da, formatu bitarra horrek ulertu dezake konpilatzen ari zaren makina edo sistemaren deiak, salbuespenak nola kudeatzen diren, datuak nola pasatzen diren etab.

Esparru batekin desberdintasunak

Un esparrua edo esparrua tresna multzo bat gehiago da zure eskura proiektu jakin bat garatzen laguntzeko. Fama lanak normalean kodeketa estandar batzuk ezartzen ditu, osagai baliagarriak eskaintzen ditu, etab. Adibidez, JUnit Java-rako esparrua da, edo Symfony / Cake PHP-rako, etab.

SDK eta NDK-rekin desberdintasunak

SDK Software Garapen Kit bat da, hau da, softwarea garatzeko kit bat. Esparru edo API bat denaz haratago doa. Adibide bat Android Studio edo iOS xCode, etab. Adibidez, lehenengoan, Android APIaz gain, IDE edo garapen ingurune integratua ere sartzen da programatzeko eta biltzeko, liburutegiak, tresnak, etab.

Gainera, NDK (Native Development Kit) osagarria da. Adibidez, Android NDK-k garatzaileei C / C ++ kodea berrerabiltzeko aukera ematen die JNI (Java Native Interface) bidez aplikazioetan sartuz ...

Liburutegiarekin desberdintasunak

glibc wikipedia diagrama

Azkenik, liburutegia iturburu kode berrerabilgarrien bilduma da horrek bizitza errazten die programatzaileei. Adibidez, C liburutegiaren stdio.h barruan printf funtzioa dago pantailan testua inprimatzeko. Hori posible izan dadin, sistema eragileak zeregin hori egiten duen iturburu kodea behar da. Baina maiz erabiltzen den oso errepikakorra denez, liburutegi hori deitzean printf erabil dezakezu kode guztia hutsetik idatzi gabe. Beste era batera esanda, beste modu batera esanda, aurrefabrikatutako bloke gisa ikus daitezke.

Liburutegia eta APIa erraz nahastu daitezke, hain zuzen ere, liburutegiak API baten barruan bilduta daude. Adibidez glibc...

Espero dut ondoren ideia bat izatea argiago zer den API bat, ABI, frameworka, SDK bat eta liburutegia zer diren, hemendik aurrera haien artean bereizteko gai izateaz gain.


Artikuluaren edukia gure printzipioekin bat dator etika editoriala. Akats baten berri emateko egin klik hemen.

Idatzi lehenengo iruzkina

Utzi zure iruzkina

Zure helbide elektronikoa ez da argitaratuko. Beharrezko eremuak markatuta daude *

*

*

  1. Datuen arduraduna: Miguel Ángel Gatón
  2. Datuen xedea: SPAM kontrolatzea, iruzkinen kudeaketa.
  3. Legitimazioa: Zure baimena
  4. Datuen komunikazioa: datuak ez zaizkie hirugarrenei jakinaraziko legezko betebeharrez izan ezik.
  5. Datuak biltegiratzea: Occentus Networks-ek (EB) ostatatutako datu-basea
  6. Eskubideak: Edonoiz zure informazioa mugatu, berreskuratu eta ezabatu dezakezu.