La cryogénisation du blog Sam et Max

Il y a quelques années de ça, un chien et un lapin se rencontrèrent.

− Bonjour monsieur le chien.

− Bonjour monsieur le lapin.

− …

− …

− …

− …

− …

− …

− Mais, que nous arrive-t-il ? Je sens comme un arc de tension sexuelle s’établir entre nous deux.

− Moi aussi. Cela va être difficile de le contrôler.

− Pourquoi ne pas céder à cet amour qui s’offre à nous ?

− Je n’ai rien contre les homosexuels, mais je n’en fais pas partie.

− Qui parle d’homosexualité ? Vous êtes un chien et je suis un lapin. Il ne s’agit rien de plus que de zoophilie.

− Comme vous avez raison. Faisons l’amour !

(Quelques mois plus tard…)

− Je suis enceint !

− Moi aussi !

− Quel bonheur ! Nous mettrons au monde toute une marmaillerie de petits chien-lapins !

(Encore quelques années plus tard…)

− Qu’allons nous faire de tous ces chien-lapins et autres lapin-chiens ?

− Il est impossible pour nous de nous occuper d’un aussi grand nombre d’enfants.

− Achetons un congélateur et cryogénisons-les.

− Sage décision. Malheureusement, les techniques de réveil après cryogénisation ne sont pas encore aboutie. Nous risquons de tuer ces pauvres petites créatures lorsque leurs futurs parents adoptifs voudront les réanimer.

− J’ai une idée ! Il nous suffit de les cloner à plusieurs reprises et de cryogéniser ces clones dans plusieurs congélateurs. Nous pourrons ainsi tenter des réanimations au fur et à mesure que la technologie évoluera.

C’est ce qui fut fait.

Archi-archivisme

Le blog http://sametmax.com/ existe toujours, mais aucun nouvel article ne sera ajouté. Les commentaires ont été réouverts momentanément. Lorsqu’ils seront fermés, le blog ne changera plus.

Il n’y a aucune garantie future qu’il restera en ligne. C’est insupportable ces gens qui ne se sentent coupables de rien sous prétexte qu’ils mettent leur travail à disposition librement et gratuitement. Encore un coup des trotskistes.

Ces messieurs Sam et Max ont expliqué comment récupérer tout le contenu de leur blog. Je n’ai pas de moyen de lancer des commandes « wget » de chez moi (désolé, Windows, tout ça). Je pourrais le faire au Travail, mais ça me gêne de mobiliser du CPU, de la bande passante et de la place disque en quantité indéterminée pour quelque chose que je ne peux pas trop justifier.

Alors j’ai fait le gros bourrin avec l’utilitaire WinHTTrack. Ça a mouliné sa mère pendant des heures. Je ne suis pas sûr d’avoir tout récupéré. Certains articles semblent avoir échappé au moissonage, car leur titre est trop long (en particulier toute la partie sur la programmation orientée objet). Je les ai récupérés manuellement, en espérant que d’autres n’ont pas planté de la même manière.

Puis j’ai tout compressé et tout balancé dans dropbox. Vous pouvez télécharger un énorme fichier .zip avec tout dedans. C’est cadeau c’est bonheur.

Il y a aussi des autoblogs, vous permettant de consulter directement les articles sans vous embêter à tout télécharger en local. Mais ils ne sont pas forcément à jour, et ont le même niveau de non-garantie de continuité que le blog de Sam&Max lui-même.

Dropbox pourrait également décider de virer ma sauvegarde.

Internet n’est pas forcément durable.

Ni vos ordinateurs. Ni le réseau de distribution d’électricité. Ni vous-même. Tout fout le camp.

C’est pour ça que lorsqu’on tient à quelque chose, il faut en faire le plus de sauvegardes décentralisées possibles, dans le plus d’endroits différents. Ce dropbox est ma toute petite contribution à cela.

Le passage nostaltriste

Le blog de Sam&Max s’est offert à mon temps de cerveau, il y a quelques années de cela, par le biais de roro, un ami bizarre de l’internet. Je le salue au passage, s’il me lit encore.

J’y ai lu tous les articles paru depuis que je l’ai découvert. Je me suis promis de me faire une rétrospective générale des anciens non encore lus.

