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
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
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.