Yini i-API

yini i-API

I-Las Ama-akhronimi we-API uzobe uwabone ngaphezu kokukodwa nakabili lapho ufunda izindatshana ezimayelana nesoftware. Kepha akubona bonke abantu abazi ukuthi i-API iyini ngempela. Kungakho sikucacisa kule ndatshana. Into yokuqala ongayisho ukuthi yizifinyezo ze-Application Programming Interface, okungukuthi, ngeSpanishi, Application Programming Interface. Futhi izikhathi eziningi kudala ukudideka ngisho naphakathi kwalabo abazi izinhlelo ezithile.

Isibonelo, i-Arduino ine-API yayo yohlelo, enikela ngemisebenzi eminingi ongayisebenzisa ku-Arduino IDE noma kwezinye izindawo ukuhlela i-microcontroller ukuvumela ukuthi wakhe amaphrojekthi akho. Kepha ... ungangitshela umehluko phakathi kwelabhulali yohlelo ne-API? Ingabe kukhona umehluko phakathi kohlaka ne-API? Ingabe i-API iyafana ne-ABI? Kunokungabaza okuningi okungenzeka ukuthi kuyaqhubeka nokudala ukudideka nokuthi sizocacisa njengamanje.

Angazi noma uyakwazi lokho izilimi ezisezingeni eliphansi, njenge-assembler noma i-ASM, incike ngqo ekwakhiweni kwezingxenyekazi zekhompiyutha, kuyilapho lezo ezisezingeni eliphakeme zisuselwa ku-Hardware ukwenza lula umsebenzi wohlelo, kepha zincike kuhlelo lokusebenza (ama-syscalls) noma kuma-API athile, njll. Ukuze konke lokhu kungazwakali njengesiShayina, ake sibone ukuthi kumayelana nani ...

Yini i-API?

Una I-API iyithuluzi okunikezwa ngalo onjiniyela ukuze basebenzise uchungechunge lwemisebenzi, ama-subroutines nezinqubo noma izindlela ze-OOP ezingasetshenziswa ngemitapo yolwazi ekhona. Phakathi kokunikezwa yi-API kusuka emisebenzini yokwenza izinhlelo zokusebenza ezilula, imisebenzi ehlobene ne-AI, ngokukhiqizwa kwemidwebo, ukuphathwa kwezinsizakusebenza zehadiwe, njll.

Isibonelo, ngiyaqiniseka ukuthi ujwayele ama-API afana nalawo ahlinzekwa yiLinux kulabhulali ye-glibc, noma imidwebo efana I-OpenGL neVulkan, noma ezinye ezifana ne-OpenCL yekhompiyutha eyindida, i-OpenXR yeqiniso elingokoqobo nokwengezelwe, njll. Ezinye izinhlelo ezisebenzayo nesoftware ifaka nama-API abo ukuze abanye abahleli bangeze ama-addons, ama-plugins noma amamojula alolo hlelo, njll.

Isibonelo no-Arduino

Uma unebheji I-Arduino futhi uvame ukusebenzisa i-Arduino IDE, noma enye indawo yokuthuthuka ye-Arduino, uzokwazi ukuthi uma wenza ikhodi usebenzisa izinketho eziningi uku-oda umphathi wakho omncane ukwenza uchungechunge lwezenzo. Isibonelo, i-pinMode () kungumsebenzi ojwayelekile wokumisa iphini le-Arduino, akunjalo?

Lapho ubhala i-pinMode (9, INPUT)Isibonelo, ukhombisa ukuthi i-pin 9 yebhodi le-Arduino kufanele lisebenze njengokufaka, okungukuthi, i-microcontroller izobe ilinde imininingwane ukuthi ingene ngaleyo phini ukuyifunda nokwenza isenzo. Kepha wake wazibuza ukuthi uyakwazi kanjani ukuqonda lowo myalo?

U-Arduino une- Development API enziwa ukuthi itholakale kithi. Imitapo yolwazi evela eceleni ingangezwa kule API njengoba sibonile ezibonelweni eziningi kule bhulogi. NjengeSparkFun's yezinzwa ezithile, njll. Ngakho konke lokhu, imisebenzi ingafakwa ku-Arduino IDE futhi izohumusha ikhodi kahle ukuyilayisha kwimemori ye-microcontroller ukuze ikwazi ukuyicubungula.

