Ano ang isang API

ano ang isang API

ang Ang mga API acronyms ay makikita mo ang mga ito nang higit sa isang beses at dalawang beses kapag nagbasa ka ng mga artikulo tungkol sa software. Ngunit hindi alam ng lahat kung ano talaga ang isang API. Iyon ang dahilan kung bakit nililinaw namin ito sa artikulong ito. Ang unang bagay na sasabihin ay ang mga ito ang akronim para sa Application Programming Interface, iyon ay, sa Espanyol, Application Programming Interface. At maraming beses na bumubuo ito ng pagkalito kahit sa mga nakakaalam ng ilang programa.

Halimbawa, ang Arduino ay mayroong sariling programming API, na nag-aalok ng isang bilang ng mga pagpapaandar na maaari mong gamitin sa Arduino IDE o iba pang mga kapaligiran upang mai-program ang microcontroller upang payagan kang lumikha ng iyong mga proyekto. Ngunit ... maaari mo bang sabihin sa akin ang pagkakaiba sa pagitan ng isang library ng programa at isang API? Mayroon bang mga pagkakaiba sa pagitan ng isang balangkas at isang API? Ang isang API ba ay katulad ng isang ABI? Maraming pag-aalinlangan na marahil ay patuloy na nakakabuo ng pagkalito at kami ay maglilinaw sa ngayon.

Hindi ko alam kung alam mo yun mga mababang antas na wika, tulad ng assembler o ASM, direktang nakasalalay sa arkitektura ng hardware, habang ang mga mataas na antas na abstract mula sa hardware upang mapadali ang gawain ng programmer, ngunit nakasalalay sa operating system (syscalls) o sa ilang mga API, atbp. Upang ang lahat ng ito ay hindi parang Intsik sa iyo, tingnan natin kung ano ang tungkol sa ...

Ano ang isang API?

isang Ang API ay isang tool kung saan ibinibigay ang mga developer upang mayroon sila sa kanilang pagtatapon ng isang serye ng mga pagpapaandar, subroutine at pamamaraan o pamamaraan para sa OOP na maaaring magamit sa pamamagitan ng mga mayroon nang mga aklatan. Kabilang sa kung ano ang inaalok ng isang API ay mula sa mga pagpapaandar upang lumikha ng mga simpleng app, mga pagpapaandar na nauugnay sa AI, kasama ang pagbuo ng mga graphic, pamamahala ng mga mapagkukunan ng hardware, atbp.

Halimbawa, sigurado kang kilalang mga API tulad ng na inaalok ng Linux sa pamamagitan ng glibc library, o mga graphic tulad ng OpenGL at Vulkan, o iba pa tulad ng OpenCL para sa magkakaiba-ibang computing, OpenXR para sa virtual at pinalawak na katotohanan, atbp. Ang iba pang mga operating system at software ay nagsasama rin ng kanilang sariling mga API upang ang ibang mga programmer ay maaaring lumikha ng mga addon, plugin o module para sa sistemang iyon, atbp.

Halimbawa kay Arduino

Kung mayroon kang isang badge Arduino at madalas mong ginagamit ang Arduino IDE, o anumang iba pang kapaligiran sa pag-unlad para sa Arduino, malalaman mo na kapag lumikha ka ng isang code ay gumagamit ka ng maraming mga pagpipilian upang mag-order sa iyong microcontroller na gumawa ng isang serye ng mga pagkilos. Halimbawa, ang pinMode () ay isang tipikal na pagpapaandar upang mai-configure ang isang Arduino pin, tama?

Kapag sumulat ka pinMode (9, INPUT)Halimbawa, ipinapahiwatig mo na ang pin 9 ng Arduino board ay dapat na gumana bilang isang input, iyon ay, ang microcontroller ay naghihintay para sa impormasyon na ipasok sa pamamagitan ng pin na iyon upang mabasa ito at magsagawa ng isang aksyon. Ngunit naisip mo ba kung paano niya naiintindihan ang utos na iyon?

Kaya, si Arduino ay mayroong Ang Development API na magagamit sa amin. Ang mga library ng third-party ay maaaring maidagdag sa API na ito tulad ng nakita natin sa maraming mga halimbawa sa blog na ito. Tulad ng SparkFun's para sa ilang mga sensor, atbp. Sa lahat ng ito, maaaring maipasok ang mga pagpapaandar sa Arduino IDE at isasalin nito nang maayos ang code upang mai-load ito sa memorya ng microcontroller upang maproseso ito.

