O que é uma API

o que é uma API

Os Acrônimos da API, você os terá visto mais de uma vez e duas vezes ao ler artigos sobre software. Mas nem todo mundo sabe o que realmente é uma API. É por isso que esclarecemos neste artigo. A primeira coisa a dizer é que se trata da sigla para Application Programming Interface, ou seja, em espanhol, Application Programming Interface. E muitas vezes gera confusão até entre quem entende de programação.

Por exemplo, o Arduino tem sua própria API de programação, oferecendo uma série de funções que você pode usar no IDE do Arduino ou em outros ambientes para programar o microcontrolador para permitir a criação de seus projetos. Mas ... você poderia me dizer a diferença entre uma biblioteca de programação e uma API? Existem diferenças entre uma estrutura e uma API? Uma API é o mesmo que uma ABI? São muitas as dúvidas que talvez continuem a gerar confusão e que vamos esclarecer agora mesmo.

Não sei se você sabe disso linguagens de baixo nível, como o assembler ou ASM, dependem diretamente da arquitetura de hardware, enquanto os de alto nível abstraem do hardware para facilitar a tarefa do programador, mas dependem do sistema operacional (syscalls) ou de certas APIs, etc. Para que tudo isso não soe como chinês para você, vamos ver do que se trata ...

O que é uma API?

Uma API é uma ferramenta com a qual os desenvolvedores são fornecidos para que tenham à sua disposição um conjunto de funções, sub-rotinas e procedimentos ou métodos de OOP que podem ser utilizados através das bibliotecas existentes. Entre o que uma API oferece estão desde funções para criação de apps simples, funções relacionadas a IA, com geração de gráficos, gerenciamento de recursos de hardware, etc.

Por exemplo, você tem certeza de APIs bem conhecidas, como a oferecida pelo Linux por meio da biblioteca glibc, ou gráficos, como OpenGL e Vulkan, ou também outros como OpenCL para computação heterogênea, OpenXR para realidade virtual e aumentada, etc. Outros sistemas operacionais e software também incluem suas próprias APIs para que outros programadores possam criar complementos, plug-ins ou módulos para esse sistema, etc.

Exemplo com Arduino

Se você tem um distintivo Arduino e você costuma usar o IDE do Arduino, ou qualquer outro ambiente de desenvolvimento para Arduino, você saberá que ao criar um código, você faz uso de várias opções para ordenar que seu microcontrolador execute uma série de ações. Por exemplo, pinMode () é uma função típica para configurar um pino Arduino, certo?

Quando você escreve pinMode (9, INPUT)Por exemplo, você está indicando que o pino 9 da placa Arduino deve funcionar como uma entrada, ou seja, o microcontrolador ficará aguardando que a informação entre por meio desse pino para lê-la e realizar uma ação. Mas você já se perguntou como ele é capaz de entender esse comando?

Bem, o Arduino tem um API de desenvolvimento que é disponibilizada para nós. Bibliotecas de terceiros podem ser adicionadas a esta API, como vimos em muitos exemplos neste blog. Como SparkFun's para certos sensores, etc. Com tudo isso, as funções podem ser inseridas no IDE do Arduino e ele irá traduzir o código corretamente para carregá-lo na memória do microcontrolador para que possa processá-lo.

Se você não tivesse essa API, não seria capaz de criar esses programas para o Arduino de forma tão simples, pois devemos tentar fazê-los em código assembly para o microcontrolador ATMega328P, ou seja, em ASM para arquitetura AVR. E isso seria muito mais complicado, já que você teria que usar diretamente as instruções disponíveis neste ISA. Nesse caso, você não só teria que conhecer adequadamente o repertório dessa ISA, mas também outros aspectos, como o número de registros, etc. Ou seja, você deve ter um conhecimento de baixo nível do hardware para o qual está trabalhando.

Por exemplo, código ASM O que você deve gerar para um LED piscar em um loop seria:

<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

Enquanto graças à API as instalações são completas, escrever em alto nível o seguinte código equivalente (muito mais curto e intuitivo):

<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 

Diferenças com um ABI

API vs Linux ABI

ABI é um termo menos conhecido, é um Interface binária do aplicativo ou, em inglês, Interface binária do aplicativo. Neste caso, é uma interface entre módulos de um programa, geralmente entre uma biblioteca ou um sistema operacional em linguagem de máquina para a arquitetura em que você se encontra: SPARC, AMD64, ARM, PPC, RISC-V, etc.

Graças à ABI, a forma de chamar as funções é determinada, formato binário que pode entender a máquina para a qual você está compilando ou as chamadas do sistema, como as exceções são tratadas, como os dados são passados, etc.

Diferenças com uma estrutura

Un framework ou framework é mais um conjunto de ferramentas à sua disposição para auxiliar no desenvolvimento de um determinado projeto. O famework geralmente define alguns padrões de codificação, fornece componentes úteis, etc. Por exemplo, JUnit é uma estrutura para Java ou Symfony / Cake para PHP, etc.

Diferenças com SDK e NDK

SDK é um kit de desenvolvimento de software, ou seja, um kit de desenvolvimento de software. Vai além do que é um framework ou uma API. Um exemplo poderia ser Android Studio ou iOS xCode, etc. Por exemplo, o primeiro, além da própria API do Android, também inclui um IDE ou ambiente de desenvolvimento integrado para programação e compilação, bibliotecas, ferramentas, etc.

Além disso, NDK (Kit de Desenvolvimento Nativo) é um complemento. Por exemplo, o Android NDK permite que os desenvolvedores reutilizem o código C / C ++ apresentando-o aos aplicativos por meio de JNI (Java Native Interface) ...

Diferenças com uma biblioteca

Diagrama Glibc Wikipedia

Finalmente, a biblioteca é uma coleção de código-fonte reutilizável isso torna a vida mais fácil para os programadores. Por exemplo, dentro da biblioteca C stdio.h existe uma função printf para imprimir texto na tela. Para que isso seja possível, é necessário um código-fonte que faça com que o sistema operacional faça essa tarefa. Mas como é algo muito recorrente que é usado com frequência, simplesmente invocando essa biblioteca, você pode usar printf sem escrever todo o código do zero. Ou seja, podem ser vistos como blocos pré-fabricados.

Uma biblioteca e uma API podem ser facilmente confundidas, na verdade, bibliotecas são embaladas dentro de uma API. Exemplo glibc...

Espero que depois disso você tenha uma ideia mais claro sobre o que são API, ABI, framework, SDK e biblioteca, além de poder diferenciá-los a partir de agora.


Seja o primeiro a comentar

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.