Au cours des deux derniers mois, nous avons eu la chance de discuter avec de nombreux techniciens, ingénieurs et directeurs de diverses grandes entreprises technologiques grâce à Disrupt et à d'autres événements technologiques sur Bay Area. Bon nombre de personnes du grand public connaissent le terme "génération de code source" et savent comment les logiciels sont généralement construits. Mais lorsque nous parlons avec des techniciens, en particulier ceux qui suivent le développement des logiciels modernes, ils nous demandent en quoi AppMaster diffère de GitHub Copilot. C'est une question intéressante.
Si vous lisez mon article, vous avez probablement entendu parler de Copilot - un outil d'IA pour la complétion et la génération de code source avancé. Copilot est déjà un assez bon outil pour la programmation assistée lorsque le développeur n'écrit qu'une partie du code source, et l'IA offre la complétion de code, même des fonctions entières. Copilot est particulièrement efficace pour compléter les modèles et les dictionnaires : écrivez quelques éléments et le reste sera généré automatiquement. D'après les commentaires de la communauté et les récents messages du PDG de GitHub, Copilot se développe à un bon rythme.
Contrairement à Copilot, AppMaster se concentre sur la génération d'un projet logiciel complet plutôt que de morceaux. AppMaster accumule les exigences pour l'ensemble du projet : applications serveur (backend), applications web, applications mobiles et tous les éléments complémentaires. En général, nous recueillons auprès des ingénieurs le schéma des modèles de données, la logique applicative, les points d'accès, les éléments de l'interface utilisateur et toutes les exigences standard de la future application dans le format visuel drag-and-drop. L'approche tout-en-un permet aux ingénieurs logiciels d'en faire moins pour en obtenir plus.
Pour mieux comprendre, je vais vous donner un petit exemple.
Effectuer un appel API depuis l'application web ou mobile vers le serveur/backend est l'une des tâches les plus courantes. Habituellement, l'ingénieur doit consulter la documentation de l'API du serveur et créer la structure de la demande/réponse et tout le code correspondant. La même tâche peut être réalisée en une seule action de dran&drop dans AppMaster. Étant donné que la plate-forme sait tout sur les modèles de données et les points de terminaison, elle pré-génère automatiquement des blocs visuels pour effectuer des requêtes API sans douleur, y compris la structure des objets correspondants. Et même plus : après chaque changement des modèles de données, la logique métier ou la plateforme des points de terminaison met automatiquement à jour les éléments d'interface utilisateur dépendants sans intervention de l'ingénieur.
À première vue, il semble que AppMaster et Copilot essaient de résoudre des problèmes différents. Nous travaillons sur le même problème d'ingénierie logicielle, mais nos approches sont très différentes. Alors que Copilot a décidé d'aider les ingénieurs logiciels à écrire plus de code plus rapidement et plus facilement, nous nous sommes concentrés sur le changement du paradigme du développement logiciel, de la création de logiciels par l'écriture du code du programme à la simple définition des exigences de haut niveau. Le fait de disposer des exigences nous donne l'énorme avantage de pouvoir régénérer l'ensemble de la base de code du projet à partir de zéro. Nous pouvons procéder à la régénération pour n'importe quelle raison : lorsque les exigences sont modifiées, lorsque des algorithmes de génération de code améliorés sont disponibles, pour mettre à jour les versions du langage de programmation ou des bibliothèques, ou même pour changer toute la pile technologique !
Nous croyons en l'avenir avec l'approche"Ne touchez pas au code source" et les exigences de haut niveau pour l'ingénierie logicielle.
Qu'en pensez-vous ? Trop beau pour être vrai ? Une utopie ?
P.S. Si vous êtes intéressé par le domaine, consultez le dernier podcast de Lex Fridman avec Andrei Karpathy, l'ancien directeur de l'IA de Tesla, sur le logiciel 2.0 et la génération de code.