Uma ungenayo le-API, ubungeke ukwazi ukudala lezi zinhlelo ze-Arduino ngendlela elula kangako, ngoba kufanele sizame ukuzenza ikhodi yomhlangano ye-ATMega328P microcontroller, okungukuthi, I-ASM yokwakhiwa kwe-AVR. Futhi lokho kuzoba nzima kakhulu, ngoba kuzodingeka usebenzise ngqo imiyalo etholakala yi-ISA. Uma kunjalo, awudingi nje ngokwazi ngokwanele irekhodi lelo le-ISA, kepha futhi nezinye izici ezinjengezibalo zokubhaliswa, njll. Lokho wukuthi, kufanele ube nolwazi olusezingeni eliphansi ngehardware oyisebenzelayo.

Por isibonelo, ikhodi ye-ASM Okufanele ukukhiqize ukuze i-LED icwayize kuluphu kungaba:

<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

Ngesikhathi ngenxa ye-API izakhiwo sezizonke, ukubhala ezingeni eliphakeme ikhodi elandelayo efanayo (imfushane kakhulu futhi inembile):

<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 

Umehluko nge-ABI

I-API vs Linux ABI

I-ABI yigama elaziwa kancane, liyi- I-Application Binary Interface, noma nge-English Application Binary Interface. Kulokhu kuba isikhombimsebenzisi phakathi kwamamojula ohlelo, imvamisa phakathi kwelabhulali noma uhlelo lokusebenza lomshini wolwakhiwo okulo: SPARC, AMD64, ARM, PPC, RISC-V, njll.

Ngenxa ye-ABI, indlela yokubiza imisebenzi inqunyiwe, Ifomethi kanambambili engaqonda umshini owuhlanganelayo noma uhlelo olushayelayo, ukuthi kuphathwa kanjani okuhlukile, idatha idluliselwa kanjani, njll.

Umehluko ngohlaka

Un Uhlaka noma uhlaka kungaphezulu kweqoqo lamathuluzi onawo ukusiza ukuthuthukisa iphrojekthi enikeziwe. Umsebenzi wodumo uvame ukusetha amazinga athile wokufaka amakhodi, unikeze izinto eziwusizo, njll. Isibonelo, i-JUnit uhlaka lweJava, noma iSymfony / Ikhekhe le-PHP, njll.

Umehluko nge-SDK ne-NDK

I-SDK iyiSoftware Kit, okungukuthi, ikhithi yokuthuthukisa isoftware. Idlulela ngalé kohlaka noma i-API. Isibonelo kungaba yi-Android Studio noma i-iOS xCode, njll. Isibonelo, eyokuqala, ngaphezu kwe-Android API uqobo, ifaka phakathi i-IDE noma indawo ehlanganisiwe yentuthuko yokuhlela nokuhlanganisa, imitapo yolwazi, amathuluzi, njll.

Ngakolunye uhlangothi, I-NDK (Native Development Kit) kungumphelelisi. Isibonelo, i-Android NDK ivumela abathuthukisi ukuthi baphinde basebenzise ikhodi ye-C / C ++ ngokuyethula kuzinhlelo zokusebenza nge-JNI (Java Native Interface) ...

Umehluko nomtapo wezincwadi

Umdwebo we-Glibc Wikipedia

Ekugcineni, umtapo wezincwadi ukuqoqwa kwekhodi yomthombo esebenza kabusha lokho kwenza impilo ibe lula kohlelo. Isibonelo, ngaphakathi kwelabhulali ye-C stdio.h kukhona umsebenzi we-printf wokuphrinta umbhalo esibukweni. Ukuze lokhu kwenzeke, kudingeka ikhodi yomthombo eyenza uhlelo lokusebenza lusebenze lo msebenzi. Kepha njengoba kuyinto ephindaphindwayo esetshenziswa kaningi, ngokumane ucele lowo mtapo wezincwadi ukuthi usebenzise i-printf ngaphandle kokubhala yonke ikhodi kusukela ekuqaleni. Ngamanye amagama, ngamanye amagama, zingabonakala njengamabhulokhi e-precast.

Umtapo wezincwadi ne-API kungadideka kalula, empeleni, imitapo yolwazi isongwe ngaphakathi kwe-API. Isibonelo i-glibc...

Ngiyethemba ukuthi ngemuva kwalokhu unombono kucace bha ukuthi yini i-API, i-ABI, uhlaka, i-SDK kanye nomtapo wezincwadi, ngaphezu kokukwazi ukuhlukanisa phakathi kwabo kusukela manje.


Yiba ngowokuqala ukuphawula

Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.