Liste des langages de programmation par type - List of programming languages by type

Il s'agit d'une liste de langages de programmation notables , regroupés par type.

Il n'y a pas de schéma de classification global pour les langages de programmation. Ainsi, dans de nombreux cas, une langue est répertoriée sous plusieurs rubriques.

Langues du tableau

Les langages de programmation de tableaux (également appelés vecteurs ou multidimensionnels ) généralisent les opérations sur les scalaires pour les appliquer de manière transparente aux vecteurs , matrices et tableaux de dimension supérieure .

Langages d'assemblage

Les langages d'assemblage correspondent directement à un langage machine (voir ci - dessous ), bien qu'il puisse ne pas y avoir de correspondance 1-1 entre une instruction individuelle et une instruction individuelle, de sorte que les instructions de code machine apparaissent sous une forme compréhensible par les humains. Les langages d'assemblage permettent aux programmeurs d'utiliser des adresses symboliques, que l' assembleur convertit en adresses absolues ou déplaçables . La plupart des assembleurs prennent également en charge les macros et les constantes symboliques .

Langues auteurs

Un langage auteur est un langage de programmation conçu pour être utilisé par un non-expert en informatique pour créer facilement des didacticiels, des sites Web et d'autres programmes informatiques interactifs.

Langages de programmation par contraintes

Un langage de programmation par contraintes est un langage de programmation déclaratif où les relations entre les variables sont exprimées sous forme de contraintes . L'exécution se poursuit en essayant de trouver des valeurs pour les variables qui satisfont à toutes les contraintes déclarées.

Langages de l'interface de ligne de commande

Les langages de l' interface de ligne de commande (CLI) sont également appelés langages de traitement par lots ou langages de contrôle des travaux. Exemples:

Langages compilés

Ce sont des langages généralement traités par les compilateurs , bien que théoriquement n'importe quel langage puisse être compilé ou interprété. Voir aussi langage compilé .

Langues concurrentes

