L’expression du vide dans les langages de programmation

Bonjour. Je suis un chercheur du CNRS, ou d’un quelconque organisme du même drapeau. Je travaille sur la théorie du langage, la théorie des types, et autres acabits. Je suis très généreux de mes émoluments intellectuels, et ai à cœur de les partager avec le monde entier. Voici un article totalement inutile, donc indispensable, que j’ai écrit pour la revue scientifique « Geekatorial considerations & Neuronal branling ».

Moi au CNRS, lors d'une recherche documentaire

Moi au CNRS, lors d’une recherche documentaire

Qu’appelle-je l’expression du vide ?

Afin de répondre à cette question,  je vous propose de répondre à la question inverse. Que n’appelle-je-pas l’expression du vide ?

D’aucuns feront la remarque que répondre à une question inverse ne répond pas DU TOUT à la question initiale. Je m’en fous, je suis un théoricien du langage, je fais ce que je veux, c’est quand même pas vous qu’allez m’apprendre mon métier, non mais merde quoi, je suis du CNRS, j’ai fait des études moi, je diplômes. Donc aux aucuns qui font cette remarque, je réponds : « restez aucuns, et ne devenez pas quelqu’uns, vous êtes le vide. »

Bien.

Exemples de ce que n’est pas l’expression du vide dans un langage de programmation :

  • Une variable numérique contenant la valeur 0
  • Une variable booléenne contenant la valeur False
  • Une chaîne de caractère vide
  • Un tableau ou une liste contenant 0 élément

Pourquoi cela ? Parce que ces variables ont des types spécifiques, ce qui exprime déjà quelque chose. Si votre variable numérique est censée représenter une quantité de carottes, la valeur 0 exprime : « Ici, il n’y a pas de carottes ». Ce n’est pas tout à fait la même chose que d’exprimer « Ici, il n’y a rien ». Dans « il n’y a pas de carottes », on sous-entend qu’il pourrait y en avoir. Et c’est déjà l’expression de quelque chose de particulier. Donc l’expression de pas-de-vide.

Votre booléen exprime qu’une certaine proposition est vraie ou fausse. Il n’y a donc pas rien, puisqu’il y a une proposition, peu importe laquelle. Votre chaîne de caractère vide exprime « il n’y a pas de texte ». Mais il y a une chaîne de caractères. Votre tableau vide exprime : « il n’y a pas d’éléments dans ce tableau ». Mais il y a un tableau. Etc.

Dans : « Ici, il n’y a rien », le seul sous-entendu, c’est « Ici, il pourrait y avoir quelque chose ». Oui mais quoi ? On ne sait pas. N’importe quoi. Le premier bidule qui se présente. Et le contraire du premier bidule qui se présente, c’est bien « rien du tout ». Donc « Ici, il n’y a rien » est bien l’expression du vide. Voili voilà.

On admet donc comme prédicat que l’expression du vide ne peut pas être une valeur spécifique d’une variable ayant un type défini.

Des fois y’aura besoin de décocher ce prédicat, on verra ça le moment venu.

Mais encore ?

L’expression du vide n’est pas un commentaire dans le code. Du point de vue de la machine, les commentaires sont totalement ignorés. C’est « parler pour ne rien dire ». Ce n’est pas « parler pour dire qu’il n’y a rien ici ».

Raymond Devos : "Quand j'ai rien à dire, je veux qu'on le sache"

Raymond Devos : « quand je n’ai rien à dire, je veux qu’on le sache »

L’expression du vide n’est pas non plus le vide lui-même. Le vide, ce serait un fichier de code vide, ou plus localement, une ligne vide dans un fichier de code, ou encore plus localement, des espaces à la fin d’une ligne de code.

Le vide c’est « ne pas parler ». Ce n’est pas « parler pour dire qu’il n’y a rien ici ».

Mais assez parlé dans le vide, et voyons quelles sont les possibilités d’exprimer le vide.

Le mot-clé void

« void » est utilisé dans les langages de programmation de bourgeois, tel que le C, le C++, le Java … C’est le nom d’un type. Au même titre que int est un nom de type pour une variable numérique. Sauf que void est un type avec rien dedans. Pas de valeur, que d’alle.

Dans ces langages, les fonctions renvoient toujours quelque chose. Lorsqu’elles ne renvoient rien, elles renvoient une variable de type void. On aurait pu appeler ce genre de fonction des procédures, comme dans le langage Pascal, mais les inventeurs du C sont des bourgeois marrants.