Certains de ces articles ont augmenté ma culture générale informatique et ma veille technologique.

L’un en particulier m’a directement fait économiser plusieurs heures de travail de mon vrai Travail. Il s’agissait de l’explication d’un concept générique : les itérateurs avec yield . Et en plus ça m’a même pas servi pour du python, mais du C#.

Je me suis fendu de quelques petits commentaires chez eux, plus ou moins pertinents, plus ou moins utiles.

Je leur ai proposé quelques articles, qu’ils ont gentiment accepté de publier. En voici la liste.

J’avais l’idée de deux autres sujets qui auraient pu être intéressants :

– comment créer un plug-in Sublime Text.

que se passe-t-il en interne quand on définit une variable en python ? (https ://nedbatchelder.com/text/names.html)

Je les écrirais peut-être ici, dans mon blog à moi. C’est dommage. L’audience y est beaucoup plus faible, je ne pourrais donc pas en retirer tout le flattage d’ego que j’aurais pu en espérer.

Ça me fait quand même un petit quelque chose de voir le blog de Sam&Max s’arrêter. Un peu le même effet que la fin du magazine 42, même si ce n’est pas du tout le même genre de création. Snif snif beuheu-beuheu ouin.

Finalement, peut-être que cette nouvelle m’apporte plus de réconfort égoïste que de tristesse. Tous ces « créateurs de contenus web », qui parviennent à obtenir plus « d’audience » et « d’attention » que moi, finissent par abandonner et passer à autre choses. Moi je suis toujours là, depuis plus de 10 ans, sur mon blog pourri avec à peine 30 visites non-uniques par jour, à publier un article par mois.

Je m’accrocherai autant que je le pourrais, comme un vieux chewing-gum dégueulasse à la chlorophylle oublié au fond d’une poche.

Sur ce, voici une dernière image de lapine pour conclure.

Jessica Rabbit !

#copinage : Ode à Caïssa

Coucou, et Joyeux Anniversaire-de-Isaac-Newton à tous !

Vous vous souvenez certainement de mon petit article sur le polar « Sans droit ni loi ».

Jacques-Yves Martin a réitéré son forfait, et nous a sorti l’épisode suivant des aventures de Boris Thibert le policier justice-holique.

Il a même re-réitéré son forfait puisqu’il a déjà pondu un troisième livre, mais je ne l’ai pas encore lu. On va donc rester sur « Ode à Caïssa » pour l’instant.

Dans cet opus, notre policier-justicier est plongé dans une enquête avec pillage de tombe maya, trafic mafieux d’objets d’art, recherches archéologiques, et vodka pour arroser le tout.

Comme je suis le critique littéraire le plus original du monde, je vous propose mon avis sous forme de plan basique j’aime / j’aime pas.

 

Les trucs qui m’ont énervé

*)

Parfois, pour désigner un personnage, l’auteur n’indique pas son nom, mais sa qualification ou son métier. Au lieu d’écrire ça :

Gilbert Trouzlup ouvrit la porte.

Il écrit ça :

L’universitaire ouvrit la porte.

Je suppose que ça part d’un bon sentiment, et que le but est d’éviter de trop nombreuses répétitions de « Gilbert Trouzlup ». Mais je trouve que ça ampoule fortement le style d’écriture. On se croirait dans un livre de grammaire du collège.

Le mec bizarre en noir ouvrit la porte noire bizarre.

*)

Le héros est assez tourmenté, et se lance souvent dans des réflexions et des songes alambiqués et turlupinesques. C’est tout à fait acceptable et c’est entièrement assumé. Ce qui m’énerve, c’est que lesdits tourments sont trop explicitement décrits.

On retrouve très souvent dans la narration le motif suivant : un dialogue de quelques phrases entre le héros et un autre personnage, puis un paragraphe expliquant les tourments que ce dialogue a déclenché dans son esprit. Eh bien ce paragraphe est à chaque fois un peu trop long et un peu trop détaillé.

On l’a compris que le héros était tourmenté, on arrive assez facilement à deviner ce que déclenche en lui chaque dialogue. Ce n’est pas la peine de le blablater en long en large en travers.

