Mikä on API

mikä on API

Las API-lyhenteet olet nähnyt niitä useammin kuin kerran ja kahdesti, kun luet artikkeleita ohjelmistoista. Mutta kaikki eivät tiedä mikä API on. Siksi selvennämme sitä tässä artikkelissa. Ensinnäkin on sanottava, että ne ovat lyhenteitä Application Programming Interface, eli espanjaksi, Application Programming Interface. Ja monta kertaa se aiheuttaa hämmennystä jopa niiden keskuudessa, jotka osaavat ohjelmoida.

Esimerkiksi Arduinolla on oma ohjelmointirajapinta, joka tarjoaa useita toimintoja, joita voit käyttää Arduino IDE: ssä tai muissa ympäristöissä mikrokontrollerin ohjelmointiin, jotta voit luoda projekteja. Mutta ... voisitko kertoa minulle ero ohjelmointikirjaston ja sovellusliittymän välillä? Onko kehyksen ja API: n välillä eroja? Onko API sama kuin ABI? On monia epäilyksiä, jotka saattavat edelleen aiheuttaa sekaannusta ja jotka aiomme selvittää juuri nyt.

En tiedä, tiedätkö sen matalan tason kielet, kuten assembler tai ASM, riippuvat suoraan laitteistoarkkitehtuurista, kun taas korkean tason abstraktit laitteistosta helpottavat ohjelmoijan tehtävää, mutta riippuvat käyttöjärjestelmästä (syscalls) tai tietyistä sovellusliittymistä jne. Jotta kaikki tämä ei kuulosta kiinalaiselta sinulle, katsotaanpa, mistä on kyse ...

Mikä on API?

Una API on työkalu, jonka avulla kehittäjät ovat mukana jotta heillä olisi käytössään joukko toimintoja, aliohjelmia ja menettelyjä tai menetelmiä OOP: lle, joita voidaan käyttää olemassa olevien kirjastojen kautta. API tarjoaa esimerkiksi toimintoja yksinkertaisten sovellusten luomiseen, tekoälyyn liittyviä toimintoja, grafiikan tuottamista, laitteistoresurssien hallintaa jne.

Olet esimerkiksi varma, että tunnetut sovellusliittymät, kuten Linuxin tarjoama glibc-kirjaston kautta, tai grafiikat, kuten OpenGL ja Vulkan, tai myös muut, kuten OpenCL heterogeeniseen laskentaan, OpenXR virtuaaliseen ja liitettyyn todellisuuteen jne. Muut käyttöjärjestelmät ja ohjelmistot sisältävät myös omat sovellusliittymät, jotta muut ohjelmoijat voivat luoda lisäyksiä, laajennuksia tai moduuleja tälle järjestelmälle jne.

Esimerkki Arduinosta

Jos sinulla on merkki Arduino ja käytät usein Arduino IDE: tä, tai minkä tahansa muun Arduinon kehitysympäristön, tiedät, että kun luot koodin, käytät useita vaihtoehtoja tilaamaan mikro-ohjaimesi tekemään useita toimintoja. Esimerkiksi pinMode () on tyypillinen toiminto Arduino-nastan määrittämiseen, eikö?

Kun kirjoitat pinMode (9, INPUT)Olet esimerkiksi osoittamassa, että Arduino-kortin nastan 9 pitäisi toimia tulona, ​​eli mikro-ohjain odottaa, että tiedot tulevat kyseisen nastan läpi lukemaan sen ja suorittamaan toiminnon. Mutta oletko koskaan miettinyt, kuinka hän pystyy ymmärtämään tuota käskyä?

No, Arduinolla on Development API, joka on saatavillamme. Kolmannen osapuolen kirjastot voidaan lisätä tähän sovellusliittymään, kuten olemme nähneet monissa tämän blogin esimerkeissä. Kuten SparkFun tietyille antureille, jne. Kaiken tämän avulla toiminnot voidaan syöttää Arduino IDE: hen, ja se kääntää koodin oikein lataamaan sen mikro-ohjaimen muistiin, jotta se voi käsitellä sitä.

