Co je API

co je API

the Zkratky API, které jste při čtení článků o softwaru viděli více než jednou a dvakrát. Ale ne každý ví, co API ve skutečnosti je. Proto to objasňujeme v tomto článku. První věc, kterou je třeba říci, je, že se jedná o zkratku pro Application Programming Interface, tedy ve španělštině, Application Programming Interface. A mnohokrát to vyvolává zmatek i mezi těmi, kteří znají nějaké programování.

Například Arduino má své vlastní programovací API, které nabízí řadu funkcí, které můžete použít v Arduino IDE nebo jiných prostředích k programování mikrokontroléru tak, aby vám umožnil vytvářet vaše projekty. Ale ... mohl byste mi to říct rozdíl mezi programovací knihovnou a API? Existují rozdíly mezi frameworkem a API? Je API stejné jako ABI? Existuje mnoho pochybností, které možná nadále vyvolávají zmatek a které nyní objasníme.

Nevím, jestli to víš jazyky nižší úrovně, stejně jako assembler nebo ASM, závisí přímo na hardwarové architektuře, zatímco ty na vysoké úrovni abstrahují od hardwaru, aby usnadnily úkol programátora, ale závisí na operačním systému (syscalls) nebo na určitých API atd. Aby to všechno neznělo jako čínština, podívejme se, o co jde ...

Co je API?

A API je nástroj, pomocí kterého jsou vývojářům poskytovány tak, aby měli k dispozici řadu funkcí, podprogramů a postupů nebo metod pro OOP, které lze použít prostřednictvím stávajících knihoven. Mezi to, co API nabízí, patří funkce vytvářející jednoduché aplikace, funkce související s umělou inteligencí, generování grafiky, správa hardwarových prostředků atd.

Jsem si jistý, že například znáte API, jako je ta, kterou nabízí Linux prostřednictvím knihovny glibc, nebo grafiku, jako je OpenGL a Vulkan, nebo také další, jako je OpenCL pro heterogenní výpočty, OpenXR pro virtuální a rozšířenou realitu atd. Ostatní operační systémy a software také obsahují vlastní API, takže ostatní programátoři mohou pro tento systém vytvářet doplňky, doplňky nebo moduly atd.

Příklad s Arduino

Pokud máte odznak Arduino a často používáte Arduino IDE, nebo jakékoli jiné vývojové prostředí pro Arduino, budete vědět, že když vytváříte kód, využijete více možností, abyste svému mikrokontroléru nařídili provést řadu akcí. Například pinMode () je typická funkce pro konfiguraci pinů Arduino, že?

Když píšete pinMode (9, VSTUP)Například naznačujete, že pin 9 desky Arduino by měl fungovat jako vstup, to znamená, že mikrokontrolér bude čekat, až informace vstoupí skrz tento pin, aby jej přečetl a provedl akci. Ale přemýšleli jste někdy o tom, jak je schopen pochopit tento příkaz?

Arduino má Vývojové API, které je nám k dispozici. K tomuto API lze přidat knihovny třetích stran, jak jsme viděli v mnoha příkladech na tomto blogu. Stejně jako SparkFun pro určité senzory atd. Díky tomu všemu mohou být funkce zadány do Arduino IDE a kód bude správně přeložit a načíst jej do paměti mikrokontroléru, aby jej mohl zpracovat.

Pokud jste toto API neměli, nemohli byste tyto programy pro Arduino vytvářet tak jednoduchým způsobem, protože bychom se měli pokusit je vytvořit v montážním kódu pro mikrokontrolér ATMega328P, tedy v ASM pro architekturu AVR. A to by bylo mnohem komplikovanější, protože byste museli přímo použít pokyny dostupné tímto ISA. Pokud ano, museli byste nejen adekvátně znát repertoár daného ISA, ale také další aspekty, jako je počet registrací atd. To znamená, že byste měli mít nízkou úroveň znalostí o hardwaru, pro který pracujete.

Por například kód ASM To, co byste měli vygenerovat, aby LED dioda blikala ve smyčce, by bylo:

<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

zatímco díky API je zařízení úplné, psaní následujícího ekvivalentního kódu na vyšší úrovni (mnohem kratší a intuitivnější):

<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 

Rozdíly s ABI

API vs Linux ABI

ABI je méně známý pojem, je to Binární rozhraní aplikace nebo v angličtině Binární rozhraní aplikace. V tomto případě se jedná o rozhraní mezi moduly programu, obvykle mezi knihovnou nebo operačním systémem strojového jazyka pro architekturu, ve které se nacházíte: SPARC, AMD64, ARM, PPC, RISC-V atd.

Díky ABI je určen způsob volání funkcí, binární formát který dokáže porozumět stroji, pro který kompilujete, nebo systémovým voláním, způsobu zpracování výjimek, způsobu předávání dat atd.

Rozdíly s rámcem

Un framework nebo framework je více souborem nástrojů máte k dispozici na pomoc při vývoji daného projektu. Famework obvykle nastavuje některé standardy kódování, poskytuje užitečné komponenty atd. Například JUnit je framework pro Javu, nebo Symfony / Cake pro PHP atd.

Rozdíly s SDK a NDK

SDK je sada pro vývoj softwaru, tj. souprava pro vývoj softwaru. To jde nad rámec toho, co je rámec nebo API. Příkladem může být Android Studio nebo iOS xCode atd. Například první kromě samotného rozhraní Android API zahrnuje také IDE nebo integrované vývojové prostředí pro programování a kompilaci, knihovny, nástroje atd.

Kromě toho, NDK (Native Development Kit) je to doplněk. Například Android NDK umožňuje vývojářům znovu použít kód C / C ++ zavedením do aplikací prostřednictvím JNI (Java Native Interface) ...

Rozdíly s knihovnou

Glibc diagram Wikipedia

Konečně, knihovna je souborem opakovaně použitelného zdrojového kódu což programátorům usnadňuje život. Například uvnitř knihovny C stdio.h je funkce printf pro tisk textu na obrazovku. Aby to bylo možné, je zapotřebí zdrojový kód, díky kterému operační systém provede tento úkol. Ale protože se jedná o něco velmi opakujícího se, co se často používá, jednoduše vyvoláním této knihovny můžete využít printf bez nutnosti psát celý kód od začátku. Jinými slovy, jinými slovy, mohou být považovány za prefabrikované bloky.

Knihovnu a API lze snadno zaměnit, knihovny jsou zabaleny uvnitř API. Příklad glibc...

Doufám, že poté budete mít nápad jasnější o tom, co jsou API, ABI, framework, SDK a knihovna, kromě toho, že je od nynějška bude možné rozlišovat.


Buďte první komentář

Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.