Quelques exemples (décrits assez vaguement, pour pas spoiler) :

  • Page 148 : dialogue entre Boris et Marion, suite au coup de fil « de l’universitaire ».
  • Page 153 : re-dialogue entre Boris et Marion, après l’invitation à dîner.
  • Page 158 : réaction de Boris à une remarque du mec de la BRB, au sujet de Marion.
  • Page 168 : turlupinage au sujet de l’affaire Dufrêne, suite à une mise en garde de son chef de service.

 

Les trucs qui m’ont plu

*)

Les tourments et les songes de Boris.

Je viens de dire dans le paragraphe précédent que le fait de les décrire trop explicitement m’énervait. Mais le fait qu’il ait des tourments et la nature de ses tourments me plaît, et donne de la profondeur au personnage.

*)

Le code indéchiffrable.

Il est relativement simple, mais l’idée est bonne. Et le lecteur motivé pourra essayer de le décrypter de lui-même. (Je dois avouer que je n’y suis pas arrivé).

Pour le coup, et en rapport avec le pinaillage que j’ai fait lors de mon article sur son précédent livre, je pense qu’il aurait fallu écrire « un code indécryptable », et non pas « un code indéchiffrable ». Mais je pinaille, je pinaille.

Un code indéscrichicryptiblable.

*)

La logistique autour de l’activité de fouilles et de trafic d’œuvre d’art.

C’est peut-être une conséquence des films d’Indiana Jones, mais on a souvent tendance à croire que la découverte de trésors archéologiques se résume à une aventure de quelques jours avec de l’action, des flingues, des explosions, un trou dans le sol, et hop c’est fini.

C’est évidemment un peu plus compliqué que ça. Les recherches préalables peuvent prendre des années, le transport et la vente (légal ou pas) peuvent prendre des semaines. C’est assez bien décrit dans le livre, et je suppose que c’est assez réaliste, même si je n’y connais rien dans ce domaine.

*)

Les relations entre le héros et les autres personnages, génératrice de tourments, bien évidemment.

Sa copine Camille, sa coéquipière Marion, son chef, ses collègues, les personnes qu’il interroge, etc. Boris est constamment en train de se demander ce qu’ils pensent, s’il est à la hauteur de leur confiance ou leur amitié, pourquoi ils ont réagi comme ci ou comme ça. Il y a un bon tas de psychologie là-dedans qui est tout à fait intéressant.

*)

Je suis mentionné dans les remerciements !

L’auteur salue ma « chouette » participation et mon coup d’œil aiguisé. Si ça c’est pas la classe !

 

Pour la suite

Les premières pages de « Sans Droit ni Loi » mentionnait (un peu par hasard), la cité maya de Chichén Itzá. Ce livre y accorde une part beaucoup plus importante. Je ne sais pas si ça a été fait exprès. Parfois, on place des éléments narratifs dans une histoire en se disant « ça servira peut-être pour après ».

Si j’ai bien tout suivi, le troisième roman de Jacques-Yves Martin ne fait pas intervenir Boris Thibert. Mais peut-être qu’une histoire prochaine remettra sur la scène ce héros et tous les éléments narratifs pré-installés. Nous avons maintenant à notre disposition un super-méchant, un changement important dans la vie personnelle de Boris, une nana paumée en cure de désintoxication, sans oublier Franck, l’ami d’enfance qui ne demanderait qu’à être réutilisé de manière plus conséquente. Tout cela promet d’être captivant.

Maya Milano, ça a presque un rapport avec la culture Maya

Ah y est, j’ai rangé le bordel

Ça m’a pris des mois, mais ça y est. J’ai relu, rewrité, publicitisé et réorganisé les articles de ce putain de blog de sa mère.

Tout est beau, la peinture a été refaite et dégouline encore un peu, tel du rimmel de mauvaise qualité sur une prostituée de qualité également douteuse.

Vous constaterez qu’il n’y a plus que 2 liens dans la partie « Trucs über importants » du menu de droite. J’ai  simplifié le plus possible, pour ne pas trop égarer les personnes arrivant ici la première fois.

  • Le premier lien mène vers la présentation des « gros trucs créatifs » que j’ai fait jusqu’à maintenant. Vous y retrouverez du bazar que vous connaissez déjà plus ou moins : Pru-pra-prok, mon livre, Blarg, …
  • Le second donne toutes les explications concernant la publicité présente dans ce blog : qui la met, pourquoi, comment l’outrepasser, etc.

Pour que ce soit parfait, il aurait également fallu remettre de l’ordre dans les catégories d’articles. Boarf, je le ferai une prochaine fois, et puis, est-ce bien utile ?

Je n’ai pas changé l’habillage graphique, l’ensemble est donc toujours aussi noir, car avoir une âme sombre, ça fait classe. Pour ceux qui en auraient un peu assez, voici une photo pleine de couleurs :

xx-cel roxxy

Finalement, c’est trop. Voici une photo en noir et blanc pour contrebalancer :

Three Graces The Full Body Project Leonard Nimoy

Ceci étant fait, je vais maintenant dépoussiérer certains de mes projets de code achevés ou abandonnés. Ils atterriront (échoueront ?) sur mon compte github. J’y ajouterai un peu de documentation, si jamais quelqu’un (y compris moi-même) veut les réutiliser un jour.

Je commencerai avec mon jeu inachevé « Kawax ». Surveillez donc mon compte github, il devrait se renflouer dans les temps qui viennent.

Cependant, ce ne sera pas forcément dans des temps qui viennent si vite que ça. Il faut aussi que je joue à quelques jeux vidéos, et que je continue de publier des articles ici et chez Sam & Max. Mais ça c’est comme d’habitude, quand j’annonce que je vais faire un truc rapidement, il met 10 000 ans à se finir.

github mascotte peluche

meeeoooww ph’nglui !

Et sinon, bonne année 2014. Même si je vous l’ai déjà souhaitée, ainsi que toutes les autres, il y a deux ans.

Cette nouvelle année sera, ou ne sera pas.

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 prokrammation 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.

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!

Vous pouvez télécharger le mp3 ici.

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

concours débile pour des codes d’inscription à SkyWar

Bruce Willis moustache

