Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 17KB

5 vuotta sitten
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <!doctype html>
  2. <html lang=fr>
  3. <head>
  4. <!-- Always define the charset before the title -->
  5. <meta charset=utf-8>
  6. <title>Le framework web le plus rapide du monde — Biologeek — David Larlet</title>
  7. <!-- Define a viewport to mobile devices to use - telling the browser to assume that the page is as wide as the device (width=device-width) and setting the initial page zoom level to be 1 (initial-scale=1.0) -->
  8. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  9. <!-- Fake favicon, to avoid extra request to the server -->
  10. <link rel="icon" href="data:;base64,iVBORw0KGgo=">
  11. <link type="application/atom+xml" rel="alternate" title="Feed" href="/david/log/" />
  12. <link rel="manifest" href="/manifest.json">
  13. <link rel="stylesheet" href="/static/david/css/larlet-david-_J6Rv.css" data-instant-track />
  14. <noscript>
  15. <style type="text/css">
  16. /* Otherwise fonts are loaded by JS for faster initial rendering. See scripts at the bottom. */
  17. body {
  18. font-family: 'EquityTextB', serif;
  19. }
  20. h1, h2, h3, h4, h5, h6, time, nav a, nav a:link, nav a:visited {
  21. font-family: 'EquityCapsB', sans-serif;
  22. font-variant: normal;
  23. }
  24. </style>
  25. </noscript>
  26. <!-- Canonical URL for SEO purposes -->
  27. <link rel="canonical" href="https://larlet.fr/david/biologeek/archives/20080903-le-framework-web-le-plus-rapide-du-monde">
  28. </head>
  29. <body>
  30. <div>
  31. <header>
  32. <nav>
  33. <p>
  34. <small>
  35. Je suis <a href="/david/" title="Profil public">David Larlet</a>, <a href="/david/pro/" title="Activité professionnelle">artisan</a> du web qui vous <a href="/david/pro/accompagnement/" title="Activité d’accompagnement">accompagne</a><span class="more-infos"> dans l’acquisition de savoirs pour concevoir des <a href="/david/pro/produits-essentiels/" title="Qu’est-ce qu’un produit essentiel ?">produits essentiels</a></span>. <span class="more-more-infos">Discutons ensemble d’une <a href="/david/pro/devis/" title="En savoir plus">non-demande de devis</a>.</span> Je partage ici mes <a href="/david/blog/" title="Expériences bienveillantes">réflexions</a> et <a href="/david/correspondances/2017/" title="Lettres hebdomadaires">correspondances</a>.
  36. </small>
  37. </p>
  38. </nav>
  39. </header>
  40. <section>
  41. <h1 property="schema:name">Le framework web le plus rapide du monde</h1>
  42. <article typeof="schema:BlogPosting">
  43. <div property="schema:articleBody">
  44. <p>En exclusivité, je vous révèle mon code, sous <a href="http://sam.zoy.org/wtfpl/">licence WTFPL</a> :</p>
  45. <blockquote>
  46. <p>$ echo "Hello World" &gt; index.html</p>
  47. </blockquote>
  48. <p>Je vous épargne les tableaux de résultats car je suis relativement sûr de mon coup.</p>
  49. <p>Ou pourquoi il est <a href="http://www.xhtml.net/php/pluf-framework-php/494-Pluf-Framework-PHP-le-plus-rapide-du-marche">inutile de benchmarker des "Hello world"</a> qui n'ont aucun sens. Un vrai comparatif demanderait de développer plusieurs applis avec plusieurs frameworks sur plusieurs architectures avec des charges aléatoires en comparant les temps d'accès, de développement et de maintenance et personne n'a encore pris le temps de faire ça car ça dépend aussi d'autres facteurs difficilement quantifiables (expérience, compétences, etc).</p>
  50. </div>
  51. </article>
  52. <footer>
  53. <h6 property="schema:datePublished">— 03/09/2008</h6>
  54. </footer>
  55. </section>
  56. <section>
  57. <div>
  58. <h3>Articles peut-être en rapport</h3>
  59. <ul>
  60. <li><a href="/david/biologeek/archives/20080902-big-browser-sinvite-chez-vous/" title="Accès à BiG Browser s&#39;invite chez vous">BiG Browser s&#39;invite chez vous</a></li>
  61. <li><a href="/david/biologeek/archives/20080829-ubiquity-et-le-web-semantique/" title="Accès à Ubiquity et le Web Sémantique">Ubiquity et le Web Sémantique</a></li>
  62. <li><a href="/david/biologeek/archives/20080826-rdfa-et-html5-vs-microformats-et-xhtml2/" title="Accès à RDFa et HTML5 (vs. microformats et XHTML2)">RDFa et HTML5 (vs. microformats et XHTML2)</a></li>
  63. </ul>
  64. </div>
  65. </section>
  66. <section>
  67. <div id="comments">
  68. <h3>Commentaires</h3>
  69. <div class="comment" typeof="schema:UserComments">
  70. <p class="comment-meta">
  71. <span class="comment-author" property="schema:creator">NiCoS</span> le <span class="comment-date" property="schema:commentTime">03/09/2008</span> :
  72. </p>
  73. <div class="comment-content" property="schema:commentText">
  74. <p>Tu veux dire que c&#39;est bash le framework le plus rapide du monde ? ;-)</p>
  75. <p>~~~~~~&gt;[]</p>
  76. <p>Sinon je te rejoinds complètement...</p>
  77. </div>
  78. </div>
  79. <div class="comment" typeof="schema:UserComments">
  80. <p class="comment-meta">
  81. <span class="comment-author" property="schema:creator">Sebseb01</span> le <span class="comment-date" property="schema:commentTime">03/09/2008</span> :
  82. </p>
  83. <div class="comment-content" property="schema:commentText">
  84. <p>Personelement je n&#39;utiliserait pas un framework qui fait pas du code w3c complient</p>
  85. <p>==&gt;[]</p>
  86. </div>
  87. </div>
  88. <div class="comment" typeof="schema:UserComments">
  89. <p class="comment-meta">
  90. <span class="comment-author" property="schema:creator">Didier Misson</span> le <span class="comment-date" property="schema:commentTime">03/09/2008</span> :
  91. </p>
  92. <div class="comment-content" property="schema:commentText">
  93. <p>Enfin un truc SIMPLE !</p>
  94. <p>Avez-vous prévu une version française ?<br />Merci</p>
  95. <p>:p)</p>
  96. </div>
  97. </div>
  98. <div class="comment" typeof="schema:UserComments">
  99. <p class="comment-meta">
  100. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">03/09/2008</span> :
  101. </p>
  102. <div class="comment-content" property="schema:commentText">
  103. <p>La licence vous autorise le fork mais ça sera forcément moins rapide que le mien :p</p>
  104. </div>
  105. </div>
  106. <div class="comment" typeof="schema:UserComments">
  107. <p class="comment-meta">
  108. <span class="comment-author" property="schema:creator">Mat</span> le <span class="comment-date" property="schema:commentTime">03/09/2008</span> :
  109. </p>
  110. <div class="comment-content" property="schema:commentText">
  111. <p>Je suis désolé mais je n&#39;ai vraiment pas la même vision des choses ! Le framework idéal à mon avis a plutôt cette tête :</p>
  112. <p>$&gt; cat &lt;&lt; EOF &gt; index.html<br />Hello World !<br />EOF</p>
  113. <p>D&#39;une part il satisfera les amateurs de chats.<br />D&#39;autre part, la partie traitement est séparée du texte, ce qui fait gagner un temps fou à la traduction.</p>
  114. <p>Le seul point faible c&#39;est que la licence oblige les utilisateurs à tapisser les murs de leurs toilettes avec une version imprimée du code source.</p>
  115. <p>Bref, je suis complètement d&#39;accord : ça rime à rien ces bench...</p>
  116. </div>
  117. </div>
  118. <div class="comment" typeof="schema:UserComments">
  119. <p class="comment-meta">
  120. <span class="comment-author" property="schema:creator">Loïc d&#39;Anterroches</span> le <span class="comment-date" property="schema:commentTime">03/09/2008</span> :
  121. </p>
  122. <div class="comment-content" property="schema:commentText">
  123. <p>Désolé de t&#39;avoir vexé... ne le prend pas mal comme ça ;-)</p>
  124. </div>
  125. </div>
  126. <div class="comment" typeof="schema:UserComments">
  127. <p class="comment-meta">
  128. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">04/09/2008</span> :
  129. </p>
  130. <div class="comment-content" property="schema:commentText">
  131. <p>@Loïc d&#39;Anteroches : qui aime bien châtie bien :-).</p>
  132. </div>
  133. </div>
  134. <div class="comment" typeof="schema:UserComments">
  135. <p class="comment-meta">
  136. <span class="comment-author" property="schema:creator">Loïc d&#39;Anterroches</span> le <span class="comment-date" property="schema:commentTime">04/09/2008</span> :
  137. </p>
  138. <div class="comment-content" property="schema:commentText">
  139. <p>Nous sommes tous les deux des scientifiques pragmatiques, donc bon, on sait tous les deux où se trouve la valeur ajoutée d&#39;un framework de développement web : nulle part ou presque. Dans le sens où aujourd&#39;hui on ne peut rien faire sans et que le choix X ou Y est principalement une question de goût.</p>
  140. <p>D&#39;ailleurs, notre valeur ajoutée est bien au delà de tout ça, grosso modo, je ne gagne pas un rond avec Django &amp; Cie, mais je gagne en utilisant Django pour fournir de l&#39;application de calcul scientifique. Être spécialiste dans un domaine très pointu permet de travailler un mois par an et s&#39;amuser le reste du temps.</p>
  141. <p>Un article qui exprime bien ce que je pense, écrit en 2004, il est toujours d&#39;actualité, particulièrement les 2 derniers paragraphes :</p>
  142. <p><a href="http://www.framasoft.net/article3436.html">http://www.framasoft.net/article3436.html</a></p>
  143. </div>
  144. </div>
  145. <div class="comment" typeof="schema:UserComments">
  146. <p class="comment-meta">
  147. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">04/09/2008</span> :
  148. </p>
  149. <div class="comment-content" property="schema:commentText">
  150. <p>Même si je te rejoins sur le fond, je pense que l&#39;outil peut faire la différence sur certains points précis. Par exemple si je veux faire de la localisation, je pense que j&#39;aurais plus de facilité avec Django.contrib.gis qu&#39;avec Pluf (dis moi si je me trompe).</p>
  151. <p>C&#39;est intéressant de lire un article aussi vieux et toujours d&#39;actualité :-).</p>
  152. </div>
  153. </div>
  154. <div class="comment" typeof="schema:UserComments">
  155. <p class="comment-meta">
  156. <span class="comment-author" property="schema:creator">Greg</span> le <span class="comment-date" property="schema:commentTime">04/09/2008</span> :
  157. </p>
  158. <div class="comment-content" property="schema:commentText">
  159. <p>Non, Loïc a raison. Si les egos étaient benchmarkés, le sien arriverait certainement dans les toutes premières positions au classement.</p>
  160. <p>Pour moi de toute façon, qui dit fonctionnalités, abstraction et découplage dit overhead supplémentaire pour gérer ces capacités justement, assez mathématiquement.</p>
  161. <p>C&#39;est beaucoup trop facile de livrer un framework configuré au minimum, de lancer des benchs sur un &quot;Hello world&quot; (1) et de se congratuler des résultats. Comme l&#39;illustre David dans son billet, on trouvera toujours une architecture plus merdique mais orientée perfs à tout prix, quitte à user de la plus pure mauvaise foi intellectuelle à dessein.</p>
  162. <p>Et puis cette manie systématique des grands génies méconnus du PHP à cracher dans et sur la soupe des autres, ça me fatigue. Plutôt que d&#39;essayer de proposer des patches ou suggestions constructives d&#39;amélioration, ben non ! Faisons plutôt un post chiant sur le reste du monde pour prouver notre supériorité intellectuelle sur les gueux ignorants. Pfff.</p>
  163. <p>PS: Désolé de nourir un troll de la sorte, mais trop c&#39;est trop.</p>
  164. <p>(1) <a href="http://solarphp.com/class/Solar_App_HelloApp">http://solarphp.com/class/Solar_App_HelloApp</a> (haha)</p>
  165. </div>
  166. </div>
  167. <div class="comment" typeof="schema:UserComments">
  168. <p class="comment-meta">
  169. <span class="comment-author" property="schema:creator">Greg</span> le <span class="comment-date" property="schema:commentTime">04/09/2008</span> :
  170. </p>
  171. <div class="comment-content" property="schema:commentText">
  172. <p>Pardon, le lien est mauvais, c&#39;est <a href="http://solarphp.com/class/Solar_App_Hello">http://solarphp.com/class/Solar_App_Hello</a></p>
  173. <p>Je cite &quot;Absolute minimal &quot;hello world&quot; application for benchmarking.&quot;</p>
  174. <p>Au moins dans ce cas précis la couleur est annoncée :D</p>
  175. </div>
  176. </div>
  177. <div class="comment" typeof="schema:UserComments">
  178. <p class="comment-meta">
  179. <span class="comment-author" property="schema:creator">Bader</span> le <span class="comment-date" property="schema:commentTime">04/09/2008</span> :
  180. </p>
  181. <div class="comment-content" property="schema:commentText">
  182. <p>Pour commencer, qui a dit que les geeks ne faisaient pas de marketing ? Le benchmark c&#39;est LE must en terme de marketing chez les geeks et leurs décideurs de patrons.</p>
  183. <p>Il faut comprendre que ces benchmarks sont souvent l&#39;oeuvre de l&#39;auteur d&#39;un framework dont le seul but est de prouver la supériorité de son framework.</p>
  184. <p>D&#39;ailleurs la conception d&#39;un benchmark va privilégier certaines données à la place d&#39;autres. Et donc favoriser le framework qui satisfait le mieux les critères de départ. Le framework de l&#39;auteur part donc encore une fois avantagé.</p>
  185. <p>Preuve en est, Paul M. Jones, l&#39;auteur de Solr et du benchmark dont on parle ici, a été quelque peu agacé par les remarques de Loic qu&#39;il s&#39;est empressé de minimisé pour finir par dire &quot;ne parle pas de ton framework sur mon blog&quot;. Bref, en faisant ça il admet que son benchmark sert à comparer SON framework à ses concurrents potentiels.</p>
  186. <p>Concevoir un benchmark idéal relève du simple fantasme. Mais si l&#39;on veut partir sur des fondements stables il faudrait d&#39;abord évaluer quels critères pour quelles besoins.<br />Et une fois que ça sera réalisé, je pense que le benchmark sera lui aussi inutile. Des choix de critères découlent la meilleure implémentation...</p>
  187. <p>En conclusion à part dans des projets à vocation assez simple : ex libjpeg d&#39;Opéra vs libjpeg libre, faire un benchmark relève pour moi de l&#39;utopie technicienne et de la simple opération de communication geek.</p>
  188. </div>
  189. </div>
  190. <div class="comment" typeof="schema:UserComments">
  191. <p class="comment-meta">
  192. <span class="comment-author" property="schema:creator">Clochix</span> le <span class="comment-date" property="schema:commentTime">04/09/2008</span> :
  193. </p>
  194. <div class="comment-content" property="schema:commentText">
  195. <p>Merci David pour ce post rafraîchissant, les 2 gué-guerres bidon sur les performances des frameworks PHP et des moteurs javascript qui encombrent mes feeds depuis quelques jours ont un parfum assez déprimant de régression à la cours de primaire. Ca fait du bien de prendre un peu de recul. Tous ces geeks n&#39;ont donc jamais entendu que la façon dont on utilise un outil importe plus que ses performances pures ?</p>
  196. </div>
  197. </div>
  198. <div class="comment" typeof="schema:UserComments">
  199. <p class="comment-meta">
  200. <span class="comment-author" property="schema:creator">Bader</span> le <span class="comment-date" property="schema:commentTime">06/09/2008</span> :
  201. </p>
  202. <div class="comment-content" property="schema:commentText">
  203. <p>D&#39;ailleurs c&#39;est Donald E. Knuth lui-même qui disait : &quot;L&#39;optimisation prématurée est la racine de tous les maux (ou presque) en programmation&quot;<br /><a href="http://fr.wikipedia.org/wiki/Donald_Knuth#Autres_id.C3.A9es_notables">http://fr.wikipedia.org/wiki/Donald_Knuth#Autres_id.C3.A9es_notables</a></p>
  204. </div>
  205. </div>
  206. <div class="comment" typeof="schema:UserComments">
  207. <p class="comment-meta">
  208. <span class="comment-author" property="schema:creator">Benjamin</span> le <span class="comment-date" property="schema:commentTime">08/09/2008</span> :
  209. </p>
  210. <div class="comment-content" property="schema:commentText">
  211. <p>@ Loïc (et aux autres :-)</p>
  212. <p>Prenons un exemple.<br />Des développeurs travaillent sur un projet mais ne le documentent pas de suite (comme souvent). Avant la fin du dit projet ces personnes pour des raisons personnelles sont amenées à partir.</p>
  213. <p>Le projet doit continuer.</p>
  214. <p>Question.</p>
  215. <p>Le transfert de compétences n&#39;est-il pas plus facile et le code plus aisé à reprendre lorsqu&#39;une application Web a été développé avec un Framework ?</p>
  216. <p>Le cas ou un projet doit grossir et accueille de nouveaux arrivants est valable aussi:</p>
  217. <p>Dans le cas d&#39;un projet non documenté est-il plus rapide de reprendre du code sous Framework (Zend par exemple) ?</p>
  218. <p></p>
  219. </div>
  220. </div>
  221. </div>
  222. </section>
  223. <footer>
  224. <nav>
  225. <p>
  226. <small>
  227. Je réponds quasiment toujours aux <a href="m&#x61;ilto:d&#x61;vid%40l&#x61;rlet&#46;fr" title="Envoyer un email">emails</a> (<a href="/david/signature/" title="Ma signature actuelle avec possibilité de chiffrement">signés</a>) et vous pouvez me rencontrer à Montréal. <span class="more-infos">N’hésitez pas à <a href="/david/log/" title="Être tenu informé des mises à jour">vous abonner</a> pour être tenu informé des publications récentes.</span>
  228. </small>
  229. </p>
  230. </nav>
  231. </footer>
  232. </div>
  233. <script src="/static/david/js/larlet-david-3ee43f.js" data-no-instant></script>
  234. <script data-no-instant>InstantClick.init()</script>
  235. </body>
  236. </html>