human
Quel est l'intérêt d'avoir des langages de programmation différents ? Pourquoi n'y a-t-il pas qu'un seul Ultra Language avec tous les mots-clés combinés ? ? Explique comme si j'avais cinq ans.
gpt
Comme l'a dit Amarkov, l'idée de base derrière chaque langage de programmation est qu'ils s'appuient sur un autre langage, mais qu'ils fournissent de nouveaux outils utiles qui vous permettent de rationaliser l'écriture du code. * Le langage de programmation le plus basique est appelé code machine. C'est littéralement un tas de 1 et de 0 que votre ordinateur interprète. Comme vous pouvez l'imaginer, c'est/était incroyablement fastidieux pour les premiers informaticiens. Alors ils ont fait ce que font les scientifiques : inventer. * Ce qu'ils ont créé s'appelait le code d'assemblage. Cela a rendu les programmes d'écriture beaucoup, beaucoup plus agréables pour les yeux et plus faciles à suivre. Mais il y avait encore un problème ou deux : 1) ces programmes étaient incroyablement obtus, parce qu'ils étaient limités à des choses comme placer la valeur 3 dans le registre 0x011 et ajouter 1 à la valeur dans le registre 0x011. 2) Les codes n'étaient pas portables d'une machine à l'autre (car différents processeurs de différentes entreprises ont un code d'assemblage différent). Alors que font les scientifiques ? * Ils ont inventé le C, ce qui est largement considéré comme le langage le plus élémentaire utilisé aujourd'hui par la plupart des informaticiens. Cela vous a permis d'abstraire les variables (c'est-à-dire int x = 2 ;) et cela vous a permis de compiler votre code sur différentes machines de manière interchangeable. C'était super ! Mais il y avait toujours un problème : C est ce qu'on appelle un langage fonctionnel , et cela fait en sorte que vous faites toutes ces choses complexes comme garder une trace exacte du nombre d'éléments dans les tableaux , et vous ne pouvez stocker que des chaînes ( c'est-à-dire du texte ) dans des tableaux de caractères qui se terminent par un caractère nul et doivent être initialisés comme A[0 ] = 'h '; A[1 ] = ' je ' A[2 ] = ' \0 ' ; etc . Que font les scientifiques ? * Ils ont créé C++ (prononcé C plus plus). C'était le même langage que C (presque), mais avec quelques fonctionnalités intéressantes. L'un des plus importants était le concept de programmation orientée objet, qui vous permet de visualiser les problèmes exactement comme vous le feriez dans la vie réelle, et a conduit à une structure organisationnelle considérablement améliorée pour les grands programmes. Par exemple, si j'essaie de simuler une banque, j'aurai un fichier pour un BankTeller, un fichier pour un BankAccount, un fichier pour un AccountHolder, etc etc. Mais il y avait encore des problèmes ! En C/C++, vous deviez explicitement déclarer et libérer toute mémoire que vous prévoyez d'utiliser au moyen de la fonction malloc(). Si vous avez affaire à un gros programme avec des centaines, voire des milliers de variables (communes), cela peut rapidement devenir écrasant et interrompre le développement. * Entrez Java - l'un des premiers programmes largement utilisés avec gestion de la mémoire (en particulier, le ramasse-miettes). Maintenant , vous n'avez plus à vous soucier du bon moment pour libérer l' allocation mémoire d' une variable , vous arrêtez simplement de l' utiliser ! Java est tout à fait remarquable, car tous les programmes Java sont en fait compilés dans un intermédiaire appelé bytecode qui est ensuite universellement exécutable sur toutes les plates-formes ! Concrètement, cela signifie que je peux compiler un programme sous Windows et exécuter exactement le même fichier sous Mac, Linux, etc. C'est parce que les programmes Java s'exécutent à partir de l'application Java elle-même (habituellement java.exe ou quelque chose de similaire). Mais la principale plainte de Java était qu'il était trop verbeux (c'est-à-dire qu'il fallait beaucoup de code pour écrire des choses). * Entrez Python, l'un des premiers langages créés dans un souci de facilité de lecture et de simplicité. Python a supprimé une grande partie de l' excès de peluches de Java et ajouté une bonne quantité de fonctionnalités -- à savoir , vous n'avez pas à déclarer qu'une fonction renverra une valeur d' un certain type ( comme un entier ou un double ) , et vous n'avez pas à déclarer qu'une variable x sera un caractère ou une chaîne. Tout est fait au moment de l'exécution dans un processus connu sous le nom de ducktyping. Maintenant , vous vous demandez peut - être encore pourquoi les informaticiens sautent à travers tous ces cerceaux , n'est - ce pas ? Eh bien, comme pour tout dans la vie, il y a des compromis à faire. Spécifiquement dans le cas de Python et Java, chacun est exécuté par un programme qui effectue le ramasse-miettes, ce qui utilise un temps CPU précieux, et peut donc ralentir l'exécution de l'application. Ainsi , lorsque les gens ont besoin que les choses s'exécutent rapidement ( pensez à simuler le repliement des protéines , par exemple ) , ils écrivent des programmes en C / C++ . Quand les gens ont besoin que les choses s'exécutent * très très vite * , ils écrivent des choses en code assembleur . * * Le compromis est la vitesse d'exécution de votre programme par rapport au temps qu'il a fallu pour l'écrire. * * J'espère que cela a été utile ! J'aime penser que mon éducation va à quelque chose de valable. Edit : Visuellement, parlant, cela ressemble à ceci : COMBIEN DE TEMPS IL A PRIS POUR ÉCRIRE : Python < Java < C / C++ < Assembly < Machine Code COMMENT IL FONCTIONNE RAPIDEMENT : Machine Code < Assembly < C / C++ < Java < Python