IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Dans la peau d'un grand écrivain, quel programme JavaScript auriez-vous écrit ?
Un employé de Twitter interroge cinq styles d'écriture

Le , par tarikbenmerar

7PARTAGES

7  2 
Imaginez qu'un jour, vous vous levez le matin dans la peau d'un célèbre écrivant, William Shakespeare par exemple. Vous vous mettez devant votre PC, et vous commencez à écrire du JavaScript. Vous avez appris les rudiments de ce langage, et vous vous dites : « je vais écrire une petite fonction Fibonacci, histoire de m’exercer un petit peu ».

Quel style de programmation auriez-vous produit ? Comment auriez-vous structuré votre programme avec cette personnalité unique de l'écrivain ?

Ça vous semble insensé ? Difficile à imaginer ?

Pas si sûr. Angus Croll, membre de l'équipe noyau web chez Twitter et amoureux de littérature, a écrit un article très original, où il illustre le programme « imaginaire » de cinq écrivains célèbres : Ernest Hemingway, William Shakespeare, Andre Breton, Roberto Bolaño et Charles Dickens. Chacun d'eux devait coder une fonction Fibonacci, avec son style d'écriture propre.

Ernest Hemingway

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function fibonacci(size) {

  var first = 0, second = 1, next, count = 2, result = [first, second];

  if(size < 2)
    return "the request was made but it was not good"

  while(count++ < size) {
    next = first + second;
    first = second;
    second = next;
    result.push(next);
  }
  return result;
}
Le code d'Ernest Hemingway est réduit à l'essentiel sans mot ou variable gaspillés. Pas de fantaisie, ni de logique élaborée ou des noms de variables intelligents. Tout y est simple et clair. En fait, c'est ce qui fait la beauté de ses écrits. Il ne se casse pas trop la tête. Si tu lui demandes le résultat pour un nombre plus petit, il vous ignorera tout simplement : « Je suis fatigué, et cette question est stupide ».

William Shakespeare

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function theSeriesOfFIBONACCI(theSize) {

  //a CALCKULATION in two acts.
  //employ'ng the humourous logick of JAVA-SCRIPTE

  //Dramatis Personae
  var theResult; //an ARRAY to contain THE NUMBERS
  var theCounter; //a NUMBER, serv'nt to the FOR LOOP

  //ACT I: in which a ZERO is added for INITIATION

  //[ENTER: theResult]

  //Upon the noble list bestow a zero
  var theResult = [0];

  //ACT II: a LOOP in which the final TWO NUMBERS are QUEREED and SUMM'D

  //[ENTER: theCounter]

  //Commence at one and venture o'er the numbers
  for (theCounter = 1; theCounter < theSize; theCounter++) {
    //By divination set adjoining members
    theResult[theCounter] = (theResult[theCounter-1]||1) + theResult[Math.max(0, theCounter-2)];
  }

  //'Tis done, and here's the answer.
  return theResult;

  //[Exuent]
}
Avec William Shakespeare, on entre dans l’excès des mots, avec des commentaires écrits en pentamètre iambique. Dans ses pièces de théâtre, Shakespeare ajoute souvent le sentiment dramatique, avec ce style d'écriture caractéristique. Apparemment, ça se ressent aussi dans son code, et son style ne change pas quand il programme.

André Breton

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
function Colette(umbrella) {
  var staircase = 0, galleons = 0, brigantines = 1, armada = [galleons, brigantines], bassoon;
  Array.prototype.embrace = [].push;

  while(2 + staircase++ < umbrella) {
    bassoon = galleons + brigantines;
    armada.embrace(brigantines = (galleons = brigantines, bassoon));
  }

  return armada;
}
André Breton est un fondateur du mouvement surréaliste. Il croyait que les rêves étaient plus intéressants que la réalité, et doivent être la base de nos efforts créatifs. Sa solution est mise en évidence par une logique élégante. Tout simplement, c'est un développeur très créatif.

