title: Principe de Huffman
text: # Principe de Huffman
  
  En informatique, le principe de Huffman est une règle informelle souvent invoquée par Larry Wall, le concepteur du langage Perl, pour concevoir les constructions syntaxiques d'un langage informatique et pour écrire des programmes en un langage informatique donné.
  
  Le but du principe de Huffman est d'écrire des programmes concis. Son domaine d'application n'est pas spécifique à Perl, mais peu de concepteurs de langages ont prêté autant d'attention que Larry Wall aux propriétés souhaitables de la syntaxe concrète d'un langage.
  
  Le principe de Huffman fait référence au principe qui sous-tend le codage de Huffman et d'autres algorithmes de compression de données : l'encodage d'un symbole souvent utilisé doit être plus court que celui d'un symbole moins utilisé.
  
  ## Le principe de Huffman dans la conception d'un langage
  
  Le concepteur d'un langage doit identifier ou créer des structures de contrôle et de données qui seront les plus utilisées et proposer une syntaxe concrète concise et distinctive pour celles-ci. Cela évite au programmeur d'utiliser des abstractions de bas niveau. La concision permet aussi de rendre visibles des similarités entre les instructions ou les expressions consécutives dans un programme et d'en rendre la lecture voire la factorisation plus facile. Autrement, ces régularités auraient été cachées par la verbosité d'abstractions de bas niveau.
  
  Ainsi Perl 6 propose des hyperopérateurs qui opèrent sur tous les éléments d'un tableau, ou un switch qui opère sur des données composites. De même, les langages fonctionnels typés modernes, comme Haskell ou Ocaml, proposent des types algébriques de données et le filtrage par motif qui permettent de créer des structures de données composites et de les modifier.
  
  Finalement, avec du code plus concis, le programmeur peut voir plus de code sur son écran, et moins faire appel à sa mémoire ou éviter de faire défiler du code continuellement sur son écran pour rechercher de l'information. L'inconvénient est un langage plus complexe dont l'apprentissage est plus long.
  
  ## Le principe de Huffman dans l'écriture d'un programme
  
  Dans un programme, un identificateur doit être d'autant plus court qu'il est souvent utilisé dans sa portée. Conformément au principe de code comme commentaire, on peut d'abord donner un nom explicite au dit identificateur et l'aliaser en son nom court.
  
  ## Parallèle avec l'évolution des langages naturels
  
  L'étude diachronique des langages naturels montre que leurs constituants les plus utilisés se conforment au principe de Huffman ou y tendent au cours du temps. Ainsi, les pronoms et particules sont généralement très utilisés et sont aussi très courts. Dans des langages non contraints par le corset d'académies normatives, ce mécanisme s'effectue tout naturellement, particulièrement à l'oral. Ainsi, dans un cours de langue, un enseignant anglophone pourra remplacer le mot souvent utilisé de « vocabulary » par son raccourci « vocab ». L'usage de sigles et d'acronymes est aussi une conséquence du principe de Huffman.
  
  