Uniligne

Uniligne

Un uniligne est généralement un programme informatique jetable, mais peu banal, écrit pour une tâche ponctuelle en un langage de script tel que Perl ou Ruby, et tenant sur une seule ligne. Des langages qui imposent plusieurs phases avant l'exécution, la déclaration explicite de variables, de fonctions ou, pire, de classes, ne se prêtent pas aux unilignes. Les unilignes exploitent typiquement les qualités DWIM (Do What I Mean) d'un langage.

Parce qu'un uniligne est rarement destiné à être réutilisé, les considérations de lisibilité par un tiers sont secondaires. Certains unilignes sont des assombrissements délibérés.

Sommaire

Historique

Le mot est apparu pour la première fois dans le livre de Alfred V. Aho, Peter J. Weinberger et Brian W. Kernighan, The AWK Programming Language. Ce livre a pour sujet le langage Awk, utilisé dans le système d'exploitation Unix. Les auteurs expliquent comment leur travail quotidien sur Unix fut à l'origine de ce paradigme : “La version de 1977 d'[Unix] possédait très peu de variables internes et de fonctions prédéfinies. Elle est conçue pour écrire des programmes courts […] Notre modèle était qu'un appel de fonction serait long d'une ou deux lignes, exécutées sitôt tapées. […] Nous, en tant qu'auteurs, « savions » comment le langage était censé être utilisé, et c'est pour cela que nous n'écrivions que des unilignes.”

Exemples

En AWK

Le livre The AWK Programming Language contient plus de vingt exemples à la fin du premier chapitre.

Voici les premiers :

1. Afficher le nombre total de lignes lues en entrée :
END { print NR }
2. Afficher la dixième ligne d'un fichier :
NR == 10
3. Afficher le dernier champ de chaque ligne :
{ print $NF }

En Perl

Inverser tous les octets d'un fichier (en Perl) :

perl -0777e 'print scalar reverse <>' nomFichier

Les unilignes sont également utilisés pour démontrer l'expressivité de certains langages de programmation. Ils servent souvent à démontrer le talent du programmeur, et de nombreux concours sont organisés pour savoir qui fera le plus exceptionnel.

En C

Voici un exemple en C, lauréat du concours IOCCC.

main(int c,char**v){return!m(v[1],v[2]);}m(char*s,char*t){return*t-42?*s?63==*t|*s==*t&&m(s+1,t+1):!*t:m(s,t+1)||*s&&m(s+1,t);}

Ce programme permet de vérifier si une chaîne de caractères correspond à un motif, avec les conventions Unix : * pour une suite de caractères quelconques de longueur quelconque, ? pour un seul caractère… Le code de retour est 0 pour vrai et 1 sinon. À noter que la correspondance motif se fait sur toute la chaîne, et non sur un sous-ensemble de celle-ci. Exemples d'exécution :

$ prog foo 'f??'; echo $?                          → renvoie 0 (correspondance)
$ prog 'chaine quelconque' '??ai*e**n?*'; echo $?  → renvoie 0 (correspondance)
$ prog 'chaine quelconque' 'ch*o?'; echo $?        → renvoie 1 (non-correspondance)

En Haskell

Il y a deux déclarations import ce qui porte en réalité le nombre de lignes du programme à trois. Cet uniligne trie les lignes qu'il prend en entrée selon l'ordre lexicographique du code ASCII.

import IO
import List
main = (mapM_ putStrLn . sort . lines) =<< getContents

En Java

Hello world en Java :

public class OneLine { public static void main(String[] args) { System.out.println("One-liner."); } }

En Tcl-Tk

Calcul de la factorielle :

proc ! x {expr {$x<2? 1: $x*[! [incr x -1]]}}

Voir aussi

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Uniligne de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • uniligne — ● uniligne adjectif Matrice uniligne, matrice de type (1, p). ● uniligne (expressions) adjectif Matrice uniligne, matrice de type (1, p). ● uniligne (synonymes) adjectif …   Encyclopédie Universelle

  • uniligne — ● n. m. ►PERL Traduction proposée pour one liner. D autres possibilités existent come monoligne . À vous de voir …   Dictionnaire d'informatique francophone

  • Matrice uniligne — ● Matrice uniligne matrice de type (1, p) …   Encyclopédie Universelle

  • matrice uniligne — vieneilė matrica statusas T sritis fizika atitikmenys: angl. row matrix; single row matrix vok. Zeilenmatrix, f rus. матрица строчка, f; однострочная матрица, f pranc. matrice à une ligne, f; matrice ligne, f; matrice uniligne, f …   Fizikos terminų žodynas

  • Perl6 — Perl 6 Apparu en Spécification : 2001 2009, mise en œuvre partielle par NQP Auteur Larry Wall …   Wikipédia en Français

  • Perl 6 — Apparu en Spécification : 2001 2011, mise en œuvre partielle par Rakudo Star Auteur …   Wikipédia en Français

  • Zeilenmatrix — vieneilė matrica statusas T sritis fizika atitikmenys: angl. row matrix; single row matrix vok. Zeilenmatrix, f rus. матрица строчка, f; однострочная матрица, f pranc. matrice à une ligne, f; matrice ligne, f; matrice uniligne, f …   Fizikos terminų žodynas

  • matrice ligne — vieneilė matrica statusas T sritis fizika atitikmenys: angl. row matrix; single row matrix vok. Zeilenmatrix, f rus. матрица строчка, f; однострочная матрица, f pranc. matrice à une ligne, f; matrice ligne, f; matrice uniligne, f …   Fizikos terminų žodynas

  • matrice à une ligne — vieneilė matrica statusas T sritis fizika atitikmenys: angl. row matrix; single row matrix vok. Zeilenmatrix, f rus. матрица строчка, f; однострочная матрица, f pranc. matrice à une ligne, f; matrice ligne, f; matrice uniligne, f …   Fizikos terminų žodynas

  • row matrix — vieneilė matrica statusas T sritis fizika atitikmenys: angl. row matrix; single row matrix vok. Zeilenmatrix, f rus. матрица строчка, f; однострочная матрица, f pranc. matrice à une ligne, f; matrice ligne, f; matrice uniligne, f …   Fizikos terminų žodynas

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”