Ă toutes fins utiles, j'ai rĂ©digĂ© un petit traducteur pour la zorglangue. Un traducteur de et vers la zorglangue, puisque, comme le ROT13, le codage et le dĂ©codage se font avec la mĂȘme seule opĂ©ration.
Subtilités de ce traducteur :
- il est écrit en Python 3 (et n'utilise que des modules standard) ;
- il laisse la ponctuation en place ;
- il met les majuscules oĂč il faut, mĂȘme pour des caractĂšres hors ASCII.
Exemples :
$ echo 'Dose maximum !' | zorglang
Esod mumixam !
echo 'Dose maximum !' | zorglang | zorglang
Dose maximum !
VoilĂ , c'est tout, ça devrait mĂȘme marcher pour des langues qui s'Ă©crivent de droite Ă gauche puisque cette subtilitĂ© est indĂ©pendante du flux de caractĂšres. Eviv Bulgroz !
Ah non, j'oubliais. Le code :
#! /usr/bin/python3
import io
import re
import sys
word_re = re.compile(r'\b\w+\b')
def zorglang(text):
with io.StringIO() as buf:
last_index = 0
for match in word_re.finditer(text):
buf.write(text[last_index:match.start()])
word = match.group()
for i in range(len(word)):
if word[i].isupper():
buf.write(word[-1 - i].upper())
elif word[i].islower():
buf.write(word[-1 - i].lower())
else:
buf.write(word[-1 - i])
last_index = match.end()
buf.write(text[last_index:])
return buf.getvalue()
if __name__ == '__main__':
for line in sys.stdin:
print(zorglang(line), end='')
# M'enfin
PostĂ© par Ê âŻ . ĂvaluĂ© Ă 3.
M'enfin, Gaston va enfin pouvoir lire Spirou...
â Ă g'Auch TOUTE! http://afdgauch.online.fr
[^] # Re: M'enfin
PostĂ© par Thomas Debesse (site web personnel, Mastodon) . ĂvaluĂ© Ă 10.
Mais si Gaston lit Spirou, est-ce quâil Ă©crit lui aussi au courrier des lecteurs ?
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: M'enfin
PostĂ© par reynum (site web personnel) . ĂvaluĂ© Ă 10.
En tout cas il est bien placé pour savoir ce qu'il adviendra de la réponse.
Courrier en retard 1
Courrier en retard 2
Courrier en retard 3
Paix et prospérité à l'ùme de Franquin.
kentoc'h mervel eget bezan saotred
# En php?
PostĂ© par Nitchevo (site web personnel) . ĂvaluĂ© Ă -6.
Je me demande si le php n'est pas plus simple:
Découper la phrase avec explode() puis inverser les lettres de chaque mot avec strrev.
Je ne code pas beaucoup mais amha cela doit pouvoir se régler en 5 lignes.
[^] # Re: En php?
PostĂ© par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ© Ă 10.
La mĂȘme approche serait tout aussi simple en Python, mais le problĂšme, c'est que :
Ăa donnerait ça :
[^] # Re: En php?
PostĂ© par Nitchevo (site web personnel) . ĂvaluĂ© Ă 10.
M'apprendra Ă balancer un truc en deux minutes du boulot....
[^] # Re: En php?
PostĂ© par KiKouN . ĂvaluĂ© Ă 10.
Il faut prendre plus le temps quand tu est au boulot.
# Emroné \!
PostĂ© par refreketu . ĂvaluĂ© Ă 3.
Ă dnauq iulec ruop eriudart al eugnal Fpmuorths ?
[^] # Re: Emroné \!
PostĂ© par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ© Ă 9.
L'ennui, c'est que celle-lĂ n'est pas injective pour un ĂȘtre humain, ou pour un ordinateur conçu par des humains...
[^] # Re: Emroné \!
PostĂ© par yohann . ĂvaluĂ© Ă 4.
PLus les schtroumpfs eux-mĂȘme sont divisĂ©s sur la bonne maniĂšre de schtrompfer : cf: schtroumpf vert et vert schtrompf
[^] # Re: Emroné \!
PostĂ© par BAud (site web personnel) . ĂvaluĂ© Ă 6.
Ut xuev erid refpmuorthcs al eugnal Hfpmuorthcs ?
# Sans expression rationnelle
PostĂ© par tsanch3z . ĂvaluĂ© Ă 1.
Une variante utilisant seulement les outils de manipulations de chaĂźnes
[^] # Re: Sans expression rationnelle
PostĂ© par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ© Ă 4. DerniĂšre modification le 04 dĂ©cembre 2014 Ă 17:46.
Ce n'est pas équivalent, la ponctuation se retrouve mal placée :
Et le retour Ă la ligne final est mangĂ©, au passage (d'oĂč l'invite de commande
$que j'ai mis sur la ligne de résultat, dans mon example).[^] # Re: Sans expression rationnelle
PostĂ© par THE_ALF_ . ĂvaluĂ© Ă -1.
Yep, mais cette piste est quand meme plus lisible. Dans le mĂȘme esprit, on peut en tout cas simplifier pas mal la fonction de dĂ©part par:
[^] # Re: Sans expression rationnelle
PostĂ© par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ© Ă 10.
Effectivement, remplacer le StringIO par une simple chaßne permet de tuer les performances en forçant une copie à chaque opération, et n'effectuer le test de capitalisation que pour la premiÚre lettre permet de ne plus transcrire correctement les mots à capitalisation interne tels que LinuxFr.org.
C'est un peu plus simple, oui. Et moins bien.
[^] # Re: Sans expression rationnelle
PostĂ© par Tit . ĂvaluĂ© Ă 3.
et ça donne quoi LinuxFr.org en zorgland? (je ne suis pas sûr de la place du point et de la majuscule "interne")
[^] # Re: Sans expression rationnelle
PostĂ© par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ© Ă 5.
RfxunIl.gro
(le point sĂ©pare deux mots ; les lettres sont capitalisĂ©es Ă la mĂȘme place que dans les mots d'origine, en tout cas c'est mon interprĂ©tation, Franquin n'ayant pas explorĂ© ce genre de subtilitĂ©)
[^] # Re: Sans expression rationnelle
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 7.
Je connais trÚs peu l'univers Spirou, mais au vu des rÚgles que tu as exposées dans ce journal et les commentaires, j'ai le sentiment que l'esprit serait plutÎt que ça donne "XunilRf.gro".
Pour tenter d'expliquer, l'idĂ©e gĂ©nĂ©rale que je vois est de garder la « structure » , par exemple s'il y a une majuscule en dĂ©but de phrase, elle doit l'ĂȘtre au dĂ©but du rĂ©sultat et pas Ă la fin, de mĂȘme pour la ponctuation, et les mots sont dans le mĂȘme ordre, et de n'inverser les lettres qu'au sein d'un seul mot dĂ©limitĂ© par cette structure Ă la fois.
Et pour moi cette construction (accoler deux mots en capitalisant leur premiĂšre lettre) relĂšve de la structuration. D'oĂč mon sentiment.
[^] # Re: Sans expression rationnelle
PostĂ© par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ© Ă 3.
Peut-ĂȘtre, l'ennui Ă©tant que ce cas de se prĂ©sentant pas Ă ma connaissance dans les albums de Spirou et Fantasio de Franquin, on ne pourra jamais le savoir. Et, par ailleurs, la dĂ©tection de mot dans les expressions rationnelles considĂšre LinuxFr comme un seul mot, donc je m'y suis tenu. En outre, il est plus facile de lire RfxunIl.gro que XunilRf.gr, mĂȘme si la capitalisation interne n'y est plus que cosmĂ©tique.
[^] # Re: Sans expression rationnelle
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 3.
Si j'ai bien compris le peu que j'ai lu sur Zorglub-truc-machin-chose, c'est plutÎt un argument contre ta solution, ça, non ? ;-)
# as allways
PostĂ© par hervĂ© Couvelard . ĂvaluĂ© Ă -7.
ça se termine en concours de celui qui à la plus grosse. da linux french page devient déprimant.
[^] # Re: as allways
PostĂ© par BAud (site web personnel) . ĂvaluĂ© Ă 1.
euh, c'est le rot13 qui te fait dire cela ? rot24 comme Rocco_Siffredi c'est l'inverse de 42 on va dire... l'alphabet français est de 26 lettres
[^] # Re: as allways
PostĂ© par SChauveau . ĂvaluĂ© Ă 10.
Cela s'écrit "as hallways" ou en bon français "comme dans les couloirs"
Désolé ...
[^] # Re: as allways
PostĂ© par Guillaume Denry (site web personnel) . ĂvaluĂ© Ă 4.
Personnellement, c'est, je trouve, la partie la plus intéressante du journal.
Mais t'as le droit de préférer un journal avec que des commentaires "wow, super ! Rien à redire, c'est l'algo parfait !".
# et en perl
PostĂ© par fearan . ĂvaluĂ© Ă 7.
plop
je rajoute du vide pour éviter le décalage de l'avatar
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: et en perl
PostĂ© par fearan . ĂvaluĂ© Ă 4.
sur un systĂšme utf-8 il peut ĂȘtre utile de faire l'une des action suivante
Voila, j'ajouterai qu'en cas de caractÚres spéciaux avant le premier mot, ils sont bouffés; je poste donc une version améliorée qui marche avec de la ponctuation avant :
$> echo '!!! ya mĂȘMe des accents en plein milieu !!!'| ./zorg.pl
!!! ay emĂm sed stnecca ne nielp ueilim !!!
$>
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: et en perl
PostĂ© par fearan . ĂvaluĂ© Ă 4.
et encore une correction :)
remplacer [A-Z] par \p{upper}
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: et en perl
PostĂ© par anaseto . ĂvaluĂ© Ă 3.
Pareil (si je dis pas de bĂȘtises), mais sans boucle :)
[^] # Re: et en perl
PostĂ© par fearan . ĂvaluĂ© Ă 3.
presque mais
$>echo '!Eviv BuLgrozé!!' | zorg2.pl
!Vive ĂzorgLub!!
$>
On a un changement des majuscules interne au mot, ce n'est donc pas équivalent au code initial; ensuite je me demande si on peut pas de faire a coup de regex récursive ;)
(t)ru(C) => C(r)(u)t => Curt, à rechercher du coté de la recherche des palindromes (du point de vu de la logique)
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: et en perl
PostĂ© par anaseto . ĂvaluĂ© Ă 2.
Pas faux, j'avais pas pensé que les majuscules à l'intérieur des mots étaient à prendre en compte de cette façon.
[^] # Re: et en perl
PostĂ© par anaseto . ĂvaluĂ© Ă 2.
Je vois pas trop comment on pourrait s'en sortir avec des regexps rĂ©cursives, car elles servent uniquement Ă matcher. Peut-ĂȘtre en utilisant des blocs
?{...}pour insĂ©rer du code dans la regexp. Par contre, on peut s'en sortir en faisant une fonction rĂ©cursive :mais c'est un peu tordu... et probablement moins efficace que d'utiliser substr et des indices. Mais c'est marrant quand mĂȘme :)
[^] # Re: et en perl
PostĂ© par anaseto . ĂvaluĂ© Ă 4.
Bon, test sur un roman de plus de trois cent pages, j'obtiens :
Comme quoi, ça change pas grand chose, et dans tous les cas, c'est clair que les langages de script sont pas fait pour travailler sur du texte caractÚre à caractÚre.
# Plus simple
PostĂ© par lovasoa (site web personnel) . ĂvaluĂ© Ă 7.
[^] # Re: Plus simple
PostĂ© par _kaos_ . ĂvaluĂ© Ă 2.
J'allais la demander !
Du coup, je change mon fusil d'épaule : quelqu'un pour du befunge, ou j'ai le temps d'y réfléchir demain ?
Matricule 23415
[^] # Re: Plus simple
PostĂ© par cosmocat . ĂvaluĂ© Ă 7.
En whitespace:
(Bon, c'est pas ma faute si ça passe pas sur linuxfr....)
Demain, je poste en AAAAAAAAAAAAAA!!!! ou autre
[^] # Re: Plus simple
PostĂ© par fearan . ĂvaluĂ© Ă 3.
essayes en .Gertrude ( http://esolangs.org/wiki/.Gertrude ) (par contre bon courage :)
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: Plus simple
PostĂ© par max22 . ĂvaluĂ© Ă 3.
Zorglub, Au secours!
,bulgroZ uA
Il y a un souci quelque part !
# elituni
PostĂ© par reynum (site web personnel) . ĂvaluĂ© Ă 6.
cnod eriassecén
kentoc'h mervel eget bezan saotred
# Merci, ĂŽ grand merci ...
PostĂ© par totof2000 . ĂvaluĂ© Ă 1.
... d'avoir enfin utilisé Python dans un contexte qui lui va particuliÚrement bien. C'est d'ailleurs le genre de truc pour lequel on devrait utiliser Python, et ne garder les autres trucs sérieux que pour des langages dignes de ce nom (Ruby étant l'un des meilleurs).
[^] # Re: Merci, ĂŽ grand merci ...
PostĂ© par Anonyme . ĂvaluĂ© Ă 7. DerniĂšre modification le 05 dĂ©cembre 2014 Ă 11:22.
Tu te trompes. Câest justement parce quâil est aussi possible dâutiliser Python Ă des fin burelesques quâil surpasse Ruby : lui (Python) au moins nâa pas une pierre coincĂ©e dans lâoignon.
[^] # Re: Merci, ĂŽ grand merci ...
PostĂ© par xcomcmdr . ĂvaluĂ© Ă 3.
AprĂšs le monkey patching de Ruby, je crois que le burlesque n'a plus de limites que ce soit pour Ruby ou pour Python...
"Quand certains rĂąlent contre systemd, d'autres s'attaquent aux vrais problĂšmes." (merci Sinma !)
[^] # Re: Merci, ĂŽ grand merci ...
PostĂ© par fearan . ĂvaluĂ© Ă 3.
je regrette son programme ne respecte pas la norme python, il manque une citation :P
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: Merci, ĂŽ grand merci ...
PostĂ© par Shuba . ĂvaluĂ© Ă 4.
Trop gros, passera pas...
# Parce que j'essaye de progresser en bash
PostĂ© par hervĂ© Couvelard . ĂvaluĂ© Ă 5.
./zorg "la phrase Ă reverser, une bonne phrase qui tue."
al esarhp Ă resrever, enu ennob esarhp iuq eut.
[^] # Re: Parce que j'essaye de progresser en bash
PostĂ© par fearan . ĂvaluĂ© Ă 5.
Il y a un problĂšme au niveau des majuscule et des la gestion de la ponctuation ;)
$>./zorg.sh '!!!Plop!?!'
!?!polP!!!
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: Parce que j'essaye de progresser en bash
PostĂ© par hervĂ© Couvelard . ĂvaluĂ© Ă 3.
ahoui....
petit scarabée devra progresser encore.
[^] # Re: Parce que j'essaye de progresser en bash
PostĂ© par hervĂ© Couvelard . ĂvaluĂ© Ă 2.
Amélioration des majuscules, mais bon la ponctuation est toujours dans les choux, enfin... dans une certaine mesure.
herve@DreamMachine:~$ ./zorg "La phrase Ă reverser, Une bonne phrase Qui tue."
Al esarhp Ă resrever, Enu ennob esarhp Iuq eut.
# Haskell
PostĂ© par max22 . ĂvaluĂ© Ă 10.
J'ai passé un bon vendredi...
[^] # Re: Haskell
PostĂ© par Ife . ĂvaluĂ© Ă 2.
Pourquoi faire du faux "currying"?
(\a -> \b -> w a == w b)est la mĂȘme chose que(\a b -> w a == w b).Ruby est le rĂ©sultat d'un gamin qui apprend le Java, puis jette un Ćil Ă Perl et se dit « je peux le rĂ©parer! »
[^] # Re: Haskell
PostĂ© par navaati . ĂvaluĂ© Ă 3. DerniĂšre modification le 07 dĂ©cembre 2014 Ă 12:40.
Qui est la mĂȘme chose que :
qui est la mĂȘme chose que :
(==) `on` ((||) <$> isAlphaNum <*> (=='_'))
Huhuhu, le Haskell, qu'est-ce qu'on se marre.
EDIT: Oh, j'avais pas remarqué, trÚs joli emploi du zip !
[^] # Re: Haskell
PostĂ© par max22 . ĂvaluĂ© Ă 1.
ah oui merci pour le
on. justement je me souvenais avoir vu ça, mais impossible de retrouver comment faire...[^] # Re: Haskell
PostĂ© par navaati . ĂvaluĂ© Ă 3.
Dans le mĂȘme genre, tu peux remplacer ça
getContents >>= putStrLn . unlines . map zorglangue . linespar çainteract $ unlines . map zorglangue . lines.Et ça
map cap $ zip l1 l2 where cap (f, c) = f cpar çazipWith ($) l1 l2.Et enfin (mais là je suis pas sûr sûr, en tout cas les types matchent), ça
concatMap capReverse . splitWordspar çacapReverse <=< splitWords.[^] # Re: Haskell
PostĂ© par max22 . ĂvaluĂ© Ă 2.
'<=<' je connaissais pas.
j'ai lu "programming in haskell", j'ai presque fini "learn yourself a haskell", et j'ai toujours l'impression de ne pas trop maitriser le haskell...
alors qu'à l'époque, pour python il m'a suffit d'un tutorial...
[^] # Re: Haskell
PostĂ© par anaseto . ĂvaluĂ© Ă 7.
Ce que je trouve, c'est qu'avec haskell, il y a beaucoup de choses simples dans d'autres langages qui sont enrobées de choses compliquées, et pas forcément faciles à retenir au début. Et puis certaines choses qu'on estime de base, pour lesquelles on a des syntaxes spéciales dans d'autres langages (tableaux, chaßnes de caractÚres et tables de hachages) ne sont pas plus pratiques à utiliser que des choses moins courantes. En fait, la seule structure de base vraiment pratique à utiliser en Haskell, c'est les listes chaßnées.
Mais le plus gĂȘnant, c'est quand tu crois que tu commences Ă connaĂźtre le langage et que tu tombes sur du code qui utilise des Lens, Arrows ou autre et tu t'aperçois qu'en fait, non :)
# blague
PostĂ© par savitzkaia . ĂvaluĂ© Ă 1.
référence inside
et grotesque se dit euqsetorg je suppose?
fin de ma blague, celui qui trouve la référence gagne un bon point
[^] # Re: blague
PostĂ© par max22 . ĂvaluĂ© Ă 4.
si personne ne trouve avant vendredi prochain tu nous donneras la réponse ?
[^] # Re: blague
PostĂ© par savitzkaia . ĂvaluĂ© Ă 2.
rhalala, bon c'est dans "l'horloger de la comÚte" de Tome et Janry. Je ne peux donner la page pour l'instant la BD est toujours chez mes parents qui ne sont pas à cÎté.
# Let's get Groovy, Baby!
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 6.
Moi aussi je saute des lignes pour éviter l'avatar.
Ou alors je pourrais vous mettre la version Java.
Nan j'déconne.
[^] # Re: Let's get Groovy, Baby!
PostĂ© par YBoy360 (site web personnel) . ĂvaluĂ© Ă 1.
Trop simple!
# Avec du poil aux pattes
PostĂ© par gnx . ĂvaluĂ© Ă 9.
Une version en x86_64, pour Linux. Ă assembler avec FASM.
Pour l'ASCII étendu, suit l'ISO 8859-15 (aka Latin-9), et donc pas l'UTF-8. Limites en dur pour la longueur de la ligne et des mots.
Pas spĂ©cialement propre (je dois Ă©crire en moyenne 50 lignes d'assembleur par an...), ni documentĂ©, ni optimisĂ© (mais vus les langages d'urbains Ă©pilĂ©s prĂ©sentĂ©s dans la plupart des autres propositions, ce programme (binaire de 1364 octets) devrait avoir fini son exĂ©cution avant que les autres n'aient fini leur chargement en mĂ©moire). Ne gĂšre pas pas correctement les signes « multiplication » et « division » (pas envie de m'embĂȘter pour ce cas particulier « intelligemment » placĂ© au beau milieu des majuscules accentuĂ©es).
[^] # Re: Avec du poil aux pattes
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 3.
Ah bah peut-ĂȘtre (encore que tu sais pas ce qu'un compilo / une VM malins peuvent faire !), mais nous au moins :
(ćé€) 140 characters (ćé€ăăăŸă§)640kB should be enough for everyoneAlors au choix hein... :-P
[^] # Re: Avec du poil aux pattes
PostĂ© par claudex . ĂvaluĂ© Ă 5.
Vu que le script original est en Python...
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Avec du poil aux pattes
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 4.
J'ai mis du temps Ă comprendre ta remarque. Alors elle est juste (et pas que pour la version python, les autres ne me semblent pas non plus utiliser de multithreading), mais on ne parle pas de la mĂȘme chose :) Je parlais du fait que son assembleur x86_64 ne doit pas trop bien marcher sur d'autres types de processeurs alors que le python, le perl, le groovy... pas de souci. Mais c'est vrai que j'aurais du dire "un seul type de processeur".
[^] # Re: Avec du poil aux pattes
PostĂ© par gnx . ĂvaluĂ© Ă 5.
Mouais, c'est quelque chose que l'on entend rĂ©pĂ©tĂ© ad nauseam depuis des annĂ©es, mais en pratique il est rare qu'ils produisent un code plus performant qu'un premier jet bĂȘtement codĂ© Ă la main. Et de toutes maniĂšres, vu qu'en gĂ©nĂ©ral on passe son temps Ă appeler des fonctions assez gĂ©nĂ©riques qui ne sont donc pas optimisĂ©es pour le cas que l'on utilise, il n'y a pas grand chose d'optimisable par le compilateur...
OK, mais on le gÚre comment ? Faudrait se mettre d'accord sur ce qu'on veut avant de commencer à le gérer, sinon, on gÚre l'UTF-8 en entrée mais en produisant une sortie au petit bonheur la chance. Par exemple, dans le programme Python d'origine, le "\w" de la regexp ne va pas forcément donner les résultats que l'on attend. Avec les chiffres, par exemple, pour "Vol_714", on pourrait raisonnablement attendre "Lov_714" (comportement de mon programme) ou "Lov_417" comme résultat. Eh bien non, parce que le "\w" compte les chiffres et les "_" comme des caractÚres de mot, ça va donner "417_lov". Ah non, tiens, en plus ça donne "417_loV", une « erreur » supplémentaire :-) puisque les chiffres n'ont pas de casse et que dans ce cas le programme recopie les caractÚres tels qu'ils sont entrés).
Quant au Chinois, tu as choisi un bon exemple des emmerdements dans lesquels on est plongé par la complexité et la richesse d'Unicode si on veut le gérer dans son intégralité : dans un texte chinois, il n'y a pas de mots discernables et il n'y a pas de majuscules. Bim, les 2 principales spécification de notre zorglub sautent. Que fait-on ? On inverse tout le bloc d'idéogrammes entre 2 ponctuations, comme le programme d'origine le fait ? Ou pas ? Et surtout quel sens cela a-t-il de rentrer du chinois dans ce programme ?
Ben dans la langue de Franquin, le mot le plus long ayant 25 caractÚres, avec 64 on should be tranquille. Sinon, on rachÚtera un caractÚre supplémentaire pour écrire « 128 » à la place :-)
Oui, je constate que c'est le mode de développement actuel. « Allez, cette fonction a un bon nom, je vais l'utiliser ; on verra bien ce que ça donne : avec un peu de bol, ça marche. » ... « hop c'est bon, j'ai testé avec un exemple, ça roule. Ouais, non lire la spécification de la fonction, ce n'est pas la peine puisque ça marche pour l'instant. On verra bien si quelqu'un se plaint » ...
NB : j'ai bien conscience que dans les programmes présentés ici, il ne s'agit pas d'un logiciel critique ou d'un soft facturé 200 000 ⏠à un malheureux pige^ Wclient, mais d'un petit jeu, donc ces reproches(?) ne leur sont pas destinés mais puisque je vois qu'on est d'humeur taquine... :-)
Ben... au moins dans le truc que j'ai proposé, les caractéristiques et les limites sont assez clairement mises en avant.
Si on respecte ces rĂšgles, le comportement devrait ĂȘtre fiable1 .
Si on prend le programme d'origine, pour les mĂȘme donnĂ©es d'entrĂ©es, si on l'exĂ©cute dans un environnement diffĂ©rent (changement des locales) => BOUM. Alors il vaut peut-ĂȘtre mieux savoir ce qui est supportĂ© et ce qui ne l'est pas par le programme et s'y tenir plutĂŽt que d'avoir un comportement non prĂ©vu ou un crash.
lĂ , logiquement, comme quand on fait une remarque sur l'orthographe, je ne doute pas que quelqu'un va me faire remarquer que j'ai oublier de traiter/spĂ©cifier un cas particulier :-) Ce que je veux dire, c'est que j'ai essayĂ© d'une part d'ĂȘtre conscient des limites de ma version et de les mentionner et d'autre part de ne traiter qu'un type d'entrĂ©e restreint Ă ce qui fait sens, plutĂŽt que de faire un truc qui est censĂ© tout traiter sans limites, mais qui le fait mal ou de maniĂšre inattendue. Et le coup de la non-gestion assumĂ©e des signes « multiplier » et « diviser », c'est un geste politique de protestation contre la faute de goĂ»t d'avoir collĂ© ces deux signes en plein milieu des majuscules accentuĂ©es :-). Sinon, c'est juste 2 fois 2 instructions Ă rajouter pour les gĂ©rer correctement. â©
[^] # Re: Avec du poil aux pattes
PostĂ© par lasher . ĂvaluĂ© Ă 4.
Chic, chic, un troll ! Donc euh, mon boulot a été, pendant un moment, d'optimiser des codes scientifiques (qui souvent sont bien plus faciles à optimiser pour un compilateur que des codes plus traditionnels). Je n'ai presque jamais eu à recourir à l'écriture en ASM, mais par contre savoir le lire était important :
Concernant mon dernier point : au final, plutĂŽt qu'Ă©crire en ASM, je finissais par savoir comment exprimer mes programmes sous une forme que le compilateur savait optimiser. Souvent, ça passe par la « dĂ©bilisation » du code : si on essaie d'ĂȘtre trop intelligent, le compilateur voit un tas de code compliquĂ©, et laisse tomber. Si au contraire on Ă©crit le code de la façon la plus simple possible, souvent le compilo comprend l'idiome, et trouve des choses intelligentes Ă faire. Il y a bien entendu des exceptions :
Sur certaines architectures c'est relativement faux : par exemple sur Itanium, tout un tas de mĂ©canismes super cool concernant la prĂ©dication des branches, la spĂ©culation de contrĂŽle ou de donnĂ©es, etc., n'Ă©taient tout simplement pas accessible Ă moins de faire de l'assembleur (gcc est dans les choux niveau optim sur ia64, et icc interdit l'utilisation d'assembleur inline â mais il y a des intrinsics pour certains trucs).
Bref. J'en profite pour lier vers ce blog qui propose un quiz à propos de différentes optimisations que le compilateur peut effectuer.
Ăa par contre je suis relativement d'accord. Je n'ai pas Ă©tĂ© regarder, mais j'aimerais bien savoir s'il existe des fonctions de la libc qui ont des variantes, du genre (code non testĂ©, y'a sans doute des bugs) :
NB: avec icc (et en supposant que mon code ne soit pas complĂštement rempli de bugs, ce qui est trĂšs possible), les boucles vont ĂȘtre dĂ©roulĂ©es, entre 2 et 6 fois, pour tirer avantage des 16 registres SSE. Pour tirer avantage des cas intermĂ©diaires, icc va gĂ©nĂ©rer des variantes qui vont complĂštement dĂ©rouler les cas du genre N=8, N=16, N=32, etc. Je ne crois pas que gcc fasse cela aussi systĂ©matiquement, mais il commence aussi Ă ĂȘtre bon pour ce qui est de la vectorisation.
Suivre le flux des commentaires
Note : les commentaires appartiennent Ă celles et ceux qui les ont postĂ©s. Nous nâen sommes pas responsables.