Jos sinulla ei ole tätä sovellusliittymää, et voinut luoda näitä ohjelmia Arduinolle niin yksinkertaisella tavalla, koska meidän pitäisi yrittää tehdä niistä kokoonpanokoodi ATMega328P-mikrokontrollerille, ts. ASM AVR-arkkitehtuurille. Ja se olisi paljon monimutkaisempaa, koska joudut käyttämään suoraan tämän ISA: n saatavilla olevia ohjeita. Jos näin on, sinun ei tarvitse vain tuntea riittävästi kyseisen ISA: n ohjelmistoa, mutta myös muita näkökohtia, kuten levyjen lukumäärä jne. Eli sinulla on oltava matala tietämys laitteistosta, jota varten työskentelet.

Mukaan esimerkiksi ASM-koodi Mitä sinun pitäisi luoda, jotta LED vilkkuu silmukassa, olisi:

<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

Vaikka API: n ansiosta tilat ovat kokonaisuudessaan, kirjoittamalla korkealla tasolla seuraava vastaava koodi (paljon lyhyempi ja intuitiivisempi):

<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 

Erot ABI: n kanssa

API vs. Linux ABI

ABI on vähemmän tunnettu termi, se on Application Binary Interface tai englanniksi Application Binary Interface. Tässä tapauksessa se on käyttöliittymä ohjelman moduulien välillä, yleensä kirjaston tai konekielen käyttöjärjestelmän välillä arkkitehtuurille, jossa olet: SPARC, AMD64, ARM, PPC, RISC-V jne.

ABI: n ansiosta määritetään tapa kutsua funktiot, binaarimuodossa joka ymmärtää koneen, jolle koot tai järjestelmän kutsuu, miten poikkeuksia käsitellään, miten tiedot välitetään jne.

Erot kehyksen kanssa

Un kehys tai kehys on enemmän joukko työkaluja käytettävissänne tietyn projektin kehittämiseksi. Famework asettaa yleensä joitain koodausstandardeja, tarjoaa hyödyllisiä komponentteja jne. Esimerkiksi JUnit on Java-kehys tai Symfony / Cake PHP: lle jne.

Erot SDK: n ja NDK: n kanssa

SDK on ohjelmistokehityspakettieli ohjelmistokehityspaketti. Se ylittää sen, mikä on kehys tai sovellusliittymä. Esimerkki voi olla Android Studio tai iOS xCode jne. Esimerkiksi ensimmäinen sisältää itse Android-sovellusliittymän lisäksi IDE: n tai integroidun kehitysympäristön ohjelmointia ja kääntämistä varten, kirjastoja, työkaluja jne.

Lisäksi, NDK (alkuperäinen kehityspaketti) se on täydennys. Esimerkiksi Android NDK antaa kehittäjien käyttää uudelleen C / C ++ -koodia tuomalla sen sovelluksiin JNI: n (Java Native Interface) kautta ...

Erot kirjaston kanssa

Glibc-kaavio Wikipedia

Lopuksi, kirjasto on kokoelma uudelleenkäytettävää lähdekoodia se helpottaa ohjelmoijien elämää. Esimerkiksi C-kirjastossa stdio.h on printf-toiminto tekstin tulostamiseksi näytölle. Jotta tämä olisi mahdollista, tarvitaan lähdekoodi, joka saa käyttöjärjestelmän tekemään tämän tehtävän. Mutta koska se on jotain hyvin toistuvaa, jota käytetään usein, yksinkertaisesti käyttämällä tätä kirjastoa, voit käyttää printf: tä kirjoittamatta koko koodia tyhjästä. Toisin sanoen, toisin sanoen, ne voidaan nähdä elementteinä.

Kirjasto ja sovellusliittymä voidaan sekoittaa helposti itse asiassa, kirjastot on kääritty API: n sisään. Esimerkki glibc...

Toivon, että tämän jälkeen sinulla on idea selkeämpi mitä API, ABI, kehys, SDK ja kirjasto ovat, sekä mahdollisuus erottaa ne toisistaan ​​lähtien.


Ole ensimmäinen kommentti

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.