Что такое API

что такое API

Лас- Сокращения API, которые вы видели более одного и двух раз, когда читали статьи о программном обеспечении.. Но не все знают, что такое API на самом деле. Вот почему мы разъясняем это в этой статье. Прежде всего следует сказать, что это аббревиатуры Application Programming Interface, то есть на испанском языке Application Programming Interface. И часто это вызывает замешательство даже у тех, кто хоть немного разбирается в программировании.

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

Я не знаю, знаете ли вы это языки низкого уровнякак ассемблер или ASM, напрямую зависят от аппаратной архитектуры, в то время как высокоуровневые абстрагируются от аппаратного обеспечения, чтобы облегчить задачу программиста, но зависят от операционной системы (системные вызовы) или от определенных API-интерфейсов и т. д. Чтобы вам все это не звучало по-китайски, давайте разберемся, о чем идет речь ...

Что такое API?

Una API - это инструмент, который предоставляется разработчикам так что они имеют в своем распоряжении ряд функций, подпрограмм и процедур или методов для ООП, которые можно использовать через существующие библиотеки. Среди того, что предлагает API, есть функции для создания простых приложений, функции, связанные с ИИ, с генерацией графики, управлением аппаратными ресурсами и т. Д.

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

Пример с Arduino

Если у вас есть значок Arduino, и вы часто используете Arduino IDE, или любой другой среде разработки для Arduino, вы будете знать, что при создании кода вы используете несколько параметров, чтобы приказать микроконтроллеру выполнить ряд действий. Например, pinMode () - это типичная функция для настройки вывода Arduino, верно?

Когда ты пишешь pinMode (9, ВХОД)Например, вы указываете, что вывод 9 платы Arduino должен работать как вход, то есть микроконтроллер будет ждать ввода информации через этот вывод, чтобы прочитать ее и выполнить действие. Но задумывались ли вы, как он понимает эту команду?

Что ж, у Arduino есть API разработки, доступный нам. К этому API можно добавить сторонние библиотеки, как мы видели во многих примерах в этом блоге. Как SparkFun для определенных датчиков и т. Д. При всем этом функции могут быть введены в IDE Arduino, и он будет правильно переводить код, чтобы загрузить его в память микроконтроллера, чтобы он мог его обработать.

Если бы у вас не было этого API, вы бы не смогли создать эти программы для Arduino таким простым способом, так как мы должны попытаться сделать их в ассемблерном коде для микроконтроллера ATMega328P, то есть в ASM для архитектуры AVR. И это было бы намного сложнее, поскольку вам пришлось бы напрямую использовать инструкции, доступные в этом ISA. Если это так, вам нужно будет не только адекватно знать репертуар ISA, но и другие аспекты, такие как количество регистраций и т. Д. То есть вы должны иметь низкоуровневые знания об оборудовании, на котором работаете.

По пример, код 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 - менее известный термин, это Двоичный интерфейс приложения, или на английском языке Двоичный интерфейс приложения. В данном случае это интерфейс между модулями программы, обычно между библиотекой или операционной системой на машинном языке для архитектуры, в которой вы находитесь: 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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.