Quels autres langages de programmation en dehors de Python et du prédécesseur utilisent-ils l'indentation pour définir des blocs de code? [fermé]

12

Python utilise assez bien l'indentation pour définir syntaxiquement des blocs de code. (Voir les instructions composées dans la référence du langage Python). Après des années d'utilisation de Python, je suis toujours intrigué et très friand de cette fonctionnalité de syntaxe.

Mais je me demande: à part Python et son langage "prédécesseur" (*) ABC, quels autres langages de programmation utilisent-ils l'indentation pour la définition des blocs de code ? Les blocs de code signifient ici «plusieurs instructions qui d'une certaine manière sont traitées comme un seul composant».

Je suis particulièrement intéressé par les langages de programmation pratiques , mais les langages ésotériques méritent également d'être mentionnés.


(*): " Prédécesseur " est mon choix de mot à défaut d'en connaître ici un meilleur. Guido van Rossum, le créateur de Python, a décrit la relation entre Python et ABC concernant l'indentation dans une interview comme celle-ci: " Le choix de l'indentation pour le regroupement n'était pas un concept nouveau en Python; j'ai hérité de ABC. "

halloleo
la source
15
Je ne pense pas que "donnez-moi s'il vous plaît une liste de langages de programmation avec la fonction X" soit une question informatique.
David Richerby
2
Eh bien, il y a le langage Whitespace lui-même qui nécessite une indentation appropriée pour sa principale méthode d'expression.
penguin359
1
YAML de forme longue mérite probablement d'être mentionné même s'il ne s'agit pas d'un langage de programmation au sens strict, car c'est probablement l'un des prochains langages les plus susceptibles avec cette fonctionnalité que quelqu'un rencontrera après Python.
Austin Hemmelgarn
1
@ penguin359 J'ai aussi pensé à Whitespace. Ce n'est pas une réponse à la question parce que l'indentation n'est pas utilisée pour définir des blocs; mais c'est certainement la langue dans laquelle l'espace blanc est le plus important dans l'ensemble.
Peter - Réintègre Monica
1
@DavidRicherby Le regroupement par attribut (c.-à-d. La catégorisation) fait définitivement partie de la science: par exemple, une question intéressante pour un échange de pile de biologie pourrait être: " Quels autres animaux marchent sur deux jambes? " Par conséquent, je considère la question ci-dessus très appropriée pour l'informatique StackExchange .
halloleo

Réponses:

23

Wikipedia a une longue liste de langues qui utilisent la règle du hors-jeu 1 :

  • abc
  • Huer
  • BuddyScript
  • Cobra
  • CoffeeScript
  • Converger
  • Curry
  • Elixir ( , do:blocs)
  • Orme
  • F # (si #light "off"non spécifié)
  • Génie
  • Haskell (uniquement pour where, let, do, ou case ... ofclauses lorsque les accolades sont omis)
  • Informer 7
  • ISWIM, le langage abstrait qui a introduit la règle
  • LiveScript
  • Miranda
  • Nemerle
  • Nim
  • occam
  • PROMAL
  • Python
  • Schéma, lors de l'utilisation, par exemple SRFI 119
  • Tourner
  • XL

1: Je n'ai jamais entendu ce terme avant moi.

Bergi
la source
2
La règle du hors-jeu est une découverte passionnante!
halloleo
3
Je ne sais pas si c'est une langue telle que vous ou wikipedia la comprenez, mais les Makefiles utilisent également l'indentation.
TheWildHealer
@TheWildHealer L'article wikipedia a également une section avec des langages non-programmation (y compris des trucs comme Make, YAML, RST). Je n'ai pas cité cela parce que OP a posé des questions sur les langages de programmation.
Bergi
Vous avez raison, la prochaine fois je serai sûr d'ouvrir les yeux, merci.
TheWildHealer
10

Il y a: Elm , Haskell , son prédécesseur Miranda et son prédécesseur ISWIM , YAML où les espaces sont cruciaux pour la syntaxe et les onglets sont interdits, OCCAM , scénario café et Cokescript les deux sont à la langue compilateurs de langage avec JavaScript comme cible et ésotériques espaces blancs .

Il y a aussi Agda - prouveur de théorème interactif, ce qui n'est probablement pas ce que vous aviez en tête, mais son lexer est très sensible aux espaces blancs.
Makefile , qui rassemble des cibles avec des intentions basées sur des onglets.

Mal
la source
1
Miranda aussi, la langue sur laquelle Haskell était basé.
gen
1
Agda a une syntaxe très similaire à Haskell, et est sensible à la fois à l'indentation et aux espaces: (x-y)ne l'est pas (x - y)) même si elle n'est pas suffisamment "pratique" pour l'OP.
chi
1
Aussi, CoffeeScript et le CokeScript à peine connu
Bergi
5
Si YAML compte, alors je suppose que les Makefiles doivent aussi
Izkata
1
Il existe également PureScript .
duplode
4

Faites correspondre votre description, même si ce n'est probablement pas tout à fait ce que vous avez en tête, avec sa syntaxe et sa puissance limitées.

Il indique tristement ses blocs de code ( recettes ) avec une forme particulière d'espace: un caractère de tabulation. D'autres moyens sont disponibles (par exemple, GNU Make prend en charge l'utilisation d'un autre caractère ), mais rarement utilisés dans la pratique.

Un autre exemple planant au bord est les playbooks Ansible . Ils sont spécifiés dans YAML , qui dépend fortement de l'indentation. YAML n'est pas un langage de programmation, mais les playbooks Ansible peuvent être considérés comme des programmes spécifiques au domaine.

reinierpost
la source