Kung wala kang API na ito, hindi mo malilikha ang mga program na ito para sa Arduino sa isang simpleng paraan, dahil dapat naming subukan na gawin ang mga ito sa code ng pagpupulong para sa microegatroller ng ATMega328P, iyon ay, sa ASM para sa arkitekturang AVR. At iyon ay magiging mas kumplikado, dahil kailangan mong direktang gamitin ang mga tagubiling magagamit ng ISA na ito. Kung gayon, hindi mo lamang sapat na malalaman ang repertoire ng ISA na iyon, kundi pati na rin ang iba pang mga aspeto tulad ng bilang ng mga pagrehistro, atbp. Iyon ay, dapat kang magkaroon ng mababang antas ng kaalaman sa hardware na iyong pinagtatrabahuhan.

Por halimbawa, ASM code Ang dapat mong likhain para sa isang LED upang magpikit sa isang loop ay:

<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

habang salamat sa API ang mga pasilidad ay kabuuan, pagsusulat sa isang mataas na antas ng sumusunod na katumbas na code (mas maikli at mas madaling maunawaan):

<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 

Mga pagkakaiba sa isang ABI

API vs Linux ABI

Ang ABI ay isang hindi gaanong kilalang term, ito ay isang Application Binary Interface, o sa English Application Binary Interface. Sa kasong ito, ito ay isang interface sa pagitan ng mga module ng isang programa, sa pangkalahatan sa pagitan ng isang silid aklatan o isang operating system ng wika ng machine para sa arkitektura kung saan ikaw ay: SPARC, AMD64, ARM, PPC, RISC-V, atbp.

Salamat sa ABI, natutukoy ang paraan upang tawagan ang mga pagpapaandar, binary format na maaaring maunawaan ang makina na iyong pinag-iipon o ang mga tawag sa system, kung paano hawakan ang mga pagbubukod, kung paano ipinapasa ang data, atbp.

Mga Pagkakaiba sa isang Framework

Un ang balangkas o balangkas ay higit pa sa isang hanay ng mga tool na magagamit mo upang makatulong na bumuo ng isang naibigay na proyekto. Karaniwang nagtatakda ang famework ng ilang mga pamantayan sa pag-coding, nagbibigay ng mga kapaki-pakinabang na sangkap, atbp Halimbawa, ang JUnit ay isang balangkas para sa Java, o Symfony / Cake para sa PHP, atbp.

Mga pagkakaiba sa isang SDK at NDK

Ang SDK ay isang Software Development Kit, iyon ay, isang software development kit. Lumalagpas ito sa kung ano ang isang balangkas o isang API. Ang isang halimbawa ay maaaring Android Studio o iOS xCode, atbp. Halimbawa, ang una, bilang karagdagan sa mismong Android API, ay nagsasama rin ng isang IDE o pinagsamang kapaligiran sa pag-unlad para sa pagprograma at pag-iipon, mga aklatan, tool, atbp.

Bukod dito, NDK (Native Development Kit) ito ay isang pandagdag. Halimbawa, pinapayagan ng Android NDK ang mga developer na muling gamitin ang C / C ++ code sa pamamagitan ng pagpapakilala nito sa mga application sa pamamagitan ng JNI (Java Native Interface) ...

Mga pagkakaiba sa isang silid-aklatan

Glibc diagram Wikipedia

Sa wakas, ang library ay isang koleksyon ng magagamit muli na code ng mapagkukunan na ginagawang mas madali ang buhay para sa mga programmer. Halimbawa, sa loob ng C library stdio.h mayroong isang function na printf upang mag-print ng teksto sa screen. Upang maging posible ito, kinakailangan ng isang source code na ginagawang gawin ng operating system ang gawaing ito. Ngunit dahil ito ay isang bagay na napaka-paulit-ulit na ginagamit nang madalas, sa pamamagitan lamang ng pag-apply sa library na maaari mong gamitin ang printf nang hindi sinusulat ang lahat ng code mula sa simula. Sa madaling salita, sa madaling salita, maaari silang makita bilang precast blocks.

Ang isang silid-aklatan at isang API ay maaaring madaling malito, sa katunayan, ang mga aklatan ay nakabalot sa loob ng isang API. Halimbawa glibc...

Inaasahan kong pagkatapos nito ay mayroon kang ideya mas malinaw tungkol sa kung ano ang isang API, ABI, isang balangkas, isang SDK at isang silid-aklatan, pati na rin ang makapag-iba-iba sa pagitan nila mula ngayon.


Maging una sa komento

Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.