Justin Gottschlich d'Intel Labs dirige une équipe de chercheurs en programmation machine. Leur objectif est d'automatiser le développement de logiciels afin de réduire les erreurs de codage et de remédier à la pénurie de programmeurs experts formés. Crédit :Walden Kirsch/Intel Corporation
Notre expert :Justin Gottschlich dirige l'équipe Machine Programming Research (MPR) au sein du Systems and Software Research Lab. Le groupe de recherche nouvellement formé de Justin se concentre sur la promesse pionnière de la programmation machine, qui est une fusion de l'apprentissage automatique, méthodes formelles, langages de programmation, compilateurs et systèmes informatiques.
Son explication simple de la programmation machine :MPR utilise des formes d'apprentissage automatique et d'autres méthodes automatiques pour créer un logiciel capable de créer son propre logiciel. C'est ce qu'on appelle la programmation machine et il s'agit fondamentalement d'automatiser le développement et la maintenance des logiciels. Une fois pleinement réalisé, la programmation machine permettra à chacun d'exprimer sa créativité et de développer son propre logiciel sans écrire une seule ligne de code.
La promesse de la programmation machine :Dans le paysage technologique d'aujourd'hui, le logiciel est intégré dans presque tout ce que nous faisons. Il contrôle de nombreux aspects de nos appareils mobiles :ordinateurs portables, comprimés, Téléphone (s. Il nous connecte à Internet et alimente nos flux de médias sociaux. Il virtualise nos centres de données et rend nos maisons plus intelligentes. Mais développer et maintenir un logiciel est un processus long et sujet aux erreurs, dit Justin. "Je crois que nous pouvons créer une société où tout le monde peut créer des logiciels, mais les machines s'occuperont de la partie "programmation", " dit-il. " Ainsi, 'programmation machine.'"
Une pénurie de programmeurs humains :un problème central pour Intel et d'autres sociétés technologiques de premier plan, selon Justin, est qu'ils manquent de développeurs seniors, une pénurie qui réduit la quantité de programmation dans toutes les industries. Selon code.org, il y en a 500, 000 postes de programmation ouverts disponibles aux États-Unis seulement, par rapport à une récolte annuelle de 50, 000 diplômés en informatique. Une pénurie similaire se retrouve dans toute l'Union européenne. Sur le marché de l'emploi en programmation, Justin dit, au mieux, seulement 10 % des personnes occupant ces postes ont une formation en informatique pour devenir des développeurs avancés de haut niveau. Avec le matériel hétérogène d'aujourd'hui :les processeurs, GPU, FPGA, ASIC, neuromorphe et, bientôt, puces quantiques, ça va devenir difficile, peut-être impossible, pour trouver des développeurs qui peuvent correctement, efficacement, et programmez en toute sécurité sur tout ce matériel.
C'est le moment :la programmation machine est une fusion de différents domaines. Il utilise la technique de programmation automatique, de précis (par exemple, synthèse formelle du programme) à probabiliste (p. programmation différentiable). Il utilise et apprend également de tout ce que nous avons construit dans le matériel et les logiciels à ce jour. Les chercheurs se sont lancés dans la programmation machine depuis les années 1950, dit Justin. "Mais aujourd'hui, c'est différent. Nous sommes à un point d'inflexion avec de nouveaux algorithmes d'apprentissage automatique, matériel nouveau et amélioré, et des données de programmation riches et denses. Ce sont les trois ingrédients essentiels qui, selon nous, permettent la programmation machine." Un exemple est illustré par les récentes recherches sur les algorithmes génétiques (AG) de l'équipe de Justin, qui illustre comment la fonction de fitness d'un algorithme génétique - une heuristique d'apprentissage machine compliquée développée par des programmeurs experts - peut être automatisée. Justin dit que ce travail n'aurait probablement pas été possible il y a quelques années à peine.
Refuser d'accepter les bogues :Presque tous les logiciels à grande échelle aujourd'hui (par exemple, systèmes d'exploitation, navigateurs, plateformes de médias sociaux) comprend l'exactitude, bugs de performances ou de sécurité. "Notre dernier article NeurIPS '19 fournit des preuves précoces que certains types de bogues qui ont historiquement échappé à la détection même des programmeurs experts peuvent être automatiquement détectés avec la programmation machine, ne nécessitant aucune intervention humaine, " dit Justin. " La prochaine étape est de les réparer automatiquement. "
A partir de 500, 000 lignes de code à 500 :Justin cite un exemple bien connu des avantages de la programmation machine. Google Traduction, un service qui traduit automatiquement entre les langues, a été construit par des ingénieurs qui ont codé à la main environ 500, 000 lignes utilisant les techniques de programmation classiques. Avec l'avènement de la programmation machine, Google a réécrit son code, en partie en utilisant la programmation différentiable (une petite part du gâteau de la programmation globale de la machine). Cette réécriture a réduit la base de code de 500, 000 lignes à 500 lignes, un 1, 000x de réduction. "Non seulement la taille du code a diminué de 1, 000 fois, " Justin dit, "la précision du système s'est en fait améliorée, c'est incroyable."
Plus de travaux de programmation, pas moins :la programmation de la machine n'éliminera pas les travaux, Justin soutient, mais au lieu de cela, créez-les - peut-être des millions d'entre eux. Les aspects les plus subalternes de la programmation seront automatisés, il dit, qui est le but. Avec programmation machine, il ajoute, "Notre vision du ciel bleu est aussi longue que vous pouvez exprimer vos idées (comme nous l'appelons - l'intention) d'une manière que la machine peut reconnaître - que ce soit le langage naturel, des diagrammes visuels ou des gestes :la programmation machine vous permet de créer votre propre logiciel. » Pour commencer à créer ces systèmes de programmation machine avancés, Justin dit, nous nous appuierons fortement sur une communauté de programmeurs et de scientifiques, ceux qui peuvent travailler sur plusieurs plates-formes, apprentissage automatique et techniques formelles, matériel hétérogène, et de nombreux langages de programmation. Justin et son équipe décrivent leur vision future de la programmation machine dans un article publié conjointement avec des chercheurs du MIT, "Les trois piliers de la programmation machine."