Roberto Bolaño
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function LeonardoPisanoBigollo(l) {

  if(l < 0) {
    return "I'd prefer not to respond. (Although several replies occur to me)"
  }

  /**/

  //Everything is getting complicated.
  for (var i=2,r=[0,1].slice(0,l);i<l;r.push(r[i-1]+r[i-2]),i++)

  /**/

  //Here are some other mathematicians. Mostly it's just nonsense.

  rationalTheorists = ["Archimedes of Syracuse", "Pierre de Fermat (such margins, boys!)", "Srinivasa Ramanujan", "Rene Descartes", "Leonhard Euler", "Carl Gauss", "Johann Bernoulli", "Jacob Bernoulli", "Aryabhata", "Brahmagupta", "Bhaskara II", "Nilakantha Somayaji", "Omar Khayyám", "Muhammad ibn Mūsā al-Khwārizmī", "Bernhard Riemann", "Gottfried Leibniz", "Andrey Kolmogorov", "Euclid of Alexandria", "Jules Henri Poincaré", "Srinivasa Ramanujan", "Alexander Grothendieck (who could forget?)", "David Hilbert", "Alan Turing", "von Neumann", "Kurt Gödel", "Joseph-Louis Lagrange", "Georg Cantor", "William Rowan Hamilton", "Carl Jacobi", "Évariste Galois", "Nikolay Lobachevsky", "Rene Descartes", "Joseph Fourier", "Pierre-Simon Laplace", "Alonzo Church", "Nikolay Bogolyubov"]

  /**/

  //I didn't understand any of this, but here it is anyway.
  return r

  /**/

  //Nothing happens here and if it does I'd rather not talk about it.
}
Avec Bolaño, c'est plutôt une complexité sans effort et une naïveté pleine de charme. Son style narratif est caractérisé par une honnêteté désarmante et séduisante. Aucun aspect de la fragilité humaine n'est censuré, mais la chaleur et l'humour transmis dans ses mots sont à la fois engageants et exaltants.

