Mi az API

mi az API

az Az API rövidítések többször és kétszer láthatták őket, amikor a szoftverekkel kapcsolatos cikkeket olvasott. De nem mindenki tudja, mi is az API valójában. Ezért tisztázzuk ebben a cikkben. Először azt kell mondani, hogy ezek az Application Programming Interface, vagyis spanyolul az Application Programming Interface rövidítése. És sokszor még azokban is zavart kelt, akik tudnak valamilyen programozást.

Például az Arduino saját programozási API-val rendelkezik, amely számos olyan funkciót kínál, amelyeket az Arduino IDE vagy más környezetekben használhat a mikrovezérlő programozásához, hogy lehetővé tegye a projektek létrehozását. De ... meg tudnád mondani a különbség a programozási könyvtár és az API között? Vannak különbségek a keretrendszer és az API között? Az API megegyezik-e az ABI-vel? Sok kétely merül fel, amely talán továbbra is zavart kelt, és amelyet most tisztázni fogunk.

Nem tudom, hogy tudod-e ezt alacsony szintű nyelvek, mint az assembler vagy az ASM, közvetlenül függenek a hardver architektúrától, míg a magas szintűek elvonatkoznak a hardvertől, hogy megkönnyítsék a programozó feladatát, de az operációs rendszertől (syscalls) vagy bizonyos API-któl stb. Hogy mindez ne hangozzon kínaiul, nézzük meg, miről van szó ...

Mi az API?

egy Az API olyan eszköz, amellyel a fejlesztők elérhetők hogy az OOP számára egy sor funkció, szubrutin és eljárás vagy módszer álljon rendelkezésre, amelyek a meglévő könyvtárakon keresztül használhatók. Az API többek között az egyszerű alkalmazások létrehozásához szükséges funkcióktól, az AI-hez kapcsolódó funkcióktól, grafikák létrehozásával, hardver erőforrások kezelésével stb.

Biztos vagyok benne, hogy ismeri az API-kat, például a Linux által a glibc könyvtáron keresztül kínáltat, vagy a grafikákat, mint pl. OpenGL és Vulkan, vagy mások is, mint az OpenCL heterogén számításhoz, OpenXR a virtuális és a kibővített valósághoz stb. Más operációs rendszerek és szoftverek saját API-kat is tartalmaznak, hogy más programozók kiegészítőket, bővítményeket vagy modulokat hozzanak létre ehhez a rendszerhez stb.

Példa Arduinóval

Ha van jelvényed Arduino és Ön gyakran használja az Arduino IDE-t, vagy bármely más fejlesztői környezet az Arduino számára, tudni fogja, hogy egy kód létrehozásakor több lehetőséget is felhasznál, hogy a mikrovezérlőt egy sor művelet végrehajtására utasítsa. Például a pinMode () tipikus függvény egy Arduino pin konfigurálásához, nem igaz?

Amikor írsz pinMode (9, INPUT)Például azt jelzi, hogy az Arduino kártya 9. érintkezőjének bemenetként kell működnie, vagyis a mikrovezérlő arra vár, hogy az információ bejusson a csapon keresztül, hogy elolvassa és műveletet hajtson végre. De vajon elgondolkodott már azon, hogyan képes megérteni ezt a parancsot?

Nos, Arduino-nak van egy Fejlesztési API, amely elérhetővé válik számunkra. Harmadik fél könyvtárai hozzáadhatók ehhez az API-hoz, amint ezt a blog számos példája láthatta. Mint a SparkFun bizonyos érzékelőkhöz stb. Mindezzel a funkciók bevihetők az Arduino IDE-be, és megfelelően lefordítja a kódot, hogy betöltse a mikrovezérlő memóriájába, hogy az feldolgozni tudja.

Ha nem rendelkezne ezzel az API-val, akkor nem tudná ilyen egyszerű módon létrehozni ezeket a programokat az Arduino számára, mivel meg kell próbálnunk azokat az ATMega328P mikrovezérlő összeállítási kódjában elkészíteni, azaz ASM az AVR architektúrához. És ez sokkal bonyolultabb lenne, mivel közvetlenül az ISA rendelkezésére álló utasításokat kell használnia. Ha igen, akkor nemcsak az ISA repertoárját kell megfelelően ismernie, hanem más szempontokat is, például a regisztrációk számát stb. Vagyis alacsony szintű ismeretekkel kell rendelkeznie a használt hardverről.

Által például ASM kód Amit elő kell állítania ahhoz, hogy a LED egy hurokban villogjon:

<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

míg az API-nak köszönhetően a létesítmények teljesek, magas szinten írja a következő egyenértékű kódot (sokkal rövidebb és intuitívabb):

<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 

Különbségek az ABI-vel

API vs Linux ABI

Az ABI kevésbé ismert kifejezés, ez a Alkalmazás bináris felület, vagy angolul Alkalmazás bináris felület. Ebben az esetben ez egy interfész a program moduljai között, általában egy könyvtár vagy egy gépnyelvi operációs rendszer között az architektúrához, amelyben tartózkodik: SPARC, AMD64, ARM, PPC, RISC-V stb.

Az ABI-nek köszönhetően meghatározzák a függvények meghívásának módját, bináris formátum amely megértheti a gépet, amelyhez fordítja, vagy a rendszer hívja, hogyan kezelik a kivételeket, hogyan továbbítják az adatokat stb.

Különbségek egy kerettel

Un keretrendszer vagy keretrendszer inkább eszközkészlet rendelkezésére áll, hogy segítsen egy adott projekt fejlesztésében. A hírnév általában meghatároz bizonyos kódolási szabványokat, hasznos összetevőket stb. Például a JUnit egy keretrendszer a Java számára, vagy a Symfony / Cake a PHP számára, stb.

Különbségek az SDK-val és az NDK-val

Az SDK egy szoftverfejlesztő készlet, azaz szoftverfejlesztő készlet. Túllépi azt, ami egy keretrendszer vagy egy API. Ilyen lehet például az Android Studio vagy az iOS xCode stb. Például az első az Android API mellett magában foglal egy IDE-t vagy integrált fejlesztői környezetet a programozáshoz és fordításhoz, könyvtárakat, eszközöket stb.

Továbbá, NDK (natív fejlesztői készlet) ez egy kiegészítő. Például az Android NDK lehetővé teszi a fejlesztők számára a C / C ++ kód újrafelhasználását azáltal, hogy JNI-n (Java Native Interface) keresztül bevezetik az alkalmazásokba ...

Különbségek egy könyvtárral

Glibc-diagram Wikipédia

Végül, a a könyvtár újrafelhasználható forráskódok gyűjteménye ez megkönnyíti a programozók életét. Például a C könyvtár stdio.h könyvtárában található egy printf funkció a szöveg nyomtatásához a képernyőn. Ehhez olyan forráskódra van szükség, amely az operációs rendszert erre a feladatra készteti. De mivel ez egy nagyon visszatérő dolog, amelyet gyakran használnak, egyszerűen a könyvtár meghívásával egyszerűen használhatja a printf-et anélkül, hogy az összes kódot nulláról írná. Más szavakkal, más szavakkal, előregyártott blokkoknak tekinthetők.

A könyvtár és az API könnyen összekeverhető, valójában a könyvtárak egy API-ba vannak csomagolva. Példa glibc...

Remélem, hogy ezek után van egy ötlete világosabb az API, az ABI, a keretrendszer, az SDK és a könyvtár, amellett, hogy ezentúl képesek megkülönböztetni őket.


Legyen Ön az első hozzászóló

Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.