Quel est le langage de programmation le plus difficile?
Malbolge
La particularité de Malbolge est qu'il a été conçu pour être le langage de programmation le plus difficile et le plus exotique possible. Toutefois, certaines des astuces utilisées pour rendre la compréhension difficile peuvent être simplifiées.
Combined Programming Language
Plus tard, un langage basé sur le CPL, nommé BCPL (pour "Basic CPL", mais originellement "Bootstrap CPL"), était un langage beaucoup plus simple, visant principalement la programmation système, et particulièrement l'écriture de compilateurs. BCPL mena ensuite au langage B puis au langage C, qui reste dans les années 2010 l'un des langages les plus populaires. Terminologie informatique
Une étude publiée en 1997 et portant sur plus de 500 documents en français (exercices, articles de presse, publicité, documentation technique, documents internes et contrats) a montré que les termes les plus souvent traduits sont logiciel ("software"), ordinateur ("computer"), disquette ("floppy disk") et mémoire ("memory"). Les anglicismes les plus courants sont "bug" (bogue), "data" (donnée), "directory" (répertoire), et "hardware" (matériel). Cette étude fait état d'un nombre très élevé de mots anglais dans les écrits de programmation en raison de la présence d'instructions de programme dans les textes. Elle démontre aussi que, paradoxalement, les écrits destinés aux étudiants et au grand public font un plus large usage du jargon informatique que ceux destinés aux initiés et aux professionnels. Code impénétrable
Certains langages comme le C, le Perl et l'APL se prêtent très bien à l'obscurcissement. Dans ", Edsger Dijkstra a des mots très durs pour les langages riches qui se prêtent à de telles techniques et se fait l'avocat de langages plus modestes. Larry Wall affirme en revanche qu'un langage qui essaierait d'interdire de mauvaises pratiques telles que l'obscurcissement empêcherait aussi d'écrire des programmes légitimes tels que les unilignes. Environnement d'exécution
Un des premiers langages de programmation fonctionnant avec un runtime a été PL/1 en 1972. Lors de la compilation du programme, les instructions simples en langage PL/1 étaient traduites en les instructions correspondantes en langage machine, tandis que les instructions complexes étaient traduites en des utilisations des fonctions du runtime. Cette construction permettait de diminuer la taille du programme en langage machine. Passage informatique à l'an 2000
Ultime difficulté, dans de rares cas, certains "load modules" (exécutables constitués par compilation des sources écrits en Cobol, langage informatique le plus fréquent (voir IBM 1130) n'avaient plus leur source pour y porter les modifications. Une décompilation était nécessaire, . J (langage)
À la différence d'APL, le langage J utilise uniquement le jeu de caractères ASCII. Gérant facilement des tableaux multidimensionnels, il se distingue par une notation infixée très compacte. Certains caractères qui fonctionnent par paires ([], {}, "", <>) dans la plupart des langages de programmation peuvent être utilisées ici individuellement.Le langage J fait appel à un vocabulaire particulier issu de la grammaire. Ainsi les fonctions sont appelées verbes et les constantes des noms. Les adverbes et les conjonctions modifiant les actions d'un verbe. Le langage J supporte la programmation tacite. C'est-à-dire que la programmation se fait par combinaisons de fonctions sans référence aucune à des noms d'argument. L'un de ses domaines de prédilection est l'analyse de données d'un point de vue mathématique, statistique ou logique. Il dispose d'une bibliothèque standard et de plusieurs bibliothèques graphiques. Il est utilisable depuis une console, un navigateur ou un environnement de développement intégré basé sur Qt. Le langage J s'interface avec le web et les bases de données. Langage de programmation de quatrième génération
Les première et deuxième générations de langage de programmation sont dits de "bas niveau". Dans ce type de langage le programmeur doit écrire les instructions d'une manière facile à comprendre pour le matériel informatique. Chaque ligne de code correspond à une seule opération effectuée par le système informatique. De tels langages sont également dépendants de la machine : un programme écrit pour un ordinateur donné ne pourra pas être utilisé sur un autre type d'ordinateur. Programmation fonctionnelle
Un langage fonctionnel est donc un langage de programmation dont la syntaxe et les caractéristiques encouragent la programmation fonctionnelle. Alors que l'origine de la programmation fonctionnelle peut être trouvée dans le lambda-calcul, le langage fonctionnel le plus ancien est Lisp, créé en 1958 par McCarthy. Lisp a donné naissance à des variantes telles que Scheme (1975) et Common Lisp (1984) qui, comme Lisp, ne sont pas ou peu typées. Des langages fonctionnels plus récents tels ML (1973), Haskell (1987), OCaml, Erlang, Clean et Oz, CDuce, Scala (2003), F# ou PureScript (2013), sont fortement typés. Unix
En 1971, conscient de la difficulté que représente la maintenance d'un système écrit en langage d'assemblage, Ken Thompson songea à réécrire Unix en TMG, mais il trouva que le TMG n'offrait pas ce dont il avait besoin. Pendant une courte période il songea à réécrire Unix en Fortran, mais finalement conçut le B avec l'aide de Dennis Ritchie dans les années 1969 et 1970, en s'inspirant du langage BCPL. Cependant Unix ne fut jamais réécrit en B ; le B ne supportait pas les types, toutes les variables étaient de la même taille que les mots de l'architecture, l'arithmétique sur les flottants n'était pas implémentée ; de plus, le compilateur B utilisait la technique du . C'est pourquoi Dennis Ritchie entreprit en 1971 d'écrire le "New B", qui fut renommé en C. Le langage C est toujours l'un des langages les plus utilisés aujourd'hui. Programmation informatique
Tous les langages procéduraux peuvent faire de la programmation structurée, mais certains comme le FORTRAN s'y prêtent très mal. Code opération
Le langage assembleur, ou simplement l'assembleur, est un langage de programmation de bas niveau, qui utilise des mnémoniques (pour les codes opérations et les opérandes) pour représenter le code machine, ce qui améliore la lisibilité tout en donnant un contrôle précis sur les instructions. La plupart des programmes sont aujourd'hui réalisés à l'aide de langages de programmation de haut niveau, qui sont plus faciles à lire et à écrire. Ces langages doivent être compilés (traduits en langage assembleur), ou exécutés par des interpréteurs. C (langage)
En contrepartie, la mise au point de programmes en C, surtout s'ils utilisent des structures de données complexes, est plus difficile qu'avec des langages de plus haut niveau. En effet, dans un souci de performance, le langage C impose à l'utilisateur de programmer certains traitements (libération de la mémoire, vérification de la validité des indices sur les tableaux…) qui sont pris en charge automatiquement dans les langages de haut niveau. Programmation procédurale
Le plus vieil exemple de ce type de langage est l'ALGOL. D'autres exemples sont Fortran, PL/I, Modula-2 et Ada (dans sa première version). Programmation fonctionnelle
Au début des années 2000, la programmation fonctionnelle a commencé à sortir du milieu académique. Dans le milieu industriel, les langages Erlang (développé par Ericsson pour des besoins de programmation concurrentielle et des impératifs de robustesse), Common Lisp, OCaml et Scheme sont utilisés. Mais le développement des langages fonctionnels est limité par le déficit en outils et en bibliothèques de qualité commerciale, et surtout par le manque de programmeurs formés. Notons aussi le langage F# développé par Microsoft Research est disponible sous licence de logiciel libre en 2010. Minimalisme (informatique)
Les concepteurs de langages de programmation peuvent créer des langages de programmation minimaux en évitant le sucre syntaxique et les bibliothèques logicielles étendues. De tels langages peuvent être des gouffres de Turing (""), car ils n'offrent pas de support standard pour les tâches de programmation courantes. La création d'un interprète Lisp minimal est une tâche d'apprentissage courante imposée aux étudiants en informatique. Le Lambda-calcul, développé par Alonzo Church, est un langage de programmation minimal qui n'utilise que des définitions de fonctions et des applications de fonctions. Scheme, Forth, et Go sont cités comme exemples de langages de programmation minimaux pratiques. TI-84 Plus
Exemple simple: Exemple plus complexe: On peut aussi programmer en ASM (Assembleur z80), langage officiellement supporté, des outils de développement (SDK 83+ par exemple) étant publiquement disponibles. Ce langage (sensiblement plus difficile/complexe que le TI-Basic intégré, interprété) étant de très bas-niveau, les possibilités de programmation ne sont restreintes que par la puissance du processeur. Il existe des applications directement sur la calculatrice permettant de programmer en assembleur, par exemple mimas. Il existe d'autres langages disponibles sur ce modèle qui ne sont pas officiels, on peut retenir l'Axe Parser, sorti en 2010, langage qui a aussi besoin d'un compilateur, mais qui cette fois est "on-calc". À l'instar de l'assembleur, l'Axe permet bien plus (autant en fonctionnalités que performances) que le TI-Basic intégré, mais reste cependant un peu plus compliqué que le TI-Basic (mais moins que l'assembleur) pour les débutants. Langage de programmation
Les cinq meilleurs langages sont : La popularité de chaque langage est difficilement quantifiable ; néanmoins, il existe l'index TIOBE, calculé mensuellement, qui se base sur le nombre de formations/cours destinée aux ingénieurs et le nombre de revendeurs/free-lance spécialisés dans un langage de programmation. C'est une information parcellaire mais qui peut donner un ordre d'idée sur les tendances en matière de préférence des programmeurs. Langage de programmation de haut niveau
En programmation informatique, un langage de Programmation à Haut Niveau d'Abstraction généralement appelé Langage de haut niveau est un langage de programmation orienté autour du problème à résoudre, qui permet d'écrire des programmes en utilisant des mots usuels des langues naturelles (très souvent de l'anglais) et des symboles mathématiques familiers. Un langage de haut niveau fait abstraction des caractéristiques techniques du matériel utilisé pour exécuter le programme, tels que les registres et les drapeaux du processeur. Compilateur
Vers la fin des , des langages de programmation indépendants des machines font pour la première fois leur apparition. Par la suite, plusieurs compilateurs expérimentaux sont développés. Le premier compilateur, (pour le langage A-0) est écrit par Grace Hopper, en 1952. L'équipe FORTRAN dirigée par John Backus d'IBM est considérée comme ayant développé le premier compilateur complet, durant la période 1954-1957, et il s'agit du premier compilateur optimiseur, l'objectif de l'équipe étant de générer un code en langage machine quasiment aussi rapide que celui qu'aurait généré un programmeur. COBOL, développé en 1959 et reprenant largement des idées de Grace Hopper est le premier langage à être compilé sur plusieurs architectures. Emacs
Emacs est l'un des programmes informatiques non-triviaux les plus portés. Il fonctionne sur un grand nombre de systèmes d'exploitation, notamment la plupart des systèmes UNIX (GNU/Linux, les différents systèmes BSD, Solaris, AIX, Mac OS X, etc.), MS-DOS, Microsoft Windows et OpenVMS. Programmation impérative
Les langages de plus haut niveau utilisent des variables et des opérations plus complexes, mais suivent le même paradigme. Les recettes de cuisine et les vérifications de processus industriel sont deux exemples de concepts familiers qui s'apparentent à de la programmation impérative ; de ce point de vue, chaque étape est une instruction, et le monde physique constitue l'état modifiable. Puisque les idées de base de la programmation impérative sont à la fois conceptuellement familières et directement intégrées dans l'architecture des microprocesseurs, la grande majorité des langages de programmation est impérative. Go en informatique
Le développement de programme informatique capable de jouer au go est un problème de l'intelligence artificielle. Ce problème est considéré comme l'un des plus complexes à résoudre, les algorithmes classiques (minimax et alpha-bêta) offrant des résultats médiocres. GPT-3
Au moment de son annonce, GPT-3 est le plus gros modèle de langage jamais entraîné avec 175 milliards de paramètres. GPT-2, sorti en 2019, n'avait que 1,5 milliard de paramètres. Place de l'anglais dans le domaine de l'informatique
Les premiers logiciels et ordinateurs n’étaient pas assez puissants pour supporter des alphabets autres que l’alphabet latin. Il était donc difficile, voire impossible de représenter des langages avec d’ autres alphabets. L’ encodage en caractères ASCII (American Standard Code for Information Interchange), créé dans les années 1960, pouvait supporter seulement 128 caractères. Grâce à des logiciels supplémentaires, il était possible de lire certains langages, par exemple toutes les langues utilisant l’alphabet cyrillique. Cependant, les langues complexes comme le chinois ou le japonais requièrent plus que la limite de 256 caractères imposé par l’encodage 8 bits. Certains ordinateurs créés sous l’Union des républiques socialistes soviétiques comprenaient automatiquement le support nécessaire pour lire l’alphabet cyrillique. Langage de programmation de bas niveau
Dans certains domaines, comme l'informatique embarquée ou en informatique industrielle, les langages de bas niveau sont majoritairement utilisés (typiquement le C ou plus rarement le C++), en complément d'un langage de « haut niveau », et certaines portions très limitées sont programmées en assembleur. Ceci peut être justifié par les contraintes techniques du matériel sur lequel doit fonctionner le programme (taille mémoire réduite et processeur lent), et aussi expliqué par l'investissement que représente la formation des programmeurs à un autre langage que celui qu'ils pratiquent depuis des années. Raku (langage)
Une autre conséquence est la possibilité pour le langage de modifier sa propre syntaxe en cours d'exécution, ce qui constitue une performance accomplie par de très rares langages de programmation, le plus emblématique étant Lisp. Circuit logique programmable
La programmation des PLD modernes (FPGA / CPLD) passe généralement par un compilateur basé sur un langage de programmation de type langage de description matériel (ou « HDL » pour Hardware Description Language) comme le ABEL. Pour faciliter la programmation, il existe aussi des langages de plus haut niveau. Les deux plus connus sont le VHDL ("V" pour ""Very high speed"") et le VERILOG. Il est également possible d'utiliser OpenCL, plutôt qu'un VHDL, ou bien des langages de plus haut niveau que les HDL. Langage de programmation ASIC
ASIC est un langage de programmation, en fait un dialecte du BASIC, et aussi un compilateur diffusé en shareware pour DOS. Écrit par Dave Visti de 80/20 Software, il a atteint une brève popularité dans les années 1990 comme l'un des rares compilateurs BASIC légalement disponibles pour téléchargement à partir de BBS. Cependant, ASIC comprend seulement un petit sous-ensemble du langage BASIC, n'ayant peu ou pas de support pour les opérateurs logiques, les structures de contrôle et l'arithmétique en virgule flottante. Ces lacunes sont la raison pour laquelle la devise du logiciel fut « ASIC est presque un BASIC ! » . Langage de programmation
Un "paradigme" est une façon d'approcher la programmation. Chaque paradigme amène sa philosophie de la programmation ; une fois qu'une solution a été imaginée par un programmeur selon un certain paradigme, un langage de programmation qui suit ce paradigme permettra de l'exprimer. Impératif, déclaratif, fonctionnel, logique, orienté objet, concurrent, visuel, événementiel et basé web sont des paradigmes de programmation. Chaque langage de programmation reflète un ou plusieurs paradigmes, apportant un ensemble de notions qui peuvent être utilisées pour exprimer une solution à un problème de programmation. Au cours de l'histoire, les scientifiques et les programmeurs ont identifié les avantages et les limitations d'un style de programmation et apporté de nouveaux styles. La plupart des langages de programmation contemporains permettent d'adopter plusieurs paradigmes de programmation à condition que ceux-ci soient compatibles. Compilateur
Les logiciels des premiers ordinateurs étaient écrits en langage assembleur. Les langages de programmation de plus haut niveau (dans les couches d'abstraction) n'ont été inventés que lorsque les avantages apportés par la possibilité de réutiliser le logiciel sur différents types de processeurs sont devenus plus importants que le coût de l'écriture d'un compilateur. La capacité de mémoire très limitée des premiers ordinateurs a également posé plusieurs problèmes techniques dans le développement des compilateurs. Histoire des langages de programmation
Au départ, les langages étaient de simples codes . Pendant neuf mois entre 1842 et 1843, Ada Lovelace a traduit le mémoire du mathématicien italien Luigi Menabrea sur la machine analytique, la dernière machine proposée par Charles Babbage. Elle ajouta cet article à une collection de notes dans lesquelles elle détaillait une méthode pour calculer les nombres de Bernoulli à l'aide de la Machine. Ces notes furent reconnues par certains historiens comme le premier programme informatique au monde . Shader
Probablement le langage le plus populaire, principalement de par le support de Microsoft, combiné avec le fait qu'il soit le premier à proposer un langage de type C — contre un langage de type assembleur — utilisable pour générer des rendus en temps réel. Le , couramment appelé HLSL, est une abstraction du langage de de type assembleur. Ces langages de bas niveau ont été introduits à partir de DirectX 8.0 en version (appelées « Shader Model ») 1.x, puis en version 2.x et 3.x avec DirectX 9 et ont été supportés rapidement par les constructeurs. Le HLSL a devancé l'apparition de son principal rival, le GLSL, toutefois il a dû ensuite être étendu par deux fois pour bénéficier de fonctionnalités qu'il ne possédait pas. Langage machine
Alors que le langage machine était le seul disponible à l'aube des ordinateurs, il est aujourd'hui très long et fastidieux de développer en binaire : il faut passer par au moins un langage intermédiaire. Swift (langage d'Apple)
Quelques jours après sa présentation, Swift était en passe d'entrer dans la liste des 20 langages de programmation les plus populaires (index TIOBE). En , Swift était passé à la de ce classement. Langage de programmation
Bien que la notion de programme apparaisse progressivement au cours de la deuxième moitié du , les premiers langages de programmation n'apparaissent qu'autour de 1950. Chacun pouvant créer son propre langage, il est impossible de déterminer le nombre total de langages existant à l'heure actuelle. Programmation système
La programmation système se fait généralement par le biais de langages tel que le langage assembleur et d’un langage de bas niveau (langage C), c’est le cas des systèmes d’exploitation de type UNIX (GNU/Linux, FreeBSD, Solaris…) dont 90 % du code est écrit en C, le reste (10 %) est en assembleur suivant les architectures cibles (x86, SPARC…). Google Code Jam
La compétition consiste en un ensemble de problèmes qui mesure l’habilité des participants à concevoir un algorithme pour résoudre un problème, puis programmer et tester cet algorithme en un temps prédéfini. Les compétiteurs peuvent utiliser le langage de programmation et l’environnement de développement de leur choix. Les langages les plus utilisés sont C++ et Java. Langage de programmation de quatrième génération
Les langages de sont apparus au début des années 1960. Ils ont permis d'écrire des programmes d'une manière plus familière, proche de l'anglais, et qui ne dépendent pas du processeur qui sera utilisé. Ce qui a apporté un progrès significatif par rapport aux deux générations précédentes. Les premiers langages de ce type ont été A-0 et FLOW-MATIC dans les années 50. Les programmes écrits dans ces langages nécessitent un compilateur ou un interpréteur pour être exécutés. Le terme de « langage de génération » a été pour la première fois formalisé par James Martin en 1982 dans son livre "Applications Development Without Programmers" (« développement d'applications sans programmeurs ») pour désigner des langages de programmation de haut niveau. Comme le titre de l'ouvrage l'indique, le but de ce type de langage était de permettre à des développeurs non professionnels (par exemple des ingénieurs non informaticiens) de développer leurs propres applications. OCaml
OCaml, anciennement connu sous le nom d'Objective Caml, est l'implémentation la plus avancée du langage de programmation Caml, créé par Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy et leurs collaborateurs en 1996. Ce langage, de la famille des langages ML, est un projet open source dirigé et maintenu essentiellement par l'Inria. Enseignement des langues étrangères assisté par ordinateur
Une langue est un ensemble très complexe de mots et nuances, de concepts, de codes et de règles (de prononciations, d'accentuations, et de « ton » notamment), encore mal maitrisé par l'informatique. Même les meilleurs logiciels de traduction font encore de nombreuses erreurs. Par ailleurs la pédagogie est aussi une science complexe. Langage de programmation
Les premiers langages de programmation ont été créés dans les années 1950 en même temps que l'avènement des ordinateurs. Cependant, de nombreux concepts de programmation ont été initiés par un langage ou parfois plusieurs langages, avant d'être améliorés puis étendus dans les langages suivants. La plupart du temps la conception d'un langage de programmation a été fortement influencée par l'expérience acquise avec les langages précédents. Basic (langage)
La plus connue des versions compilées est le QuickBasic de Microsoft et le QBasic, une version qui ne permet pas de générer des programmes autonomes. Les dernières versions de Visual Basic sont aussi compilées, bien que Microsoft ait changé le Visual Basic en un langage compatible d'une façon minimale avec les premières versions du Dartmouth Basic. Langage de programmation de haut niveau
Les langages de haut niveau sont plus proches des langues naturelles, ce qui facilite et vulgarise l'écriture des programmes. Ils sont généralement indépendants de la machine : le même programme pourra être utilisé tel quel sur plusieurs types d'ordinateurs — quoique les programmes puissent également être conçus pour un système d'exploitation en particulier. Langage de programmation
Un langage de programmation est une notation conventionnelle destinée à formuler des algorithmes et produire des programmes informatiques qui les appliquent. D'une manière similaire à une langue naturelle, un langage de programmation est composé d'un alphabet, d'un vocabulaire, de règles de grammaire, de significations, mais aussi d'un environnement de traduction censé rendre sa syntaxe compréhensible par la machine. Lunar Lander (jeu vidéo, 1979)
Moore commence par dessiner les graphismes du jeu sur du papier millimétré, après quoi le duo écrit le code du jeu sur papier afin que des dactylos puissent le retranscrire. Delman et Moore travaillent main dans la main, rebondissant chacun sur les idées de l'autre, chacun œuvrant sur sa partie. L'un des points critiques est l'établissement du niveau de difficulté du jeu ; initialement, Delman projette que le module doit avoir le comportement le plus réaliste possible mais cela a pour effet de rendre le impraticable. Dans une interview de 2010, Delman remarque que « même les atterrisseurs réels disposent d'une assistance informatique ! » Il est décidé que le jeu intégrera quatre niveaux de difficulté (à comparer aux trois de ), Delman décrivant le niveau le plus difficile comme l'« un des pics de difficulté les plus douloureux du jeu vidéo ». Langage de programmation par adresse (APL)
Le langage APL est implémenté sur tous les ordinateurs de la première et de la deuxième génération produits en Union soviétique. Le langage APL influence l'architecture des ordinateurs de Kiev, de Strela, d'Ural et de Promin. APL est alors utilisé de façon exclusive pour résoudre des problèmes économiques, comme dans l'aviation, l'exploration spatiale, la construction de machines et dans les complexes militaires, en particulier pour calculer les trajectoires de missiles balistiques en vol dans les années 1950–60. Les implémentations du langage de programmation APL sont utilisées pendant près de 20 ans. Un livre sur l'APL est publié en Ukraine en 1963 et traduit et publié en France en 1974. Portabilité (informatique)
Les bibliothèques logicielles les plus courantes sont celles livrées avec les langages de programmation, que l'on appelle bibliothèques standards. C'est ainsi que si un programme utilise le langage C et uniquement sa bibliothèque standard, il pourra être porté sans difficulté, simplement en le recompilant pour tous les environnements disposant d'un compilateur C (ce qui est le cas sur la quasi-totalité des systèmes d'exploitation existants). Basic (langage)
À cette époque, les langages de programmation étaient plus adaptés aux cartes perforées qu'aux terminaux interactifs. Même le Fortran II, peu évolué bien que déjà complexe, était inadapté aux calculs matriciels dont on faisait déjà usage en sciences humaines. Non interactifs, ces langages exigeaient qu'un programme soit exempt de toute erreur de syntaxe pour être exécuté. Lisp
Bien qu'éclipsé par des langages proches de la machine (C, C++) ou des langages plus structurés et typés (Haskell), Lisp reste un langage relativement utilisé, en particulier en tant que langage embarqué dans des applications, où il sert de langage d'extension. Les cas les plus connus d'utilisation embarquée de Lisp sont l'éditeur de texte Emacs et le langage d'AutoCAD. On notera par ailleurs que Lisp vient en quatrième position en termes de lignes de codes utilisées pour implémenter les paquets sources disponibles dans le système d'exploitation Debian publié en . Les huit premiers langages se distribuent ainsi : C (57 %), C++ (16,8 %), Shell (9 %), Lisp (3 %), Perl (2,8 %), Python (1,8 %), Java (1,6 %), Fortran (1,2 %). En , Lisp se place en 15 position de l'index TIOBE. En juillet 2020, il est classé 34. Langage de programmation de quatrième génération
La première génération — le langage machine — sont les instructions sous forme de mots binaires telles qu'elles vont être exécutées par un processeur. chaque instruction à la forme d'un code opératoire (opcode) suivi des paramètres nécessaires en fonction de l'opcode. Chaque type de processeur a une palette d'instructions qui lui est propre mais qui peut éventuellement dépendre du mode d'exécution de celui-ci. Le langage machine est la seule forme compréhensible directement par l'ordinateur et à l'époque où les ordinateurs n'avaient pas encore de terminaux avec des écrans, se codait directement au moyen d'interrupteurs sur un panneau de contrôle, et ensuite, au moyen de cartes perforées à la main. Plus tard, il est devenu possible de programmer en langage machine au moyen d'un éditeur hexadécimal, mais en dehors de toutes petites modifications sur du code existant, il est plus avantageux d'utiliser un assembleur. Aujourd'hui, plus personne n'écrit en langage machine. C (langage)
C est un langage de programmation impératif généraliste, de bas niveau. Inventé au début des années 1970 pour réécrire Unix, C est devenu un des langages les plus utilisés, encore de nos jours. De nombreux langages plus modernes comme C++, C#, Java et PHP ou JavaScript ont repris une syntaxe similaire au C et reprennent en partie sa logique. C offre au développeur une marge de contrôle importante sur la machine (notamment sur la gestion de la mémoire) et est de ce fait utilisé pour réaliser les « fondations » (compilateurs, interpréteurs…) de ces langages plus modernes. Compréhension du langage naturel
Au fil des ans, diverses tentatives de traitement de phrases en langage naturel ou en anglais présentées à des ordinateurs ont eu lieu à divers degrés de complexité. Certaines tentatives n'ont pas abouti à des systèmes avec une compréhension profonde, mais ont contribué à la convivialité globale du système. Par exemple, Wayne Ratliff a développé à l'origine le programme Vulcan avec une syntaxe de type anglais pour imiter l'ordinateur parlant anglais dans Star Trek. Vulcan est devenu plus tard le système dBase dont la syntaxe facile à utiliser a effectivement lancé l'industrie des bases de données informatiques personnelles. Les systèmes avec une syntaxe facile à utiliser ou en anglais sont, cependant, tout à fait distincts des systèmes qui utilisent un lexique riche et incluent une représentation interne (souvent comme logique de premier ordre) de la sémantique des phrases en langage naturel. Managed code
Les principaux langages de programmation pour écrire du sont C# et Visual Basic .NET. Processing
Les programmes réalisés avec Processing en mode Java peuvent être exportés sous forme d'applications indépendantes pour Windows, Linux ou Mac OS X (en réalité n'importe quelle machine disposant d'une machine virtuelle Java). Le principe majeur de Processing est de simplifier au maximum la mise en œuvre des programmes. Le langage Processing, bien que très proche de langages tels que Java ou C++, se veut lui aussi assez simple. Adapté à la création graphique, Processing réclame moins d'efforts que Java pour effectuer des tâches simples telles que la modification d'une animation à intervalle régulier (qui permet des créations animées). Ses fonctionnalités sont limitées aux besoins des créateurs d'images 2D et 3D générées par programmation mais peuvent être étendues, par le biais de modules externes, à la capture d'un flux vidéo, à la génération et à la manipulation de son, à l'interfaçage des ports d'entrées-sorties, etc. Bug (informatique)
Les ordinateurs sont parmi les produits les plus complexes que l'homme ait fabriqué, et ils ont par conséquent un très grand nombre d'états. Les logiciels sont plus complexes que les ordinateurs, et, contrairement à une automobile, aucune pièce ne se ressemble. La conformité à de nombreuses normes, caractéristique des domaines proches de la télécommunication, accroît la complexité de ces derniers. Les logiciels sont de plus des produits invisibles, qui ne peuvent pas être représentés dans un espace géométrique, les représentations graphiques de logiciels comportent souvent deux, voire trois ou quatre diagrammes qui correspondent chacun à une réalité différente. ArchJava
Contrairement aux autres langages , ArchJava est basé sur le même langage de programmation que l'implémentation : Java. Ce fort couplage permet de régler le problème principal qui survient dans les autres langages , à savoir l'incapacité à assurer complètement l'obéissance des contraintes architecturales et plus particulièrement les communications entre les composants décrits dans l'architecture. Ceci est dû au fait qu'il ne sont pas décrits dans le même langage, et donc ne peuvent exprimer correctement certaines subtilités d'un langage particulier. Ils s'en remettent alors à la bonne volonté des développeurs de suivre des lignes directrices afin de respecter les communications entre les composants de l'architecture. Turing tarpit
Une Turing tarpit (traduction littérale, fosse de goudron de Turing) est un langage de programmation ou une interface utilisateur qui permet une certaine flexibilité dans ses fonctions, mais qui est difficile à apprendre et à utiliser parce qu'il offre peu ou pas de support pour les tâches courantes. L'expression a été inventée en 1982 par Alan Perlis dans les "Epigrams on Programming" : Pliant
Dans cette logique, le concepteur du langage et le programmeur ne sont pas sur un pied d'égalité. Le concepteur fixe les règles, le programmeur doit les appliquer. Si les règles fixées ne sont pas adaptées à la situation, c'est-à-dire au programme à écrire, le programmeur n'a pas de véritable marge de manœuvre, autre que de changer de langage, ce qui revient à déplacer le problème plutôt que le résoudre. En effet, les applications complexes nécessitent de faire face à toute une série de difficultés, ce qui nécessiterait de mettre en œuvre simultanément toute une série de langages pour bénéficier de toutes les fonctionnalités optimales, mais pose alors un problème insurmontable qui est l'interface entre ces différents langages qui ne va jamais de soi. Langage de programmation de cinquième génération
Un langage de programmation de cinquième génération, abrégé L5G, est un langage de programmation basé sur le concept de résolution de problèmes en utilisant des contraintes données au programme, plutôt que d'utiliser un algorithme écrit par un programmeur () ou une spécification formelle de représentation en tables et interrogations SQL (). La plupart des langages fonctionnant par contraintes ou par programmation logique ainsi que quelques langages déclaratifs sont des langages de cinquième génération. Windows Runtime
Plusieurs langages de programmation peuvent être utilisés pour développer des applications WinRT. Les plus courant étant C/C++, .NET (C# et VB.NET), ainsi que JavaScript. Common Intermediate Language
Dans l'environnement de programmation Microsoft, le Common Intermediate Language (CIL) est le langage de programmation de plus bas niveau qui peut être lu par un humain. Le code de plus haut niveau dans l'environnement .NET est compilé en code CIL qui est assemblé dans un code dit bytecode. CIL est un code assembleur orienté objet et pile. Il est exécuté par une machine virtuelle. Calculatrice programmable
Le BASIC est un langage de programmation simple d'accès et réputé facile à apprendre. Pour cette raison, il équipe depuis longtemps les PC de bureau ainsi que les ordinateurs de poche, mais également les calculatrices programmables. Complexité dans le pire des cas
En informatique, la complexité dans le pire des cas, ou complexité dans le cas le plus défavorable, mesure la complexité (par exemple en temps ou en espace) d'un algorithme dans le pire des cas d'exécution possibles. Elle est exprimée comme une fonction de la taille de l'entrée de l'algorithme. Implicitement, on cherche à construire des algorithmes s'exécutant en utilisant le moins de ressources possible (e.g. le plus vite possible), et il s'agit par conséquent d'une borne supérieure des ressources requises par l'algorithme. Langage de programmation de cinquième génération
Les langages de programmation de quatrième génération (L4G) transforment, avec plus ou moins d'efficacité selon les fournisseurs, des requêtes SQL normalisées en algorithmes, contrairement à ceux de troisième génération où le programmeur codait dans le détail ses propres algorithmes. Ces L4G mettent l'accent sur l'usage d'une (ou plus) base de données relationnelle, souvent avec interface graphique…. Les langages de cinquième génération prennent le problème encore en amont : idéalement, que l'ordinateur puisse résoudre n'importe quel problème juste formulé par ses contraintes et son objectif. L'utilisateur - il ne s'agit déjà plus d'un programmeur - a juste besoin (idéalement toujours) de recenser ce qui doit être fait, et sous quelles contraintes, sans rentrer dans le détail, et doit obtenir une ou des solutions correspondantes. Interface de programmation
Une des interfaces les plus connues est la Windows API. C'est une collection de fonctions, de types de données et de constantes, en langage de programmation C (Windows ayant été essentiellement écrit en C, notamment le noyau, et un peu de C++), qui permet à des programmeurs de créer des applications pour les systèmes d'exploitation Windows. Elle offre la possibilité de manipuler des fichiers, des processus, communiquer par les réseaux et manipuler des interfaces graphiques. Xojo
Il existe cependant une vieille controverse chez les programmeurs pour qui le basic est longtemps resté synonyme de langage de débutant. Soyons clair il n'existe pas de logiciel poids lourds de l'informatique développé en basic. Mais ce type de langage a fortement bénéficié de l'évolution de puissance des ordinateurs et on ne peut plus dire de nos jours que programmer en basic constitue un désavantage. Le développeur basic recherche la simplicité du langage et veut un résultat rapide souvent dans le cadre d'un projet à l'ambition moyenne. Xojo ne requiert pas la même technicité que le c++, c sharp ou objective c, ni le même investissement intellectuel. Il cherche simplement à proposer un outil généraliste et efficace dans les projets les plus communs. En s'appuyant sur une interface utilisateur très ergonomique, Xojo s'éloigne des basics des années 1980 avec qui finalement il ne partage plus rien. Stratégie d'évaluation (informatique)
La stratégie d'évaluation d'un langage de programmation est spécifiée par la définition du langage même. En pratique, la plupart des langages de programmation (Java, C...) utilisent l'appel par valeur. En effet, l'appel par valeur permet de raisonner plus facilement lorsque l'on essaie de déterminer et de calculer la complexité algorithmique d'un programme puisque l'on sait précisément quand les arguments sont évalués. Programmation impérative
En informatique, la programmation impérative est un paradigme de programmation qui décrit les opérations en séquences d'instructions exécutées par l'ordinateur pour modifier l'état du programme. Ce type de programmation est le plus répandu parmi l'ensemble des langages de programmation existants, et se différencie de la programmation déclarative (dont la programmation logique ou encore la programmation fonctionnelle sont des sous-ensembles). Unification
L'unification est ce qui distingue le plus le langage de programmation "Prolog" des autres langages de programmation. Interactive System Productivity Facility
Deux langages de type script, CLIST, historiquement le plus vieux, et Rexx, plus récent et plus puissant  permettent via les panels ISPF le développement d'applications dans le monde des grands systèmes (mainframe) IBM. Langage de programmation exotique
Les Turing tarpits sont des langages Turing-complets, c'est-à-dire qu'ils permettent en théorie d'implémenter n'importe quelle fonction calculable, mais conçus de telle sorte que même les opérations les plus élémentaires sont difficiles à effectuer en pratique. Ils utilisent souvent un nombre restreint d'instructions, ce qui en rend la programmation acrobatique. Ceci inclut Brainfuck (huit instructions sans opérandes), (une commande, trois opérandes), et Thue (une commande, deux opérandes, créé par John Colagioia). Histoire des langages de programmation
Certaines fonctionnalités peu utilisées d' "Algol 68" (comme la concurrence et les blocs parallèles) ainsi que ses systèmes complexes de raccourcis syntaxiques, et de transtypage automatique, l'ont rendu impopulaire auprès des programmeurs chargés de l'utiliser ; aussi est-il réputé difficile d'accès. Un certain Niklaus Wirth abandonne alors la commission de conception d'"Algol", et à partir de ses travaux sur "Algol-W" (pour Wirth) créera un langage plus simple, le "Pascal". Open Programming Language
C'est un langage facile d'abord, grâce à la bonne documentation fournie par PSION, souvent à l'achat du matériel, et grâce à la présence, sur l'appareil, de l'éditeur de programmes et du compilateur. C (langage)
Le langage C étant un des langages les plus utilisés en programmation, de nombreuses bibliothèques ont été créées pour être utilisées avec le C : glib, etc. Fréquemment, lors de l'invention d'un format de données, une bibliothèque ou un logiciel de référence en C existe pour manipuler le format. C'est le cas pour zlib, libjpeg, libpng, Expat, les décodeurs de référence MPEG, libsocket Langage de programmation
Un langage de programmation est mis en œuvre par un traducteur automatique : compilateur ou interprète. Un compilateur est un programme informatique qui transforme dans un premier temps un code source écrit dans un langage de programmation donné en un code cible qui pourra être directement exécuté par un ordinateur, à savoir un programme en langage machine ou en code intermédiaire, tandis que l’interprète réalise cette traduction « à la volée ». Programmation informatique
On remarque que pour effectuer une tâche très simple, le code informatique peut être très laborieux, et encore ici on ne traite pas les erreurs (si l'utilisateur tape un mot au lieu d'un nombre), et l'affichage est minimaliste. C'est pourquoi les langages de programmation n'ont jamais cessé d'évoluer, dans le but d'aider le programmeur qui souhaite réaliser des programmes rapides à s'exécuter, sans dysfonctionnements, et surtout simples à écrire, du moins le plus possible. Programme informatique
La programmation est un sujet central en informatique. Les instructions qu'un ordinateur devra exécuter doivent pouvoir être exprimées de manière précise et non ambiguë. Pour ce faire, les langages de programmation combinent la lisibilité de l'anglais avec l'exactitude des mathématiques. Les programmes sont créés par des programmeurs ou des ingénieurs logiciels. La création d'un programme comprend une série d'activités telles que la conception, l'écriture, le test et la documentation. En vue d'obtenir un programme de meilleure qualité, le travail de programmation se fait selon une démarche systématique et planifiée. John Backus
En 1953, il n'existe pas encore de vrai langage de programmation tel qu'on le conçoit au début du xxi siècle. La plupart des programmes est écrite manuellement en langage machine ou à l'aide d'un assembleur primitif. Bien sûr, il y a le système de Backus, "Speedcoding", mais l'approche n'est pas la bonne et le résultat est très lent. L'arrivée de l'IBM 704 cette même année va changer la donne. Outre le fait qu'il est plus performant que son prédécesseur, il possède un processeur qui supporte directement les nombres en virgule flottante. Un système tel que "Speedcoding" devient donc inutile. Histoire des langages de programmation
En 1948, Konrad Zuse publie un article sur son langage de programmation qu'il a développé entre 1943 et 1945 : le Plankalkül. Son créateur le considère comme étant le premier langage de programmation de haut niveau. Néanmoins, il n'aura jamais été implémenté à l'époque et les contributions de l'auteur sont d'ailleurs restées très isolées du courant dominant. Processeur
Le langage le plus proche du code machine tout en restant lisible par des humains est le langage d'assemblage, aussi appelé langage assembleur (forme francisée du mot anglais « "assembler" »). Toutefois, l'informatique a développé toute une série de langages, dits de « bas niveau » (comme le Pascal, C, C++, Fortran, Ada, etc.), « haut niveau » (comme le python, java, etc.), destinés à simplifier l'écriture des programmes. Goto (informatique)
Bien que lors du meeting pré-ALGOL tenue en 1959, Heinz Zemanek ait explicitement exprimé des doutes sur la nécessité du GOTO, à l'époque, personne n'y prête attention, y compris Edsger Dijkstra, qui deviendra plus tard un opposant emblématique de l'instruction GOTO. Les années 1970 et 1980 ont connu une baisse de l'utilisation des GOTO en faveur de la « programmation structurée », en effet, l'instruction GOTO amenait à un « code spaghetti inmaintenable ». Certaines normes de style de programmation déconseillent l'utilisation des instructions GOTO. Il a, cependant, suscité un débat important parmi les informaticiens, éducateurs, concepteurs de langage et les programmeurs d'applications qui ont vu un changement lent, mais régulier, de l'usage autrefois omniprésent du GOTO. La critique probablement la plus célèbre de l'instruction GOTO est une lettre à l'éditeur des Comm. of the ACM de 1968 dû à Edsger Dijkstra intitulée "Go To Statement Considered Harmful". Dans cette lettre à l'éditeur, Dijkstra a fait valoir que les instructions GOTO devraient être supprimés dans les langages de niveau supérieur car ils compliquent la compréhension, la maîtrise, l'analyse, la vérification et la maintenance des programmes, tout en y introduisant des erreurs difficiles à diagnostiquer. Cette diatribe a initié un débat, notamment 19 ans après à une époque où les langages déclaratifs ont déjà pris de l'ampleur, une lettre "GOTO Considered Harmful". Un autre point de vue plus synchronique est présenté par Donald Knuth dans "Structured Programming with go to Statements", où il analyse de nombreuses tâches de programmation, dans lesquelles il constate que, dans certaines d'entre elles, le GOTO est la construction de la langue la plus optimale à utiliser. Des codeurs du noyau Linux comme Linus Torvalds ou Steve McConnell, se démarquent du point de vue de Dijkstra, indiquant que le GOTO peut amener à une l'amélioration de la performance du programme, de la taille et de la clarté du code, mais seulement lorsqu'il est utilisé de manière raisonnable. Selon John Regehr, en 2013, il y avait environ GOTO dans le code du noyau Linux. En effet, le GOTO est souvent le résultat de code C produit automatiquement, par exemple dans la traduction d'un automate. En 2016, il est inexistant dans les langages de haut niveau. Le langage C est devenu plutôt un langage dans lequel d'autre logiciels produisent du code (voir l'article langage dédié). Programme informatique
L'avènement de la programmation structurée vers 1970 a grandement simplifié le travail des programmeurs et permis la création de programmes traitant des tâches plus nombreuses et plus complexes. Il en va de même avec l'avènement de la programmation orientée objet entre 1980 et 1990. Conformément à la phrase d'Edsger Dijkstra : « Les progrès ne seront possibles que si nous pouvons réfléchir sur les programmes sans les imaginer comme des morceaux de code exécutable ». De nouveaux langages de programmation ou de métaprogrammation sont régulièrement créés dans le but de simplifier et d’accélérer les possibilités offertes par programmation. World Wide Web
Le langage de programmation a été développé pour générer les pages web. Il jouit d’une forte intégration avec le serveur HTTP et les langages HTML. C’est aujourd’hui le langage le plus utilisé côté serveur avec presque 70 % des sites en 2010. Le moteur ASP a été développé par Microsoft pour interpréter du langage de script dans le serveur IIS , il est le second langage le plus utilisé avec un peu moins de 30 % des sites en 2010. Géométrix
Sur le plan informatique, deux langages de programmation sont à l'œuvre : Pascal (dans l'environnement Lazarus) et Prolog. Le premier a exclusivement servi à développer l'interface graphique ; le reste (constructions géométriques, vérification de la figure élève, vérification du raisonnement et moteur d'inférence) est pris en charge par . Le choix de ces deux langages a, entre autres, permis d'obtenir un code extrêmement « serré » (4 Mo) pour les versions 4.0 et 4.1. En , une deuxième implémentation de Prolog, , est intégrée à l'environnement de développement de la version 4.2. Extrêmement rapide, il permet d'accélérer le moteur d'inférences d'un facteur trois ou quatre pour des constructions géométriques ordinaires (niveau collège) et parfois d'un facteur dix ou plus pour des constructions complexes. Deux méthodes d'intégration sont utilisées pour SWI-Prolog. Il est « embarqué » (embedded) dans Lazarus grâce à son interface C et une autre instance de SWI-Prolog est lancée dans un processus différent avec lequel le noyau principal communique au travers de sockets. Ce processus, qui pourrait être distant, est tout entier consacré au moteur d'inférence principal. Programmation informatique
D'autres langages ne nécessitent pas de phase spéciale de compilation. La méthode employée pour exécuter le programme est alors différente. La phase de compilation est la plupart du temps incluse dans celle d’exécution. On dit de ce programme qu'il interprète le code source. Par exemple, Python ou Perl sont des langages interprétés. Langage de programmation exotique
Un langage de programmation déterministe est un langage où il est toujours possible de prévoir, en fonction de l'état actuel d'un programme, quel sera son état suivant. La plupart des langages sont déterministes, tandis que des langages non déterministes tels que Java2K donnent souvent des résultats peu fiables, et créer des programmes, même triviaux, qui fournissent des résultats fiables est souvent une tâche monumentale. Langage de programmation
Les langages de programmation permettent de décrire d'une part les structures des données qui seront manipulées par l'appareil informatique, et d'autre part d'indiquer comment sont effectuées les manipulations, selon quels algorithmes. Ils servent de moyens de communication par lesquels le programmeur communique avec l'ordinateur, mais aussi avec d'autres programmeurs ; les programmes étant d'ordinaire écrits, lus, compris et modifiés par une équipe de programmeurs. Programmation impérative
Dans les décennies 1980 et 1990, de nouveaux langages impératifs interprétés ou semi-interprétés doivent leur succès au développement de scripts pour des pages web dynamiques et les applications client-serveur. On peut citer dans ces catégories Perl (Larry Wall, 1987), Tcl (John Ousterhout, 1988), Python (Guido van Rossum, 1990), PHP (Rasmus Lerdorf, 1994), Java (Sun Microsystems, 1995), JavaScript (Brendan Eich, Netscape Navigator, 1995). Bootstrap (compilateur)
Aujourd'hui, une large proportion des langages de programmation sont bootstrappés : C, Scheme, Ocaml, Pascal, Modula-2, Oberon, Perl 6, Java, C# . Langage de programmation
Sous un angle théorique, tout langage informatique peut être qualifié de langage de programmation s'il est Turing-complet, c'est-à-dire qu'il permet de représenter toutes les fonctions calculables au sens de Turing et Church (en admettant néanmoins pour exception à la théorie que la mémoire des ordinateurs n'est pas un espace infini).La plupart des langages de programmation peuvent prévoir des éléments de structure complémentaires, des méthodes procédurales, et des définitions temporaires et variables et des identifiants : Visual Basic
Visual Basic a été conçu pour être facile à apprendre et à utiliser. Le langage permet de créer des applications graphiques de façon simple, mais également de créer des applications véritablement complexes. Programmer en VB est un mélange de plusieurs tâches, comme disposer visuellement les composants et contrôles sur les formulaires, définir les propriétés et les actions associées à ces composants, et enfin ajouter du code pour ajouter des fonctionnalités. Comme les attributs et les actions reçoivent des valeurs par défaut, il est possible de créer un programme simple sans que le programmeur ait à écrire de nombreuses lignes de code. Les premières versions ont souffert de problèmes de performance, mais avec l'apparition d'ordinateurs plus rapides et grâce à la compilation en code natif, ce problème de performance s'est estompé. Lisp
Lisp est la plus ancienne famille de langages de programmation à la fois impératifs et fonctionnels. Développé initialement en tant que modèle "pratique" pour représenter des programmes (par contraste avec la notion théorique de machine de Turing), il est devenu, dans les années 1970 et 80, un des langages de choix (comme le langage Prolog) pour la recherche en intelligence artificielle. Les langages Lisp sont aujourd'hui utilisés dans de nombreux domaines, de la programmation Web à la finance, et dans certains cursus de formation en informatique. PHP
De plus, PHP est devenu le langage de programmation web côté serveur le plus utilisé depuis plusieurs années : Enfin en 2010, PHP est le langage dont les logiciels open source sont les plus utilisés dans les entreprises, avec 57 % de taux de pénétration. Le Mythe du mois-homme
Lorsqu'un architecte logiciel planifie un projet, il doit se souvenir qu'un compilateur est trois fois plus difficile à créer qu'une application logicielle. Et qu'un système d'exploitation est trois fois plus difficile à créer qu'un compilateur. L'usage d'un langage de haut niveau adapté peut substantiellement améliorer la productivité d'un informaticien. Il doit également tenir compte du temps pris par les tâches qui ne sont pas de nature technique (réunions, rapports, congés maladie, etc.) Décompilateur
La décompilation est un problème difficile et d'un strict point de vue théorique, impossible. La décompilation correspond à la fonction réciproque de la fonction de compilation (généralement) d'un langage de haut-niveau vers un langage machine. Le problème de la décompilation est de pouvoir associer un code machine à une forme sémantiquement équivalente dans un langage de haut niveau. L'impossibilité mathématique du problème dépend du langage choisi. Dans le langage assembleur des machines x86, on dispose d'une instruction permettant de décider si un dépassement de tampon s'est produit. En langage C dans lequel on a retiré les appels assembleur, il est impossible d'avoir une instruction équivalente. Il faudrait alors écrire un code spécifique mais cela revient alors à changer le fonctionnement du programme. Code source
Pour éviter ces écueils, et puisqu'une traduction est toujours nécessaire, l'être humain écrit un code textuel afin qu'il soit plus lisible, plus compréhensible et plus simple à maintenir : c'est le code source écrit dans un langage de programmation. Il est, dans la plupart des cas, plus lisible, plus simple à écrire et indépendant du système cible. Un programme tiers (compilateur, interpréteur ou machine virtuelle) se charge de la traduction du code source en code binaire exécutable par la cible. Place de l'anglais dans le domaine de l'informatique
L’adoption massive de l’Unicode et de l’UTF-8 sur Internet, a permis de résoudre la plupart de ces anciennes limitations. L’ASCII reste de facto la norme pour les interfaces de commande, les langages de programmation et les protocoles texte.La syntaxe de la plupart des langages de programmation utilise des mots clés anglais, ce qui peut demander quelques notions de la langue afin de bien comprendre leur emploi. Cependant, il est important de savoir que tous les langages de programmation font partie de la classe des langages formels. Ils sont très différents des autres langages communs, l’anglais compris. Langage de programmation
Un langage de programmation offre un cadre pour élaborer des algorithmes et exprimer des diagrammes de flux. Il permet en particulier de décrire les structures des données qui seront manipulées par l'appareil informatique et quelles seront les manipulations. Un langage de programmation sert de moyen de communication avec l'ordinateur mais aussi entre programmeurs : les programmes étant d'ordinaire écrits, lus et modifiés par une équipe de programmeurs. Visual Basic
Les premières versions de Visual Basic (avant la version 5.0) généraient uniquement du P-Code ou pseudo code. Visual Basic 5 et 6 sont capables de compiler en P-code ou en code natif, au choix du programmeur. Le P-code est interprété par le du langage, aussi appelé machine virtuelle. L’avantage réside dans la portabilité et la petitesse du code. Cependant, ceci ralentit généralement l’exécution des programmes, car cela ajoute une couche supplémentaire d’interprétation. Il est possible de construire de petites portions de codes ou certains algorithmes qui s’exécutent plus rapidement en P-code qu’en code natif. Programmation informatique
Avec le temps, de nouveaux langages de programmation sont apparus, faisant de plus en plus abstraction du matériel sur lequel devraient tourner les programmes. Ceci apporte plusieurs facteurs de gains : ces langages sont plus faciles à apprendre, un programmeur peut produire du code plus rapidement, et les programmes produits peuvent tourner sur différents types de machines.L'immense majorité des programmes qui s'exécutent sur nos ordinateurs, téléphones et autres outils électroniques sont écrits dans des langages de programmation dits impératifs : les lignes du programme sont exécutées les unes après les autres. Chaque ligne du programme effectue soit une opération simple, soit exécute une fonction qui est elle-même une suite d'opérations simples.