Direct3D. OpenAL. Winsock. Vous en avez probablement entendu parler, vous avez peut-être même utilisé avant, mais une chose est sûre : tous ceux qui ont déjà utilisé un ordinateur auront exécuté un logiciel qui en a fait bon usage.
Nous parlons d’API, la toison d’or des programmeurs du monde entier. Rejoignez-nous pendant que nous expliquons ce qu’est une API et jetez un coup d’œil rapide à où et comment elles sont utilisées.
Qu’est-ce qu’il y a dans un nom?
Le terme API signifie ‘Interface de programmation d’applications‘ mais, comme nous le verrons bientôt, il ne s’agit pas seulement de faire des candidatures (ou de leur donner leur nom complet, programmes d’application — applications, pour faire court). Dans le monde de l’informatique, une interface est quelque chose qui agit comme un pont entre deux ou plusieurs aspects d’un système informatique.
Ce pont peut être sous forme matérielle (par exemple USB) ou logicielle, comme c’est le cas dans ce cas.
Essentiellement, l’interface permet aux éléments de calcul de s’envoyer des informations ; parfois c’est un pont unidirectionnel (par exemple une souris envoyant des signaux d’entrée à un ordinateur portable, en utilisant une prise USB), mais ils sont plus susceptibles d’être bidirectionnels.
Dans le cas d’une API, il se passe beaucoup plus de choses dans les coulisses que la simple transmission de données. Ils définissent les règles sur les demandes de données pouvant être effectuées, définissent comment effectuer ces demandes, déclarent le format dans lequel les données doivent être, etc. Cela peut sembler assez restrictif, mais les API aident à rendre la programmation beaucoup plus facile.
C’est parce qu’ils cachent efficacement toutes les minuties d’arrière-plan et le fonctionnement interne du système informatique au programmeur et leur permettent simplement d’accéder aux outils dont ils ont besoin. Cela signifie qu’il va y avoir beaucoup d’API différentes, certaines très larges dans leur portée et leur nature, et d’autres avec un rôle très spécifique.
Ceux dont vous avez probablement entendu parler
Si vous êtes un passionné de jeux sur PC, vous connaissez certainement certaines API utilisées pour créer des graphiques 3D – les plus notables sont OpenGL, Direct3D et Vulkan. Ceux-ci agissent comme l’échafaudage fondamental de tout code de rendu, permettant aux programmeurs de créer des visuels complexes avec une relative facilité.
Les API graphiques établissent des règles spécifiques sur la façon dont tout doit être formaté et structuré, et offrent des instructions simples pour gérer les algorithmes mathématiques de routine. Tous ont été considérablement mis à jour au fil des ans et peuvent être utilisés pour faire plus que simplement créer de jolies images, tout cela grâce aux shaders de calcul.
Les plates-formes de jeu autres que les PC utilisent également des API – Microsoft utilise une version modifiée de Direct3D pour la Xbox, mais Nintendo et Sony utilisent les leurs pour le Switch et la PlayStation, bien qu’ils aient tous deux des racines dans OpenGL.
Si vous aimez jouer sur les téléphones, il existe également des API graphiques pour eux, comme Metal, qui est exclusif aux produits Apple.
Les lecteurs se souviendront peut-être que dans les années 1990, certains fournisseurs de cartes graphiques avaient leurs propres API – 3dfx avait Glide et S3 Graphics avait S3D. Cela était dû au fait que OpenGL était relativement nouveau et manquait des fonctionnalités et des performances requises par les fabricants.
Pendant un certain temps, Glide était le roi des API graphiques, car il était facile à programmer et montrait le Voodoo de 3dfx sous le meilleur jour possible. Glide et S3D avaient une durée de vie très brève, car ils étaient hautement propriétaires – Direct3D n’est pas open source, mais à part être limité à Windows, tout fournisseur de GPU peut créer des pilotes pour le prendre en charge sur leurs produits.
Cela dit, les API graphiques propriétaires sont toujours utilisées aujourd’hui. L’API CUDA de Nvidia est exclusive à leurs GPU, bien qu’elle soit destinée aux travaux de calcul à usage général, plutôt qu’au rendu 3D.
En 2013, AMD a commencé à travailler en collaboration avec les développeurs des jeux Battlefield pour créer une API « bas niveau ».
Le terme « bas niveau » fait référence à l’abstraction matérielle dans l’API – des routines logicielles qui masquent efficacement les détails spécifiques de l’architecture de base de la puce au développeur, ce qui facilite l’écriture d’un programme qui fonctionnera sur une gamme de plates-formes . Plus l’API doit faire de travail dans ce domaine, plus la charge de travail du processeur est importante pour tout traiter.
L’objectif d’AMD pour Mantle était qu’il soit moins dépendant du processeur que Direct3D et OpenGL, tout en offrant plus de programmabilité. Le développement du projet s’est arrêté en 2015 et complètement suspendu en 2019, car AMD avait remis gratuitement son travail au groupe Khronos, l’organisation responsable de Vulkan.
Les API ne sont pas réservées aux jolies images
Les jeux sont plus que des choses visuelles : il y a l’audio, le réseau et la gestion des entrées pour tous être codés. Direct3D fait en fait partie d’une vaste collection appelée DirectX, qui contient des API et des bibliothèques logicielles pour tous les éléments de jeu susmentionnés.
Par example, Entrée directe gère les commandes des manettes de jeu, des joysticks et des volants. Naturellement, il existe également des équivalents OpenGL pour ceux-ci (par exemple OpenAL pour l’audio), bien que certains puissent être couverts par le système d’exploitation, que nous explorerons dans un instant.
Et en parlant de communication avec le matériel, il existe une véritable multitude d’API pour permettre aux programmeurs d’accéder et d’utiliser la multitude de capacités que les téléphones ont généralement. Par exemple, presque tous les téléphones modernes auront un accéléromètre, une minuscule puce qui détecte les mouvements en trois dimensions.
Ainsi, si une application veut savoir dans quelle direction pointe le téléphone, les programmeurs peuvent utiliser une API pour recueillir facilement ces informations.
Les applications de réalité augmentée, comme celle d’observation des étoiles, sont un bon exemple de logiciel qui utilisera de telles API. Et si c’est celui qui affiche les constellations que vous regardez, lorsque vous pointez le téléphone vers le ciel nocturne, il utilisera une API pour l’appareil photo, l’accéléromètre, le système GPS, l’écran tactile, etc.
Si une application doit s’intégrer à n’importe quelle plate-forme de médias sociaux, comme Twitter ou Facebook, alors encore une fois, il existe également des API pour celles-ci ! Même si vous ne savez pas comment ils s’appellent, vous aurez presque certainement utilisé un programme créé via ces API.
Là où il y a de l’informatique, il y a des API
Deux classes d’API importantes, mais assez spécifiques, sont Remote et Web, la dernière étant un sous-ensemble de la première. Celles-ci sont conçues pour les applications qui s’exécutent sur un système, mais accèdent et manipulent des données sur un autre système. Le navigateur que vous utilisez pour lire ce site Web est un exemple d’application utilisant les deux API.
Certaines de ces API ne sont jamais rendues publiques (alias API privées) et ne peuvent être utilisées que par l’organisation qui les a créées, pour leurs propres applications internes.
D’autres sont semi-privées, connues sous le nom d’API partenaires, qui sont louées à des utilisateurs approuvés ; l’idée étant que le propriétaire de l’API contrôle exactement les données demandées par l’application. Avez-vous déjà utilisé une application pour réserver un covoiturage ? Cela utilisera une API distante privée.
Mais la plupart des applications que nous utilisons sur les ordinateurs auront été créées à l’aide d’applications publiques. Les PC Windows auront été écrits pour utiliser l’API Windows (généralement simplement appelée WinAPI) et macOS, iOS, Linux, Android, etc. tous offrent un véritable amphithéâtre d’interfaces de programmation accessibles au public.
Tout comme DirectX, il s’agit d’une collection de bibliothèques qui fournissent une vaste gamme de raccourcis pour tout gérer, du stockage de données aux services système et à la sécurité, ainsi que la création d’éléments d’interface graphique communs, la mise en réseau et la gestion de programmes.
Maintenant, alors qu’un bon nombre de lecteurs connaîtront WinAPI et Cocoa, peut-être moins connaîtront POSIX. Bien qu’il ne s’agisse pas d’une API en soi, il s’agit d’un ensemble de normes, créé par l’IEEE Computer Society, pour la création d’applications multiplateformes, et par proxy, cela inclut également les API.
Il était à l’origine destiné aux systèmes Unix et est maintenant implémenté par une multitude de systèmes d’exploitation différents. Windows, cependant, est quelque peu sur la clôture, avec seulement un petit nombre d’API suivant les normes. Cela dit, la majorité des API d’aujourd’hui sont conviviales, robustes et assez efficaces dans ce qu’elles font – elles ne sont peut-être pas officiellement conformes à POSIX, mais elles ont été façonnées par les règles.
Tous saluent l’API
Voilà donc les interfaces de programmation d’applications en un mot. Si vous aimez coder, que ce soit en tant que professionnel chevronné ou que vous fassiez vos premiers pas dans l’abîme impie qu’est Stack Overflow, alors vous connaissez certainement déjà les API et serez très reconnaissant de leur existence.
Mais même si vous n’êtes qu’un utilisateur d’ordinateur – un joueur passionné de PC, un employé de bureau ou un aficionado endémique des magasins d’applications – alors connaître un peu les API n’est pas une mauvaise chose. Prenez le tout premier exemple que nous avons donné : Red Dead Redemption 2. Si vous jouez à ce jeu, cela vaut vraiment la peine d’expérimenter ses performances avec Direct3D et Vulkan.
Selon votre configuration, une API peut vous offrir de meilleures fréquences d’images ou une stabilité plus cohérente par rapport à l’autre. C’est dommage que plus de développeurs de jeux ne proposent pas cela, mais c’est évidemment beaucoup plus de travail à gérer, et c’est presque certainement vrai sur n’importe quelle plate-forme logicielle.
La prochaine fois que vous parcourez sur votre téléphone, gérez les registres d’achats dans une feuille de calcul ou même configurez une nouvelle tablette pour les enfants, remerciez silencieusement les créateurs d’API. Sans eux, il y aurait beaucoup moins de logiciels, et ceux en cours d’utilisation auraient certainement beaucoup plus de bogues et d’incohérences !
Tête de mât par Andrey Suslov