Présentation de BLISS
BLISS est un langage de programmation système développé à l'université Carnegie Mellon (CMU) par W. A. Wulf, D. B. Russell et A. N. Habermann vers 1970. Il a été peut-être le langage de système le plus connu jusqu'à l'apparition de C quelques années plus tard.
Fonctionnement et architecture de BLISS
BLISS est un langage de programmation sans type, structuré en blocs, basé sur des expressions plutôt que des instructions. Il inclut des constructions pour la gestion d'exceptions, les coroutines et les macros. Il ne comporte pas d'instruction goto. Les constantes sont des mots complets pour la machine utilisée, par exemple 16 bits sur une machine 16 bits comme le PDP-11.
Q = (IF .Z GTR 0 THEN .Z ELSE -.Z);
Les références à des variables sont toujours interprétées comme l'adresse de la variable. L'affectation est faite avec le symbole =, par exemple Z=8.
Caractéristiques et dialectes de BLISS
BLISS a de nombreuses caractéristiques des langages de haut niveau modernes, telles que la structure en blocs, la pile automatique et les mécanismes pour définir et appeler des routines récursives. Il prend en charge les tableaux, appelés structures, et déclarés avec le mot-clé VECTOR. Le langage prend également en charge des constructions de langage de programmation de haut niveau telles que les chemins d'exécution alternatifs via l'expression CASE, la boucle à l'aide de l'expression INCR, les fonctions de chaîne intégrées et les conversions de données automatiques.
Implémentation et utilisation de BLISS
Le compilateur original de Carnegie Mellon était notable pour son utilisation extensive des optimisations et a formé la base du livre classique The Design of an Optimizing Compiler. Digital Equipment Corporation (DEC) a développé et maintenu des compilateurs BLISS pour les plateformes PDP-10, PDP-11, VAX, DEC PRISM, MIPS, DEC Alpha et Intel IA-32. Le compilateur BLISS de DEC a été porté sur les architectures IA-64 et x86-64 dans le cadre des ports d'OpenVMS sur ces plateformes. Le compilateur BLISS x86-64 utilise LLVM comme générateur de code backend, remplaçant le backend propriétaire GEM utilisé pour Alpha et IA-64.