Les algorithmes d'intelligence artificielle (IA) connaissent un grand succès, notamment dans le domaine de l'apprentissage machine profond (DL), et pas seulement dans les jeux de société.
Plus il y a évolution, plus l'humanité avance dans le développement des logiciels pour faciliter la vie à l'aide de l'intelligence artificielle. Le succès est palpable dans l'évolution des machines.
LE RAYONNEMENT DES ENTREPRISES
Le développement engendré par l'IA
Avec le smartphone, des services tels que la reconnaissance vocale et d'images font de plus en plus partie intégrante de la vie quotidienne. Dans des contextes spécialisés, l'intelligence artificielle a fait des progrès étonnants. Dans certains domaines, les algorithmes générés par les machines donnent aujourd'hui de meilleurs résultats que les programmes classiques des développeurs.
Cependant, les réseaux neuronaux et autres algorithmes d'IA ne fonctionnent pas sans programmation. C'est donc précisément grâce à l'IA que des langages de programmation comme Python ou R sont redevenus très populaires. Une question passionnante est de savoir dans quelle mesure l'utilisation de l'IA modifie le développement de logiciels lui-même.
L'IA est adaptée à la construction de systèmes d'auto-guérison et d'auto-optimisation. Si ces données sont générées de toute façon pendant le fonctionnement dans le nuage, elles peuvent être utilisées pour l'optimisation ou le diagnostic des défauts. Les algorithmes de maintenance prédictive peuvent permettre d'économiser d'énormes coûts d'exploitation, de processus et de ressources.
Les modèles d'erreur typiques peuvent être facilement reconnus, signalés et automatiquement corrigés par des mesures appropriées. Dans certains produits, tels que les bases de données ou les systèmes d'exploitation, de tels mécanismes d'autoréparation sont en place depuis un certain temps pour répondre aux situations d'erreur par des mesures de réparation automatique.
L'automatisme et le développement
Mais qu'en est-il du développement du logiciel lui-même ? Il serait utile qu'une analyse préliminaire soit effectuée pour les erreurs signalées ou que les erreurs typiques soient évitées à l'avance. Jusqu'à présent, les outils utilisés ne sont pas encore intégrés de manière optimale. Cela est également dû au fait qu'il y a trop peu de normes d'intégration et que chacun fait ce qu'il veut. Au lieu de fouiller dans des collections de bribes de code ou de conseils sur les débordements de piles, il serait judicieux que les recommandations testées puissent également provenir directement d'un seul endroit pour obtenir les meilleures pratiques, des bribes de code pour les problèmes récurrents ou des suggestions d'amélioration.
De nombreux environnements de développement intégrés (IDE) rapportent désormais les données des utilisateurs lorsqu'ils le souhaitent, afin de mieux adapter les fonctions des outils à l'utilisation réelle et de mieux comprendre les situations d'erreur courantes. Dans le domaine du développement du web et du mobile, il existe également des bibliothèques pour mieux comprendre le comportement des utilisateurs. Pour les applications iOS et Android, il existe divers services et bibliothèques qui facilitent la distribution et l'analyse centralisée des erreurs de crash, même en temps réel.
Une approche prometteuse est le Language Server Protocol (LSP), qui a été publié en tant que norme ouverte par l'équipe de code de Visual Studio de Microsoft à la mi-2016. Il prend désormais en charge un grand nombre de langages de programmation et de langages spécifiques à un domaine (DSL) et est intégré dans de plus en plus d'IDE. Cela présente l'avantage de ne plus devoir développer et installer des extensions spécifiques à l'outil, mais une sur le serveur qui supporte le protocole LSP. Cela signifie également que les extensions peuvent être mises en œuvre plus rapidement pour les versions linguistiques plus récentes. Cependant, les cas d'utilisation typiques des développeurs peuvent également être adaptés afin de ne pas se perdre dans la multitude des fonctions linguistiques.
Cela permet non seulement d'améliorer la qualité du code, mais aussi d'accroître la productivité des développeurs, car ils n'ont pas à chercher sur Internet des recommandations ou à consulter la documentation de l'API pour trouver des exemples appropriés. Les violations des règles de codage peuvent alors être détectées directement pendant le processus de création et pas seulement dans une étape en aval. Cela peut être d'une grande aide, notamment lors de la maintenance de codes tiers, car il n'est pas nécessaire d'améliorer l'ensemble du code au préalable, mais cela peut être fait étape par étape directement lors de la création d'un nouveau code. Les duplications de code pourraient être facilement détectées et ainsi les problèmes de maintenance ultérieurs pourraient être éliminés à un stade précoce.
En ce qui concerne la réutilisabilité, ces algorithmes pourraient également suggérer de ne pas réinventer la roue mais de s'appuyer sur des solutions existantes et déjà matures. Cependant, toutes les suggestions ne peuvent pas être adoptées sans être vérifiées. Mais si les problèmes d'erreurs typiques ne se répètent pas et se propagent donc sur une longue période, c'est déjà beaucoup gagné. En fin de compte, l'ordinateur du collègue AI est alors un autre type de programmation par paires.
Le potentiel encore sous-utilisé de l'IA a été récemment mis en évidence par la société de conseil Forrester dans son rapport "How AI Will Change Software Development And Applications".
Les méthodes d'IA aident non seulement les mauvais programmeurs à s'améliorer, afin qu'ils ne retombent pas dans les vieilles habitudes encore et encore, mais elles aident tous les programmeurs et testeurs à devenir plus intelligents et plus productifs. Seuls ceux qui n'arrêtent pas d'apprendre des autres, même si c'est par l'intermédiaire de leur collègue AI, continueront à réussir. Le philosophe grec Héraclite reconnaissait déjà que tout coule et change. Pourquoi ne serait-ce pas différent avec le développement de logiciels.