paint-brush
Programmeurs de formation GPT-3 pour le présent (et le futur)par@mcsee
3,321 lectures
3,321 lectures

Programmeurs de formation GPT-3 pour le présent (et le futur)

par Maximiliano Contieri2022/06/27
Read on Terminal Reader
Read this story w/o Javascript

Trop long; Pour lire

Le marché actuel recherche des programmeurs pour empiler des briques en utilisant des langages à la mode. Ces professionnels sont formés à des outils spécifiques qui ont des cycles de vie très courts puis deviennent obsolètes. D'ici 2021, il existe déjà de nombreuses alternatives à l'intelligence artificielle et à l'apprentissage automatique, capables d'effectuer des tâches de programmation et algorithmiques de bas niveau. Nous devons nous concentrer sur la formation de ces concepts afin que les professionnels puissent facilement migrer d'une technologie à une autre technologie (également accidentelle et donc rapidement obsolète). La menace de l'intelligence artificielle est toujours la même que celle des métiers automatisables et obsolètes.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Programmeurs de formation GPT-3 pour le présent (et le futur)
Maximiliano Contieri HackerNoon profile picture

J'ai écrit un article en espagnol et j'ai demandé à "quelqu'un d'autre" de le réécrire


L'année dernière, j'ai écrit un article en espagnol sur l'avenir des programmeurs.


TL;DR : Au lieu de traduire manuellement mon article, j'ai décidé de le réécrire complètement avec GPT-3 .


De la même manière, The Guardian a demandé à GPT-3 quand il était en bêta privée.


Quand je lui ai demandé de traduire l'article, il a décidé que le titre n'était pas assez bon.

Donc ça l'a changé en présent ET futur

😱 Effrayant, n'est-ce pas ?


Allons-nous en.


Voici donc l'article original réécrit par GPT-3 :


Le papier

// Traduisez ceci en anglais et convertissez-le en article technique :

Sommaire

Le marché actuel recherche des programmeurs pour empiler des briques (1) en utilisant leurs langages tendances. Ces professionnels sont formés à des outils spécifiques qui ont des cycles de vie très courts puis deviennent obsolètes.


Il existe actuellement des alternatives pour réaliser des développements informatiques en faisant appel à des personnes intelligentes, capables de prendre leurs propres décisions et de participer au processus de création.


Les programmeurs du futur devront être excellents et déclaratifs (2). Des professionnels qui connaissent les algorithmes et la complexité et qui savent comment

Introduction

La plupart des développeurs dans le monde apportent des modifications à d'anciens systèmes ou doivent utiliser des bibliothèques ou des frameworks préexistants complexes sur lesquels ils ont peu de contrôle et peu d'occasions de modifier. (3)


Dans l'industrie du logiciel d'aujourd'hui, il est très peu probable de trouver le besoin de développer à partir de zéro, avec une page complètement blanche.


La durée de vie spécifique d'un âge de programmeur avec le langage à la mode. Cette période de temps est généralement inférieure à une décennie, de sorte que l'industrie rejette les professionnels comme obsolètes avant dix ans de formation. (4)


Au cours des dernières décennies, ils étaient à la mode comme de prétendues balles en argent (5), des langages comme Visual Basic, C++, Java, Php, Perl, Javascript, Ruby, Python et GoLang.

Certains d'entre eux cessent déjà d'être utilisés, laissant leur place à de nouvelles modes. (6)


Les concepts généraux (que Frederick Brooks appelle essentiels (7)) sont mieux absorbés dans notre première étape académique. Nous devons nous concentrer sur la formation de ces concepts afin que les professionnels puissent facilement migrer d'une technologie (que Brooks appelle accidentelle) vers une autre technologie (également accidentelle et, par conséquent, rapidement obsolète).

La menace

D'ici 2021, il existe déjà de nombreuses alternatives à l'intelligence artificielle et à l'apprentissage automatique, capables d'effectuer des tâches de programmation et d'algorithme de bas niveau (8) (9).

Les machines virtuelles modernes (celles qui interprètent le langage de haut niveau dans lequel nous programmons et qui existent, par exemple, dans les navigateurs Web) optimisent le code pour nous. (dix)


Au fur et à mesure que la technologie progresse, les programmeurs de bas niveau ne seront plus nécessaires de la même manière que personne ne recherche de bibliothécaires aujourd'hui (11). Semblable à ce qui se passe avec d'autres professions automatisables et obsolètes. (12)


