Що таке API

що таке API

The Скорочення API, ви бачили їх не раз і двічі, коли читали статті про програмне забезпечення. Але не всі знають, що таке API насправді. Ось чому ми це пояснюємо в цій статті. Перше, що слід сказати, це те, що це скорочення Інтерфейсу програмування програм, тобто іспанською мовою Інтерфейс програмування програм. І багато разів це створює плутанину навіть серед тих, хто знає певне програмування.

Наприклад, Arduino має власний API програмування, пропонуючи низку функцій, які можна використовувати в IDE Arduino або інших середовищах для програмування мікроконтролера для створення проектів. Але ... не могли б ви сказати мені різниця між бібліотекою програмування та API? Чи є відмінності між фреймворком та API? Чи є API таким самим, як ABI? Є багато сумнівів, які, можливо, продовжують створювати плутанину, і які ми збираємося пояснити прямо зараз.

Не знаю, чи ти це знаєш мови низького рівня, як асемблер або ASM, залежать безпосередньо від апаратної архітектури, тоді як високорівневі абстрагуються від апаратного забезпечення, щоб полегшити завдання програміста, але залежать від операційної системи (syscalls) або від певних API тощо. Щоб все це вам не здавалося китайською, давайте подивимось, про що йдеться ...

Що таке API?

Una API - це інструмент, за допомогою якого надаються розробники так що вони мають у своєму розпорядженні ряд функцій, підпрограм і процедур або методів для ООП, які можна використовувати через існуючі бібліотеки. Серед того, що пропонує API, є функції для створення простих додатків, функції, пов’язані з ШІ, з генерацією графіки, управління апаратними ресурсами тощо.

Наприклад, я впевнений, що ви знайомі з такими 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. І це було б набагато складніше, оскільки вам довелося б безпосередньо користуватися інструкціями, доступними в цій МСА. Якщо так, вам доведеться не тільки адекватно знати репертуар цього МСА, але й інші аспекти, такі як кількість реєстрацій тощо. Тобто ви повинні мати низький рівень знань апаратного забезпечення, для якого працюєте.

За Наприклад, код 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 фреймворк або фреймворк - це скоріше набір інструментів у вашому розпорядженні для сприяння розробці даного проекту. Зазвичай фамілія встановлює деякі стандарти кодування, надає корисні компоненти тощо. Наприклад, JUnit - це фреймворк для Java, або Symfony / Cake для PHP тощо.

Відмінності між SDK та NDK

SDK - це набір для розробки програмного забезпечення, тобто набір для розробки програмного забезпечення. Це виходить за рамки того, що є фреймворком або API. Прикладом може бути Android Studio або iOS xCode тощо. Наприклад, перший, крім самого Android API, також включає IDE або інтегроване середовище розробки для програмування та компіляції, бібліотеки, інструменти тощо.

Крім того, NDK (Рідний набір для розробки) це доповнення. Наприклад, Android NDK дозволяє розробникам повторно використовувати код C / C ++, вводячи його в програми через JNI (Java Native Interface) ...

Відмінності з бібліотекою

Діаграма Glibc Вікіпедія

Нарешті, бібліотека - це колекція багаторазового вихідного коду що полегшує життя програмістам. Наприклад, усередині бібліотеки C stdio.h є функція printf для друку тексту на екрані. Щоб це стало можливим, потрібен вихідний код, який змушує операційну систему виконувати це завдання. Але оскільки це щось дуже повторюване, що використовується часто, просто викликаючи цю бібліотеку, ви можете використовувати printf, не записуючи весь код з нуля. Іншими словами, іншими словами, їх можна розглядати як збірні блоки.

Бібліотеку та API можна легко сплутати, насправді, бібліотеки загорнуті в API. Приклад glibc...

Я сподіваюся, що після цього у вас з’явиться ідея чіткіше про те, що таке API, ABI, фреймворк, SDK та бібліотека, крім того, що відтепер їх можна розрізняти.


Будьте першим, щоб коментувати

Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

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