I / Bookmark
"Le concept du livre If Hemingway Wrote JavaScript, c'est d'explorer les libertés de style de JavaScript en les mettant entre les mains (imaginaires) des poids lourds de la littérature anglophone, de Shakespeare à Douglas Adams en passant par James Joyce", résume Ars Technica.
Apparemment, tous les exemples du livre fonctionnent et certains sont très originaux. Voir ci-après.
Lu sur http://www.courrierinternational.com/article/2014/12/03/si-hemingway-ecrivait-en-javascript
Tiré de http://arstechnica.com/information-technology/2014/11/holiday-reading-for-a-certain-sort-if-hemingway-wrote-javascript/
II / Forum Javascript
Ce morceau de code, tiré du livre en question, affiche les nombres premiers inférieurs au nombre passé en paramètre. C'est beau. Et ça marche. Avec de vrais morceaux de H2G2 dedans. Mais je n'ai pas tout compris … Une bonne âme se dévouera-t-elle ?
(Bon je n'ai pas vraiment cherché, pressé que j'étais de le partager avec vous donc je m'y met.)
// Here I am, brain the size of a planet, and they ask me to write Javascript
function kevinTheNumberMentioner(_){
l=[]
/* mostly harmless --> */ with(l) {
//Sorry about all this, my babel fish has a headache today...
for (ll=!+[]+!![];ll<_+(+!![]);ll++) {
lll=+!![];
while (ll%++lll);
//I've got this terrible pain in all the semicolons down my right-hand side
(ll==lll)&&push(ll);
}
forEach(alert);
}
//You're really not going to like this...
return [!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]];
}
# Version "traduite"
Posté par Gilles Crettenand (site web personnel) . Évalué à 8. Dernière modification le 03 décembre 2014 à 21:32.
Voila une version un peu plus lisible.
Javascript étant ce qu'il est,
[]
est considéré commetrue
qui est considéré comme 1, donc par exemple!+[]+!![]
vaut 2 (false + true + true
).Une fois le nom des variables remplacés (
l
,ll
etlll
), la compréhension est également grandement facilitée.[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
# Des pistes
Posté par Faya . Évalué à 1. Dernière modification le 03 décembre 2014 à 21:31.
Déjà _ est un nom de variable valide. J'ignorais.
[edit] grillé par Gilles Meier
# Commentaire supprimé
Posté par Anonyme . Évalué à 10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Je suis blasé
Posté par Faya . Évalué à 2.
Je pense que ce qui est intéressant ce n'est pas le code en lui même mais le fait d'attribuer un style à un auteur. Il faudrait voir les autres exemples du livre pour juger.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 10. Dernière modification le 03 décembre 2014 à 21:54.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Je suis blasé
Posté par Faya . Évalué à 4.
En l'occurence c'est le style de Marvin l'androïde de Douglas Adams.
Et tu es sûrement un vieux de la vieille de la programmation mais d'autres, notamment les apprentis vont trouver ça sympa. Respire et passe ton chemin.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 6.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Mouais ...
Posté par StyMaar . Évalué à 4.
Je vais casser un mythe, mais ce bouquin est très surfait je le déconseille : seuls 3 chapitres sont intéressants (le 4, le 5 et le 8), sinon dans l'ensemble ce livre a très mal vieilli : ça parle essentiellement de comment faire pour contourner les différences entre les navigateurs (comprendre "comment survivre à Internet Explorer") : John Resig est l'auteur de jQuery donc il en connaît un rayon là dessus, mais c'est assez peu intéressant en 2014 :
Par contre John Resig a fait un petit exercice interactif qui concentre l'essentiel de ce qu'il a écrit d'utile dans son bouquin, et qui lui vaut le coup d'être fait : http://ejohn.org/apps/learn/
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 3. Dernière modification le 04 décembre 2014 à 09:05.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Mouais ...
Posté par StyMaar . Évalué à 5.
Je vais essayer de clarifier mon propos : je n'ai rien contre ce bouquin, il n'est pas spécialement mauvais mais il subit la loi du genre quand il s'agit de livre sur le JavaScript : un livre qui a plus de 3-4 ans est obsolète et il faut arrêter de le conseiller aux gens : The Good part de Crockford était un excellent bouquin en son temps, mais il a vraiment pris un coup de vieux, et c'est pareil pour The secrets of the JavaScript Ninja (sauf qu'il a encore plus mal vieilli).
Ce livre parle de du JavaScript à l'époque où ECMAScript 3 n'était pas encore universellement supporté, où les API du DOM n'étaient quasiment pas standardisées, avec 2 navigateurs ayant chacun leur vision des choses, et où JavaScript était un langage de script pour faire des animations et des petits widget sympa pour améliorer l'ergonomie des sites internet. Alors qu'aujourd'hui JavaScript c'est :
Ce livre aborde des problématiques d'une autre époque, et ne donne pas les clés pour faire du JavaScript en 2014, c'est pourquoi aujourd'hui je le déconseille.
Si quelqu'un a connaissance d'un bon livre plus récent, qui soit plus d'actualité je suis preneur !
[^] # Re: Je suis blasé
Posté par François (site web personnel) . Évalué à 1.
"Javascript Ninja" et on a un samouraï en armure sur la couverture :/
[^] # Re: Je suis blasé
Posté par Frank-N-Furter . Évalué à 3.
http://en.wikipedia.org/wiki/Ninja#Outerwear
Depending on the time of day, the French go either way.
[^] # Re: Je suis blasé
Posté par chinoisfurax . Évalué à 9.
Il y a bien un ninja sur la couverture, c'est juste qu'on ne le voit pas.
[^] # Re: Je suis blasé
Posté par fabricius . Évalué à -3.
Moi si je fais une relecture de code, et que je vois du code comme ça, j'allume le gars qui a écrit ça! Mais bon, il y avait peut-etre une bonne raison d'obscurcir le code.
[^] # Re: Je suis blasé
Posté par arnaudus . Évalué à 8.
Bah, c'est aussi que les gens font ce qui est à leur portée. C'est 100 fois plus difficile d'écrire du beau code clair que de jouer à obfusquer un algo pondu par quelqu'un d'autre. J'ai l'impression que tu reproches à des enfants de ne pas respecter strictement les règles du foot en jouant au ballon : ils jouent au ballon, c'est déja pas mal, c'est mieux que de rester devant la télé. Les règles, ils les respecteront quand ils seront plus grands. Le côté ludique est important dans la vie.
Ceci dit, je suis bien d'accord que pédagogiquement, ça n'est pas terrible. On est abreuvés de ce genre de code débile ; à un moment c'était la mode des one-liner perl abscons, il y a eu des périodes brainfuck/whitespace/mooMoo, etc. Ces jeux sont malheureusement souvent présentés comme des "trucs de geeks", et on les associe avec une courbe de progression en informatique : on est un gros nul quand on ne les comprend pas, on progresse quand on les comprend, et on est un dieu quand on les écrit. Le problème, c'est qu'on est rarement confronté à des exemples de ce qu'il faut faire, à moins d'avoir la chance de travailler dans un environnement où on bosse sur du code très propre écrit par des gens très forts. Ça serait vraiment sympa d'avoir plus d'exemples de beau code, qui brille par son élégance et sa simplicité, mais c'est moins vendeur.
[^] # Re: Je suis blasé
Posté par navaati . Évalué à 2.
Le noyal, pour ceux qui aiment le C bas niveau. Qt, pour ceux qui aiment l'objet et le graphique. La lib standard haskell pour ceux qui aiment le fonctionnel, ou emacs pour ceux qui aiment le fonctionnel un peu moins extrême.
Les exemples ne manquent pas, je ne parle ici que de ceux que je connais.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 4.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Je suis blasé
Posté par Faya . Évalué à 5.
L'intérêt d'obscursir est complètement esthétique.
C'est un code supposément écrit par Marvin , un robot doté d'un processeur si puissant qu'un cerveau biologique, pour déployer une puissance de calcul équivalente, devrait mesurer la taille d'une planète .
Donc l'auteur voulait rendre le code illisible au premier coup d'oeil. Ça n'a aucun intéret didactique, ce n'est pas un livre pour se former à quoi que ce soit, c'est purement ludique !
[^] # Re: Je suis blasé
Posté par arnaudus . Évalué à 2.
Je pense qu'on a bien compris, mais c'est juste que 99% du code sur lequel on peut tomber au hasard d'une discussion est pourri, que ça soit pour jouer ou non. Ce n'est pas un problème particulier, c'est un problème général : si 99% de ce que tu pouvais lire (publicités, magazines, etc) ne contenait que des fautes d'orthographes volontaires, il ne serait pas évident d'écrire correctement.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 4.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Je suis blasé
Posté par Faya . Évalué à 0.
Le code est laid, c'est fait pour. Bref tu fais exprès de ne pas comprendre.
(En passant j'aurais honte d'écrire "Jore" au lieu de "Genre").
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Je suis blasé
Posté par Faya . Évalué à 0.
J'essaie une dernière fois (de défendre une unique page dans un livre qui en compte des dizaines, que je n'ai ni lu ni écrit …)
Voici ce que je comprend de l'intention de l'auteur :
C'est tout. On s'en fout que ce soit laid, efficace, que ne sais-je. Il doit juste être illisible.
Nouveau non, j'ai déjà croisé "jore" dans un contexte humoristique (eingousef) mais vu que tu l'as mis au moins quatre fois juste sur cette page je vois pas bien où est l'humour. Un peu comme toi et l'utilité du code de Marvin en fait.
Salut et merci pour le poisson.
# « Si Hemingway écrivait en JavaScript »
Posté par G.bleu (site web personnel) . Évalué à 10.
Ma foi, on tient une piste intéressante sur les causes de son suicide…
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.