Notre métier est toujours basé sur l'enseignement de la programmation impérative de bas niveau comme si nous étions confrontés aux problèmes des années 1960 ou 1970 où le matériel spécialisé était les cartes perforées et les magnétophones ouverts.


Nous formons nos étudiants à réaliser des optimisations algorithmiques absurdes et obsolètes, très proches du langage des machines et très éloignées de la modélisation des entités du problème que nous représentons dans notre solution informatique.


Nous formons des professionnels à comprendre le fonctionnement d'un ordinateur et à s'abaisser à parler dans son langage, en formant des modèles mentaux de bas niveau et en essayant de raisonner de la manière algorithmique dont traite une machine de Turing.


Or, aujourd'hui on peut développer des modèles sémantiques avec plusieurs couches d'abstraction dessus car on s'approche des modèles mentaux déclaratifs on s'éloigne en même temps des abstractions calculables des machines. Les langages de programmation les plus déclaratifs nous permettent de raisonner et de déduire des règles sur nos modèles. Contre cette tendance, nos étudiants écrivent leurs instructions en se basant sur des uns et des zéros.


La loi de Moore (14) nous renseigne sur la vitesse de changement du matériel et sa croissance exponentielle en puissance de traitement. En ce qui concerne les logiciels, nous grandissons linéairement limités par les réalités d'il y a plusieurs décennies et l'inertie des formateurs. Par analogie avec la théorie économique malthusienne (15), nous devons rattraper la courbe matérielle pour pouvoir libérer tout notre potentiel avant que les machines ne le fassent à notre place.


Le manque d'abstraction et de compréhension de la réalité est le symptôme d'une mentalité inertielle, basée sur les contraintes temporelles des processeurs et du stockage des années 60 et 70. Ces restrictions sont aujourd'hui limitées à des domaines très spécifiques et ne sont pas représentatives des problèmes que nous devons résoudre aujourd'hui en tant qu'ingénieurs logiciels dans la plupart de nos métiers. (16)

L'alternative

Nous devons former des généralistes, mais pas des théoriciens. Des personnes qui comprennent les bases et les fondements du génie logiciel et peuvent s'adapter à des implémentations accidentelles basées sur des outils actuels, mais aussi à des implémentations futures que nous ne connaissons pas encore aujourd'hui.


Des concepts tels que la conception de logiciels, les modèles de cycle de vie, le travail d'équipe et la construction d'une théorie partagée (17), l'intégration et le déploiement continus ou l'architecture, sont bien plus importants que d'apprendre à minimiser l'utilisation du processeur, à utiliser React, le framework Vue ou la bibliothèque Keta. .


"Il est très difficile de faire des prédictions, surtout sur l'avenir". Cette phrase, attribuée au grand Niels Bohr, nous dit que nous devons être prudents lorsque nous essayons d'anticiper l'avenir.

Paraphrasant le Prix Turing 2004 (18) Alan Key, a déclaré : « La meilleure façon de prédire l'avenir est de l'inventer ».


Nous ne savons pas avec certitude quelle sera la voie de l'automatisation des machines, mais nous pouvons prédire que la partie la plus créative et la plus technique de notre profession devrait être l'un des derniers bastions à tomber avant l'automatisation.


La prochaine génération de développeurs de logiciels devra concentrer ses compétences sur la conception, la modélisation du monde réel et la création d'abstractions qui évoluent avec le domaine du problème pour éviter de créer des logiciels obsolètes et hérités (19).


Cette approche stratégique ne se limite pas aux seuls métiers du développement. En science des données, il existe des problèmes similaires : les scientifiques des données se sont concentrés sur l'optimisation des algorithmes existants au lieu de former des professionnels généralistes, capables de comprendre les problèmes académiques et commerciaux de notre pays avec une batterie de solutions et de bons critères pour déterminer lequel choisir dans chaque situation. Ils doivent être formés pour modéliser le problème réel et évaluer différentes solutions possibles.


Les professionnels de la science des données disposent d'une incroyable variété d'outils pour ajuster leurs modèles. Nous sommes encore loin de trouver le deuxième "super algorithme" (20) capable de résoudre des problèmes spécifiques avec une solution générique. Nos futurs professionnels disposent du seul ordinateur polyvalent capable de résoudre raisonnablement divers problèmes spécifiques : Leurs esprits brillants.


