Quelle pourrait être la programmation du futur. Un nouveau look
Les gens sont toujours intéressés par l'avenir. Je suis un être humain, un programmeur humain et je m'intéresse à l'avenir de la programmation. Sur Habré / Geektimes, des articles similaires ont déjà été rencontrés, et dans le réseau aussi, il a été possible de tirer beaucoup sur ce sujet. Aujourd'hui, je donne ma liste des innovations possibles dans la programmation au cours des 10-20-50 prochaines années. Dans le post, vous trouverez une analyse comparative des causes et de la nécessité de l'émergence des langages de programmation actuels, et une description des causes possibles de l'émergence de nouveaux langages et outils. Le mot clé ici est la nécessité, car la cause engendre la nécessité en soi.Contexte historique de l'émergence des langues
Au début, je veux donner un tableau des prérequis pour l'émergence et la vulgarisation des langages de programmation actuels, la liste la plus générale:Langue | Raison / nécessité |
Assembleur | L'apparition des premiers ordinateurs, le besoin d'humanisation des codes machine |
C | L'augmentation du nombre de variétés d'ordinateurs et de leurs architectures. Le besoin d'un assembleur universel. |
C ++ | Le développement des interfaces utilisateurs. Le besoin d'humanisation et de structuration du code du programme C. |
Java | Le déclin de Sun, le développement du web. La nécessité d'une interaction utilisateur-navigateur interactive. |
C # | Vulgarisation de Java, problèmes actuels de développement logiciel pour Microsoft et les plateformes web. Le besoin de Microsoft d'avoir sa propre pile technologique. |
Javascript | - Netscape - . - . |
Objective-C | Apple- . Apple . |
PHP/Ruby/Whatever | . -. |
Your Language | ??? |
Ce qui n'est pas ci-dessous est une analyse scientifique approfondie des concepts donnés. Mais il y a une description des raisons de l'émergence de nouveaux langages ou outils, comme dans le tableau ci-dessus.Ordinateur quantiqueLa première chose qui me vient à l'esprit est le changement d'ère des ordinateurs semi-conducteurs avec des ordinateurs quantiques. Les capacités seront d'un ordre de grandeur différent, les tâches que la technologie quantique permettra de résoudre changeront également les limites de l'imagination des programmeurs. Les premiers langages pour un ordinateur quantique sont déjà en cours de création, il est sûr de dire qu'au fur et à mesure que la technologie se développe, de nouveaux langages apparaîtront, probablement basés sur les actuels.AILa croissance de l'utilisation de l'IA dans les conditions quotidiennes affectera et affecte déjà les outils du développeur et la structure du PL. Prenons les assistants vocaux sur les téléphones. Ou par exemple discuter avec l'intelligence artificielle. Ou, que faire si l'IA évolue au niveau où elle écrira des programmes? Dans ce dernier cas, il semble probable qu'un langage spécial apparaisse dans lequel l'IA peut facilement développer des programmes en fonction des besoins.Nouveaux appareilsLa sortie des iPhones a marqué la popularisation d'Objective-C. Il est possible que l'appareil très populaire de Corporation X soit déjà en cours de développement, ce qui marquera la popularité du langage Y. Peut-être que c'est Tesla?Catastrophes mondialesIl peut arriver, Dieu ne plaise, qu'il y aura un cataclysme mondial ou une guerre, qui changera fondamentalement les méthodes mêmes d'interaction entre les personnes et les machines. On peut supposer que l'Internet, le cas échéant, retombera également à ses racines et ne sera plus aussi omniprésent. En cas de guerre mondiale, il faudra militariser les voitures. Là où en premier lieu il n'y aura pas tant de facilité d'utilisation que de calculs et de fiabilité. D'après ce que nous pouvons supposer, les langages de type OOP s'effaceront en arrière-plan, donnant la paume à des langages informatiques tels que R, Fortran. Ce sera peut-être une symbiose, comme une sorte de R ++ ou Fortran ++.Découvertes en physiqueLa science ne s'arrête pas, des recherches sont menées dans tous les domaines et chacun d'entre eux peut devenir dominant pour les gens. Que se passe-t-il si les gens peuvent manipuler l'espace et le temps? Que se passe-t-il si nous ouvrons la cinquième dimension ? Machine à remonter le temps? Il sera évident que les logiciels de déplacement dans l'espace devront être écrits sur quelque chose de nouveau, adapté à d'énormes quantités de données. Parlant énorme, j'imagine les volumes de galaxies et d'univers, ce n'est que dans l'imagination. Quelle sera cette langue? Évidemment orienté vers l'informatique parallèle, l'infrastructure réseau, le traitement des données et la visualisation.De nouvelles façons d'interagir avec les appareilsContrôle vocal, contrôle gestuel, périphérique d'entrée basé sur les gestes, contrôle informatique des pensées. C'est déjà le cas, il reste de la technologie pour devenir populaire.
Outils
Les outils sont une classe distincte de besoins d'un programmeur. Sans eux, le progrès est impensable, tout comme la langue ne peut pas être sans instrument.Programmation visuelleIl n'y a pas longtemps, les tentatives de création d'outils de programmation visuelle ne peuvent pas être comptées . Et souvent, et sinon toujours, de tels outils ont trébuché sur l'incapacité d'afficher le nombre de pièces nécessaires pour résoudre le problème sous une forme visuelle. L'auteur lui-même a tenté de créer un outil similaire, pour lequel il a reçu fi fi de ses collègues. La plupart ont comparé le temps nécessaire pour créer un programme visuellement et combien ils dépensent maintenant. Ce que la deuxième méthode a toujours gagné. Mais je suis toujours convaincu qu'ayant packagé des solutions fréquemment rencontrées sous une forme visuelle, et ayant organisé un référentiel centralisé de ces solutions, vous pouvez contourner la nécessité de revenir constamment aux détails, lire le code.Les générateurs d'interface existent depuislongtemps, mais pourquoi manquent-ils de flexibilité? Et à chaque nouveau formulaire ou mise en page, vous devez toujours le faire manuellement, en notant chaque attribut et balise? Prenez par exemple LightSwitch . Un excellent outil, mais adapté à une gamme très étroite de tâches. L'interface générée à partir des données.toujours passe-partout. Il est assez difficile de le personnaliser d'une manière ou d'une autre, ce qui réduit son utilisation à la saisie de formulaires et de données CRUD. L'auteur a longtemps rêvé de telles solutions:- Génération de formulaires (WinForms, WPF, Swing, WinAPI) basée sur les données
- Génération d'interface native basée sur PSD
Existe-t-il déjà? Ou est-ce que je regarde mal?Programmation tactile (voix, gestes, touches)Imaginez de futurs programmeurs agitant activement leurs mains et disant à haute voix des «sorts»dans de nouveaux langages. Franchement, en tant que programmeur, je suis très étranglé par l'incapacité de montrer des émotionslors de l'écriture de code. Chaque jour, frappant silencieusement sur la clave, je deviens un robot sans émotion basé sur lapensée et le calcul. Entrer dans le monde réel après de telles séances de codage, j'éprouve de réellesdifficultés à communiquer avec les gens et à exprimer des émotions. Les gars, il est temps pour nous d'être plus expressifs!Programmes de générateursDéveloppement de logiciels d'usine , générateurs de logiciels. Oui, tout cela est, mais pas largement utilisé. Pourquoi? On peut jeter une pierre dans le jardin des fleurons qui créent des outils de développement, mais on peut dire que le jeu ne vaut pas la chandelle, mais le résultat du travail. Cependant, je ne vois pas la programmation du futur sans un référentiel de solutions toutes faites et un générateur de programme basé sur celui-ci.
Prévoir
En conclusion, je voudrais faire une prévision pour l'avenir:- Adapter et étendre les langues existantes aux nouvelles conditions
- Création d'un référentiel centralisé de solutions clé en main
- Interface et génération de programmes
- Programmation tactile et visuelle basée sur les gestes et la voix
- Oh oui, voici ce que j'aimerais d'autre. Documentation comparative des langages et des frameworks, où vous savez comment la méthode est
implémentée dans le langage X, et le service montrerait son implémentation dans le langage Y. Par analogie, nous aurions maîtrisé tous ces frameworks plus rapidement.
Source: https://habr.com/ru/post/fr383543/
All Articles