Un langage de programmation exotique est un langage de programmation imaginé comme un test des limites de la création de langages de programmation, un exercice intellectuel ou encore une blague, sans aucune intention de créer un langage réellement utile. De tels langages sont souvent un passe-temps pour les hackers ou les programmeurs. L'adjectif « exotique » permet de distinguer ces langages de ceux communément utilisés dans l'industrie.
La facilité d'utilisation est rarement une priorité pour ces langages, le but étant généralement de supprimer ou de remplacer les fonctionnalités tout en maintenant le langage Turing-complet. En rendant particulièrement compliquée la lecture de tels programmes, les créateurs de tels langages en font peut-être le pendant informatique de la poésie du non-sens.
Le premier langage exotique fut INTERCAL, créé en 1972 par James Lyons et Don Woods, avec l'intention de créer un langage différent de tout ce qu'ils connaissaient.
Plus de vingt ans plus tard, en 1993, Urban Müller inventa Brainfuck, un langage à huit instructions, et Chris Pressey créa Befunge. Ces deux langages font partie des langages exotiques les plus suivis. Sans surprise, tous deux sont grandement mis en valeur par le fait qu'ils furent les premiers de leur genre tout en étant élégants.
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).
La Turing-complétude est un des thèmes favoris de la communauté. Elle est loin d'être évidente pour tous les langages, et les démonstrations sont souvent complexes. De nouveaux langages apparaissent continuellement, et la preuve de leur Turing-complétude est un défi.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for rea
This advanced undergraduate programming course covers the principles of functional programming using Scala, including the use of functions as values, recursion, immutability, pattern matching, higher-
Offre un cours de crash en MATLAB, couvrant la représentation des données, l'indexation des tableaux, les opérations mathématiques, et les pièges communs.
Explore les défis des références nulles dans les langages de programmation et propose des solutions pour atténuer leurs inconvénients tout en assurant la compatibilité avec les bases de code existantes.
Introduit des enregistrements, des variantes, des règles d'évaluation, des règles de dactylographie, des défis d'aliasing et des avantages dans les langages de programmation.
Students learn several implementation techniques for modern functional and object-oriented programming languages. They put some of them into practice by developing key parts of a compiler and run time
The AI for Chemistry course will focus on teaching students how to use machine learning algorithms and techniques to analyze and make predictions about chemical data. The course will cover topics such
The students will acquire a solid knowledge on the processes necessary to design, write and use scientific software. Software design techniques will be used to program a multi-usage particles code, ai
INTERCAL est une parodie de langage de programmation, et la référence canonique des langages de programmation exotiques. Ce langage a été créé par Don Woods et , deux étudiants de l'Université de Princeton, en 1972. Il tourne en dérision certains aspects des langages de programmation de l'époque, ainsi que la prolifération des propositions de construction de langage et de notation dans les . En conséquence, son humour peut paraître plutôt désuet pour des lecteurs modernes ayant grandi avec le C ou le Java.
Malbolge est un langage de programmation dans le domaine public inventé par Ben Olmstead en 1998, nommé d'après le huitième cercle de l'Enfer dans la Divine Comédie de Dante, le Malebolge. 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. Malbolge était si difficile à comprendre quand il est arrivé qu'il a fallu deux ans au premier programme Malbolge pour apparaître.
Brainfuck est un langage de programmation exotique, inventé par Urban Müller en 1993. Il tire son nom de l’union de deux mots anglais, brain (« cerveau ») et fuck (« niquer »), et joue sur les mots, puisque ce langage est volontairement simpliste, et parce que l'expression Brain Fuck évoque, en argot, ce qui met le cerveau dans un état de confusion par sa complexité apparente. Ce vocabulaire peu flatteur lui a d'ailleurs valu d'être écrit sous d'autres orthographes plus prudes, telles que Brainfck, Brainf** ou encore BF.
Data races have long been a notorious problem in concurrent programming. They are subtle to detect, and lead to non-deterministic behaviours. There has been a lot of interest in type systems that statically guarantee data race freedom. Significant progress ...
2024
Type systems are a device for verifying properties of programs without running them. Many programming languages used in the industry have always had a type system, while others were initially created without a type system and later adopted one, when the ad ...
EPFL2024
,
While software applications, programming languages, and hardware have changed, operating systems have not. Widely-used commodity operating systems are still modeled after the ones designed in the seventies. The accumulated burden of backward compatibility ...