Notre responsabilité est de nourrir et de stimuler ces cerveaux avec de vrais problèmes et non avec des solutions jouets que les ordinateurs résolvent (déjà en 2020) beaucoup plus efficacement.


Paradoxalement, gaspiller nos cerveaux en leur demandant d'effectuer des optimisations de bas niveau pour les machines est la pire façon d'optimiser notre ressource la plus chère.


Historiquement, nous avons privilégié le développement d'outils très spécifiques et théoriques. Ceci est très courant et souhaitable en science car les avancées théoriques précèdent généralement les implémentations et les utilisations concrètes de plusieurs décennies.


Cependant, dans le développement de logiciels, les découvertes et les découvertes se trouvent principalement dans le secteur privé avant le milieu universitaire. Nos professionnels doivent être formés à la méthodologie et aux concepts au-dessus des technologies et des langages à la mode accidentels. Cela génère des tensions entre le marché qui veut que les « implémenteurs experts dans un outil » s'en débarrassent lorsqu'il remplit son cycle de mode de 5 ou 10 ans.


Nos professionnels ne doivent pas être jetables ou recyclables. Nous devons les former aux techniques et ils doivent se tenir constamment à jour, comme cela se produit dans d'autres professions telles que la médecine, la physique ou la biotechnologie.

Que devons-nous enseigner ?

