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-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
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.