Pendant des années, le développement de logiciels se faisait manuellement.
Des cartes perforées en FORTRAN à la composition de méthodes distribuées en Go, la discipline est restée fondamentalement la même: réfléchir intensément à un problème, produire une approche intelligente (c'est-à-dire un algorithme) et donner à la machine une paire d'instructions à mettre en œuvre.
Cette approche, que l'on peut appeler la «programmation explicite», a été la clé de tout, du mainframe au smartphone, du boom Internet à la révolution mobile. Il a contribué à créer de nouveaux marchés et à faire des entreprises comme Apple, Microsoft, Google et Facebook des noms familiers.
Et pourtant, il manquera quelque chose. Les systèmes intelligents imaginés par les anciens auteurs de l'ère informatique, par le taxi robot de Philip Dick jusqu'au C-3PO de George Lucas, continuent la science-fiction. Des tâches apparemment simples défient obstinément l'automatisation, même par les informaticiens les plus brillants. Les experts accusent la Silicon Valley, face à ces défis, de s'éloigner des avancées de base pour se concentrer sur des entreprises progressives ou à la mode.
Cela va évidemment changer. Les voitures autonomes de Waymo ont récemment parcouru huit millions de kilomètres. Le moteur de traduction de Microsoft, même s'il ne maîtrise pas couramment six millions de formes de communication, peut s'adapter aux niveaux humains de précision dans les tâches du chinois vers l'anglais. Et les startups innovent dans des domaines tels que les assistants intelligents, l'automatisation industrielle, la détection de fraude et bien d'autres.
Individuellement, ces nouvelles technologies promettent d'avoir un impact sur notre vie de tous les jours. Collectivement, ils représentent un changement radical dans la façon dont nous pensons au développement logiciel - et aussi un changement remarquable par rapport au modèle de programmation explicite.
La percée majeure qui soutient chacune de ces avancées est l'apprentissage en profondeur, une stratégie d'intelligence artificielle motivée par la construction de votre cerveau. Ce qui a commencé comme un outil d'évaluation de données relativement étroit sert maintenant de quelque chose de proche d'un système informatique général. Il surpasse les logiciels traditionnels dans un large éventail d'emplois et peut enfin fournir les systèmes intelligents qui ont longtemps échappé aux informaticiens - des exploits que la presse explose parfois de manière disproportionnée.
Au milieu du battage médiatique de l'apprentissage profond, cependant, la plupart des observateurs négligent la principale raison d'être optimiste quant à son avenir: l'apprentissage profond nécessite que les codeurs n'écrivent pratiquement pas de code. Plutôt que de s'appuyer sur des règles prédéfinies ou des factures si-alors, un programme d'apprentissage en profondeur écrit des principes automatiquement en fonction d'exemples précédents. Un développeur de logiciels n'a qu'à créer un "squelette approximatif", pour paraphraser Andrej Karpathy de Tesla, puis laisser les ordinateurs faire le reste du travail.
Dans ce nouvel univers, les programmeurs n'ont plus à concevoir un algorithme spécial pour chaque problème. La plupart des travaux se concentrent plutôt sur la génération d'ensembles de données reflétant le comportement souhaité et la gestion du processus de formation. Pete Warden, de l'équipe TensorFlow de Google, l'a souligné dès 2014: «J'étais codeur», a-t- il écrit. " J'apprends aux ordinateurs à créer leurs propres applications."
Encore une fois: le modèle de programmation qui est à l'origine des améliorations les plus importantes des applications aujourd'hui ne nécessite pas une quantité significative de programmation réelle.
Qu'est-ce que cela implique pour l'avenir du développement logiciel?
La programmation et la science des données convergeront de plus en plus
La plupart des applications n'incluront pas de programmes d'apprentissage «de bout en bout » dans un avenir prévisible. Il s'appuiera sur des modèles de données pour offrir des capacités cognitives de base et une logique explicite pour s'interfacer avec les utilisateurs et traduire les résultats. La question "dois-je utiliser l'IA ou même une approche conventionnelle de ce problème?" Se développera de plus en plus. La conception de systèmes intelligents exigera le contrôle des deux.
Les professionnels de l'IA seront probablement les rock stars
Faire de l'IA est difficile. Les programmeurs d'IA de base - pas seulement des universitaires et des chercheurs brillants - seront l'un des outils les plus précieux pour les entreprises de logiciels plus tard. Cela porte un peu d'ironie pour les codeurs traditionnels, qui travaillent automatiquement dans différentes industries depuis les années 1950 et qui sont actuellement confrontés à l'automatisation partielle de leurs propres emplois. L'exigence de leurs services ne diminuera sûrement pas, mais les personnes qui souhaitent rester à l'avant-garde doivent, avec une bonne dose de scepticisme, vérifier les eaux de l'IA.
La chaîne d'outils IA doit être construite
Gil Arditi, responsable de l'apprentissage automatique chez Lyft, l'a dit le mieux. "L'apprentissage automatique est maintenant dans la période de la soupe primordiale. Il est très similaire à la base de données du début des années 80 ou de la fin des années 70. Il fallait devenir un spécialiste mondial pour que ces éléments fonctionnent. " Des études montrent également que de nombreux modèles d'IA sont pas simple à expliquer, insignifiant à tromper et sensible aux préjugés. Des outils pour résoudre ces problèmes, entre autres, seront essentiels pour libérer le potentiel des développeurs d'IA.
Nous devons tous nous familiariser avec les comportements imprévisibles
Le concept d '«éducation» informatique convient aussi bien aux programmeurs qu'aux utilisateurs. Cela renforce l'impression que les ordinateurs font exactement ce que nous disons et que des entrées similaires produisent systématiquement des sorties similaires. Les versions de l'IA, en revanche, agissent comme des systèmes vivants et respirants. De nouveaux outils les feront se comporter davantage comme des programmes explicites, en particulier dans les configurations critiques pour la sécurité, cependant, nous risquons de perdre la valeur de ces systèmes - comme les mouvements «extraterrestres» d'AlphaGo - si nous plaçons les garde-corps trop étroitement. À mesure que nous grandissons et utilisons des logiciels d'IA, nous devons comprendre et adopter les résultats probabilistes.
Et j'espère que la probabilité de prise de contrôle de l'IA est proche de zéro.