Hvad er en API

hvad er en API

den API-akronymer, du vil have set dem mere end en og to gange, når du læser artikler om software. Men ikke alle ved, hvad en API virkelig er. Derfor præciserer vi det i denne artikel. Den første ting at sige er, at de er forkortelser for Application Programming Interface, det vil sige på spansk Application Programming Interface. Og mange gange skaber det forvirring selv blandt dem, der kender noget programmering.

For eksempel har Arduino sin egen programmerings-API, der tilbyder en række funktioner, som du kan bruge i Arduino IDE eller andre miljøer til at programmere mikrocontrolleren, så du kan oprette dine projekter. Men ... kan du fortælle mig det forskellen mellem et programmeringsbibliotek og et API? Er der forskelle mellem en ramme og en API? Er en API det samme som en ABI? Der er mange tvivl, der måske fortsætter med at skabe forvirring, og som vi vil afklare lige nu.

Jeg ved ikke, om du ved det sprog på lavt niveau, ligesom samleren eller ASM, afhænger direkte af hardwarearkitekturen, mens de høje niveauer er abstrakte fra hardwaren for at lette programmørens opgave, men afhænger af operativsystemet (syscalls) eller af visse API'er osv. Så alt dette ikke lyder som kinesisk for dig, lad os se hvad det handler om ...

Hvad er en API?

en API er et værktøj, som udviklere leveres med så de har en række funktioner, underrutiner og procedurer eller metoder til OOP til rådighed, der kan bruges gennem de eksisterende biblioteker. Blandt hvad en API tilbyder er fra funktioner til oprettelse af enkle apps, funktioner relateret til AI, med generering af grafik, styring af hardware ressourcer osv.

For eksempel er du sikker på, at velkendte API'er som den, der tilbydes af Linux via glibc-biblioteket, eller grafik som f.eks. OpenGL og Vulkan, eller også andre som OpenCL til heterogen computing, OpenXR til virtuel og augmented reality osv. Andre operativsystemer og software inkluderer også deres egne API'er, så andre programmører kan oprette addons, plugins eller moduler til det system osv.

Eksempel med Arduino

Hvis du har et badge Arduino og du bruger ofte Arduino IDE, eller ethvert andet udviklingsmiljø for Arduino, ved du, at når du opretter en kode, bruger du flere muligheder for at beordre din mikrocontroller til at udføre en række handlinger. For eksempel er pinMode () en typisk funktion til at konfigurere en Arduino-pin, ikke?

Når du skriver pinMode (9, INPUT)For eksempel angiver du, at pin 9 på Arduino-kortet skal fungere som et input, det vil sige at mikrokontrolleren venter på, at informationen skal komme ind gennem den pin for at læse den og udføre en handling. Men har du nogensinde spekuleret på, hvordan han er i stand til at forstå denne kommando?

Nå, Arduino har en Udviklings-API, der stilles til rådighed for os. Tredjepartsbiblioteker kan føjes til denne API, som vi har set i mange eksempler på denne blog. Ligesom SparkFun for visse sensorer osv. Med alt dette kan funktionerne indtastes i Arduino IDE, og det oversætter koden korrekt for at indlæse den i hukommelsen til mikrokontrolleren, så den kan behandle den.

Hvis du ikke havde denne API, kunne du ikke oprette disse programmer til Arduino på en så enkel måde, da vi skulle prøve at lave dem i samlingskode til ATMega328P mikrokontroller, det vil sige ASM til AVR-arkitektur. Og det ville være meget mere kompliceret, da du skulle bruge de instruktioner, der er tilgængelige af denne ISA, direkte. Hvis det er tilfældet, skal du ikke kun kende repertoiret for den ISA, men også andre aspekter såsom antallet af tilmeldinger osv. Det vil sige, du skal have kendskab til lavt niveau af den hardware, du arbejder for.

Ved f.eks. ASM-kode Hvad du skal generere for at en LED kan blinke i en løkke, er:

<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

Mens takket være API'et er faciliteterne i alt, at skrive på et højt niveau følgende ækvivalent kode (meget kortere og mere intuitiv):

<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 

Forskelle med en ABI

API vs Linux ABI

ABI er et mindre kendt udtryk, det er et Application Binary Interface eller på engelsk Application Binary Interface. I dette tilfælde er det en grænseflade mellem moduler i et program, generelt mellem et bibliotek eller et maskinsprog operativsystem til den arkitektur, du er i: SPARC, AMD64, ARM, PPC, RISC-V osv.

Takket være ABI bestemmes måden at kalde funktionerne på, binært format som kan forstå den maskine, du kompilerer til eller systemopkaldene, hvordan undtagelser håndteres, hvordan data overføres osv.

Forskelle med en ramme

Un ramme eller ramme er mere et sæt værktøjer til din rådighed for at hjælpe med at udvikle et givet projekt. Famework sætter normalt nogle kodningsstandarder, giver nyttige komponenter osv. For eksempel er JUnit en ramme for Java eller Symfony / Cake for PHP osv.

Forskelle med en SDK og NDK

SDK er et softwareudviklingssæt, det vil sige et softwareudviklingssæt. Det går ud over, hvad der er en ramme eller en API. Et eksempel kan være Android Studio eller iOS xCode osv. For eksempel inkluderer den første ud over selve Android API også et IDE eller integreret udviklingsmiljø til programmering og kompilering, biblioteker, værktøjer osv.

Endvidere NDK (Native Development Kit) det er et supplement. For eksempel giver Android NDK udviklere mulighed for at genbruge C / C ++ - kode ved at introducere den til applikationer via JNI (Java Native Interface) ...

Forskelle med et bibliotek

Glibc-diagram Wikipedia

Endelig biblioteket er en samling af genanvendelig kildekode det gør livet lettere for programmører. For eksempel er der inde i C-biblioteket stdio.h en printf-funktion til udskrivning af tekst på skærmen. For at dette er muligt, er der brug for en kildekode, der får operativsystemet til at udføre denne opgave. Men da det er noget meget tilbagevendende, der bruges ofte, kan du ganske enkelt ved at påkalde dette bibliotek bruge printf uden at skrive al koden fra bunden. Med andre ord, med andre ord, kan de ses som præfabrikerede blokke.

Et bibliotek og en API kan let forveksles, faktisk biblioteker er pakket ind i en API. Eksempel glibc...

Jeg håber, at du efter dette har en idé klarere om, hvad en API, ABI, en ramme, en SDK og et bibliotek er, ud over at være i stand til at skelne mellem dem fra nu af.


Vær den første til at kommentere

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.