On a donc bien ici une expression de vide : Ici [à l’endroit où on pourrait récupérer une donnée renvoyée par une fonction], il n’y a rien ». Qu’est-ce qu’il pourrait y avoir à la place ? On ne sait pas, puisqu’on a dit que le type lui-même était le vide. Si on veut mettre autre chose, ça pourrait être tout et n’importe quoi.

Dakkath le kilrathi : "The void ! the void !"

Dakkath le kilrathi : « The void ! the void ! »

On peut également utiliser « void » pour déclarer un pointeur vers un truc qu’on sait pas ce que c’est.

void *p = &quelqueChose;

Mais cet exemple n’est pas une expression de vide, puisque le pointeur pointe sur quelque chose. De quel type ce quelque chose est ? On sait pas. C’est le type vide. Certes. Mais « ici, il y a bien quelque chose ».

Fun fact : le pointeur « void * » est le seul moyen, en C, d’obtenir l’adresse mémoire d’une fonction.

int fonction_a_la_con() {
    return 69; 
}
void *pointeur_fonction = &fonction_a_la_con; 
// exécution de la fonction pointée par le pointeur.
// Un pointeur sachant pointer...
(*pointeur_fonction)();

On aurait pu imaginer l’existence d’un type spécifique, définissant une fonction. Quelque chose comme func. Et on aurait écrit :

func *pointeur_fonction = &fonction_a_la_con;

Mais non, on n’a pas ce genre de chose. Pourquoi ? Parce que le C est un langage de bourgeois, tout simplement.

Edit 2013-10-01 : Je me suis un peu trompé concernant les pointeurs de fonction en C. Voir le commentaire de mon ami Pudbou.

On n’en a pas fini avec les pointeurs « void * ». Y’aura une surprise un peu plus loin.

Et sinon, en javascript, il existe carrément la fonction void(). C’est une fonction qui ne fait rien, à part évaluer les arguments qu’on lui passe, ou quelque chose de ce genre. J’ai pas tout compris. En javascript, je suis pas champion. Mais on voit cette fonction dans certains sites web. Passez votre curseur de souris sur un lien un peu bizarre et vous verrez, dans la barre d’état de votre navigateur, le texte sybillin : « javascript:void() ». Merci gentil navigateur, tout le monde s’en fout.