En plus des compétences « soft » comme la construction et le travail en équipe (puisque le logiciel est issu d'une activité collective) (17), nous devons enseigner les techniques de conception et de prototypage pour valider nos solutions de haut niveau.


Quant aux logiciels, il est impératif d'enseigner la conception de solutions, en se concentrant sur le comportement de nos modèles et, paraphrasant Donald Knuth (21), l'auteur historique de la plupart des algorithmes que nous utilisons aujourd'hui, en évitant les optimisations prématurées parce que nous voulons jouer à un jeu que les machines dominent bien mieux que nous.

L'opportunité

La formation de talents est une option accessible pour tout pays ayant un bon niveau académique, comme l'Argentine.


Investir dans la formation d'excellents ingénieurs logiciels est une décision stratégique et une opportunité de décollage qui a déjà été exploitée par de nombreux autres pays comme l'Estonie, l'Irlande, Israël et l'Inde. La Fondation Sadosky travaille actuellement dans ce sens. (22)


En Argentine, nous avons d'excellents professeurs, un bon niveau d'anglais, un fuseau horaire imbattable pour dialoguer avec les USA et l'Europe, et une culture compatible avec les pays les plus développés. Il faut donner la priorité aux technologies de l'information et, en leur sein, former des ingénieurs intelligents et déclaratifs plutôt que des programmeurs mécanisés et des optimiseurs de bas niveau.

Que devons-nous enseigner à nos ingénieurs ?

Nos professionnels doivent avoir des connaissances de base en programmation, algorithmes, complexité et bases de données.


Surtout, ils doivent apprendre à faire des conceptions basées sur des modèles d'intégration continue et de déploiement continu, avec des tests automatisés, en utilisant des techniques agiles telles que le Test-Driven Development. (23)


Le logiciel produit doit être déclaratif et basé sur le comportement souhaité (et précisé dans les tests fonctionnels automatisés) ; nous devons arrêter de penser dans le paradigme régnant des années 60 et 70, basé sur les types de données et les manipulations de fichiers et de chaînes, pour nous concentrer sur des modèles de haut niveau qui accompagnent la simulation de tout aspect du monde réel que nous voulons représenter pour résoudre un certain problème. (24)


Les techniques de conception basées sur le comportement sont agnostiques vis-à-vis de la technologie accidentelle de la mode et cela permet à un ingénieur formé à ces concepts il y a 30 ans de pouvoir faire des développements concrets encore aujourd'hui.


Malheureusement, une telle situation n'est pas reproduite par les programmeurs qui dominaient un langage à la mode, qui n'a pratiquement aucune utilité et qui les empêche de trouver de bonnes options sur le marché du travail. Le paradoxe est qu'un métier en plein emploi écarte ces professionnels pour n'avoir pas su s'adapter. (25)


Le changement, actuellement, est encore plus vertigineux. Les technologies durent beaucoup moins longtemps et l'obsolescence nous guette, à moins que nous soyons intelligents et larges, et que nous ayons la formation appropriée.

Travail futur

Ceci est un article d'opinion. Comme travaux futurs pour étayer la thèse en cours, nous devrions réaliser une étude quantitative comprenant des chiffres sur le roulement du personnel (25), le temps moyen dans chaque emploi selon l'âge et les études terminées, etc.

Pour ce faire, nous devons utiliser des techniques liées aux sciences sociales dans le cadre d'une approche multidisciplinaire.

conclusion

Le futur est déjà arrivé. Nous n'avons pas vraiment d'idée de ce que sera le métier de programmeur dans 5 ou 10 ans, mais nous avons de fortes indications qu'il ne sera pas lié à l'écriture d'algorithmes basés sur des structures de données. Nous devons former des professionnels qui comprennent rapidement un problème réel et savent construire des simulateurs avec de très petits sauts conceptuels, afin qu'ils puissent évoluer avec les problèmes que nous résolvons aujourd'hui.

Remerciements

Une partie des idées de cet article est née du travail d'enseignement dans le cours de génie logiciel du diplôme d'informatique de la Faculté des sciences exactes de l'Université de Buenos Aires.

  1. AllerLang
  2. Programmation déclarative
  3. Code hérité
  4. Programmeurs obsolètes
  5. Pas de solution miracle
  6. Langues à la mode
  7. Il n'y a pas de solution miracle
  8. Codeur profond
  9. Codage augmenté
  10. Traiter les machines virtuelles
  11. Bibliothécaires obsolètes
  12. Avenir du travail en Argentine
  13. Machine de Turing
  14. La loi de Moore
  15. Modèle de croissance malthusien
  16. Logiciel d'entreprise
  17. Construction de la théorie
  18. Prix ​​Turing
  19. Logiciel hérité
  20. IA générale
  21. Knuth - L'art de la programmation informatique
  22. Fondation Sadosky
  23. Développement piloté par les tests
  24. Pensée d'objet
  25. Langues mortes
  26. Chiffre d'affaires des programmeurs

La traduction est précise et belle.


Je l'ai vérifié avec l'application Grammarly and Hemmingway et j'ai trouvé quelques erreurs grammaticales.


Par exemple:

Trabajo Futuro (espagnol pour le travail futur)

C'est un article d'opinion. Como trabajo futuro para apoyar la presente tesis deberíamos realizar un trabajo cuantitativo incluyendo cifras de rotación de empleados (25), tiempo promedio en cada trabajo según la edad y los estudios realizados etc. Para ello debemos utilizar técnicas relacionadas a las ciencias sociales bajo un enfoque multidisciplinaire.



Se traduit en GPT-3 par :


Ceci est un article d'opinion. Comme travaux futurs pour étayer la thèse en cours, nous devrions réaliser une étude quantitative comprenant des chiffres sur le roulement du personnel (25), le temps moyen dans chaque emploi selon l'âge et les études effectuées, etc. Pour ce faire, nous devons utiliser des techniques liées aux sciences sociales. dans une perspective pluridisciplinaire.



Alors que Google Translate donne :


Travail futur

Ceci est un article d'opinion. Comme travaux futurs pour étayer cette thèse, nous devrions effectuer des travaux quantitatifs incluant les chiffres de rotation des employés (25), le temps moyen dans chaque emploi selon l'âge et les études effectuées, etc. Pour cela, nous devons utiliser des techniques liées aux sciences sociales sous une approche pluridisciplinaire.

Étalonnage du modèle

J'ai utilisé le modèle text-davinci-002 avec les jetons Temperature 0 (Randomness) et Maximum Length 2000

Avis GPT-3

Quelle est votre opinion sur cet article ?


Je pense que cet article fait quelques remarques valables sur l'avenir de la programmation et la nécessité pour les programmeurs de s'adapter au changement. Je conviens que l'industrie s'oriente vers des solutions plus automatisées et que cela entraînera éventuellement une diminution du besoin de programmeurs. Cependant, je pense qu'il y aura toujours un besoin de programmeurs capables de comprendre et de résoudre des problèmes complexes.


😱 (Encore effrayant !!)

Méta-conclusion

Je continuerai définitivement à utiliser GPT-3 pour écrire des articles techniques afin de les améliorer.