L'avenir du développement logiciel : L'avenir des ordinateurs P2

CRÉDIT D'IMAGE: Course quantique

L'avenir du développement logiciel : L'avenir des ordinateurs P2

    En 1969, Neil Armstrong et Buzz Aldrin sont devenus des héros internationaux après avoir été les premiers humains à poser le pied sur la Lune. Mais alors que ces astronautes étaient les héros devant la caméra, il y a des milliers de héros méconnus qui, sans leur implication, ce premier alunissage habité n'aurait pas été impossible. Quelques-uns de ces héros étaient les développeurs de logiciels qui ont codé le vol. Pourquoi?

    Eh bien, les ordinateurs qui existaient à cette époque étaient beaucoup plus simples qu'ils ne le sont aujourd'hui. En fait, le smartphone usé d'une personne moyenne est de plusieurs ordres de grandeur plus puissant que tout ce qui se trouve à bord du vaisseau spatial Apollo 11 (et de toute la NASA des années 1960 d'ailleurs). De plus, les ordinateurs de l'époque étaient codés par des développeurs de logiciels spécialisés qui programmaient des logiciels dans le langage machine le plus élémentaire : AGC Assembly Code ou simplement, des 1 et des 0.

    Pour le contexte, l'un de ces héros méconnus, le directeur de la division génie logiciel du programme spatial Apollo, Margaret Hamilton, et son équipe ont dû écrire une montagne de code (illustré ci-dessous) qui aurait pu être écrit en utilisant les langages de programmation d'aujourd'hui en utilisant une fraction de l'effort.

    (Sur la photo ci-dessus, Margaret Hamilton se tient à côté d'une pile de papier contenant le logiciel Apollo 11.)

    Et contrairement à nos jours où les développeurs de logiciels codent pour environ 80 à 90 % des scénarios possibles, pour les missions Apollo, leur code devait tout prendre en compte. Pour mettre cela en perspective, Margaret elle-même a déclaré :

    "En raison d'une erreur dans le manuel de la liste de contrôle, le commutateur du radar de rendez-vous a été placé dans la mauvaise position. Cela l'a amené à envoyer des signaux erronés à l'ordinateur. Le résultat était que l'ordinateur était invité à exécuter toutes ses fonctions normales pour l'atterrissage. tout en recevant une charge supplémentaire de données parasites qui occupaient 15 % de son temps. L'ordinateur (ou plutôt le logiciel qu'il contient) était suffisamment intelligent pour reconnaître qu'on lui demandait d'effectuer plus de tâches qu'il ne devrait en effectuer. Il a ensuite envoyé une alarme, ce qui signifiait pour l'astronaute, je suis surchargé de plus de tâches que je ne devrais en faire à ce moment-là, et je vais ne garder que les tâches les plus importantes, c'est-à-dire celles nécessaires à l'atterrissage ... En fait , l'ordinateur a été programmé pour faire plus que reconnaître les conditions d'erreur. Un ensemble complet de programmes de récupération a été incorporé dans le logiciel. L'action du logiciel, dans ce cas, était d'éliminer les tâches de moindre priorité et de rétablir les plus importantes ... Si l'ordinateur n'avait pasa reconnu ce problème et pris des mesures de récupération, je doute qu'Apollo 11 ait été l'alunissage réussi qu'il a été."

    — Margaret Hamilton, directrice du laboratoire Apollo Flight Computer Programming MIT Draper, Cambridge, Massachusetts, "Computer Got Loaded", Lettre à Datamation, Mars 1, 1971

    Comme indiqué précédemment, le développement de logiciels a évolué depuis les premiers jours d'Apollo. De nouveaux langages de programmation de haut niveau ont remplacé le processus fastidieux de codage avec des 1 et des 0 pour coder avec des mots et des symboles. Des fonctions telles que la génération d'un nombre aléatoire qui nécessitaient auparavant des jours de codage sont désormais remplacées par l'écriture d'une seule ligne de commande.

    En d'autres termes, le codage logiciel est devenu de plus en plus automatisé, intuitif et humain au fil des décennies. Ces qualités ne feront que perdurer dans le futur, guidant l'évolution du développement de logiciels d'une manière qui aura un impact profond sur notre vie quotidienne. C'est ce que fait ce chapitre du L'avenir des ordinateurs la série explorera.

    Développement de logiciels pour les masses

    Le processus de remplacement de la nécessité de coder les 1 et les 0 (langage machine) par des mots et des symboles (langage humain) est appelé processus d'ajout de couches d'abstractions. Ces abstractions se présentent sous la forme de nouveaux langages de programmation qui automatisent des fonctions complexes ou courantes pour le domaine pour lequel elles ont été conçues. Mais au début des années 2000, de nouvelles entreprises ont émergé (comme Caspio, QuickBase et Mendi) qui ont commencé à proposer ce qu'on appelle des plates-formes sans code ou à faible code.

    Il s'agit de tableaux de bord en ligne conviviaux qui permettent aux professionnels non techniques de créer des applications personnalisées adaptées aux besoins de leur entreprise en assemblant des blocs de code visuels (symboles/graphiques). En d'autres termes, au lieu d'abattre un arbre et de le transformer en dressing, vous le construisez à l'aide de pièces préfabriquées d'Ikea.

    Bien que l'utilisation de ce service nécessite toujours un certain niveau de connaissances en informatique, vous n'avez plus besoin d'un diplôme en informatique pour l'utiliser. En conséquence, cette forme d'abstraction permet la montée en puissance de millions de nouveaux "développeurs de logiciels" dans le monde de l'entreprise, et elle permet à de nombreux enfants d'apprendre à coder à un âge plus précoce.

    Redéfinir ce que signifie être un développeur de logiciels

    Il fut un temps où un paysage ou le visage d'une personne ne pouvaient être capturés que sur une toile. Un peintre devrait étudier et pratiquer pendant des années en tant qu'apprenti, apprendre le métier de peindre - comment mélanger les couleurs, quels outils sont les meilleurs, les bonnes techniques pour exécuter un visuel spécifique. Le coût du métier et les nombreuses années d'expérience nécessaires pour bien l'exercer signifiaient également que les peintres étaient rares et espacés.

    Puis l'appareil photo a été inventé. Et d'un simple clic sur un bouton, des paysages et des portraits ont été capturés en une seconde qui, autrement, prendrait des jours, voire des semaines à peindre. Et à mesure que les caméras se sont améliorées, sont devenues moins chères et sont devenues abondantes à un point tel qu'elles sont désormais incluses même dans le smartphone le plus basique, capturer le monde qui nous entoure est devenu une activité courante et décontractée à laquelle tout le monde participe désormais.

    Alors que les abstractions progressent et que de nouveaux langages logiciels automatisent de plus en plus de tâches routinières de développement de logiciels, qu'est-ce que cela signifiera d'être un développeur de logiciels dans 10 à 20 ans ? Pour répondre à cette question, examinons comment les futurs développeurs de logiciels s'y prendront probablement pour créer les applications de demain :

    *Tout d'abord, tout travail de codage standardisé et répétitif disparaîtra. À sa place se trouvera une vaste bibliothèque de comportements de composants prédéfinis, d'interfaces utilisateur et de manipulations de flux de données (pièces Ikea).

    *Comme aujourd'hui, les employeurs ou les entrepreneurs définiront des objectifs et des livrables spécifiques que les développeurs de logiciels pourront exécuter via des applications ou des plates-formes logicielles spécialisées.

    * Ces développeurs élaboreront ensuite leur stratégie d'exécution et commenceront à prototyper les premières ébauches de leur logiciel en accédant à leur bibliothèque de composants et en utilisant des interfaces visuelles pour les relier entre elles, des interfaces visuelles accessibles via la réalité augmentée (AR) ou la réalité virtuelle (VR).

    * Les systèmes d'intelligence artificielle (IA) spécialisés conçus pour comprendre les objectifs et les livrables impliqués par les ébauches initiales de leur développeur, affineront ensuite la conception du logiciel rédigé et automatiseront tous les tests d'assurance qualité.

    * Sur la base des résultats, l'IA posera ensuite une multitude de questions au développeur (probablement par le biais d'une communication verbale de type Alexa), cherchant à mieux comprendre et définir les objectifs et les livrables du projet et discuter de la manière dont le logiciel devrait agir dans divers scénarios et environnements.

    * Sur la base des commentaires du développeur, l'IA apprendra progressivement son intention et générera le code pour refléter les objectifs du projet.

    * Cette collaboration homme-machine va et vient itérera version après version du logiciel jusqu'à ce qu'une version finie et commercialisable soit prête pour une implémentation interne ou pour la vente au public.

    *En fait, cette collaboration se poursuivra une fois le logiciel exposé à une utilisation dans le monde réel. Au fur et à mesure que de simples bogues sont signalés, l'IA les corrige automatiquement d'une manière qui reflète les objectifs initiaux souhaités définis au cours du processus de développement du logiciel. Pendant ce temps, des bogues plus graves nécessiteront une collaboration homme-IA pour résoudre le problème.

    Dans l'ensemble, les futurs développeurs de logiciels se concentreront moins sur le « comment » et davantage sur le « quoi » et le « pourquoi ». Ils seront moins artisan et plus architecte. La programmation sera un exercice intellectuel qui nécessitera des personnes capables de communiquer méthodiquement l'intention et les résultats d'une manière qu'une IA puisse comprendre, puis coder automatiquement une application ou une plate-forme numérique finie.

    Développement logiciel basé sur l'intelligence artificielle

    Compte tenu de la section ci-dessus, il est clair que nous pensons que l'IA jouera un rôle de plus en plus central dans le domaine du développement de logiciels, mais son adoption n'est pas uniquement dans le but de rendre les développeurs de logiciels plus efficaces, il y a aussi des forces commerciales derrière cette tendance.

    La concurrence entre les sociétés de développement de logiciels devient de plus en plus féroce d'année en année. Certaines entreprises rivalisent en rachetant leurs concurrents. D'autres se font concurrence sur la différenciation des logiciels. Le défi avec cette dernière stratégie est qu'elle n'est pas facilement défendable. Toute fonctionnalité ou amélioration logicielle qu'une entreprise propose à ses clients, ses concurrents peuvent la copier assez facilement.

    Pour cette raison, l'époque où les entreprises publiaient de nouveaux logiciels tous les un à trois ans est révolue. De nos jours, les entreprises qui se concentrent sur la différenciation ont une incitation financière à publier de nouveaux logiciels, correctifs logiciels et fonctionnalités logicielles de plus en plus régulièrement. Plus les entreprises innovent rapidement, plus elles fidélisent leurs clients et augmentent le coût de passage à des concurrents. Cette évolution vers la livraison régulière de mises à jour logicielles incrémentielles est une tendance appelée « livraison continue ».

    Malheureusement, la livraison continue n'est pas facile. À peine un quart des éditeurs de logiciels actuels peuvent exécuter le calendrier de publication exigé par cette tendance. Et c'est pourquoi il y a tant d'intérêt à utiliser l'IA pour accélérer les choses.

    Comme indiqué précédemment, l'IA jouera à terme un rôle de plus en plus collaboratif dans la rédaction et le développement de logiciels. Mais à court terme, les entreprises l'utilisent pour automatiser de plus en plus les processus d'assurance qualité (tests) des logiciels. Et d'autres entreprises expérimentent l'utilisation de l'IA pour automatiser la documentation logicielle - le processus de suivi de la publication de nouvelles fonctionnalités et de nouveaux composants et de la manière dont ils ont été produits jusqu'au niveau du code.

    Dans l'ensemble, l'IA jouera de plus en plus un rôle central dans le développement de logiciels. Les éditeurs de logiciels qui maîtrisent son utilisation tôt connaîtront finalement une croissance exponentielle par rapport à leurs concurrents. Mais pour réaliser ces gains d'IA, l'industrie devra également voir des progrès dans le côté matériel des choses - la section suivante développera ce point.

    Logiciel en tant que service

    Toutes sortes de professionnels de la création utilisent les logiciels Adobe lors de la création d'œuvres d'art ou de conception numériques. Pendant près de trois décennies, vous avez acheté le logiciel d'Adobe sous forme de CD et êtes propriétaire de son utilisation à perpétuité, en achetant les futures versions mises à niveau si nécessaire. Mais au milieu des années 2010, Adobe a changé de stratégie.

    Au lieu d'acheter des CD de logiciels avec des clés de propriété compliquées, les clients d'Adobe devraient désormais payer un abonnement mensuel pour avoir le droit de télécharger des logiciels Adobe sur leurs appareils informatiques, des logiciels qui ne fonctionneraient qu'avec une connexion Internet régulière à constante aux serveurs Adobe. .

    Avec ce changement, les clients ne possédaient plus les logiciels Adobe ; ils l'ont loué au besoin. En retour, les clients n'ont plus besoin d'acheter constamment des versions mises à jour des logiciels Adobe ; tant qu'ils s'abonnent au service Adobe, les dernières mises à jour sont toujours téléchargées sur leur appareil dès leur sortie (souvent plusieurs fois par an).

    Ce n'est qu'un exemple de l'une des plus grandes tendances logicielles que nous ayons observées ces dernières années : comment le logiciel passe en service au lieu d'un produit autonome. Et pas seulement des logiciels spécialisés plus petits, mais des systèmes d'exploitation complets, comme nous l'avons vu avec la sortie de la mise à jour Windows 10 de Microsoft. En d'autres termes, le logiciel en tant que service (SaaS).

    Logiciel d'auto-apprentissage (SLS)

    S'appuyant sur l'évolution de l'industrie vers le SaaS, une nouvelle tendance émerge dans l'espace logiciel qui combine à la fois le SaaS et l'IA. Les grandes entreprises d'Amazon, Google, Microsoft et IBM ont commencé à proposer leur infrastructure d'IA en tant que service à leurs clients.

    En d'autres termes, l'IA et l'apprentissage automatique ne sont plus accessibles uniquement aux géants du logiciel. Désormais, toute entreprise et tout développeur peuvent accéder aux ressources d'IA en ligne pour créer des logiciels d'auto-apprentissage (SLS).

    Nous discuterons en détail du potentiel de l'IA dans notre série sur l'avenir de l'intelligence artificielle, mais pour le contexte de ce chapitre, nous dirons que les développeurs de logiciels actuels et futurs créeront SLS pour créer de nouveaux systèmes qui anticipent les tâches qui doivent être effectuées et remplissez-les simplement automatiquement pour vous.

    Cela signifie qu'un futur assistant IA apprendra votre style de travail au bureau et commencera à effectuer des tâches de base pour vous, comme formater des documents comme vous les aimez, rédiger vos e-mails sur votre ton de voix, gérer votre calendrier de travail et plus encore.

    À la maison, cela pourrait signifier qu'un système SLS gère votre future maison intelligente, y compris des tâches telles que le préchauffage de votre maison avant votre arrivée ou le suivi des courses que vous devez acheter.

    D'ici les années 2020 et dans les années 2030, ces systèmes SLS joueront un rôle vital sur les marchés des entreprises, des gouvernements, des militaires et des consommateurs, aidant progressivement chacun à améliorer sa productivité et à réduire les déchets de toutes sortes. Nous couvrirons la technologie SLS plus en détail plus tard dans cette série.

    Cependant, il y a un hic à tout cela.

    La seule façon dont les modèles SaaS et SLS fonctionnent est si Internet (ou l'infrastructure sous-jacente) continue de croître et de s'améliorer, parallèlement au matériel informatique et de stockage qui exécute le "cloud" sur lequel fonctionnent ces systèmes SaaS/SLS. Heureusement, les tendances que nous suivons semblent prometteuses.

    Pour en savoir plus sur la croissance et l'évolution d'Internet, lisez notre L'avenir d'Internet série. Pour en savoir plus sur l'évolution du matériel informatique, lisez la suite en utilisant les liens ci-dessous !

    Série L'avenir des ordinateurs

    Interfaces utilisateur émergentes pour redéfinir l'humanité : l'avenir des ordinateurs P1

    La révolution du stockage numérique : l'avenir des ordinateurs P3

    Une loi de Moore qui s'estompe pour susciter une refonte fondamentale des micropuces : l'avenir des ordinateurs P4

    Le cloud computing devient décentralisé : Future of Computers P5

    Pourquoi les pays se font-ils concurrence pour construire les plus gros supercalculateurs ? L'avenir des ordinateurs P6

    Comment les ordinateurs quantiques vont changer le monde : l'avenir des ordinateurs P7    

    Prochaine mise à jour prévue pour cette prévision

    2023-02-08

    Références prévisionnelles

    Les liens populaires et institutionnels suivants ont été référencés pour cette prévision :

    ProPublica

    Les liens Quantumrun suivants ont été référencés pour cette prévision :