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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Actualités Discussion :

Dans la peau d'un grand écrivain, quel programme JavaScript auriez-vous écrit ?

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    CEO
    Inscrit en
    juillet 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : CEO
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2012
    Messages : 78
    Points : 1 395
    Points
    1 395
    Par défaut Dans la peau d'un grand écrivain, quel programme JavaScript auriez-vous écrit ?
    Dans la peau d'un grand écrivain, quel programme JavaScript auriez-vous écrit ?
    Un développeur de Twitter interroge cinq styles d'écriture


    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 - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 113
    Points : 26 276
    Points
    26 276
    Par défaut
    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.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    juin 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : juin 2010
    Messages : 319
    Points : 842
    Points
    842
    Par défaut
    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.
    "Donnez un poisson à un Homme, et il mangera un jour. Apprenez-lui à pêcher, et il mangera tous les jours."

  4. #4
    Membre éprouvé Avatar de jmnicolas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2007
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : juin 2007
    Messages : 422
    Points : 933
    Points
    933
    Par défaut
    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 ...
    The greatest shortcoming of the human race is our inability to understand the exponential function. Albert A. Bartlett

    La plus grande lacune de la race humaine c'est notre incapacité à comprendre la fonction exponentielle.

  5. #5
    Membre éprouvé
    Homme Profil pro
    -
    Inscrit en
    octobre 2011
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : octobre 2011
    Messages : 344
    Points : 1 225
    Points
    1 225
    Par défaut
    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.

  6. #6
    Membre expérimenté Avatar de chaplin
    Profil pro
    Inscrit en
    août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 1 215
    Points : 1 665
    Points
    1 665
    Par défaut
    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.

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2010
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2010
    Messages : 254
    Points : 537
    Points
    537
    Par défaut
    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)
    "L'insanité consiste à répéter la même action dans l'espoir d'aboutir à un résultat différent" Albert Einstein
    ----------------------
    T.O.A.O 6-MarViN

  8. #8
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : mai 2004
    Messages : 1 001
    Points : 2 480
    Points
    2 480
    Par défaut
    Personnellement ça :

    //Upon the noble list bestow a zero
    J'adore, je vais tenter de le recaser quelque part
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  9. #9
    Membre éclairé

    Homme Profil pro
    ingénieur de recherche
    Inscrit en
    mars 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : ingénieur de recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : mars 2011
    Messages : 103
    Points : 864
    Points
    864
    Par défaut
    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.
    Mes tutoriels avancés sur la triangulation par filet à surface et sur les octree - N'hésitez pas à consulter les tutoriels et FAQ 2D/3D/jeux.

Discussions similaires

  1. Quel framework Javascript utilisez vous en développement mobile HTML5
    Par randriano dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 09/04/2014, 09h22
  2. Quel développeur JavaScript êtes-vous ?
    Par Hinault Romaric dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 06/01/2014, 16h06
  3. Imaginez-vous dans la peau de Bill Gates à propos d'Access
    Par Maxence HUBICHE dans le forum Sondages et Débats
    Réponses: 12
    Dernier message: 15/04/2010, 18h46
  4. Quel framework javascript utilisez-vous ?
    Par codefalse dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/08/2008, 10h28
  5. Réponses: 5
    Dernier message: 11/06/2008, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo