Vad är ett API

vad är ett API

den API-akronymer har du sett dem mer än en och två gånger när du läser artiklar om programvara. Men inte alla vet vad ett API verkligen är. Det är därför vi klargör det i den här artikeln. Det första att säga är att de är förkortningen för Application Programming Interface, det vill säga på spanska Application Programming Interface. Och många gånger genererar det förvirring även bland dem som känner till programmering.

Arduino har till exempel sitt eget programmerings-API och erbjuder ett antal funktioner som du kan använda i Arduino IDE eller andra miljöer för att programmera mikrokontrollern så att du kan skapa dina projekt. Men ... kan du berätta för mig skillnaden mellan ett programmeringsbibliotek och ett API? Finns det skillnader mellan ett ramverk och ett API? Är ett API samma som ett ABI? Det finns många tvivel som kanske fortsätter att skapa förvirring och som vi kommer att klargöra just nu.

Jag vet inte om du vet det språk på låg nivå, som monteraren eller ASM, beror direkt på hårdvaruarkitekturen, medan de höga nivåerna är abstrakta från hårdvaran för att underlätta programmerarens uppgift, men beror på operativsystemet (syscalls) eller på vissa API: er etc. Så att allt detta inte låter som kinesiskt, låt oss se vad det handlar om ...

Vad är ett API?

en API är ett verktyg som utvecklare tillhandahålls så att de har till sitt förfogande en serie funktioner, underrutiner och procedurer eller metoder för OOP som kan användas genom befintliga bibliotek. Bland vad ett API erbjuder är från funktioner för att skapa enkla appar, funktioner relaterade till AI, med generering av grafik, hantering av hårdvaruresurser etc.

Till exempel är jag säker på att du är bekant med API: er som den som erbjuds av Linux via glibc-biblioteket eller grafik som t.ex. OpenGL och Vulkan, eller andra som OpenCL för heterogen databehandling, OpenXR för virtuell och augmented reality, etc. Andra operativsystem och programvara inkluderar också sina egna API: er så att andra programmerare kan skapa tillägg, plugins eller moduler för det systemet etc.

Exempel med Arduino

Om du har ett märke Arduino och du använder ofta Arduino IDE, eller någon annan utvecklingsmiljö för Arduino, kommer du att veta att när du skapar en kod använder du flera alternativ för att be din mikrokontroller att utföra en serie åtgärder. Till exempel är pinMode () en typisk funktion för att konfigurera en Arduino-stift, eller hur?

När du skriver pinMode (9, INPUT)Till exempel indikerar du att stift 9 på Arduino-kortet borde fungera som en ingång, det vill säga mikrokontrollen väntar på att informationen ska komma in genom den stiftet för att läsa den och utföra en åtgärd. Men har du någonsin undrat hur han kan förstå det kommandot?

Arduino har en Utvecklings-API som görs tillgängligt för oss. Tredjepartsbibliotek kan läggas till i detta API som vi har sett i många exempel på den här bloggen. Som SparkFun för vissa sensorer etc. Med allt detta kan funktionerna skrivas in i Arduino IDE och den kommer att översätta koden ordentligt för att ladda den i minnet på mikrokontrollern så att den kan bearbeta den.

Om du inte hade det här API: et skulle du inte kunna skapa dessa program för Arduino på ett så enkelt sätt, eftersom vi bör försöka göra dem i monteringskod för ATMega328P mikrokontroller, det vill säga i ASM för AVR-arkitektur. Och det skulle vara mycket mer komplicerat, eftersom du skulle behöva använda de instruktioner som finns tillgängliga av denna ISA. Om så är fallet skulle du inte bara behöva känna till repertoaren för den ISA utan också andra aspekter som antalet registreringar etc. Det vill säga att du bör ha låg kunskap om den hårdvara du arbetar för.

Por till exempel ASM-kod Vad du bör generera för att en lysdiod ska blinka i en slinga skulle vara:

<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

Medan tack vare API är anläggningarna totalt, skriva på hög nivå följande motsvarande kod (mycket kortare och mer 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 

Skillnader med en ABI

API vs Linux ABI

ABI är en mindre känd term, det är en Application Binary Interface, eller på engelska Application Binary Interface. I det här fallet är det ett gränssnitt mellan moduler i ett program, vanligtvis mellan ett bibliotek eller ett maskinspråk operativsystem för den arkitektur du är i: SPARC, AMD64, ARM, PPC, RISC-V, etc.

Tack vare ABI bestäms sättet att ringa funktionerna, binärt format som kan förstå maskinen du kompilerar för eller systemanropen, hur undantag hanteras, hur data skickas etc.

Skillnader med en ram

Un ram eller ram är mer en uppsättning verktyg till ditt förfogande för att hjälpa till med utvecklingen av ett visst projekt. Familjen sätter vanligtvis vissa kodningsstandarder, tillhandahåller användbara komponenter etc. Till exempel är JUnit ett ramverk för Java, eller Symfony / Cake för PHP, etc.

Skillnader med SDK och NDK

SDK är en mjukvaruutvecklingssats, det vill säga en mjukvaruutvecklingssats. Det går utöver vad som är ett ramverk eller ett API. Ett exempel kan vara Android Studio eller iOS xCode, etc. Till exempel innehåller den första, förutom själva Android API, också en IDE eller integrerad utvecklingsmiljö för programmering och kompilering, bibliotek, verktyg etc.

Vidare, NDK (Native Development Kit) det är ett komplement. Till exempel tillåter Android NDK utvecklare att återanvända C / C ++ - kod genom att introducera den till applikationer via JNI (Java Native Interface) ...

Skillnader med ett bibliotek

Glibc-diagram Wikipedia

Slutligen, biblioteket är en samling av återanvändbar källkod som gör livet enklare för programmerare. Inom C-biblioteket stdio.h finns det till exempel en printf-funktion för att skriva ut text på skärmen. För att detta ska vara möjligt behövs en källkod som gör att operativsystemet utför denna uppgift. Men eftersom det är något mycket återkommande som används ofta, helt enkelt genom att åberopa det biblioteket kan du använda printf utan att skriva all koden från grunden. Med andra ord, med andra ord, de kan ses som prefabricerade block.

Ett bibliotek och ett API kan enkelt förväxlas, faktiskt bibliotek är insvept i ett API. Exempel glibc.

Jag hoppas att du efter detta har en idé tydligare om vad ett API, ABI, ett ramverk, ett SDK och ett bibliotek är, förutom att kunna skilja mellan dem från och med nu.


Bli först att kommentera

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.