Les langages de transmission de messages fournissent des constructions linguistiques pour la concurrence . Le paradigme prédominant pour la concurrence dans les langages courants tels que Java est la concurrence en mémoire partagée . Les langages concurrents qui utilisent le passage de messages ont généralement été inspirés par des calculs de processus tels que les processus séquentiels communicants (CSP) ou le π-calcul .

  • Ada – langage polyvalent
  • Alef - langage concurrent avec threads et transmission de messages, utilisé pour la programmation des systèmes dans les premières versions de Plan 9 de Bell Labs
  • Ateji PX une extension du langage Java pour le parallélisme
  • Ballerina - un langage conçu pour implémenter et orchestrer des micro-services. Fournit un modèle de concurrence parallèle d'abord basé sur les messages.
  • ChucK - langage de programmation spécifique au domaine pour l'audio, contrôle précis de la simultanéité et de la synchronisation
  • Cilk – un C concurrent
  • – C Omega, un langage de recherche étendant C#, utilise la communication asynchrone
  • Clojure - un dialecte de Lisp pour la machine virtuelle Java
  • Chapelle
  • Co-array Fortran
  • Pascal concurrent (par Brinch-Hansen)
  • Curry
  • E - utilise des promesses, garantit que les blocages ne peuvent pas se produire
  • Eiffel (via le mécanisme SCOOP , Simple Concurrent Object-Oriented Computation)
  • Elixir (fonctionne sur la VM Erlang)
  • Emerald - utilise des threads et des moniteurs
  • Erlang - utilise le passage de message asynchrone sans rien partagé
  • Gambit Scheme - en utilisant la bibliothèque Termite
  • Aller
  • Haskell — prend en charge la programmation simultanée, distribuée et parallèle sur plusieurs machines
  • Java
  • Julia
  • Joule - langage de flux de données, communique par passage de message
  • Limbo - parent d' Alef , utilisé pour la programmation des systèmes dans Inferno (système d'exploitation)
  • MultiLisp - Variante de schéma étendue pour prendre en charge le parallélisme
  • occam - fortement influencé par les processus de communication séquentiels (CSP)
    • occam-π - une variante moderne d' occam , qui incorpore des idées du
    π-calcul de Milner
  • Orque
  • Oz - langage multiparadigme, prend en charge la simultanéité d'état partagé et de transmission de messages, et les futurs, et le système de programmation Mozart multiplateforme Oz
  • P
  • Pict - essentiellement une implémentation exécutable du π-calcul de Milner
  • Python — utilise le parallélisme basé sur les threads et le parallélisme basé sur les processus
  • Rouiller
  • Scala – implémente des acteurs de style Erlang sur la JVM
  • SequenceL - purement fonctionnel, parallélisation automatique et sans course
  • SR – langage de recherche
  • Parallèle C unifié
  • XProc - Langage de traitement XML, permettant la concurrence
  • Langues avec accolades

    Les langages de programmation avec accolades ou accolades ont une syntaxe qui définit des blocs d'instructions à l'aide des caractères accolade ou accolade {et} . Cette syntaxe est née avec BCPL (1966) et a été popularisée par C . De nombreux langages à accolades descendent du C ou sont fortement influencés par celui-ci. Voici des exemples de langages à accolades :

    Langages de flux de données

    Les langages de programmation de flux de données reposent sur une représentation (généralement visuelle) du flux de données pour spécifier le programme. Fréquemment utilisé pour réagir à des événements discrets ou pour traiter des flux de données. Voici des exemples de langages de flux de données :

    Langages orientés données

    Les langages orientés données fournissent des moyens puissants de rechercher et de manipuler les relations qui ont été décrites comme des tables de relations d'entités qui mappent un ensemble de choses dans d'autres ensembles. Voici des exemples de langages orientés données :

    Langues des tables de décision

    Les tables de décision peuvent être utilisées pour clarifier la logique avant d'écrire un programme dans n'importe quel langage, mais dans les années 1960, un certain nombre de langages ont été développés où la logique principale est exprimée directement sous la forme d'une table de décision, notamment :

    Langages déclaratifs

    Les langages déclaratifs expriment la logique d'un calcul sans décrire en détail son flux de contrôle. La programmation déclarative contraste avec la programmation impérative via des langages de programmation impératifs, où le flux de contrôle est spécifié par des ordres en série (impératifs). Les langages de programmation (purs) fonctionnels et logiques sont également déclaratifs et constituent les principales sous-catégories de la catégorie déclarative. Cette section répertorie des exemples supplémentaires ne figurant pas dans ces sous-catégories.

    Langages intégrables

    Dans le code source

    Les langages source intégrables intègrent de petits morceaux de code exécutable dans un texte de forme libre, souvent une page Web.

    Les langages embarqués côté client sont limités par les capacités du navigateur ou du client prévu. Ils visent à dynamiser les pages web sans avoir besoin de recontacter le serveur.

    Les langages intégrés côté serveur sont beaucoup plus flexibles, car presque n'importe quel langage peut être intégré à un serveur. L'objectif d'avoir des fragments de code côté serveur intégrés dans une page Web est de générer dynamiquement un balisage supplémentaire ; le code lui-même disparaît lorsque la page est servie, pour être remplacé par sa sortie.

    Du côté serveur

    • PHP
    • VBScript
    • SMX – dédié aux pages Web
    • Tcl - côté serveur dans NaviServer et un composant essentiel dans les systèmes de l'industrie électronique
    • WebDNA – dédié aux sites Web basés sur des bases de données

    Les exemples ci-dessus sont particulièrement dédiés à cet effet. Un grand nombre d'autres langages, tels que Erlang , Scala , Perl et Ruby peuvent être adaptés (par exemple, en les transformant en modules Apache ).

    Côté client

    En code objet

    Une grande variété de langages dynamiques ou de script peuvent être intégrés dans du code exécutable compilé. Fondamentalement, le code objet de l' interpréteur du langage doit être lié à l'exécutable. Les fragments de code source pour le langage intégré peuvent ensuite être transmis à une fonction d'évaluation sous forme de chaînes. Les langages de contrôle d'application peuvent être implémentés de cette manière, si le code source est saisi par l'utilisateur. Les langues avec de petits interprètes sont préférées.

    Langages de programmation éducatifs

    Langages développés principalement à des fins d'enseignement et d'apprentissage de la programmation.

    Langues ésotériques

    Un langage de programmation ésotérique est un langage de programmation conçu comme un test des limites de la conception d'un langage de programmation informatique, comme une preuve de concept ou comme une blague.

    Langues d'extension

    Les langages de programmation d'extension sont des langages intégrés dans un autre programme et utilisés pour exploiter ses fonctionnalités dans des scripts d'extension.

    Langages de quatrième génération

    Les langages de programmation de quatrième génération sont des langages de haut niveau construits autour de systèmes de bases de données. Ils sont généralement utilisés dans des environnements commerciaux.

    Langages fonctionnels

    Les langages de programmation fonctionnels définissent les programmes et les sous-programmes comme des fonctions mathématiques et les traitent comme de première classe. De nombreux langages dits fonctionnels sont « impurs », contenant des caractéristiques impératives. De nombreux langages fonctionnels sont liés à des outils de calcul mathématique. Les langages fonctionnels comprennent :

    Pur

    Impur

    Langages de description du matériel

    En électronique, un langage de description matérielle (HDL) est un langage informatique spécialisé utilisé pour décrire la structure, la conception et le fonctionnement des circuits électroniques et, le plus souvent, des circuits logiques numériques. Les deux variétés HDL les plus largement utilisées et les mieux prises en charge dans l'industrie sont Verilog et VHDL . Les langages de description du matériel incluent :

    HDL pour la conception de circuits analogiques

    • Verilog-AMS (Verilog pour signaux analogiques et mixtes)
    • VHDL-AMS (VHDL avec extension analogique/signal mixte)

    HDL pour la conception de circuits numériques

    Langages impératifs

    Les langages de programmation impératifs peuvent être multi-paradigmes et apparaître dans d'autres classifications. Voici une liste de langages de programmation qui suivent le paradigme impératif :

    Langues en mode interactif

    Les langages en mode interactif agissent comme une sorte de shell : les expressions ou les instructions peuvent être saisies une par une, et le résultat de leur évaluation est immédiatement visible. Le mode interactif est également appelé boucle de lecture-évaluation-impression (REPL).

    Langues interprétées

    Les langages interprétés sont des langages de programmation dans lesquels les programmes peuvent être exécutés à partir du code source, par un interpréteur. Théoriquement, n'importe quel langage peut être compilé ou interprété, de sorte que le terme langage interprété fait généralement référence aux langages qui sont généralement interprétés plutôt que compilés.

    Langages itératifs

    Les langages itératifs sont construits autour ou proposant des générateurs .

    Langues par type de gestion de mémoire

    Langues ramassées

    Le Garbage Collection (GC) est une forme de gestion automatique de la mémoire. Le ramasse-miettes tente de récupérer la mémoire allouée par le programme mais qui n'est plus utilisée.

    Langues avec gestion manuelle de la mémoire

    Langages à gestion déterministe de la mémoire

    Langues avec comptage automatique de références (ARC)

    Langages basés sur des listes – LISP

    Les langages basés sur des listes sont un type de langage à structure de données basé sur la structure de données de liste .

    Petites langues

    Les petites langues servent un domaine de problème spécialisé.

    • awk - utilisé pour la manipulation de fichiers texte.
    • Comet - utilisé pour résoudre des problèmes d' optimisation combinatoire complexes dans des domaines tels que l'allocation des ressources et la planification
    • sed – analyse et transforme le texte
    • SQL - n'a que quelques mots-clés et pas toutes les constructions nécessaires pour un langage de programmation complet - de nombreux systèmes de gestion de bases de données étendent SQL avec des constructions supplémentaires en tant que langage de procédure stockée

    Langages basés sur la logique

    Les langages basés sur la logique spécifient un ensemble d'attributs qu'une solution doit avoir, plutôt qu'un ensemble d'étapes pour obtenir une solution.

    Les langages notables suivant ce paradigme de programmation incluent :

    Langages machines

    Les langages machine sont directement exécutables par le processeur d'un ordinateur. Ils sont généralement formulés sous forme de motifs binaires, généralement représentés en octal ou hexadécimal . Chaque motif binaire amène les circuits de la CPU à exécuter l'une des opérations fondamentales du matériel. L'activation d'entrées électriques spécifiques (par exemple, les broches du boîtier CPU pour les microprocesseurs) et les paramètres logiques pour les valeurs d'état du CPU, contrôlent le calcul du processeur. Les langages machine individuels sont spécifiques à une famille de processeurs ; le code en langage machine d'une famille de processeurs ne peut pas s'exécuter directement sur les processeurs d'une autre famille à moins que les processeurs en question n'aient du matériel supplémentaire pour le prendre en charge (par exemple, les processeurs DEC VAX incluaient un mode de compatibilité PDP-11). Ils sont (essentiellement) toujours définis par le développeur du processeur, et non par des tiers. La version symbolique, le langage assembleur du processeur , est également définie par le développeur, dans la plupart des cas. Certains jeux d'instructions de code machine couramment utilisés sont :

    Langages macro

    Langages macro de substitution textuelle

    Les langages macro transforment un fichier de code source en un autre. Une "macro" est essentiellement un texte court qui se développe en un texte plus long (à ne pas confondre avec les macros hygiéniques ), éventuellement avec une substitution de paramètres. Ils sont souvent utilisés pour prétraiter le code source. Les préprocesseurs peuvent également fournir des fonctionnalités telles que l'inclusion de fichiers .

    Les langages macro peuvent être limités à agir sur des régions de code spécialement étiquetées (préfixées par un #dans le cas du préprocesseur C). Alternativement, ils ne le peuvent pas, mais dans ce cas, il n'est toujours pas souhaitable (par exemple) d'étendre une macro intégrée dans un littéral de chaîne , ils ont donc toujours besoin d'une connaissance rudimentaire de la syntaxe. Cela étant, ils sont souvent encore applicables à plus d'une langue. Contraste avec les langages intégrables à la source comme PHP , qui sont entièrement fonctionnels.

    • cpp (le préprocesseur C)
    • m4 (à l'origine d'AT&T, fourni avec Unix)
    • ML/I (macro processeur à usage général)

    Langages de macros d'application

    Des langages de script tels que Tcl et ECMAScript ( ActionScript , ECMAScript pour XML , JavaScript , JScript ) ont été intégrés aux applications. Ceux-ci sont parfois appelés « langages macro », bien que dans un sens quelque peu différent des macros de substitution textuelle comme m4 .

    Langages de métaprogrammation

    La métaprogrammation est l'écriture de programmes qui écrivent ou manipulent d'autres programmes, y compris eux-mêmes, en tant que leurs données ou qui effectuent une partie du travail qui est autrement effectué au moment de l'exécution pendant la compilation . Dans de nombreux cas, cela permet aux programmeurs d'en faire plus dans le même temps qu'il leur faudrait pour écrire tout le code manuellement.

    Langages multiparadigmes

    Les langages multiparadigmes prennent en charge plus d'un paradigme de programmation . Ils permettent à un programme d'utiliser plusieurs styles de programmation . L'objectif est de permettre aux programmeurs d'utiliser le meilleur outil pour un travail, en admettant qu'aucun paradigme ne résout tous les problèmes de la manière la plus simple ou la plus efficace.

    • 1C : Langage de programmation d'entreprise (générique, impératif, orienté objet, basé sur des prototypes, fonctionnel)
    • Ada ( concurrent , distribué , générique ( métaprogrammation modèle ), impératif , orienté objet ( basé sur les classes ))
    • ALF ( fonctionnel , logique )
    • Alma-0 (contrainte, impératif, logique)
    • APL (fonctionnel, impératif, orienté objet (basé sur les classes))
    • BETA (fonctionnel, impératif, orienté objet (basé sur les classes))
    • C++ (générique, impératif, orienté objet (basé sur les classes), fonctionnel, métaprogrammation)
    • C# (générique, impératif, orienté objet (basé sur les classes), fonctionnel, déclaratif)
    • Ceylan (générique, impératif, orienté objet (class-based), fonctionnel, déclaratif)
    • ChucK (impératif, orienté objet, basé sur le temps, simultané, à la volée)
    • Cobra (générique, impératif, orienté objet (basé sur les classes), fonctionnel, contractuel)
    • Common Lisp (fonctionnel, impératif, orienté objet (basé sur les classes), orienté aspect (l'utilisateur peut ajouter d'autres paradigmes, par exemple, la logique))
    • Curl (fonctionnel, impératif, orienté objet (basé sur les classes), métaprogrammation)
    • Curry (concurrent, fonctionnel, logique)
    • D (générique, impératif, fonctionnel, orienté objet (basé sur les classes), métaprogrammation)
    • Delphi Object Pascal (générique, impératif, orienté objet (basé sur les classes), métaprogrammation)
    • Dylan (fonctionnel, orienté objet (basé sur les classes))
    • eC (générique, impératif, orienté objet (basé sur les classes))
    • ECMAScript (fonctionnel, impératif, orienté objet (basé sur des prototypes))
    • Eiffel (impératif, orienté objet (basé sur les classes), générique, fonctionnel (agents), concurrent (SCOOP))
    • F# (fonctionnel, générique, orienté objet (basé sur les classes), orienté langage)
    • Fantom (fonctionnel, orienté objet (basé sur les classes))
    • Go (impératif, procédural),
    • Groovy (fonctionnel, orienté objet (basé sur les classes), impératif, procédural)
    • Port
    • Sauter
    • J (fonctionnel, impératif, orienté objet (basé sur les classes))
    • Julia (impératif, dispatch multiple ("orienté objet"), fonctionnel, métaprogrammation)
    • LabVIEW ( flux de données , visuel )
    • Lava (orienté objet (basé sur les classes), visuel)
    • Lua (fonctionnel, impératif, orienté objet ( basé sur des prototypes ))
    • Mercure (fonctionnel, logique, orienté objet)
    • Protocoles de méta -objets (orientés objet (basés sur les classes, basés sur les prototypes))
    • Nemerle (fonctionnel, orienté objet (basé sur les classes), impératif, métaprogrammation)
    • Objective-C (impératif, orienté objet (basé sur les classes), réflexif)
    • OCaml (fonctionnel, impératif, orienté objet (basé sur les classes), modulaire)
    • Oz (fonctionnel (évaluation : avide , paresseux ), logique, contrainte , impératif, orienté objet (basé sur les classes), concurrent, distribué) et système de programmation Mozart multiplateforme Oz
    • Pascal Objet (impératif, orienté objet (basé sur les classes))
    • Perl (impératif, fonctionnel (ne peut pas être purement fonctionnel), orienté objet, orienté classe, orienté aspect (via des modules))
    • PHP (impératif, orienté objet, fonctionnel (ne peut pas être purement fonctionnel))
    • Pike (langage de programmation interprété, polyvalent, de haut niveau, multiplateforme et dynamique)
    • Prograph (dataflow, orienté objet (basé sur les classes), visuel)
    • Python (fonctionnel, compilé, interprété, orienté objet (basé sur les classes), impératif, métaprogrammation, extension, impur, mode interactif, itératif, réflexif, scripting)
    • R (tableau, interprété, impur, mode interactif, basé sur une liste, basé sur un prototype orienté objet, script)
    • Racket (fonctionnel, impératif, orienté objet (basé sur les classes) et extensible par l'utilisateur)
    • REBOL (fonctionnel, impératif, orienté objet (basé sur des prototypes), métaprogrammation (dialectée))
    • Rouge (fonctionnel, impératif, orienté objet (basé sur des prototypes), métaprogrammation (dialectée))
    • ROOP (impératif, logique, orienté objet (basé sur les classes), basé sur les règles)
    • Ruby (impératif, fonctionnel, orienté objet (basé sur les classes), métaprogrammation)
    • Rust (concurrent, fonctionnel, impératif, orienté objet, générique, métaprogrammation, compilé)
    • Scala (fonctionnel, orienté objet)
    • Seed7 (impératif, orienté objet, générique)
    • SISAL (concurrent, flux de données, fonctionnel)
    • Tableurs (fonctionnels, visuels)
    • Swift (orienté protocole, orienté objet, fonctionnel, impératif, structuré en blocs)
    • Tcl (fonctionnel, impératif, orienté objet (basé sur les classes))
      • Thé (fonctionnel, impératif, orienté objet (basé sur les classes))
    • Windows PowerShell (fonctionnel, impératif, pipeline, orienté objet (basé sur les classes))
    • Langage Wolfram

    Analyse numérique

    Plusieurs langages de programmation à usage général, tels que C et Python , sont également utilisés pour le calcul technique, cette liste se concentre sur les langages presque exclusivement utilisés pour le calcul technique.

    Langues non basées sur l'anglais

    Langages de classe orientés objet

    Les langages de programmation orientés objet basés sur les classes prennent en charge les objets définis par leur classe. Les définitions de classe incluent des données de membre. La transmission de messages est un concept clé (sinon le concept clé) dans les langages orientés objet.

    Les fonctions polymorphes paramétrées par la classe de certains de leurs arguments sont généralement appelées méthodes. Dans les langages à répartition unique , les classes incluent généralement également des définitions de méthodes. Dans les langages à répartition multiple , les méthodes sont définies par des fonctions génériques . Il y a des exceptions où les méthodes de répartition simples sont des fonctions génériques (par exemple le système d'objets de Bigloo ).

    Envoi multiple

    • Lisp commun
    • Cécile
    • Dylan
    • Julia (le concept d'"objet" n'est pas présent dans Julia, mais le langage permet une répartition multiple sur différents types au moment de l'exécution)

    Envoi unique

    Langages basés sur des prototypes orientés objet

    Les langages basés sur des prototypes sont des langages orientés objet où la distinction entre classes et instances a été supprimée :

    Langages de règles hors-jeu

    Les langages de règles hors-jeu désignent des blocs de code par leur indentation .

    Langages procéduraux

    Les langages de programmation procédurale sont basés sur le concept d'unité et de portée (la plage de visualisation des données) d'une instruction de code exécutable. Un programme procédural est composé d'une ou plusieurs unités ou modules, soit codés par l'utilisateur, soit fournis dans une bibliothèque de codes ; chaque module est composé d'une ou plusieurs procédures, également appelées fonction, routine, sous-routine ou méthode, selon le langage. Voici des exemples de langages procéduraux :

    Langages de requête

    Langage réflexif

    Les langages réfléchissants permettent aux programmes d'examiner et éventuellement de modifier leur structure de haut niveau au moment de l'exécution ou de la compilation. Ceci est plus courant dans les langages de programmation de machines virtuelles de haut niveau comme Smalltalk , et moins courant dans les langages de programmation de bas niveau comme C . Langages et plateformes d'aide à la réflexion :

    Langages basés sur des règles

    Les langages basés sur des règles instancient des règles lorsqu'ils sont activés par des conditions dans un ensemble de données. De toutes les activations possibles, un ensemble est sélectionné et les instructions appartenant à ces règles s'exécutent. Les langages basés sur des règles incluent :

    Langages de script

    « langage de script » a deux significations apparemment différentes, mais en fait similaires. Dans un sens traditionnel, les langages de script sont conçus pour automatiser les tâches fréquemment utilisées qui impliquent généralement d'appeler ou de transmettre des commandes à des programmes externes. De nombreux programmes d'application complexes fournissent des langages intégrés qui permettent aux utilisateurs d'automatiser les tâches. Ceux qui sont interprétatifs sont souvent appelés langages de script.

    Récemment, de nombreuses applications ont intégré des langages de script traditionnels, tels que Perl ou Visual Basic , mais il existe encore un certain nombre de langages de script natifs . De nombreux langages de script sont compilés en bytecode, puis ce bytecode (généralement) indépendant de la plate-forme est exécuté via une machine virtuelle (comparé à la machine virtuelle Java ).

    Langages basés sur la pile

    Les langages basés sur la pile sont un type de langage à structure de données basé sur la structure de données de la pile .

    Langues synchrones

    Les langages de programmation synchrone sont optimisés pour la programmation de systèmes réactifs, des systèmes souvent interrompus et devant réagir rapidement. Beaucoup de ces systèmes sont également appelés systèmes temps réel et sont souvent utilisés dans les systèmes embarqués .

    Exemples:

    Langues d'ombrage

    Un langage d'ombrage est un langage de programmation graphique adapté à la programmation d'effets de shader. De telles formes de langage se composent généralement de types de données spéciaux, comme "color" et "normal". En raison de la variété des marchés cibles pour l'infographie 3D.

    Rendu en temps réel

    Ils fournissent à la fois une abstraction matérielle plus élevée et un modèle de programmation plus flexible que les paradigmes précédents qui codent en dur les équations de transformation et d'ombrage. Cela donne au programmeur un meilleur contrôle sur le processus de rendu et fournit un contenu plus riche à moindre frais.

    Rendu hors ligne

    Les langages d'ombrage utilisés dans le rendu hors ligne produisent une qualité d'image maximale. Le traitement de ces shaders prend du temps. La puissance de calcul requise peut être coûteuse en raison de leur capacité à produire des résultats photoréalistes.

    Langages de gestion de la syntaxe

    Ces langages aident à générer des analyseurs lexicaux et parseurs pour grammaires sans contexte .

    Langues du système

    Les langages de programmation système sont destinés aux tâches de bas niveau comme la gestion de la mémoire ou la gestion des tâches. Un langage de programmation système fait généralement référence à un langage de programmation utilisé pour la programmation système ; ces langages sont conçus pour écrire des logiciels système, ce qui nécessite généralement des approches de développement différentes par rapport aux logiciels d'application.

    Le logiciel système est un logiciel conçu pour faire fonctionner et contrôler le matériel informatique et pour fournir une plate-forme pour l'exécution du logiciel d'application. Le logiciel système comprend des catégories de logiciels telles que les systèmes d'exploitation, les logiciels utilitaires, les pilotes de périphérique, les compilateurs et les éditeurs de liens. Voici des exemples de langages système :

    Langue Auteur Première apparition Influencé par Utilisé pour
    ESPOL Société Burroughs 1961 ALGOL 60 MCP
    PL/I IBM , PARTAGEZ 1964 ALGOL 60, FORTRAN, quelques COBOL Multics
    PL360 Niklaus Wirth 1968 ALGOL 60 ALGOL W
    C Dennis Ritchie 1969 BCPL La plupart des noyaux de système d'exploitation , y compris Windows NT et la plupart des systèmes de type Unix
    PL/S IBM 196x PL/I OS/360
    BONHEUR L'université de Carnegie Mellon 1970 ALGOL-PL/I VMS (parties)
    PL/8 IBM 197x PL/I AIX
    PL/MP et PL/MI IBM 197x PL/I CPF , OS/400
    PL-6 Honeywell, Inc. 197x PL/I CP-6
    SYMPL CDC 197x JOVIAL Sous-systèmes NOS , la plupart des compilateurs, éditeur FSE
    C++ Bjarne Stroustrup 1979 C , simulation Voir les applications C++
    Ada Jean Ichbiah , S. Tucker Taft 1983 ALGOL 68 , Pascal , C++ , Java , Eiffel Systèmes embarqués, noyaux d'OS, compilateurs, jeux, simulations, CubeSat , contrôle du trafic aérien et avionique
    Mars numérique 2001 C++ Plusieurs domaines
    Nim Andreas Rumpf 2008 Ada , Modula-3 , Lisp , C++ , Pascal Objet , Python , Oberon Noyaux d'OS, compilateurs, jeux
    Rouiller Recherche Mozilla 2010 C++ , Haskell , Erlang , Ruby Moteur de mise en page servo , Redox OS
    Rapide Apple Inc. 2014 C , Objectif-C , Rouille macOS , développement d'applications iOS
    Zig Andrew Kelley 2016 C , C++ , LLVM IR , Go , Rust , JavaScript En remplacement de C

    Langages de transformation

    Langages visuels

    Les langages de programmation visuels permettent aux utilisateurs de spécifier des programmes de manière bidimensionnelle (ou plus) au lieu de chaînes de texte unidimensionnelles, via des mises en page graphiques de différents types. Certains langages de programmation de flux de données sont également des langages visuels.

    Langues avec

    L'informaticien Niklaus Wirth a conçu et mis en œuvre plusieurs langages influents.

    Langages basés sur XML

    Ce sont des langages basés sur ou qui fonctionnent sur XML .

    Voir également

    Remarques

    Les références