<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Do as i say, not as i do &#187; langage</title>
	<atom:link href="http://www.do-as-i-say.com/notes/tag/langage/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.do-as-i-say.com/notes</link>
	<description>Car dire ça n&#039;est pas toujours faire, mais ça ne coûte rien</description>
	<lastBuildDate>Mon, 26 Apr 2010 11:40:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>La beauty de la poetry dans Symfony</title>
		<link>http://www.do-as-i-say.com/notes/2009/10/symfony-poetry/</link>
		<comments>http://www.do-as-i-say.com/notes/2009/10/symfony-poetry/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 11:24:05 +0000</pubDate>
		<dc:creator>LaurentLC</dc:creator>
				<category><![CDATA[3. Sagesse et parts de flan]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[langage]]></category>
		<category><![CDATA[métaphore]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://www.do-as-i-say.com/notes/?p=947</guid>
		<description><![CDATA[Dans le développement web comme dans la programmation en général, on utilise  beaucoup de termes empruntés à l&#8217;anglais, dans des versions plus ou moins traduites ou transposées. Comme dans tout langage technique où on utilise, à plus ou moins bon escient, des termes d&#8217;origine étrangère, ça donne lieu dans les échanges oraux ou écrits à [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-971" style="border: 1px solid black;" title="La poésie, cbeautiful" src="http://www.do-as-i-say.com/notes/wp-content/uploads/poetry.jpg" alt="La poésie, cbeautiful" width="128" height="128" />Dans le développement web comme dans la programmation en général, on utilise  beaucoup de termes empruntés à l&#8217;anglais, dans des versions plus ou moins traduites ou transposées. Comme dans tout langage technique où on utilise, à plus ou moins bon escient, des termes d&#8217;origine étrangère, ça donne lieu dans les échanges oraux ou écrits à des phrases mélangeant allègrement des mots d&#8217;origines diverses, dans un melting-pot qui souvent frise le ridicule, mais parfois recèle une bonne dose de poésie (oui, bon, moi ça me parle, cette poésie, je sais bien que ça n&#8217;est pas forcément le cas de tout le monde, mais c&#8217;est comme ça).<br />
<span id="more-947"></span></p>
<p>Je n&#8217;aborderai pas ici le débat, en partie stérile, consistant à se demander s&#8217;il faut traduire ou non tous ces termes et/ou créer des équivalents en français quand il n&#8217;y a pas de mot existant. Une langue vivante est, comme son nom l&#8217;indique, <em>vivante</em> (eh ouaip, ne me remerciez pas), comme tout organisme elle mue, agrège des éléments, transforme de la matière en d&#8217;autres choses, et c&#8217;est très bien (mieux : c&#8217;est vital — une langue que ne bouge plus est, comme on le dit fort bien, une <em>langue morte</em>).</p>
<p>Non, je vais juste ici évoquer quelques uns des mots qu&#8217;on pratique beaucoup en <a href="http://www.sensiolabs.com" target="_blank">environnement professionnel</a>, ceux qui ont pour mon oreille un peu bizarre des résonances particulièrement drôles ou poétiques. Ça me donnera au passage l&#8217;occasion de parler un peu d&#8217;un framework que j&#8217;aime bien (voir <a href="http://www.do-as-i-say.com/notes/2009/08/framework-symfony-explique-a-ma-maman-1/" target="_blank">ici</a>, <a href="http://www.do-as-i-say.com/notes/2009/09/design-patterns-symfony-explique-a-ma-maman-2/" target="_blank">ici</a>, ou <a href="http://www.do-as-i-say.com/notes/2009/09/decouplage-symfony-explique-a-ma-maman-3/" target="_blank">ici</a>). On pourrait appeler cette liste &laquo;&nbsp;les 10 termes à connaître pour <em>speaker</em> fluemment le Symfony <em>in </em>le texte&nbsp;&raquo;.</p>
<ul>
<li><strong>autoload </strong>: ne me demandez pas pourquoi celui-là me plait, il y a des chances que ça ait à voir avec Goldorak (autolargue, quoi).  En ce qui nous concerne, l&#8217;autoload est une fonctionnalité un petit peu magique qui dispense le développeur d&#8217;inclure explicitement chacun des fichiers définissant les classes dont il a besoin, le framework (chez nous, c&#8217;est <a href="http://www.symfony-project.org">Symfony</a>, des fois que je ne l&#8217;aurais pas dit) se chargeant à chaque nouvelle instanciation d&#8217;objet de fouiller les répertoires qui vont bien à la recherche du fichier nécessaire et de l&#8217;inclure dans votre dos sans que vous ayiez à vous en soucier.</li>
<li><strong>bootstraping </strong>: souvent utilisé dans un <a href="http://www.do-as-i-say.com/notes/2009/09/les-10-termes-a-connaitre-pour-etre-un-bon-chef-de-projet/" target="_blank">discours de vérité</a> pour en jeter un max, le <em>bootstraping</em> est littéralement laçage de chaussure (ou serrage de sangle de botte&#8230;) Les <em>bootstrap</em>s sont concrètement des anneaux cousus sur le rebord des bottes, qu&#8217;on utilise pour s&#8217;aider à les chausser. En anglais courant, le verbe <em>bootstrap</em> signifie d&#8217;ailleurs &laquo;&nbsp;se débrouiller tout seul&nbsp;&raquo;. Pour la fine bouche, signalons que dans la littérature anglaise le verbe est également une référence aux aventures du baron de Münchhausen qui, embourbé dans un marécage, s&#8217;en sort en se tirant lui-même par ses bottes pour se propulser dans les airs&#8230;<br />
&laquo;&nbsp;Bootstraper&nbsp;&raquo;, puisqu&#8217;on l&#8217;utilise bien entendu comme verbe francisé, consiste à démarrer le boulot en en prémâchant l&#8217;essentiel, pour obtenir rapidement une base pouvant servir au développement d&#8217;une application plus puissante par la suite.</li>
<li><strong>cécé </strong>: ou &laquo;&nbsp;cici&nbsp;&raquo;, si on le fait à l&#8217;anglaise ; abbréviation et alias de la commande Symfony clear-cache (puis plus récemment cache:clear) utilisée pour <em>clearer</em> le cache (le vider, quoi). On doit entendre chez Sensiolabs environ 167 fois par jour &laquo;&nbsp;t&#8217;as fait un cécé ?&nbsp;&raquo;.</li>
<li><strong>crud </strong>: à prononcer &laquo;&nbsp;crude&nbsp;&raquo;, ou &laquo;&nbsp;creude&nbsp;&raquo;, bien sûr. Acronyme de Create-Retrieve-Update-Delete, qui sont les quatre fonctions de base d&#8217;une interface simple d&#8217;administration de données.</li>
<li><strong>fixtures : </strong>toujours un peu difficile à dire pour les français, les <em>fikstcheurzes</em> sont des données servant à tester et/ou initialiser une application, stockées dans un format simple à éditer et à utiliser pour des injections automatiques (voir <em>populate</em> plus bas).</li>
<li><strong>helper </strong>: j&#8217;aime bien l&#8217;idée d&#8217; &laquo;&nbsp;aideurs&nbsp;&raquo; (j&#8217;imagine que l&#8217;administration nous ferait dire &laquo;&nbsp;aidants&nbsp;&raquo;) qui avec leur petits bras muskés font des trucs pour toi. Un <em>helper</em> est en effet une petite fonction destinée en général à retourner du code HTML répétitif, construit avec des paramètres ou propriétés d&#8217;un objet qu&#8217;on lui passe.</li>
<li><strong>hydrate : </strong>liquide et poétique image qui touche au sublime : &laquo;&nbsp;hydrater un objet&nbsp;&raquo; consiste à lui attribuer des valeurs qu&#8217;on a récupérées en vrac par ailleurs (pour faire très simple), cette attribution devant être &laquo;&nbsp;intelligente&nbsp;&raquo;, c&#8217;est-à-dire qu&#8217;elle doit faire correspondre à la bonne propriété la bonne valeur. On peut &laquo;&nbsp;hydrater à la main&nbsp;&raquo;, ce qui n&#8217;a rien à voir avec une crème de jour, ou recourir à des fonctions qui <a href="http://www.symfony-project.org/cookbook/1_2/en/retrieving_data_with_doctrine#chapter_f6fc97d827760d5157133eaf9798ddaf_array_hydration" target="_blank">mâchent le travail</a>.</li>
<li><strong>populate </strong>: autre métaphore que j&#8217;affectionne particulièrement, qu&#8217;on emploie un peu indifféremment en anglais ou dans sa version française ( &laquo;&nbsp;peupler&nbsp;&raquo;, ou le néologique &laquo;&nbsp;populer&nbsp;&raquo;). <em>Peupler </em>une base de données consiste à lui injecter des données de tests ou des données initiales nécessaires à l&#8217;application (utilisateurs, contenus de départ&#8230;) ; pour faciliter la vie des développeurs, il existe dans Symfony des façons d&#8217;automatiser cette action pour pouvoir la répéter en deux coups de cuiller à pot et insérer des <em>fixtures</em> en une seule commande.<br />
Il existe aussi la variante &laquo;&nbsp;<strong>repeupler</strong>&laquo;&nbsp;, qui désigne le fait de réafficher les données saisies par l&#8217;utilisateur dans un formulaire s&#8217;il contient des erreurs ou doit être complété. On a tous un jour expérimenté la douleur de l&#8217;absence de repopulation, quand on a passé du temps à remplir un formulaire, qu&#8217;on valide, qu&#8217;il est refusé pour une quelconque raison, mais est réaffiché tout vide, et qu&#8217;on doit tout ressaisir&#8230; Vous pourrez maintenant hurler &laquo;&nbsp;IL N&#8217;A PAS ÉTÉ REPEUPLÉ, BORDEL DE M&#8230; !&nbsp;&raquo;</li>
<li><strong>routing </strong>: celui-là aussi on le traduit peu (le &laquo;&nbsp;routage&nbsp;&raquo; gardera quoiqu&#8217;on en dise toujours une connotation de service postal). Le routing est le mécanisme qui réécrit et/ou traduit les urls (selon le sens où on le regarde) pour permettre de paramétrer des adresses, comme on dit, plus sympathiques pour les utilisateurs et les moteurs de recherche (respectivement : <em>user-friendly</em>, et <em>search-engine-friendly</em> ; ouéééé, copaaaing !) Il est lié à ce qu&#8217;on appelle la réécriture d&#8217;url, qu&#8217;on dit très souvent à l&#8217;anglaise aussi : l&#8217;<em>iouharelle riraïtingue</em>.</li>
<li><strong>sandbox </strong>: littéralement &laquo;&nbsp;bac à sable&nbsp;&raquo;, désigne une mode autonome de distribution d&#8217;une application, pour faciliter son installation et permettre des tests où les risques d&#8217;impact pour le reste du serveur sont limités sinon nuls. En d&#8217;autres termes : pour faire joujou dans son bac à sable où on peut tout crader sans gêner personne.</li>
<li><strong>scaffolding </strong>: image très sympathique, qu&#8217;on pourrait traduire par &laquo;&nbsp;échaufadage&nbsp;&raquo;. Assez proche du <em>bootstraping</em>, le <em>scaffolding</em> est plus spécifiquement lié à la façon d&#8217;exploiter la structure d&#8217;une base de données. Il se base sur une description formalisée de cette structure (dans <a href="http://www.symfony-project.org/book/1_2/08-Inside-the-Model-Layer#chapter_08_sub_beyond_the_schema_yml_the_schema_xml" target="_blank">Symfony, par exemple</a>, dans un fichier <em>schema.yml</em>) pour générer automatiquement une interface d&#8217;administration <em>crud </em>(voir plus haut). C&#8217;est ce que fait le bien nommé <em>admin generator</em>,  affectueusement appelé <em>admin gen </em>(prononcez &laquo;&nbsp;admine jène&nbsp;&raquo;), dans Symfony. En quoi on peut dire : &laquo;&nbsp;l&#8217;<em>admin gen</em>, ça consiste à <em>bootstraper </em>ton <em>backoffice </em>en faisant du <em>scaffolding</em> avec des interfaces <em>crud&nbsp;&raquo;</em>. <em><br />
</em>Cpas <em>beautiful</em>, ça ?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.do-as-i-say.com/notes/2009/10/symfony-poetry/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Les 10 termes à connaître pour être un bon chef de projet</title>
		<link>http://www.do-as-i-say.com/notes/2009/09/les-10-termes-a-connaitre-pour-etre-un-bon-chef-de-projet/</link>
		<comments>http://www.do-as-i-say.com/notes/2009/09/les-10-termes-a-connaitre-pour-etre-un-bon-chef-de-projet/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 12:52:59 +0000</pubDate>
		<dc:creator>LaurentLC</dc:creator>
				<category><![CDATA[1. La vie c'est comme de la gestion de projet]]></category>
		<category><![CDATA[chef de projet]]></category>
		<category><![CDATA[langage]]></category>
		<category><![CDATA[levier]]></category>
		<category><![CDATA[parallélisation]]></category>
		<category><![CDATA[pragmatique]]></category>
		<category><![CDATA[proactivité]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.do-as-i-say.com/notes/?p=540</guid>
		<description><![CDATA[Que vous soyez de l&#8217;engeance annonceur ou prestataire, il est vital de posséder un vocabulaire minimal pour pouvoir briller en réunion, spécialement en avant-vente, mais aussi en comité de pilotage, voire au restaurant si vous avez de la chance.
Là où je sévis actuellement, un document interne secret à visée caustique recense ces termes et d&#8217;autres [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-546" style="border: 1px solid black;" title="Tous les tips pour être proactif" src="http://www.do-as-i-say.com/notes/wp-content/uploads/meeting-150x150.png" alt="Vous êtes un winner" width="128" height="128" />Que vous soyez de l&#8217;engeance annonceur ou prestataire, il est vital de posséder un vocabulaire minimal pour pouvoir briller en réunion, spécialement en avant-vente, mais aussi en comité de pilotage, voire au restaurant si vous avez de la chance.</p>
<p>Là où je sévis actuellement, un document interne secret à visée caustique recense ces termes et d&#8217;autres ; la liste qui suit s&#8217;en inspire librement, avec d&#8217;autant moins de scrupules que je suis à l&#8217;origine des deux tiers d&#8217;entre eux.</p>
<p><span id="more-540"></span></p>
<p>- <strong>Levier </strong>: solution en général fictive mais rhétoriquement commode pour faire croire ou se persuader qu&#8217;on a des moyens d&#8217;action. <em>Nous avons identifié les leviers à notre disposition pour raccourcir les délais.</em></p>
<p>- <strong>Paralléliser </strong>: recours ultime lors d&#8217;une négociation de planning, dont le but &#8211; fantasque &#8211; est de diviser linéairement les temps de production par le nombre de ressources affectées. Voir le <a href="/notes/2009/09/le-mythe-de-la-parallelisation/">post consacré au sujet</a>.</p>
<p>- <strong>Pragmatique </strong>(ou sa variante <em>réaliste</em>) : attitude consistant à sacrifier la qualité tout en se défendant de le faire.</p>
<p>- <strong>Proactivité </strong>: technique de management pragmatique consistant à demander au collaborateur de résoudre les problèmes à venir sans les connaître à l&#8217;avance.</p>
<p><img class="size-thumbnail wp-image-552 alignright" style="border: 1px solid black;" title="Bravo, vous avez levé une alerte et décidé de temporiser" src="http://www.do-as-i-say.com/notes/wp-content/uploads/meeting2-150x150.png" alt="Bravo, vous avez levé une alerte orthogonale" width="128" height="128" />- <strong>Proposition<em> </em></strong><em>(force de) </em>: <em>Nous attendons que vous soyez force de proposition</em>. Façon aimable qu&#8217;a le client de demander au prestataire de faire son travail à sa place.</p>
<p>- <strong>Temporiser </strong>: pour le client, indique qu&#8217;il n&#8217;a pas encore pris le temps de trancher les choses dont vous avez absolument besoin pour avancer sur un livrable qu&#8217;il exige pour demain. Pour le prestataire, signifie que les développements qui devaient commencer hier avec trois ressources commenceront la semaine prochaine avec une demie. Doit toujours cependant être utilisé dans une phrase qui laisse penser que tout cela est parfaitement volontaire. <em>Nous avons décidé de temporiser</em>.</p>
<p>- <strong>Tiroir</strong> : dans la vraie vie, élément coulissant d&#8217;un meuble ; dans une proposition commerciale, élément coulissant du devis exigé par le client pour se donner les moyen de faire baisser le montant total. <em>Pouvez-vous  me faire une proposition à tiroirs ?</em> Attention : dans la pratique, le client choisit toujours de conserver des tiroirs qui ne peuvent être réalisés sans ceux qu&#8217;il a retirés.</p>
<p>- <strong>Transverse : </strong>notion à utiliser en biais ; bien commode pour camoufler son ignorance du contenu exact d&#8217;une intervention. <em>Nous avons mobilisé des compétences transverses<strong>. </strong></em></p>
<p>- <strong>Valeur ajoutée : </strong>concept à utiliser sans parcimonie dans tout discours de vérité (voir ci-dessous). <em>Cette fonctionnalité n&#8217;a pas de valeur ajoutée</em>.</p>
<p>- <strong>Vérité<em> </em></strong><em>(discours de)</em> : stratagème circonlocutif, destiné à obscurcir le sens de ce qui est dit sous couvert de transparence (on dit également : <em>&laquo;&nbsp;enfumer&nbsp;&raquo;</em>). Fonctionne également comme prétérition, pour tenter de rester poli : <em>je vais te tenir un discours de vérité, ton code c&#8217;est vraiment de la merde.</em></p>
<p>Bien entendu, toute ressemblance avec des phrases ayant été prononcées dans la vraie vie serait étonnamment fortuite, etc, pardon aux familles tout ça.</p>
<p>__________________________</p>
<p><em>Superbes illustrations trouvées fortuitement chez Getty Images.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.do-as-i-say.com/notes/2009/09/les-10-termes-a-connaitre-pour-etre-un-bon-chef-de-projet/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Symfony expliqué à ma maman, 1ère partie : qu&#8217;est-ce qu&#8217;un framework ?</title>
		<link>http://www.do-as-i-say.com/notes/2009/08/framework-symfony-explique-a-ma-maman-1/</link>
		<comments>http://www.do-as-i-say.com/notes/2009/08/framework-symfony-explique-a-ma-maman-1/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 06:59:00 +0000</pubDate>
		<dc:creator>LaurentLC</dc:creator>
				<category><![CDATA[2. Des trucs expliqués à ma maman]]></category>
		<category><![CDATA[complexité]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[grammaire]]></category>
		<category><![CDATA[langage]]></category>
		<category><![CDATA[méthodologie]]></category>
		<category><![CDATA[orthographe]]></category>
		<category><![CDATA[pensée]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://www.do-as-i-say.com/notes/?p=103</guid>
		<description><![CDATA[A mes heures pas perdues je travaille dans l&#8217;agence qui est à l&#8217;origine d&#8217;une fort belle chose : un framework PHP 5 qui jouit d&#8217;une assez bonne presse, ce qui n&#8217;est pas complètement un hasard parce qu&#8217;il est vraiment très bien.
Ce framework porte le nom de Symfony, pour des raisons expliquées ici. Jusque là, fastoche. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-205" style="border: 1px solid black;" title="Maman je t'aime" src="http://www.do-as-i-say.com/notes/wp-content/uploads/symfony_me-150x150.png" alt="Maman je t'aime" width="128" height="128" />A mes heures pas perdues je travaille dans l&#8217;<a href="http://www.sensiolabs.com" target="_blank">agence</a> qui est à l&#8217;origine d&#8217;une fort belle chose : un framework PHP 5 qui jouit d&#8217;une assez bonne presse, ce qui n&#8217;est pas complètement un hasard parce qu&#8217;il est vraiment très bien.</p>
<p>Ce framework porte le nom de<a href="http://www.symfony-project.org" target="_blank"> Symfony</a>, pour des raisons expliquées <a href="http://www.symfony-project.org/book/1_2/01-Introducing-Symfony#chapter_01_sub_who_made_symfony_and_why" target="_blank">ici</a>. Jusque là, fastoche. C&#8217;est ensuite que ça se complique. Déjà, rien que le premier mot : <em>framework</em>. Littéralement, cadre ou structure ; dans la programmation en général, on le traduit plus précisément par &laquo;&nbsp;cadre d&#8217;applications&nbsp;&raquo;. Enfin, on le tradui<em>rait</em>, parce qu&#8217;on ne le fait jamais, on dit toujours <em>frèmeouorque</em>. A compter de cette phrase, je dirai d&#8217;ailleurs &laquo;&nbsp;framework&nbsp;&raquo; sans autre forme de procès, et même sans italiques (je suis comme ça, jsuis un gueudin).</p>
<p><span id="more-103"></span></p>
<p>Pour commencer, donc, qu&#8217;est-ce qu&#8217;un framework ? S&#8217;il y avait une réponse simple, on se passerait de ces lignes. La difficulté majeure tient à ce qu&#8217;il y a en fait dans la définition deux dimensions principales, complémentaires mais en partie indépendantes : <strong>un framework c&#8217;est à la fois une boîte à outils et une méthodologie. </strong>Ou, si on n&#8217;a pas peur des envolées lyriques : une boîte à outils fournie avec une philosophie.</p>
<h3>Une boîte à outils</h3>
<p>On a l&#8217;habitude de comparer  un framework à un ensemble des &laquo;&nbsp;briques&nbsp;&raquo; toutes faites qu&#8217;on peut utiliser pour son application .<br />
Si l&#8217;analogie n&#8217;est pas trop mauvaise, elle est insuffisante, parce qu&#8217;un framework c&#8217;est plus que ça. Cela dit, l&#8217;image de &laquo;&nbsp;brique&nbsp;&raquo; convient assez bien à ce qui circule çà et là sous le nom de <em>composants </em>(et d&#8217;ailleurs, le monde est bien fait, car certaines parties de Symfony sont justement mises à disposition comme composants : <a href="http://components.symfony-project.org" target="_blank">http://components.symfony-project.org</a> ; dingue, hein ?)</p>
<p>Mais revenons à l&#8217;analogie de départ, même si elle est un peu faible ; elle  dit qu&#8217;<strong>un framework est à un développeur ce qu&#8217;une boîte à outils est à un bricoleur</strong>.</p>
<p>Sous plusieurs aspects, un framework peut effectivement fonctionner comme une boîte à outils, en ce sens qu&#8217;il propose, dans le cas de Symfony du moins, un certain nombre de <em>trucs </em>pour faciliter le travail, l&#8217;accélérer, voire automatiser tout ou partie des tâches qu&#8217;on rencontre lors du développement d&#8217;une application web. C&#8217;est le côté <strong>work</strong> du framework, si l&#8217;on veut.<br />
Enfoncer un clou, à la main, c&#8217;est douloureux et très long ; avec une pierre, moins douloureux, mais pas très précis. Avec un marteau, l&#8217;outil est assez optimal &#8211; même s&#8217;il ne dispense toutefois pas de taper. En plus, ce marteau a été testé industriellement, donc a de bonnes garanties de solidité .</p>
<p>Dans le développement web, on ne plante pas des clous, mais il y a des tâches équivalentes qui sont répétitives, peu gratifiantes, et d&#8217;autant plus sujettes à erreur qu&#8217;elles sont répétitives et peu gratifiantes : construction de bases de données à partir de leur schéma, import de données de test, initialisation d&#8217;interfaces d&#8217;administration, exécution de tests, gestion du cache, des urls&#8230;</p>
<p>Pour tout ça, le framework offre marteaux et tournevis, voire dans certains cas pistolets à clous. Ces &laquo;&nbsp;utilitaires&nbsp;&raquo;,  testés et mis à l&#8217;épreuve du feu par de nombreux développeurs, ont bénéficié de leurs retours d&#8217;expérience, leur efficacité et stabilité sont assurées par ce processus. Mais pas plus qu&#8217;un marteau ils ne dispensent pas de taper. Vous pouvez vous procurer une belle boîte à outils, ça ne fixera pas pour autant vos étagères au mur &#8230;</p>
<p>A un niveau un peu plus complexe, le framework (du moins Symfony) favorise  l&#8217;intégration en deux coups de cuiller à pot de <strong><em>plug-ins</em></strong>, qui sont un peu comme les briques évoquées plus haut. Il en existe un grand nombre, pour des fonctionnalités plus ou moins évoluées (authentification, gestion de médias, de contenu&#8230;). On dépasse là le cadre de la &laquo;&nbsp;boîte à outils&nbsp;&raquo;, et on est plutôt sur des objets de base qui font gagner du temps. C&#8217;est comme acheter des planches déjà découpées plutôt que de les scier soi-même. Mais ces objets conviennent rarement tels quels . Il faut les adapter à ses besoins. Par exemple peindre ses planches de la couleur qui va bien, choisir combien on en pose, à quelle distance les unes des autres&#8230;</p>
<p>Point crucial : dans le cas du framework, l&#8217;adaptation sera grandement facilitée par la <em>méthodologie</em> qui doit avoir été respectée par les créateurs des plug-ins. C&#8217;est-à-dire : <em>si </em>elle a été respectée.</p>
<p>Ce qui nous fait une transition toute trouvée pour le second aspect, non des moindres, de la définition d&#8217;un framework : en plus d&#8217;être une boîte à outils, un framework, c&#8217;est une façon de travailler.</p>
<h3>Une méthodologie</h3>
<p>Pour tenter une analogie, disons qu&#8217;<strong>un framework est à la programmation ce que grammaire et orthographe sont à la pensée</strong>.</p>
<p>On quitte là le champ lexical du bricolage pour celui de la linguistique, ou plutôt de l&#8217;apprentissage du langage . Glissement qui semble tout indiqué, puisqu&#8217;on parle de <em>langage</em> de programmation. Si on fouille un peu, on verra même que la nécessité de changer de champ répond en fait à une exigence interne, dictée par le caractère spécial des  langages artificiels : un croisement génétique, pour ainsi dire, entre de la logique (qui se veut mécanique et déterministe) et de la pensée (qui reste inductive et poétique par nature, mais c&#8217;est une autre histoire).</p>
<p>Filons la métaphore.<strong> </strong>Quand on se met à programmer, on apprend une syntaxe, des fonctions, des mots-clés&#8230; ; bref, une sorte de grammaire et de dictionnaire .<br />
Mais connaître par cœur l&#8217;intégral de la phpdoc ou autre n&#8217;a jamais fait un bon développeur, pas plus que réciter le Bescherelle n&#8217;a fait un grand auteur.</p>
<p>C&#8217;est là que, tel un cavalier qui surgit hors de la nuit (mince, ça y est maintenant j&#8217;ai la musique de Zorro dans la tête), intervient le framework. Il joue un rôle à la croisée de la rhétorique, de la littérature et de la logique :</p>
<ul>
<li> il énonce des conventions d&#8217;écriture et d&#8217;organisation destinées à rendre plus efficace, en homogénéisant et clarifiant</li>
<li>il s&#8217;inspire des bonnes pratiques déjà existantes, notamment en termes de style </li>
<li>il structure et favorise la discipline du code produit, et son indépendance à l&#8217;égard de toute solution logicielle ou matérielle.</li>
</ul>
<p>En gros, il joue son rôle de &laquo;&nbsp;cadre&nbsp;&raquo; et de structure. C&#8217;est le côté <strong>frame<strong> </strong> </strong>du framework : il <strong>contraint</strong> à un certain nombre de choses, mais pour mieux <strong>libérer</strong> le processus intellectuel, en particulier en l&#8217;affranchissant des routines chronophages, et en aidant, par la clarté exigée, à faire face à l&#8217;augmentation de la <em>complexité </em>.</p>
<p>Si tout développeur qui connait un tant soit peu un langage (PHP en particulier, qui est plus facile d&#8217;accès que d&#8217;autres) est capable, même en tâtonnant, de mettre au point une application plus ou moins évoluée, l&#8217;expérience montre toutefois que son degré d&#8217;instabilité croît alors exponentiellement à la mesure de sa complexité, et que son code a tendance à devenir incompréhensible (et donc instable, indébuggable, non maintenable, etc&#8230;)</p>
<p>Pour<strong> faire face à la complexité</strong>, il faut être équipé de certains outils, intellectuels cette fois. Un framework a pour but de fournir de tels outils facilitant la modélisation des objets, de leurs relations, et des solutions aux problèmes posés. Il est à la fois une extension du vocabulaire du développeur et un perfectionnement de ses capacités grammaticales.<br />
Du moins, il <strong>peut </strong>l&#8217;être. Car comme le marteau ne tape pas tout seul, le framework ne pense à la place de personne. Pire, comme un marteau, mal utilisé, il peut faire mal. Et s&#8217;il tend à structurer, il n&#8217;oblige ultimement personne à suivre sa méthodologie ; s&#8217;il peut aider à discipliner, il ne remplace pas l&#8217;auto-discipline qui est du ressort de ceux qui conçoivent et écrivent le code. Bref : un framework ça n&#8217;est pas la pierre philosophale qui changera votre code de plomb en or.</p>
<p>On se résume : côté pile, le <em><strong>frame</strong></em>work est un cadre structurant, côté face, le frame<em><strong>work</strong></em> est un outil facilitant le travail.<br />
Finalement, on avait bien raison de garder le mot anglais.</p>
<p><em>Dans le prochain épisode, on parlera de design patterns&#8230;<br />
</em></p>
<p><em><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.do-as-i-say.com/notes/2009/08/framework-symfony-explique-a-ma-maman-1/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