Fidèle à ses habitudes, son code est truffé d'admission d'insécurité, d’embarras et d'ignorance. Une solution brillante, mais qui vous engage dans la réflexion. Il n'utilise pas les points-virgules (reflet de l'absence de guillemets dans ses romans) et l’utilisation implicite des variables globales suggère leurs apparitions dans des chapitres à venir.

Charles Dickens

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
function mrFibbowicksNumbers(enormity) {
  var assortment = [0,1,1], tally = 3, artfulRatio = 1.61803;

  while(tally++ < enormity) {
    //here is an exceedingly clever device
    assortment.push(Math.round(assortment[tally-2] * artfulRatio));
  }

  //should there be an overabundance of elements, a remedy need be applied
  return assortment.slice(0, enormity);
}
Avec Dickens, on joue dans le superficiel. Et ça se ressent dans son code. Il manque de la substance et une compréhension profonde de l'exercice. Il a échoué à saisir la philosophie sous-jacente de la série de Fibonnaci.

Conclusion

On peut dire que cet article d’Angus Croll illustre grandement le rapprochement entre l'écriture littéraire et la programmation. Chacun de nous peut laisser une empreinte et un style propre, que ce soit dans la programmation, ou dans l'écriture. Une forme d'art réservée à une élite. C'est une illustration de la richesse de langages de programmation tels que le JavaScript. C'est ainsi, qu'au-delà de l’imaginaire et de l'humeur, l'auteur nous laisse avec une réflexion profonde, que je vous laisse le plaisir de lire :

« Que ce soit dans l'albumen protecteur de Crockford ou dans les confins des classes de sciences sèches et fermées d'esprit, la doctrine et le dogme sont les ennemies du bon programme JavaScript. Certains développeurs aiment les livres contenant les règles (strictes) à suivre, ou les [solutions] passent partout – c'est pourquoi nous avons Java. Le plaisir senti dans JavaScript est ancré dans le manque de rigidité et les possibilités infinies qu'il permet. Les langages naturels gardent ces mêmes potentiels. Les meilleurs auteurs et les meilleurs développeurs JavaScript sont ceux obsédés par le langage, qui explorent et expérimentent avec tous les jours, et de cette manière, ils développent leurs propres styles, leurs propres idiomes, et leurs propres expressions. »

Source : site d'Angus Croll

Et vous ?

Que pensez-vous de ce rapprochement entre l'écriture et la programmation ?
Dans la peau de votre écrivain préféré, quel programme JavaScript auriez-vous écrit ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Paul TOTH
Expert éminent sénior https://www.developpez.com
Le 08/08/2012 à 16:57
j'ai personnellement vu quelques sources écrits suivant le style de Howard Phillips Lovecraft... je tremble encore à l'inénarrable souvenir de cette indicible lecture nauséabonde.
12  1 
Avatar de vampirella
Membre éclairé https://www.developpez.com
Le 08/08/2012 à 18:02
Que pensez-vous de ce rapprochement entre l'écriture et la programmation ?
Ce rapprochement a un certain sens, si néanmoins on suppose aussi que les genre littéraires correspondent à un langage. Une pièce de théâtre, un roman policier et un biographie n'auront pas du tout les même codes d'écriture, bien que certaines ressemblances puissent être remarquées.

Ceci dit, on voudrait dans l'idéal qu'un code soit avant tout le plus lisible pour un humain, a fortiori le futur repreneur du code dans quelques mois (cela peut être soi-même ^^). Les contraintes de temps, d'efficacité, etc. rendent souvent les codes différent d'une personne à l'autre. Si en plus on rajoute qu'il existe rarement une solution unique à un problème donné (data model ou manière d'implémenter), on peut effectivement facilement dire qu'il y a des "styles" de programmation.

Par contre, les oeuvres littéraires ont un public qui voit directement l'oeuvre ... contrairement au code qui se "masque" derrière un produit fini. Difficile de deviner derrière une IHM que ça aurait pu être mieux fait sans étudier les performances ou sans traquer les bugs.
2  0 
Avatar de jmnicolas
Membre éprouvé https://www.developpez.com
Le 08/08/2012 à 19:43
Moi ça m'évoque qu'ils ont vraiment trop de temps devant eux chez Google

Je sais on va me reprocher de pas être poétique, mais si je devais me placer dans la peau d'un personnage lorsque je code c'est celui d'un maçon : j'assemble des briques logicielles que je cimente avec mon code, tout en ayant la maison finie en tête.

Ça fait tout de suite moins rêver, je sais ...
1  0 
Avatar de Drizzt [Drone38]
Membre émérite https://www.developpez.com
Le 09/08/2012 à 18:07
Personnellement ça :

//Upon the noble list bestow a zero
J'adore, je vais tenter de le recaser quelque part
1  0 
Avatar de laerne
Membre éprouvé https://www.developpez.com
Le 08/08/2012 à 20:32
Je tiens à signaler tout de même que si Dickens « n'a pas réussi à comprendre » la philosophie de la suite de Fibonacci, son programme ne fait pas n'importe quoi !

En effet, si (x_n) est la suite de fibonacci, alors la suite quotient (x_n / x_{n-1}) converge vers le nombre d'or 1.618... et de manière alterné plus grand/plus petit que la valeur limite.
Je suis pas sur que le Math.round tronque comme il faut pour réobtenir la suite de fibonnaci mais on va supposer que Croll sait mieux que moi. Ou alors c'est juste une approximation.

EDIT: Ah non, d'après wikipedia, il y a un facteur sqrt(5) quelque part*:

Mais vu qu'il ne fais pas la nième puissance du nombre d'or mais plutot son produit avec le nombre de Fibonacci d'abord, je sais pas.
0  0 
Avatar de chaplin
Membre chevronné https://www.developpez.com
Le 08/08/2012 à 22:16
La description d'Hermingway avec une notation U N+2 = U N+1 + U N

En fait, il manque juste une notation plus mathématique avec un jeu de caractère riche.
0  0 
Avatar de 6-MarViN
Membre confirmé https://www.developpez.com
Le 09/08/2012 à 17:05
Ca n'a peut-être pas beaucoup de rapport, mais dans le doute : en fouinant un jour du côté des langages de prog "fait maison" je suis tombé sur le SPL (Shakespeare Programming Language).

En voyant la partie de cette article consacré à Shakespeare, ça m'a fait immédiatement pensé à ça.

(Pour les intéressés : SPL)
0  0 
Avatar de PierroVsf
Membre éclairé https://www.developpez.com
Le 19/07/2016 à 14:57
Excellent!

Je cherchais un article sur les equation de Lagrange et je suis tombe la dessus. Shakespeare a le meilleur programme! Une chose des plus importantes dans un programme est qu'il sera relu par des programmeurs. Plus il y a de commentaires, mieux c'est! Un peu de style ca fait pas de mal! Cela enjaille le programmeur et le motive a travailler!

Je m'excuse profondement du manque d'accent dans mon texte je n'ai qu'un clavier Allemand sous la main.
0  0