Plus de blabla sur void dans l’inévitable (de chevet) lien kiwi-pédé (http:// fr.wikipedia.org/wiki/Void).

le mot-clé NULL

Toujours dans les langages de bourgeois, le mot-clé NULL est une valeur spécifique qu’on peut attribuer à un pointeur, pour dire qu’il ne pointe sur rien.

int *a = NULL;

Mais cette exemple n’est pas une expression de vide. « Ici, il n’y a rien ». Certes. Mais si y’avait quelque chose, on aurait quoi ? Un entier. On a explicitement précisé ce qu’on pourrait avoir à la place du vide.

Vous pensez à ce que pense ?

Oui ! Une levrette !!!

Mais non bande de petits cochons. Et si on combinait les deux ?

void *p = NULL;

Surprise !!! Voici l’expression du vide dans son excellence. « Ici, il n’y a rien. Ce qu’on pourrait avoir à la place, c’est tout et n’importe quoi. »

Dirigeons-nous maintenant vers un autre langage. Un qu’est pas pour les bourgeois. Un qu’est pour les anarcho-patchworkistes : le PHP.

Eh bien figurez-vous qu’en PHP, toutes les variables valent initialement NULL. Même celles qu’on n’a pas définies. Il s’agit d’une confusion entre l’expression du vide et l’indéfini. « Il n’y a rien ici » s’énonce de la même manière que : « je n’ai encore rien dit à propos de ici ». Je trouve cela étrange, voire carrément stupide.

Re kiwi-pédé (http:// fr.wikipedia.org/wiki/NULL).

D’autre part, dans ce joyeux langage de petits enfants innocents qu’est le Pascal, NULL se dit « nil », mais on l’utilise de la même manière que le NULL du C. Dans d’autres langages que je ne connais pas, on dit « null », en minuscunulles.

Les égyptiens codent en Pascal, car ils ont le Nil

Les égyptiens codent en Pascal, car ils ont le Nil

L’expression du vide dans les systèmes de fichiers

Un système de fichier n’est pas vraiment un langage de programmation. Mais ce que je vous propose ici est un petit paragraphe interludaire.

Un terre-lude ?

Dans un système de fichier, l’expression du vide, c’est tout simplement un fichier vide. 0 octets. Paf. Mais il y a plus rigolo. Il existe le « trou noir », qui absorbe tout ce qui s’en approche.

Le trou noir est un fichier symbolique, c’est à dire un truc qui se comporte plus ou moins comme un fichier, mais qui, physiquement, ne stocke pas d’octets sur le disque dur. Le trou noir fait disparaître tout ce qu’on écrit dedans. Il sert à balancer à la poubelle du blabla de sortie (standard ou erreur) dont on n’aurait rien à foutre.

Dans le monde Unix, ce fichier est situé à l’emplacement /dev/null. Chez Windows, il s’appelle plus simplement NUL.

En guise de dernier soubresaut interludaire, je mentionnerais le fichier Windows CON, permettant de rediriger du blabla de sortie vers la console. Alors, votre Windows, il est NUL ou il est CON ? Ha ha ha.

Le Perl

Perl, au même titre que le PHP, est un langage de programmation pour anarcho-patchworkistes. Mais à tendance hyéroglyphoïdale.

Perl = langage pour faire caca des perles

Perl = langage pour faire caca des perles

Dans ce langage, point de null ni de void, mais la possibilité d’indéfinir des variables. Ça donne quelque chose de ce style :

$a = undef;
#ou bien :
undef($a);
if (defined $a) { ... }

Et ça peut permettre de virer les éléments d’un tableau. (Ou pas, car y’a aussi l’instruction « delete » pour ça). Enfin j’y connais rien, et je m’en fous total du Perl. C’est un langage moche et incompréhensible.

On y retrouve, à priori, la même confusion entre le vide et l’indéfini. D’où le côté anarcho-patchworkiste.

Le Lisp :

Il s’agit d’un langage d’une étrange pureté. Mon collègue penseur, l’éminent geekologue Randall Munroe, de l’université blogalienne de xkcd, nous précise collégialement que ce pourrait être le langage qu’a utilisé Dieu pour coder le monde réel (http:// xkcd.com/224/). Ce n’est pas mon avis, mais ce n’est pas le sujet.

LISP signifie LISt Processing : la plupart des actions se font donc avec des listes. La valeur booléenne True s’écrit simplement « T ». La valeur False s’écrit « NIL ». Sauf que NIL signifie également : « une liste vide ».

L’opérateur « null » permet de savoir si quelque chose est NIL ou pas. (null A) renvoie T si A est vide, et renvoie NIL si A n’est pas vide.

Le Lisp comporte également l’ultra-classique opérateur « not » (inversion d’un booléen). (not A) renvoie T si A est faux, et renvoie NIL si A n’est pas faux.

C'est pas faux.

C’est pas faux.

Or, comme « liste vide » = « faux », on s’aperçoit que les opérateurs « null » et « not » effectuent exactement la même chose. C’est pas rigolo ça ? Dans le moteur d’interprétation du Lisp, ça pointe sur le même code. Moi je trouve ça super.

D’autre part, nous avons ici un contre-exemple de ce que je disais au début. L’expression du vide se fait par le biais d’une valeur spécifique d’une variable ayant un type spécifique.

Interlude : Ø

Le langage mathématique est presque un langage de programmation, bien qu’il manipule des valeurs sorties de mon cul, tel que Pi ou e. Il possède lui aussi son expression du vide. Il s’agit de l’ensemble vide : Ø. Un O barré.

L’origine de ce symbole nous vient de la Grèce antique (à l’époque où le pays avait encore de l’argent). Il représente le cul cousu de Pythagore, qui refusait de se faire enculer par ses amis. Pourtant ils étaient grecs.

Et puisqu’on parle de cul et que c’est interlude :

Et sinon, dans les langages de programmation qui veulent simuler des trucs de matheux, on trouve la valeur NaN (Not A Number). C’est pas tout à fait le vide, puisque c’est « du vide qui aurait pu être un nombre », mais c’est fun quand même. Pour l’obtenir, rien de plus simple : une bonne vieille division par 0 de la mort.

Nan-Nan-Nan-nanère (http:// fr.wikipedia.org/wiki/NaN)

Visual Basic

Je l’ai déjà dit dans une autre vie (vous étiez pas encore là) : le Visual Basic est à la programmation ce que la vulvovaginite est à la sexualité : un truc vraiment sale.

Ce fabuleux langage posède une foultitude de mots rigolos. Ça ne sert pas à grand chose, mais qu’est-ce qu’on s’amuse !

Nothing est l’expression du vide, mais seulement pour les variables objet. (Donc pas totalement une expression de vide). À noter qu’on ne peut pas tester la condition « If machin = Nothing ». Il faut tester « If machin is Nothing ». Pourquoi ? On ne sait pas trop.

Le mot Empty est l’expression du vide, pour le type Variant. C’est à dire le type « tout et n’importe quoi ». On a donc là une expression de vide assez complète. Cependant, Empty est considéré comme égal à 0, ainsi que égal à une chaîne vide. Bizarre, oui.

Toujours pour un Variant, le mot Null est l’expression de l’inconnu (pas du vide). Le Null n’est pas considéré comme égal à 0, ni à une chaîne vide, ni à Empty, ni même à un autre Null. Là encore, il faut tester « If machin is Null ».

Le mot Missing permet juste de savoir si un paramètre optionnel a été passé à une fonction, ou pas. Enfin que pour les Variant. Sinon, on a la valeur par défaut du paramètre selon son type.

Je ne trouve pas d’explication à tout cela.

Mais il y a plus de détails par ici (http:// allenbrowne.com/vba-NothingEmpty.html).

Le chocolat, ce n'est pas sale, contrairement au Visual Basic.

Le chocolat, ce n’est pas sale, contrairement au Visual Basic.

Les types nullables

Restons chez Microsoft, avec leur vision, toujours aussi folklorique, de la programmation. On nous y propose une petite curiosité assez saugrenue : le type que-on-a-clairement-défini-lequel-c-etait-sauf-que-en-fait-il-peut-être-nul.

Ça donne ça :

//Déclaration
int? blorp = 5;
// On peut assigner null, ou une valeur numérique
// à la variable blorp
blorp = 4;
blorp = null;
// blarg = blorp, sauf si blarg est null,
// auquel cas blarg = -1.
int blarg = blorp ?? -1

Pourquoi pas. Ça peut servir…

BrainFuck

Ce langage est trop simple, et ne permet pas d’exprimer le vide.

Le Korn shell, et autres langages de script moches

À ma connaissance, on ne peut pas non plus exprimer le vide avec ces trucs moches. En fait, toutes les variables sont des chaînes de caractères. Lorsque l’une d’elle est vide ou indéfinie, c’est une chaîne vide, tout simplement. Ce qui peut amener des tas de situations bien marrantes.

Exemple. Instruction de copie de fichier, à laquelle on passe des variables en paramètre :

cp ${SOURCE} ${DESTINATION} ${OPTION}

Korn in the shell ? Nichons in the shell ?

Korn in the shell ? Nichons in the shell ?

Outre le fait qu’il faille écrire trois caractères inutiles et moches chaque fois qu’on veut mentionner une variable, on constate ici un truc marrant. Si on a oublié de définir DESTINATION, l’interpréteur le remplace par une chaîne vide, mais aucune erreur ne sera détectée. Le shell de merde va donc stupidement décaler les paramètres. On se retrouvera à copier un fichier vers ${OPTION}, et non vers ${DESTINATION}. N’oubliez pas de nettoyer le bordel que vous aurez foutu sur le disque après tout ça.

Le python

Comme vous le savez, le python est le meilleur langage du monde entier. On peut même programmer des jeux vidéos avec.

On peut y exprimer le vide de manière simple et explicite : le mot-clé None.

Une variable non définie ne vaut pas None. Elle est explicitement pas définie, et provoque une erreur lorsqu’on essaie de l’utiliser quelque part.

Le python est un langage fortement typé. Ça a pas l’air comme ça, parce qu’on peut affecter n’importe quoi à n’importe quelle variable n’importe quand. Mais lorsqu’une affectation est faite, le type est déterminé, c’est celui là et pas un autre, bordel. (Enfin… jusqu’à la prochaine affectation).

Ah oui ? mais alors, quel est donc le type de ce fameux None ? Ouvrons une console python et jouons un peu :

a = 5
type(a)

La console répond : <type ‘int’>
Le type de a est un numérique entier. Ces valeurs possibles sont : 0, 1, 2, -1, -2, … C’est super.

a = None
type(a)

La console répond : <type ‘NoneType’>
Le type de a est ‘NoneType’. Lorsqu’une variable est de ce type, sa seule valeur possible est ‘None’. Rigolo non ? Je crois même que c’est une espèce d’astuce pour se débarrasser d’un défaut de la théorie des types. La valeur vide est censée être de tous les types en même temps, et c’est un peu gênant. Bon enfin je dis ça, c’est juste pour faire mon malin parce que j’ai fait semblant de lire un article de Wikipédia que je me souviens même plus lequel c’est.

None = Nonne = gros nichons ?

None = Nonne = gros nichons ?

Tiens, pendant qu’on y est :

type(type(a))

ça répond : <type ‘type’>

type(type(type(a)))

ça répond aussi : <type ‘type’>
Les définitions de type : <type ‘int’>, <type ‘NoneType’>, etc. sont des valeurs, au même titre que 5, ou que None. Le type de ces valeurs est « type de valeur ».

« type de valeur » est également une définition de type, donc une valeur. Le type de la valeur « type de valeur » est « type de valeur ». Ha ha ! BOUCLE INFINIE OF THE DEATH !!!

Comme en Visual Beurk-hic, une comparaison avec None doit se faire sous la forme « machin is None », et non pas « machin == None ». La différence, c’est qu’en python on est un peu plus libre. Les deux fonctionnent.

Le == None est conventionnellement bizarre, et un peu dangereux dans des cas tordus. Parce qu’on peut surcharger l’opérateur « == », et donc créer une putain de classe qui renverrait True lorsqu’on la compare à None. Tandis que le « is » n’est pas surchargeable. C’est une comparaison d’identité brut, et non pas d’égalité de valeur. Et donc euh… Ben c’est mieux comme ça. (Interdit de dire que mes explications ne sont pas claires).

Et de toutes façons : « on n’est pas égal au vide. On EST le vide. »

Voici du blabla fun à ce sujet (http:// jaredgrubb.blogspot.com/2009/04/python-is-none-vs-none.html).

Ne rien faire, ça c’est la vie

Le vide peut s’exprimer par l’absence d’objet, mais aussi par l’absence d’action. On peut dire, explicitement : « Là, je ne fais rien ».

Comme j’ai envie de me coucher, on va faire court.

En langage machine, il existe l’instruction NOP (No Operation Performed). Selon les microprocesseurs, on peut avoir un code spécifique pour ça. En général 0, ou une valeur hexadécimale qui tombe juste. Dans le cas contraire, on a recours à une instruction normale, qu’on utilise avec des paramètres à la con, de façon que rien ne soit fait. Par exemple, le code 0x90, sur les processeurs x86, permet d’échanger le registre EAX avec le registre EAX. Whizzz !!

Tiens à propos de Whizzz, pour indiquer un NOP, on utilise parfois le mot-clé xyzzy. Mais là je ne saurais rien vous dire de plus que ce que j’irais pomper dans wikipedia. Donc allez-y direct.

Nothing happened...

Nothing happened…

Dans les langages de programmation de plus haut niveau, l’inaction peut également être exprimée, mais ce que je propose là est une vision des choses ‘  » ‘capillotractée’  » ‘.

  • Le point-virgule tout seul, dans les langages de bourgeois où les fins de lignes doivent comporter un point-virgule.
  • { }. C’est à dire un début de bloc de code, immédiatement suivi de la fin du bloc de code.
  • En Pascal, un « begin » immédatement suivi d’un « end ».

En python, on est beaucoup plus classe et plus explicite que cela, puisqu’il existe l’instruction pass, qui ne fait rien. Pourquoi en avoir besoin, alors que c’est un langage pas-machine ?

L’indentation a une signification en python. Or, on est obligé de mettre au moins une ligne de code, indentée, après un début de bloc « if », « while », ou autre. Si on ne veut rien y mettre, on doit explicitement mettre pass.

Le python est un putain de langage trop bien. Mais vous le saviez déjà.

piton

Piton

Conclusion :

Un jour, on m’a reproché de parler pour ne rien dire. Et je me suis dit que c’est surtout le reproche lui-même qui était du « parler pour ne rien dire ». Après, j’ai dit que je ne dirais plus rien à ces reprochateurs. Comme ça le problème a été réglé.

Je suis content de voir que vous avez lu jusque là ! D’ailleurs, peut-être avez-vous carrément lu jusqu’ici ? Ou là ? Bon, y’a qu’ à dire « là-bas ». Ça vous va ?

Le prochain article sera corporate et purgatif. Je baverais sur les anciennes boîte pour lesquelles j’ai bossé comme un con.

Programmer en C++, en alsacien

Buschur métame zé mézieurs !!

Auchaurtui, tans ce plog, kekeu choss d’apsolument inkroyap ! Nouss allons rékonzilier les tradizion réchionales afec le monte moterne, krasse à:

La

prokram-

mation

C++ en

elsassien

Pour commencer, je vais arrêter avec mon faux accent. C’est chiant à écrire, chiant à lire, et en plus je ne suis même pas originaire de cette belle région, (mais je la kiffe, na!).

alsacienne culotte

Y’a des gens, ils se sont fait chier pendant des années à apprendre les subtilités de cette langue alémano-teutonne, et tout ça pour quoi? Pour finalement découvrir que ça ne leur permettait absolument pas de créer des logiciels. C’est inadmissible. Voilà pourquoi j’ai décidé d’y remédier.

J’ai créé un fichier .h, qui redéfinit la vilaine syntaxe du C++ avec du bel alsacien bien de chez nous. Grâce à moi, du code abscons de ce genre:

int main(int argc, char *argv[])
{
int nombre_de_bieres = NOMBRE_DE_BIERE_AU_DEPART;
...
}

deviendra ceci:

numerik_surkrut des_esch_s_angfang_vom_program
s_brucht_sich numerik_surkrut de_zahl_von_parameter on_de_nor text_surkrut parameter des_esch_e_wandtafle so
esch_fong_e_wurst_on
esch_bruch_e numerik_surkrut het_ver_nome zahl_von_beer het_ver_vertigkeitsmaaser ZAHL_VON_BEER_OM_ANGFANG hopla
...
_s_gilt

Et là c’est mieux.

Par convention, et pour une immersion plus naturelle du truc dans le truc, j’ai décidé que les variables s’appelleraient « surkrut » (choucroute) et les blocs de code « wurst » (saucisse).

À noter que la transcription est assez permissive. La fin du programme peut se noter « esch_hop_s_wurst_vertig » (j’ai fini la saucisse), ou bien « _s_gilt » (à la vôtre !)

Ne parlant pas vraiment alsacien moi-même, c’est Geoffrey, l’un de mes nombreux amis de l’internet, qui m’a fait les traductions. Qu’il en soit infiniment remercié, puisse le chemin de sa vie être recouvert de choucroute garnie et qu’un millier de camions de femmes turpides dansent lascivement devant lui, avec un millier de milliers de bières.

RCLE020402_18_Mar02_08 topheavy

Image qu’a pas grand-chose à voir, mais on s’en fout.

Je vous mets le contenu du fichier directement ici. Il manque encore 2-3 trucs, mais soyez assurés que je créerai de nouvelles versions de plus en plus enrichies. (hahaha! nan.)

#define des_esch_s_angfang_vom_program main
#define hopla ;
#define sand <<
#define ens_surkrut_usgang cout
#define on_geh_e_schrett_vor << endl
#define geh_e_schrett_vor << endl
#define esch_vott_de_huffe_von using namespace
#define fundamant_denks std
#define numerik_surkrut int
#define text_surkrut char *
#define des_esch_e_wandtafle []
#define on_de_nor ,
#define s_brucht_sich (
#define so )
#define met (
#define e_fonktion_wie_di_ruckschekt
#define nex_von_allem void
#define on_wie_servert_on
#define esch_fong_e_wurst_on {
#define esch_hop_s_wurst_vertig }
#define _s_gilt }

choucroute pied
// Ceux qui programment avec leurs pieds ne seront pas déçus!

#define ken_surkrut
#define ken_surkrut_werd_gebrucht ()
#define esch_bruch_e
#define het_ver_nome
#define het_ver_vertigkeitsmaaser =
#define so_long_wie while (
#define ens_fall_wie if (
#define no )
#define s_meust_gemort_xen )
#define oder else
#define mor_d_nachst_wurst do
#define e_besele_weniger --
#define e_besele_meh ++
#define esch_meh_als >
#define esch_weniger_als <
#define oder_egal =
#define esch_egal_als ==
#define esch_verschid_als !=

Fabuleux! Mettons-ny-ous tout de suite!

Je vais pas me contenter de coder un stupide « Hello World », comme une petite feignasse de merde. Je vous ai carrément concocté un « 99 bottles of beer ». Pour les gens normaux qui connaissent pas, renseignez-vous ici (http:// 99-bottles-of-beer.net/).

Edit 11/10/2009

Le programme sort bien évidemment les paroles en alsacien, et pas en vilain-américain-capitaliste-violacé-d-argent. Sauf que j’avais fait la traduction à l’arrache et c’était du petit nègre sorti du cul d’une machine de Turing névropathe. Geoffrey-mon-ami-de-l-internet a rephrazingué tout ça et c’est mieux. (Puisse la choucroute le camion-gonzesse-bière etc.)

Télécharger la dernière version du programme (http:// sites.google.com/site/recherland/Home/alsace-power/elsass_power2.txt).

Vous pouvez le compiler sur l’ordinateur de votre grand-mère, ça marche et ça donne ceci:

99 Flashe beer uff d’Mura, 99 Flashe beer.
Drenk eins on geh widerch, 98 Flashe beer uff d’Mura.
Ken Flashe beer meh uff d’Mura, ken Flashe beer meh uff d’Mura.
Geh ens Gschaft on kauif der wedder meh, 99 Flashe beer uff d’Mura.

Par contre, le sens a un petit peu changé. La bière, au lieu de la « take one down and pass it around », on la « drenk on geh widerch » (bois-en une et continue). Mais ça reste tout à fait acceptable.

Digression: est-ce qu’on a encore le droit d’utiliser l’expression « petit nègre » pour indiquer qu’on parle avec plein de fautes? Je demande, parce que déjà, on n’a plus le droit de dire « tête de nègre », alors voilà quoi. Si j’ai offensé des gens, j’en suis désolé. (Bière, choucroute, camion, nichons.)

Lien vers un chouette dictionnaire françois-elsassien (http:// pagesperso-orange.fr/culture.alsace/dictionnaire_alsacien.htm).

À part ça, j’avais un oncle alsacien pure souche qui s’y connaissait vachement en langage et en histoire, mais il est mort. Dommage, il aurait pu m’aider.

medium allemande biere 2

Pas de jeu de mot avec « mise en bière », car elles sont si jolies.

Par ailleurs, comme je pige rien aux divers encodages de notre monde informatique torturé, j’ai pas mis les accents, trémas, et autres tuning de lettre tout bizarre. Avec ces stupides petits strüdels, on n’arrive jamais à ravoir ce que on a écrit au départ. Putain.

Village Dalzasse Pictures !!

Je ne suis pas le premier à avoir contribué au mariage entre l’Alsakie et le code informatique. Je ne serais qu’un fieffé paltoquet si je ne mentionnais pas ce splendide film qu’est Meytrix Reloatètt!!

Ça date un peu, mais moi j’adore et c’est de l’authentique. Allez voir le site originateur de la bande-annonce (http:// www. cigogne.net/Maytrix-reloatet-VA.html).

meytrix reloatett

Un film réalizé sans aukun trukaschh !!!

mélangeons nos cultures

Je ne suis pas le premier à avoir contribué au mariage entre l’Alsakie et l’Égypte mystérieuse et épicée. Je ne serais qu’un fieffé paltoquet si je ne saluais pas cette sympathique initiative de sculpture d’une superbe alsagyptienne aux yeux de chèvre morte.

alsagyptienne

Brrraaaiiiinnnssss !!!! (Traduction : Kougelhooooooof !!!)

La lala lalaaaaaaa

Pour finir, une petite chanson. C’est pas un truc pipi-caca de gamin de 10 ans. Non non. Cette fois-ci, c’est un peu plus adulte.

Je suis un alsacien,
je vais dans la forêt, avec mon gros fusil
chasser le papillon.
et le mammouth, dans la prairie,
qui broute broute broute, si joyeusement
et les saucisses, dans la boucherie,
qui pendent pendent pendent, si joliment.

‘s gilt!

Edit 11/10/2009

Durant mes recherches documentaires sur le l’intraweb, je suis tombé (complètement par hasard) sur cette sympathique photo. Je vous en fais cadeau.

chloe vevrier beer fest

Edit 11/10/2009

Edit(h Cresson)

OFRTP-UNION-FRANCE-CRESSON-20060711 Edith Cresson

invisible hamburger !

Edith 11/10/2009

botte cresson