Co to jest API

co to jest API

Te Akronimy API, które zobaczysz więcej niż raz i dwa razy, czytając artykuły o oprogramowaniu. Ale nie wszyscy wiedzą, czym naprawdę jest API. Dlatego wyjaśniamy to w tym artykule. Pierwszą rzeczą do powiedzenia jest to, że są to skróty interfejsu programowania aplikacji, czyli w języku hiszpańskim interfejsu programowania aplikacji. I niejednokrotnie powoduje to zamieszanie nawet wśród tych, którzy znają się na programowaniu.

Na przykład Arduino ma własne programistyczne API, oferujące szereg funkcji, których możesz użyć w Arduino IDE lub innych środowiskach do zaprogramowania mikrokontrolera, aby umożliwić tworzenie projektów. Ale ... czy mógłbyś mi powiedzieć różnica między biblioteką programistyczną a interfejsem API? Czy istnieją różnice między strukturą a interfejsem API? Czy interfejs API to to samo, co ABI? Istnieje wiele wątpliwości, które być może nadal będą generować zamieszanie i które zamierzamy teraz wyjaśnić.

Nie wiem, czy o tym wiesz języki niskiego poziomu, podobnie jak asembler lub ASM, zależą bezpośrednio od architektury sprzętowej, podczas gdy te wysokopoziomowe są abstrahowane od sprzętu, aby ułatwić zadanie programisty, ale zależą od systemu operacyjnego (wywołania systemowe) lub niektórych interfejsów API itp. Aby to wszystko nie brzmiało jak chińskie dla ciebie, zobaczmy, o co chodzi ...

Co to jest API?

A API to narzędzie, z którego korzystają programiści dzięki czemu mają do swojej dyspozycji szereg funkcji, podprogramów i procedur lub metod OOP, które mogą być używane w istniejących bibliotekach. Wśród tego, co oferuje API, są funkcje do tworzenia prostych aplikacji, funkcje związane ze sztuczną inteligencją, generowanie grafiki, zarządzanie zasobami sprzętowymi itp.

Na przykład jestem pewien, że znasz interfejsy API, takie jak ten oferowany przez Linuksa za pośrednictwem biblioteki glibc, lub grafiki, takie jak OpenGL i Vulkan, a także inne, takie jak OpenCL do obliczeń heterogenicznych, OpenXR dla rzeczywistości wirtualnej i rozszerzonej itp. Inne systemy operacyjne i oprogramowanie zawierają również własne interfejsy API, dzięki czemu inni programiści mogą tworzyć dodatki, wtyczki lub moduły dla tego systemu itp.

Przykład z Arduino

Jeśli masz odznakę Arduino i często korzystasz z Arduino IDE, lub w jakimkolwiek innym środowisku programistycznym dla Arduino, będziesz wiedział, że podczas tworzenia kodu korzystasz z wielu opcji, aby zlecić mikrokontrolerowi wykonanie szeregu działań. Na przykład pinMode () to typowa funkcja do konfiguracji pinów Arduino, prawda?

Kiedy piszesz pinMode (9, WEJŚCIE)Na przykład wskazujesz, że pin 9 płyty Arduino powinien działać jako wejście, to znaczy mikrokontroler będzie czekał na wprowadzenie informacji przez ten pin, aby je odczytać i wykonać akcję. Ale czy kiedykolwiek zastanawiałeś się, jak on jest w stanie zrozumieć to polecenie?

Cóż, Arduino ma API programistyczne, które zostało nam udostępnione. Biblioteki innych firm można dodawać do tego interfejsu API, jak widzieliśmy w wielu przykładach na tym blogu. Podobnie jak SparkFun dla niektórych czujników itp. Dzięki temu funkcje można wprowadzić do Arduino IDE i odpowiednio przetłumaczy kod, aby załadować go do pamięci mikrokontrolera, aby mógł go przetworzyć.

Gdybyś nie miał tego API, nie mógłbyś w tak prosty sposób stworzyć tych programów dla Arduino, skoro powinniśmy spróbować zrobić je w kodzie asemblera dla mikrokontrolera ATMega328P, czyli ASM dla architektury AVR. A to byłoby znacznie bardziej skomplikowane, ponieważ musiałbyś bezpośrednio skorzystać z instrukcji dostępnych w tym ISA. Jeśli tak, musiałbyś nie tylko odpowiednio znać repertuar tego ISA, ale także inne aspekty, takie jak liczba rejestracji itp. Oznacza to, że powinieneś mieć niskopoziomową wiedzę na temat sprzętu, na którym pracujesz.

przez na przykład kod ASM To, co powinieneś wygenerować, aby dioda LED migała w pętli, to:

<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

Podczas dzięki API obiekty są totalne, napisanie na wysokim poziomie następującego równoważnego kodu (znacznie krótszego i bardziej intuicyjnego):

<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 

Różnice z ABI

API a Linux ABI

ABI to mniej znany termin, to jest Application Binary Interface lub w języku angielskim Application Binary Interface. W tym przypadku jest to interfejs pomiędzy modułami programu, generalnie pomiędzy biblioteką lub systemem operacyjnym języka maszynowego dla architektury, w której jesteś: SPARC, AMD64, ARM, PPC, RISC-V itp.

Dzięki ABI ustalany jest sposób wywoływania funkcji, format binarny który może zrozumieć maszynę, dla której kompilujesz, lub wywołania systemowe, jak obsługiwane są wyjątki, jak przekazywane są dane itp.

Różnice w stosunku do frameworka

Un Framework lub framework to raczej zestaw narzędzi do Twojej dyspozycji, aby pomóc w opracowaniu danego projektu. Ta rodzina zwykle określa pewne standardy kodowania, dostarcza użytecznych komponentów itp. Na przykład JUnit to framework dla Java lub Symfony / Cake dla PHP itp.

Różnice z SDK i NDK

SDK to zestaw do tworzenia oprogramowaniaczyli zestaw do tworzenia oprogramowania. Wykracza poza ramy lub API. Przykładem może być Android Studio lub iOS xCode itp. Na przykład pierwsza z nich, oprócz samego interfejsu API systemu Android, zawiera również IDE lub zintegrowane środowisko programistyczne do programowania i kompilacji, biblioteki, narzędzia itp.

Ponadto NDK (natywny zestaw programistyczny) jest uzupełnieniem. Na przykład Android NDK umożliwia programistom ponowne wykorzystanie kodu C / C ++ poprzez wprowadzenie go do aplikacji za pośrednictwem JNI (Java Native Interface) ...

Różnice z biblioteką

Diagram Glibc Wikipedia

Wreszcie, Biblioteka jest zbiorem kodu źródłowego wielokrotnego użytku co ułatwia życie programistom. Na przykład w stdio.h biblioteki C znajduje się funkcja printf, która drukuje tekst na ekranie. Aby było to możliwe, potrzebny jest kod źródłowy, który sprawi, że system operacyjny wykona to zadanie. Ale ponieważ jest to coś bardzo powtarzającego się, co jest często używane, po prostu wywołując tę ​​bibliotekę, możesz użyć printf bez pisania całego kodu od zera. Innymi słowy, można je postrzegać jako prefabrykowane bloki.

Bibliotekę i API można łatwo pomylić. Biblioteki są opakowane wewnątrz interfejsu API. Przykład glibc...

Mam nadzieję, że po tym masz pomysł jaśniej o tym, czym są API, ABI, framework, SDK i biblioteka, oprócz możliwości rozróżnienia między nimi od teraz.


Bądź pierwszym który skomentuje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.