Qu'est-ce qu'une API

qu'est-ce qu'une API

Les Acronymes d'API, vous les aurez vus plus d'une fois et deux fois lorsque vous lirez des articles sur les logiciels. Mais tout le monde ne sait pas ce qu'est vraiment une API. C'est pourquoi nous le clarifions dans cet article. La première chose à dire est qu'ils sont l'acronyme de Application Programming Interface, c'est-à-dire, en espagnol, Application Programming Interface. Et souvent, cela génère de la confusion, même parmi ceux qui connaissent quelque chose sur la programmation.

Par exemple, Arduino possède sa propre API de programmation, offrant un certain nombre de fonctions que vous pouvez utiliser dans l'IDE Arduino ou dans d'autres environnements pour programmer le microcontrôleur afin de vous permettre de créer vos projets. Mais ... pourriez-vous me dire la différence entre une bibliothèque de programmation et une API? Existe-t-il des différences entre un framework et une API? Une API est-elle identique à une ABI? Il y a de nombreux doutes qui continuent peut-être à semer la confusion et que nous allons clarifier tout de suite.

Je ne sais pas si tu le sais langues de bas niveau, comme l'assembleur ou l'ASM, dépendent directement de l'architecture matérielle, tandis que les plus élevés font abstraction du matériel pour faciliter la tâche du programmeur, mais dépendent du système d'exploitation (appels système) ou de certaines API, etc. Pour que tout cela ne ressemble pas à du chinois, voyons de quoi il s'agit ...

Qu'est-ce qu'une API?

Une L'API est un outil fourni aux développeurs afin qu'ils aient à leur disposition une série de fonctions, de sous-programmes et de procédures ou de méthodes pour la POO qui peuvent être utilisées à travers les bibliothèques existantes. Parmi ce qu'offre une API, on trouve des fonctions pour créer des applications simples, des fonctions liées à l'IA, avec la génération de graphiques, la gestion des ressources matérielles, etc.

Par exemple, vous êtes sûr que des API bien connues telles que celle proposée par Linux via la bibliothèque glibc, ou des graphiques tels que OpenGL et Vulkan, ou aussi d'autres comme OpenCL pour le calcul hétérogène, OpenXR pour la réalité virtuelle et augmentée, etc. D'autres systèmes d'exploitation et logiciels incluent également leurs propres API afin que d'autres programmeurs puissent créer des addons, des plugins ou des modules pour ce système, etc.

Exemple avec Arduino

Si vous avez un badge Arduino et vous utilisez fréquemment Arduino IDE, ou tout autre environnement de développement pour Arduino, vous saurez que lorsque vous créez un code, vous utilisez plusieurs options pour ordonner à votre microcontrôleur d'effectuer une série d'actions. Par exemple, pinMode () est une fonction typique pour configurer une broche Arduino, non?

Quand tu écris pinMode (9, ENTRÉE)Par exemple, vous indiquez que la broche 9 de la carte Arduino doit fonctionner comme une entrée, c'est-à-dire que le microcontrôleur attendra que les informations entrent via cette broche pour la lire et effectuer une action. Mais vous êtes-vous déjà demandé comment il pouvait comprendre cette commande?

Eh bien, Arduino a un API de développement mise à notre disposition. Des bibliothèques tierces peuvent être ajoutées à cette API comme nous l'avons vu dans de nombreux exemples sur ce blog. Comme SparkFun pour certains capteurs, etc. Avec tout cela, les fonctions peuvent être entrées dans l'IDE Arduino et il traduira correctement le code pour le charger dans la mémoire du microcontrôleur afin qu'il puisse le traiter.

Si vous n'aviez pas cette API, vous ne seriez pas en mesure de créer ces programmes pour Arduino de manière aussi simple, car nous devrions essayer de les créer en code d'assemblage pour le microcontrôleur ATMega328P, c'est-à-dire en ASM pour l'architecture AVR. Et ce serait beaucoup plus compliqué, car vous auriez à utiliser directement les instructions disponibles par cet ISA. Si tel est le cas, vous devrez non seulement connaître adéquatement le répertoire de cette ISA, mais également d'autres aspects tels que le nombre d'enregistrements, etc. Autrement dit, vous devez avoir une connaissance de bas niveau du matériel sur lequel vous travaillez.

Par exemple, code ASM Ce que vous devriez générer pour qu'une LED clignote dans une boucle serait:

<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

Alors que grâce à l'API les installations sont totales, écrire à un niveau élevé le code équivalent suivant (beaucoup plus court et plus intuitif):

<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 

Différences avec un ABI

API vs ABI Linux

ABI est un terme moins connu, c'est un Interface binaire d'application, ou en anglais Interface binaire d'application. Dans ce cas, il s'agit d'une interface entre des modules d'un programme, généralement entre une librairie ou un système d'exploitation en langage machine pour l'architecture dans laquelle vous vous trouvez: SPARC, AMD64, ARM, PPC, RISC-V, etc.

Grâce à l'ABI, la manière d'appeler les fonctions est déterminée, format binaire qui peut comprendre la machine pour laquelle vous compilez ou les appels système, comment les exceptions sont gérées, comment les données sont transmises, etc.

Différences avec un cadre

Un le cadre ou le cadre est plus un ensemble d'outils à votre disposition pour aider au développement d'un projet donné. La renommée définit généralement des normes de codage, fournit des composants utiles, etc. Par exemple, JUnit est un framework pour Java, ou Symfony / Cake pour PHP, etc.

Différences avec un SDK et un NDK

SDK est un kit de développement logiciel, c'est-à-dire un kit de développement logiciel. Cela va au-delà de ce qu'est un framework ou une API. Un exemple pourrait être Android Studio ou iOS xCode, etc. Par exemple, le premier, en plus de l'API Android elle-même, comprend également un IDE ou un environnement de développement intégré pour la programmation et la compilation, des bibliothèques, des outils, etc.

En outre, NDK (Kit de développement natif) c'est un complément. Par exemple, Android NDK permet aux développeurs de réutiliser le code C / C ++ en l'introduisant dans les applications via JNI (Java Native Interface) ...

Différences avec une bibliothèque

Diagramme Glibc Wikipédia

Enfin, la bibliothèque est une collection de code source réutilisable cela facilite la vie des programmeurs. Par exemple, dans la bibliothèque C stdio.h, il existe une fonction printf pour imprimer du texte à l'écran. Pour que cela soit possible, vous avez besoin d'un code source qui permet au système d'exploitation d'effectuer cette tâche. Mais comme c'est quelque chose de très récurrent qui est fréquemment utilisé, en invoquant simplement cette bibliothèque, vous pouvez utiliser printf sans écrire tout le code à partir de zéro. En d'autres termes, en d'autres termes, ils peuvent être considérés comme des blocs préfabriqués.

Une bibliothèque et une API peuvent être facilement confondues, en fait, les bibliothèques sont enveloppées dans une API. Exemple glibc...

J'espère qu'après ça tu as une idée plus clair sur ce que sont une API, une ABI, un framework, un SDK et une bibliothèque, ainsi que la possibilité de les différencier à partir de maintenant.


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.