Какво е API

какво е API

на API съкращения ще сте ги виждали повече от веднъж и два пъти, когато четете статии за софтуер. Но не всеки знае какво всъщност е API. Ето защо го изясняваме в тази статия. Първото нещо, което трябва да се каже, е, че те са съкращенията на Application Programming Interface, тоест на испански - Application Programming Interface. И много пъти създава объркване дори сред онези, които познават някои програми.

Например, Arduino има свой собствен API за програмиране, предлагащ редица функции, които можете да използвате в Arduino IDE или други среди, за да програмирате микроконтролера, за да ви позволи да създавате вашите проекти. Но ... бихте ли ми казали разликата между библиотека за програмиране и API? Има ли разлики между рамката и API? API същото ли е като ABI? Съществуват много съмнения, които може би продължават да създават объркване и че сега ще изясним.

Не знам дали знаете това езици на ниско ниво, като асемблера или ASM, зависят пряко от хардуерната архитектура, докато тези на високо ниво се абстрахират от хардуера, за да улеснят задачата на програмиста, но зависят от операционната система (syscalls) или от определени API и т.н. За да не звучи всичко това като китайски, нека видим за какво става въпрос ...

Какво е API?

а API е инструмент, с който се осигуряват разработчиците така че те да имат на разположение поредица от функции, подпрограми и процедури или методи за ООП, които могат да се използват чрез съществуващите библиотеки. Сред това, което API предлага, са функции за създаване на прости приложения, функции, свързани с AI, с генериране на графики, управление на хардуерни ресурси и т.н.

Например, сигурен съм, че сте запознати с API, като този, предлаган от Linux чрез библиотеката glibc, или графики като OpenGL и Vulkan, или също други като OpenCL за хетерогенни изчисления, OpenXR за виртуална и добавена реалност и др. Други операционни системи и софтуер също включват свои собствени API, така че други програмисти да могат да създават добавки, плъгини или модули за тази система и т.н.

Пример с Arduino

Ако имате значка Arduino и често използвате Arduino IDE, или всяка друга среда за разработка на Arduino, ще знаете, че когато създавате код, използвате множество опции, за да наредите на вашия микроконтролер да извърши поредица от действия. Например pinMode () е типична функция за конфигуриране на Arduino щифт, нали?

Когато пишете pinMode (9, INPUT)Например посочвате, че щифт 9 на платката Arduino трябва да работи като вход, т.е.микроконтролерът ще чака информацията да влезе през този щифт, за да я прочете и да извърши действие. Но замисляли ли сте се някога как той е в състояние да разбере тази заповед?

Е, Arduino има API за разработка, който ни е предоставен. Библиотеки на трети страни могат да се добавят към този API, както видяхме в много примери в този блог. Като SparkFun за някои сензори и т.н. С всичко това функциите могат да бъдат въведени в IDE на Arduino и той ще преведе правилно кода, за да го зареди в паметта на микроконтролера, за да може да го обработи.

Ако не сте разполагали с този API, не бихте могли да създадете тези програми за Arduino по толкова прост начин, тъй като трябва да се опитаме да ги направим в сглобен код за микроконтролера ATMega328P, т.е. ASM за AVR архитектура. И това би било много по-сложно, тъй като ще трябва да използвате директно инструкциите, налични в този ISA. Ако е така, не само ще трябва да познавате адекватно репертоара на този ISA, но и други аспекти като броя на регистрациите и т.н. Тоест трябва да имате ниски познания за хардуера, за който работите.

Por например ASM код Това, което трябва да генерирате, за да мига светодиод в цикъл, би било:

<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

докато благодарение на API съоръженията са пълни, писане на високо ниво на следния еквивалентен код (много по-кратък и по-интуитивен):

<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 

Разлики с ABI

API срещу Linux ABI

ABI е по-малко известен термин, това е a Двоичен интерфейс на приложението или на английски език двоичен интерфейс на приложението. В този случай това е интерфейс между модули на програма, обикновено между библиотека или операционна система на машинен език за архитектурата, в която се намирате: SPARC, AMD64, ARM, PPC, RISC-V и др.

Благодарение на ABI се определя начинът за извикване на функциите, двоичен формат които могат да разберат машината, за която компилирате, или системните обаждания, как се обработват изключения, как се предават данни и т.н.

Разлики с рамка

Un framework или framework е по-скоро набор от инструменти на ваше разположение, за да подпомогнете развитието на даден проект. Обикновено фамилията задава някои стандарти за кодиране, предоставя полезни компоненти и т.н. Например JUnit е рамка за Java или Symfony / Cake за PHP и т.н.

Разлики с SDK и NDK

SDK е комплект за разработка на софтуер, т.е. комплект за разработка на софтуер. Той надхвърля това, което е рамка или API. Пример може да бъде Android Studio или iOS xCode и т.н. Например първият, освен самия API на Android, включва също IDE или интегрирана среда за разработка за програмиране и компилиране, библиотеки, инструменти и т.н.

Освен това, NDK (натив комплект за разработка) то е допълнение. Например, Android NDK позволява на разработчиците да използват повторно C / C ++ кода, като го въвеждат в приложения чрез JNI (Java Native Interface) ...

Разлики с библиотеката

Диаграма на Glibc Уикипедия

На последно място, библиотеката е колекция от изходен код за многократна употреба което улеснява живота на програмистите. Например, вътре в библиотеката C stdio.h има функция printf за отпечатване на текст на екрана. За да е възможно това, е необходим изходен код, който кара операционната система да изпълни тази задача. Но тъй като това е нещо много повтарящо се, което се използва често, просто като извикате тази библиотека, можете да използвате printf, без да пишете целия код от нулата. С други думи, с други думи, те могат да се разглеждат като сглобяеми блокове.

Библиотека и API могат лесно да бъдат объркани, всъщност библиотеките са обвити в API. Пример НЬс...

Надявам се, че след това имате идея по-ясно за това какво представляват API, ABI, рамка, SDK и библиотека, в допълнение към възможността да се прави разлика между тях отсега нататък.


Бъдете първите, които коментират

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.