Dans un moment d’égarement, je m’étais inscrit au beta-test de SkyWar. (http ://www .skywar.net/)

Je dois avouer qu’ensuite, j’ai laissé tomber ce jeu, parce qu’il faut pouvoir se connecter assez régulièrement pendant quelques jours. Je suis jeux-webolimique, mais j’ai un emploi du temps trop anarchique. (rime, rime). Ceci dit, à l’occasion, j’écrirai un ou deux articles sur les jeux de la Motion Twin, certains valent le détour.

Venens-on au fait: pour l’instant, SkyWar n’est pas ouvert à tout le monde. Faut être invité.

Je mets donc en jeu mes trois codes d’invitation, avec un concours débile:

Faites une rédaction à propos de n’importe quoi.

Entre 1000 et 3000 caractères sans compter les espaces.

Le copié-collé de n’importe quel texte piqué sur internet est bien entendu interdit.

Vous mettez votre bavouille dans les commentaires de cet article, avec un moyen quelconque pour que je vous recontacte (mail, blog, rendez-vous dans un parking désert à minuit, …)

Clôturage du concours vendredi 12 juin, à 14h, et distribution des codes d’invit’. Ceux-ci sont au nombre hallucinatoirement élevé de TROIS!!! Alors soyez des dizaines de millions à participer, tout le monde a ses chances, sauf les gens que je jugerai trop cons!!!

À vos touches, et à vos moustaches!!

Édit: Bon ça s’est un peu calmé là au niveau des participations. Comme quoi, même quand j’ai des vrais trucs à proposer, j’arrive pas à faire monter le trafic sur mon blog. Je dois être trop underground pour tous ces neo-bourgeois richistes.

Par conséquent, je me permets d’avancer le clôturage à aujourd’hui, minuit, ce qui donnera 14 heures de jeux de plus aux trois toxicos qui auront gagné. Pour ceux qui auraient voulu participer mais sont arrivés trop tard, c’est pouet. Fallait s’activer un peu plus pour monter mes stats de visites.

« Parce que si on s’intéresse pas aux choses qu’intéressent pas les gens sous prétexte que ça les intéresse pas!! Hein!! Ben bravo!! »

(Coluche)

Mec avec une moustache géante

Échanger A et B

Paix et prospérité avec les doigts-qui-se-collent-sauf-au-milieu, mes amis.

Aujourd’hui, un article de super-geek qui vous servira à rien. Je vais vous faire découvrir les différentes façons rigolotes pour

Échanger

les valeurs

de deux

variables.

whizzy wigs

De base:

Vous avez deux variables numériques (A et B). Vous voulez que A prenne la valeur de B et versa-vice. Comme vous êtes pas trop con mais un peu quand même, vous déduisez qu’il faut utiliser une variable intermédiaire « C », et faire un truc comme ça:

C <-  A
A <-  B
B <-  C

Ça s’appelle une permutation circulaire, ou une connerie de ce genre.

Pour les atrophiés de l’hypothalamus, la flèche « <- » signifie « prend la valeur de ». Par exemple, pour la 1ère ligne ça donne: « C prend la valeur de A ». C = A quoi. (C & A, des soldes à petits prix). Mais le signe égale est dans le sens affectation, pas égalité. C’est pas le « == » des conditions en langage C (& A). Ahh, au secours, tuez mon cerveau. Tuez mon cerveau. Bon, le mieux c’est que vous laissiez tomber cet article et que vous alliez aux putes.

La permutation circulaire c’est rigolo, mais cette variable intermédiaire, elle sert pas à grand chose, et elle prend de la mémoire. On n’a pas que ça à foutre quand on est un microprocesseur over-booké par le téléchargement de tera-octets de p0rn via Bite-Torrent. Il faut donc avoir recours à une astuce rigolote:

Échange à l’aide d’additions et de soustractions:

Voici comment échanger A et B, sans utiliser de troisième variable:
A <-  A – B
B <-  A + B
A <-  B – A

Au lieu de simples affectations, on a des additions et des soustractions. Mais pour un ordinateur, c’est aussi rapide, ça prend juste un cycle d’horloge. Enfin on suppose que oui.

Bon, là comme ça on pige que dalle. Je vous le réécris avec des indices.

A2 <-  A1 – B1
B2 <-  A2 + B1
A3 <-  B2 – A2

Si on remplace le B2 dans la dernière ligne, ça donne:

A3 <-  (A2 + B1) – A2
A3 <-  B1
A3 prend la valeur initiale de B

Et si on remplace le A2 dans la deuxième ligne, ça donne:

B2 <-  (A1 – B1) + B1
B2 <-  A1
B2 prend la valeur initiale de A

Youpi ça marche.

Bon, le seul problème, c’est que si A et B sont des pointeurs sur la même zone mémoire, ça foire complètement. (A et B se modifient en même temps, et boum). Mais dans ce cas, faudrait être con pour vouloir échanger A et B, vu que ça servirait à rien.

Ah et ça peut merder avec des histoires d’overflow aussi. Bref, c’est fun, mais pas tant que ça. il y a mieux.

Échange à l’aide de XOR

pochette xor X-or eu'l shérif d'eul'espace

Le XOR (« ou » exclusif) est une opération logique entre deux valeurs binaires. Le résultat vaut 1 si l’un des deux opérandes vaut 1. Voyez-vous cela:
0  XOR  0  =  0
0  XOR  1  =  1
1  XOR  0  =  1
1  XOR  1  =  0

Fun fact : x XOR y = (x AND NOT(y)) OR (NOT(x) AND y)
Hahaha.

Autre fun fact : x XOR y = (x est différent de y). Si x et y sont différents, on obtient 1. S’ils sont égaux, on obtient 0.

Et donc, pour échanger A et B, on claque ceci:

A <-  A XOR B
B <-  A XOR B
A <-  A XOR B

Petite précision: le XOR entre deux valeurs numériques, c’est comme le XOR binaire. On applique l’opération « bit à bit ». Mais vous l’aviez compris par vous-même, bien entendu.

Vous pouvez vérifier en mettant des petits 0 et des petits 1 à la place des A et B, et tester tous les cas possibles, ça marche. Si je puis me permettre, je vais faire une démonstration un peu plus élégante.

On remet des indices pour pas se paumer.

A2 <-  A1 XOR B1
B2 <-  A2 XOR B1
A3 <-  A2 XOR B2

En remplaçant le B2 dans la dernière ligne, ça donne:

A3 <-  A2 XOR (A2 XOR B1)

le XOR est une opération associative, ça veut dire qu’on peut faire toutes les conneries qu’on veut avec les parenthèses, à condition de pas changer l’ordre des variables. Sauf qu’en fait on pourrait aussi changer l’ordre parce que le XOR est également commutatif, figurez-vous. Mais on s’en branle.

Bref:

A3 <-  (A2 XOR A2) XOR B1

Quand on XORifie un truc avec lui-même, ça donne systématiquement 0. (Rappelez-vous ce que j’ai dit au début, bande de moules rachitiques).

Donc:
A3 <-  0 XOR B1.
Et quand on XORifie un truc avec 0, ça redonne le truc lui-même. Ainsi soit-il.

Paf, on retombe sur le même genre de situation rigolote qu’avec les additions et soustractions:
A3 <-  B1. (A3 prend la valeur initiale de B)

Pour le B, ça fait pareil.

Je reprends ma deuxième ligne, et je remplace le A2:

B2 <-  (A1 XOR B1) XOR B1
plop plop associativité
B2 <-  A1 XOR (B1 XOR B1)
plop plop: un XOR avec deux fois le même truc ça donne 0
B2 <- A1 XOR 0
plop plop XORifier du 0 ça fait rien du tout.
B2 <- A1
B2 est égal à la valeur initiale de A. Yii haaaaa.

Voili voilà. Et l’avantage, c’est que là, pas d’overflow à la con. Un XOR c’est un XOR, ça chie pas partout comme un chien incontinent qu’aurait fait une overdose de jus de pruneau.

Par contre, y’a toujours le problème que si A et B sont des pointeurs sur la même zone mémoire, ça vous pète à la gueule. Mais, comme dit précédemment, faut vraiment être con pour vouloir échanger les valeurs d’une zone mémoire avec elle-même. Oui oui, ça sert à rien.

Le langage python

grail sale monty python

Le Python c’est super rigolo. On peut faire plein de trucs super pratiques et super pas prise de tête que y’a pas dans les autres langages, tel qu’utiliser des variables sans les déclarer, parce que bordel de merde ça suffit de nous prendre pour des gamins, on est capable de programmer sans avoir à être surveillé par l’ordinateur. On n’est pas des taffioles, foutrefoutre.

En python, pour échanger les valeurs de A et B, vous devez écrire:

A, B = B, A

Une remarque pertinente? Quelqu’un? Non? Bon.

Concrètement

J’peux te l’dire, matelot, depuis plus de 15 ans, je bourlingue mes yeux globuleux de geek sur des dizaines de machines, de langages, de projets professionnels, et de réalisations personnelles. Et partout, depuis les space invaders codés en Pascal jusqu’aux contrôleurs de générateurs automatiques de planche de code pour tondeuses à gazon, codés en C panaché de macros bien crades, en passant par les piloteurs d’étalonneurs d’étalons de compteur électrique, codés en Visual Basic par des troupeaux de chimpanzés immortels, j’ai jamais JAMAIS eu besoin d’échanger les valeurs de deux variables! C’est un truc trop bizarre pour que t’en aies besoin dans le monde réel. La seule fois où ça m’est arrivé, c’était un exo d’informatique durant mes études, et j’étais même pas bourré. Ouais matelot, nos profs aimaient bien nous apprendre des trucs qui servent à rien. Un peu comme cet article d’ailleurs.

Vous pouvez donc oublier tout ce que j’ai écrit ici. Et plutôt que de vous faire chier à échanger des variables, concentrez-vous plutôt sur la mignonne Keisha Evans, qui essaie de mettre son nichon droit à la place de son nichon gauche. (Mais elle a un peu de mal).

dsc07602_jpg1 Keisha Evans

Et ça c’est gratuit:

simone_nichons2 Simone Foxx

Selon vous, de quelle personne s’agit-il? (Réponse dans les commentaires)

Vous en voulez encore bande de petits pervers?

Je savais bien que les astuces à la con d’optimisation de code finiraient par vous exciter. En voici plein d’autres (http:// graphics.stanford.edu/~seander/bithacks.html).

Vous pourrez y découvrir comment choper la valeur absolue d’un nombre sans faire de branchement conditionnel, ou comment inverser des bits. Allez, sautez dedans bande de petits canaillous! Moi je vais me coucher.