<?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>In-Depth Code</title>
	<atom:link href="https://blog.developpez.com/in-depth-code/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/in-depth-code</link>
	<description></description>
	<lastBuildDate>Tue, 22 Mar 2011 16:01:48 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Nouveau blog</title>
		<link>https://blog.developpez.com/in-depth-code/p9808/code-poilu/nouveau_blog</link>
		<comments>https://blog.developpez.com/in-depth-code/p9808/code-poilu/nouveau_blog#comments</comments>
		<pubDate>Sun, 13 Mar 2011 15:47:40 +0000</pubDate>
		<dc:creator><![CDATA[digitalguru]]></dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Code Poilu]]></category>
		<category><![CDATA[Hors Sujet]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Outils]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Salut tout le monde ! Ça fait maintenant un bon bout de temps que je n&#8217;ai pas posté sur ce blog et c&#8217;est notamment à cause de mes études qui me prennent de plus en plus de temps ainsi que mes voyages. Cependant, j&#8217;ai retrouvé la motivation d&#8217;écrire mais plus ici. J&#8217;ai décider d&#8217;héberger moi même mon blog sur mon serveur : blog.mgaudin-online.com Les sujets sont les mêmes : Linux, Vim, le C++, le LaTeX [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Salut tout le monde !</p>
<p>Ça fait maintenant un bon bout de temps que je n&rsquo;ai pas posté sur ce blog et c&rsquo;est notamment à cause de mes études qui me prennent de plus en plus de temps ainsi que mes voyages.</p>
<p>Cependant, j&rsquo;ai retrouvé la motivation d&rsquo;écrire mais plus ici. J&rsquo;ai décider d&rsquo;héberger moi même mon blog sur mon serveur : <a href="http://blog.mgaudin-online.com">blog.mgaudin-online.com</a></p>
<p>Les sujets sont les mêmes : Linux, Vim, le C++, le LaTeX et en ajoutant mes concours (ACM ICPC notamment).</p>
<p>J&rsquo;espère que ce nouveau format vous plaira !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git hooking</title>
		<link>https://blog.developpez.com/in-depth-code/p9621/outils/git_hooking_2</link>
		<comments>https://blog.developpez.com/in-depth-code/p9621/outils/git_hooking_2#comments</comments>
		<pubDate>Sun, 02 Jan 2011 17:38:58 +0000</pubDate>
		<dc:creator><![CDATA[digitalguru]]></dc:creator>
				<category><![CDATA[Outils]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dès que le projet dépasse quelques centaines de lignes ou un unique membre, l&#8217;utilisation d&#8217;un outils de versioning devient primordial. Je vais, au travers de cet article vous présenter un outil, son front-end et une feature qui en fera vite votre version manager préféré !]]></description>
				<content:encoded><![CDATA[<p>Dès que le projet dépasse quelques centaines de lignes ou un unique membre, l&rsquo;utilisation d&rsquo;un outils de versioning devient primordial. Je vais, au travers de cet article vous présenter un outil, son front-end et une feature qui en fera vite votre version manager préféré !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git hooking</title>
		<link>https://blog.developpez.com/in-depth-code/p9620/outils/git_hooking_1</link>
		<comments>https://blog.developpez.com/in-depth-code/p9620/outils/git_hooking_1#comments</comments>
		<pubDate>Sun, 02 Jan 2011 17:38:57 +0000</pubDate>
		<dc:creator><![CDATA[digitalguru]]></dc:creator>
				<category><![CDATA[Outils]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dès que le projet dépasse quelques centaines de lignes ou un unique membre, l&#8217;utilisation d&#8217;un outils de versioning devient primordial. Je vais, au travers de cet article vous présenter un outil, son front-end et une feature qui en fera vite votre version manager préféré !]]></description>
				<content:encoded><![CDATA[<p>Dès que le projet dépasse quelques centaines de lignes ou un unique membre, l&rsquo;utilisation d&rsquo;un outils de versioning devient primordial. Je vais, au travers de cet article vous présenter un outil, son front-end et une feature qui en fera vite votre version manager préféré !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git hooking</title>
		<link>https://blog.developpez.com/in-depth-code/p9619/outils/git_hooking</link>
		<comments>https://blog.developpez.com/in-depth-code/p9619/outils/git_hooking#comments</comments>
		<pubDate>Sun, 02 Jan 2011 17:38:48 +0000</pubDate>
		<dc:creator><![CDATA[digitalguru]]></dc:creator>
				<category><![CDATA[Outils]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dès que le projet dépasse quelques centaines de lignes ou un unique membre, l&#8217;utilisation d&#8217;un outils de versioning devient primordial. Je vais, au travers de cet article vous présenter un outil, son front-end et une feature qui en fera vite votre version manager préféré !]]></description>
				<content:encoded><![CDATA[<p>Dès que le projet dépasse quelques centaines de lignes ou un unique membre, l&rsquo;utilisation d&rsquo;un outils de versioning devient primordial. Je vais, au travers de cet article vous présenter un outil, son front-end et une feature qui en fera vite votre version manager préféré !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Avez vous déjà vu ? Des mots clefs poilus ? Maintenant, oui !</title>
		<link>https://blog.developpez.com/in-depth-code/p8287/code-poilu/avez_vous_deja_vu_des_mots_clefs_poilus</link>
		<comments>https://blog.developpez.com/in-depth-code/p8287/code-poilu/avez_vous_deja_vu_des_mots_clefs_poilus#comments</comments>
		<pubDate>Sun, 08 Nov 2009 22:10:25 +0000</pubDate>
		<dc:creator><![CDATA[digitalguru]]></dc:creator>
				<category><![CDATA[Code Poilu]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Introduction Les mots clefs volatile ou mutable ne vous disent rien ? C’est normal ! Aujourd’hui, nous allons traiter des mots clefs qui ne servent quasiment jamais (parfois à tort), j’appelle : Les mots clefs poilus ! Comme d&#8217;hab, une version PDF est aussi disponible ici ! auto Officiellement : Déclarateur de variable à désallocation automatique. Commençons fort avec ce joli mot clef qui, pour le coup, ne sert vraiment à rien puisqu’il spécifie le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>Les mots clefs volatile ou mutable ne vous disent rien ? C’est normal ! Aujourd’hui, nous allons traiter des mots clefs qui ne servent quasiment jamais (parfois à tort), j’appelle : Les mots clefs poilus  !</p>
<p><span id="more-3"></span><br />
Comme d&rsquo;hab, une version PDF est aussi disponible <a href="http://fex.insa-lyon.fr/get?k=Exzyt3IFQsv5ZhQbWYH">ici</a> !</p>
<p><strong>auto</strong><br />
<strong>Officiellement</strong> : <em>Déclarateur de variable à désallocation automatique.</em></p>
<p>Commençons fort avec ce joli mot clef qui, pour le coup, ne sert vraiment à rien puisqu’il spécifie le même comportement que celui <em>par défaut</em> d’une variable locale <em>i.e.</em> qui est d’être détruite à la fin de la portée. Il va donc indiquer au compilateur que : <code class="codecolorer text default"><span class="text">«Bah oui, c’est une variable locale, faudra la détruire à la fin de ta porté... »</span></code></p>
<p><strong>explicit</strong><br />
<strong>Officiellement</strong> : <em>Interdit les constructeurs pour casts implicites.</em></p>
<p>Plus dur. Mais qui cette fois sert vraiment ! Avant tout, il faut savoir que par défaut, un constructeur ne prenant qu’un seul paramètre effectuera une conversion implicite (i.e. à la compilation et invisible pour l’utilisateur) si nécessaire. C’est ce mécanisme qui vous permet par exemple de faire :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">// Tire du &quot;Langage C++&quot; <br />
Complex z = 2 // Initialise z avec Complex(2) alors que typeof(2) = int</div></div>
<p>Cependant, certaines situations sont très génantes tel que :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">// Tire du &quot;Langage C++&quot; <br />
std::string S = 'a' // Definit S comme une chaine avec 97 éléments reservés en mémoire (int('a') = 97 )</div></div>
<p>Le mot clefs explicit permet d’empêcher le compilateur de faire la conversion et fait donc <em>planter</em> la chaine de compilation si une conversion implicit à été tentée.<br />
il s’utilise de cette façon :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">// Constructeur de copie : <br />
explicit MaClasse(const MaClasse&amp; MonParam){ // MonParam sera obligatoirement du type MaClasse (par reference) <br />
&nbsp; &nbsp; // Code de construction <br />
}</div></div>
<p><strong>mutable</strong><br />
<strong>Officiellement</strong> : <em>Rend une partie d’un objet constant modifiable.</em></p>
<p>Ce mot clef est subtil mais peut servir une ou deux fois. Il est là lorsque un attribut ne peut jamais être const. Par exemple, considérons un objet ayant une durée de vie limitée. L’objet peut tout à fait être const ainsi que tout ses membre,sauf son compteur qui lui sera mutable, i.e., qu’il ne pourra jamais être constant. Ce mot clef peut aussi être util dans le cadre d’objet à mémoire cache.</p>
<p><strong>register</strong><br />
<strong>Officiellement</strong> : <em>Déclarateur de variable registre.</em></p>
<p>Pourrait être très pratique en théorie ! En effet, le mot clef register demande au compilateur de placer la variable dans un registre mémoire, qui est une zone mémoire très rapide en I/O. Cependant, il est très rare qu’il trouve un registre libre pour stocker la variable.<br />
Mais faut avouer que quand ça passe, ca fait plaisir aux performances :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">time ./TestAuto &amp;&amp; time ./TestRegister &nbsp;<br />
&nbsp;<br />
real 0m3.327s <br />
user 0m3.320s <br />
sys 0m0.010s <br />
&nbsp;<br />
real 0m0.995s <br />
user 0m0.970s <br />
sys 0m0.000s</div></div>
<p>Une différence de l’ordre de 340% de rapidité en plus !<br />
Pour un code du type :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">// TestAuto.cpp <br />
int main() { <br />
&nbsp; &nbsp; int i = 0; <br />
&nbsp; &nbsp; for(i = 0; i &lt; 1000000000; ++i); <br />
&nbsp;<br />
&nbsp; &nbsp; return 0; <br />
} <br />
&nbsp;<br />
// TestRegister.cpp <br />
int main() { <br />
&nbsp; &nbsp; register int i = 0; <br />
&nbsp; &nbsp; for(i = 0; i &lt; 1000000000; ++i); <br />
&nbsp;<br />
&nbsp; &nbsp; return 0; <br />
}</div></div>
<p><strong>volatile</strong><br />
<strong>Officiellement</strong> : <em>Déclarateur de membre critique nécessitant un traitement d’actualisation particulier notamment lors de l’utilisation de threads.</em></p>
<p>Concretement, une variable volatile pourra être modifier par le matériel, le système d’exploitation ou un autre thread. Pour vous c’est simplement une indication au compilateur, mais pour lui, il devra garder une structure mémoire ainsi qu’un système de référence constant au cours de l’exécution. Il ne pourra pas non plus spéculer quant à la valeur d&rsquo;une variable. Je ne rentrerais pas plus dans les détail car ce seul mot clef à fait écrire des bouquins entiers !</p>
<p><strong>Conclusion</strong></p>
<p>C’est déjà la fin de ce bref article, mon second ! J’espère qu’il vous a plu et qu’il donnera lieu à des retours sur le blog !<br />
Enfin, comme pour mon premier article, n’hésitez pas à me dire si j’ai tort, je ne suis qu’en 3ème année et j’ai encore beaucoup de choses à apprendre. Je serai ravi d’ajouter votre contribution à mon article !</p>
<p>Merci à tous.</p>
<p><strong>Références</strong></p>
<p><a href="http://fr.wikiversity.org/wiki/Langage_C%2B%2B/Mots_cl%C3%A9s">Wikiversity Mots Clefs C++</a></p>
<p><a href="http://msdn.microsoft.com/en-us/default.aspx">MSDN</a></p>
<p><strong>La langage C++</strong><br />
Auteur:Bjarne Stroustrup<br />
Editeur : Pearson Education; Édition : 2nd Revised edition (16 juin 2004)<br />
ISBN-10: 2744070033<br />
ISBN-13: 978-2744070037</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Pre/Postincrementation : Fight !</title>
		<link>https://blog.developpez.com/in-depth-code/p8281/code-poilu/pre_postincrementation_fight</link>
		<comments>https://blog.developpez.com/in-depth-code/p8281/code-poilu/pre_postincrementation_fight#comments</comments>
		<pubDate>Thu, 05 Nov 2009 14:49:18 +0000</pubDate>
		<dc:creator><![CDATA[digitalguru]]></dc:creator>
				<category><![CDATA[Code Poilu]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Introduction Au long de vos divagations programmistiques vous avez certainement dû apercevoir du code qui resemblait à ça : for(int i = 0; i &#60; 1000; ++i); Mais quelle est donc la différence entre i++ et ++i? C’est ce que nous allons essayer de décrouvrir au long de cet article avec un petit bonus final&#8230; Une version PDF de mon article est disponible ici si vous le souhaitez. (Petit soucie de provider, le PDF sera [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>Au long de vos divagations programmistiques vous avez certainement dû apercevoir du code qui resemblait à ça :<br />
<code class="codecolorer text default"><span class="text">for(int i = 0; i &lt; 1000; ++i);</span></code></p>
<p>Mais quelle est donc la différence entre i++ et ++i? C’est ce que nous allons essayer de décrouvrir au long de cet article avec un petit bonus final&#8230;<br />
<span id="more-2"></span><br />
<strong>Une version PDF de mon article est disponible <a href="http://fex.insa-lyon.fr/get?k=7iWJlV5E50gpwGZ6a4z">ici</a> si vous le souhaitez.</strong> (Petit soucie de provider, le PDF sera dispo directement la semaine prochaine&#8230;)</p>
<p><strong>Une question d’objet temporaire</strong></p>
<p>Tout d’abord, il faut considérer ces incrémentations dans la cadre d’une expression composée. Par exemple :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">int tableau[50]; <br />
int i = 0; // Cas 1. &nbsp;<br />
tableau[i++] = 0; &nbsp;<br />
&nbsp;<br />
i = 0; // Cas 2. <br />
tableau[++i] = 0;</div></div>
<p><strong>Quelle est la différence entre ++i et i++ ?</strong></p>
<p>* i++ : Appelée post-incrémentation, l’expression envoie la valeur de i à la fonction, puis incrémente sa valeur de 1. Dans le cadre de notre exemple :<br />
    &#8211; tableau[0] vaudra 0.<br />
    &#8211; i vaudra 1 après l’affectation.</p>
<p>* ++i : Appelée pré-incrementation, l’expression incrémente de 1 la valeur de i puis envoie sa nouvelle valeur à la fonction. Dans notre exemple:<br />
    &#8211; tableau[1] vaudra 0.<br />
    &#8211; i vaudra 1.</p>
<p>Il y a donc une différence énorme de signification dans les deux écritures et il faudra faire attention au comportement de notre porgramme lorsqu’on manie ce genre d’expressions.<br />
Quel est la différence entre ++i et i++ dans une expression simple ?</p>
<p>Dans un code du type :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">int i = 0; <br />
++i; // i = i + 1; <br />
i++; // i = i + 1;</div></div>
<p>Les deux expressions ont exactement le même comportement et ne font qu’incrémenter la valeur de i de 1.</p>
<p><strong>Pourquoi vaut-il mieux utiliser la pré-incrémentation que la post-incrémentation ?</strong></p>
<p>C’est simplement une question de rapidité. En effet, la post-incrémentation va créer une variable temporaire pour s’exécuter ce que ne fera pas le pré-incrémentation. Qui dit variable temporaire, dit accès mémoire et donc perte de temps et de place.<br />
Voici les équivalences :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">int i = 0; <br />
tableau[i++] = 0; <br />
&nbsp;<br />
// Equivaut a : <br />
&nbsp;<br />
int i = 0; <br />
int tmpi = i; &nbsp; &nbsp; &nbsp; &nbsp;// Une variable temporaire est cree. <br />
tableau[tmpi] = 0; <br />
i++;</div></div>
<p>et</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">int i = 0; <br />
tableau[++i] = 0; <br />
&nbsp;<br />
// Equivaut a : &nbsp;<br />
&nbsp;<br />
int i = 0; <br />
i = i + 1; <br />
tableau[i] = 0;</div></div>
<p><strong>Tout ça pour ça ?</strong></p>
<p>Une variable temporaire, c’est pas grande chose, mais rappelez vous de la boucle for : l’incrémentation est appelée à chaque itération ce qui, à terme peut ralentir l’exécution du programme.<br />
Il faut tout de même savoir que la plupart du temps, le compilateur optimisera. Il y a cependant des cas o`u le compilateur ne saura pas si pré-incrémenter ne changera pas le comportement et ne fera donc rien alors qu’une optimisation aurait dûe être faite.<br />
<ins>Comme précisé par Matthieu Brucher, le compilateur aura surtout du mal à optimiser dans le cas d&rsquo;objets plus complexes et notamment des itérateurs (Cf <em>STL</em>).</ins><br />
D&rsquo;après les tests effectué d&rsquo;après l&rsquo;observation de <em>spiceguid</em>, la pré-décrémentation est plus lente (encore que&#8230;) que la pré-incrémentation :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">time ./TestDecrementation &amp;&amp; time ./TestIncrementation &nbsp;<br />
&nbsp;<br />
real &nbsp;0m3.600s <br />
user &nbsp;0m3.590s <br />
sys &nbsp;0m0.000s <br />
&nbsp;<br />
real &nbsp;0m3.550s <br />
user &nbsp;0m3.440s <br />
sys &nbsp;0m0.000s</div></div>
<p>avec un code du type :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">for(int i = 1000000000; i &gt;= 0; --i); <br />
// Et <br />
for(int i = 0; i &lt; 1000000000; ++i);</div></div>
<p><em>Vous êtes prévenus maintenant !</em></p>
<p><strong>Bonus : Surchage des opérateurs</strong></p>
<p>Vous êtes vous déjà demandé comment faire la différence entre une post-opération et une pré-opération lorsqu’il faut surcharger l’opérateur unaire d’incrémentation (++ ou &#8211; -) ? Parce qu’à priori, le code est du genre :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">inline operator ++() { // Post ou pre-incrementation ?? &nbsp;<br />
&nbsp; &nbsp; // Code ... 3 &nbsp;<br />
}</div></div>
<p>Il y a une astuce ! En effet, pour surcharger une post-opération, il faut ajouter un paramètre inutile ! D’o‘u :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">inline operator ++() { // Pre-incrementation <br />
&nbsp; &nbsp; // Code ... <br />
} &nbsp;<br />
&nbsp;<br />
inline operator ++(int) { // Post-incrémentation <br />
&nbsp; &nbsp; // Code ... <br />
}</div></div>
<p><strong>Conclusion</strong></p>
<p>J’espère que ce premier article vous a plu et qu’il vous incitera à revenir régulièrement !</p>
<p><strong>Références</strong></p>
<p><strong>C++ Cookbook</strong><br />
By Jeff Cogswell, Christopher Diggins, Ryan Stephens, Jonathan Turkanis<br />
Publisher: O’Reilly<br />
Pub Date: November 2005<br />
ISBN: 0-596-00761-2</p>
<p><strong>C++ Coding Standards: 101 Rules, Guidelines, and Best Practices</strong><br />
By Herb Sutter, Andrei Alexandrescu<br />
Publisher: Addison Wesley Professional<br />
Pub Date: October 25, 2004<br />
ISBN: 0-321-11358-6</p>
<p>Et surêment plein d’autres&#8230; </p>
<p>Merci à Jey et à Paulo pour la relecture.\\<br />
Merci aussi à Matthieu Brucher et spiceguid pour leurs observations très contructives.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Plugin Codepad pour viM</title>
		<link>https://blog.developpez.com/in-depth-code/p8290/astuce/plugin_codepad_pour_vim</link>
		<comments>https://blog.developpez.com/in-depth-code/p8290/astuce/plugin_codepad_pour_vim#comments</comments>
		<pubDate>Fri, 06 Nov 2009 16:03:50 +0000</pubDate>
		<dc:creator><![CDATA[digitalguru]]></dc:creator>
				<category><![CDATA[Astuce]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Bonjour à tous ! Avant de réattaquer avec un peu de code poilu, je vous propose de découvrir un plugin génial pour les fidèles utilisateurs de viM dont je fait partie : Le plugin Codepad. Pour information, Codepad est un site web où il est possible d&#8217;écrire un code source C++ que d&#8217;autres utilisateurs pourront visualiser. En plus de ça, il est possible de compiler et d&#8217;executer ce code ! Mélangez ça à viM et [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Bonjour à tous !</p>
<p>Avant de réattaquer avec un peu de code poilu, je vous propose de découvrir un plugin génial pour les fidèles utilisateurs de <strong>viM</strong> dont je fait partie : Le plugin Codepad.<br />
Pour information, <a href="http://codepad.org/">Codepad</a> est un site web où il est possible d&rsquo;écrire un code source C++ que d&rsquo;autres utilisateurs pourront visualiser. En plus de ça, il est possible de compiler et d&rsquo;executer ce code !<br />
Mélangez ça à viM et vous obtenez l&rsquo;IDE pour <em>mini-projet</em> le plus rapide du monde !</p>
<p>Voici le lien pour obtenir le <a href="http://www.vim.org/scripts/script.php?script_id=2298">plugin</a>.</p>
<p>Je suppose que la majorité des utilisateurs de vim savent installer un plugin mais pour être sûr : il suffit de copier le fichier *.vim dans le répertoire plugin de votre installation vim (chez moi : <code class="codecolorer text default"><span class="text">/usr/share/vim/vim72/plugin/</span></code> ).</p>
<p>Bon code à tous !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bienvenue !</title>
		<link>https://blog.developpez.com/in-depth-code/p8276/news/bienvenue_5</link>
		<comments>https://blog.developpez.com/in-depth-code/p8276/news/bienvenue_5#comments</comments>
		<pubDate>Wed, 04 Nov 2009 23:00:10 +0000</pubDate>
		<dc:creator><![CDATA[digitalguru]]></dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Tout d&#8217;abord, bienvenue ! Je suis étudiant en informatique à l&#8217;INSA Lyon (promo 2012) et passionné de beau code. J&#8217;ai tous les jours l&#8217;occasion d&#8217;appendre de nouvelles choses et j&#8217;aimerai les partager. Le but de ce blog sera principalement de vous présenter du code &#171;&#160;poilu&#160;&#187; en C++, i.e. qui résout un problème de manière élégante et souvent assez technique pour le plaisir de faire du beau. Certains ne comprendrons sûrement pas l&#8217;intérêt de tels codes [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Tout d&rsquo;abord, <em>bienvenue</em> !<br />
Je suis étudiant en informatique à l&rsquo;INSA Lyon (promo 2012) et passionné de <em>beau code</em>. J&rsquo;ai tous les jours l&rsquo;occasion d&rsquo;appendre de nouvelles choses et j&rsquo;aimerai les partager.</p>
<p>Le but de ce blog sera principalement de vous présenter du code <em>&laquo;&nbsp;poilu&nbsp;&raquo;</em> en C++, i.e. qui résout un problème de manière élégante et souvent assez technique pour le plaisir de faire du beau. Certains ne comprendrons sûrement pas l&rsquo;intérêt de tels codes (et on peut comprendre) mais je suis sûr que d&rsquo;autres apprécieront.</p>
<p>Je profiterai aussi de ce blog pour vous faire part des différents livres que j&rsquo;ai l&rsquo;occasion de lire sur le sujet.</p>
<p>Mon côté chercheur se fera aussi un plaisir de vous présenter des articles, des cours et des tutoriaux sur lesquel je travaille.</p>
<p>En espérant que tout cela vous plaira autant qu&rsquo;à moi !</p>
<p><strong>Maxime Gaudin.</strong></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Une vraie touffe de poils : GoTW</title>
		<link>https://blog.developpez.com/in-depth-code/p8279/code-poilu/une_vraie_touffe_de_poil_gotw</link>
		<comments>https://blog.developpez.com/in-depth-code/p8279/code-poilu/une_vraie_touffe_de_poil_gotw#comments</comments>
		<pubDate>Thu, 05 Nov 2009 10:20:25 +0000</pubDate>
		<dc:creator><![CDATA[digitalguru]]></dc:creator>
				<category><![CDATA[Code Poilu]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[GoTW : Guru of The Week S&#8217;il n&#8217;y avait qu&#8217;un seul site de code poilu, ça serait certainement lui. Ce site nous offre chaque semaine un code, souvent simple, mais qui est source d&#8217;erreurs ou d&#8217;idées reçues très fréquentes. Il permet ainsi une compréhension approfondie du langage C++ et évite pas mal d&#8217;erreurs. Un exemple très parlant : Combien d&#8217;objet(s) temporaire(s) dans cette simple ligne de code ? string FindAddr( list&#60;Employee&#62; l, string name ) [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.gotw.ca/gotw/">GoTW : Guru of The Week</a></p>
<p>S&rsquo;il n&rsquo;y avait qu&rsquo;un seul site de <em>code poilu</em>, ça serait certainement lui. Ce site nous offre chaque semaine un code, souvent simple, mais qui est source d&rsquo;erreurs ou d&rsquo;idées reçues très fréquentes. Il permet ainsi une compréhension approfondie du langage C++ et évite pas mal d&rsquo;erreurs.</p>
<p>Un exemple très parlant : Combien d&rsquo;objet(s) temporaire(s) dans cette simple ligne de code ?<br />
<code class="codecolorer text default"><span class="text">string FindAddr( list&lt;Employee&gt; l, string name )</span></code></p>
<p><strong>Réponse</strong> : 3 ! ( <a href="http://www.gotw.ca/gotw/002.htm">Article 2</a> )</p>
<p>Et pour couronner le tout, en plus de mettre en évidence des erreurs fréquentes, les auteurs expliquent comment venir à bout de ces problèmes de manière élégante et efficace !</p>
<p>Pour les futurs fans, deux livres ont été écrit en partant des sujets de GoTW :<br />
&#8211; &laquo;&nbsp;<em><a href="http://www.gotw.ca/publications/xc++.htm">Exceptional C++</a></em>&nbsp;&raquo; (In-Depth series &#8211; Bjarne Stroustrup)<br />
&#8211; &laquo;&nbsp;<em><a href="http://www.gotw.ca/publications/mxc++.htm">More Exceptional C++</a></em>&nbsp;&raquo; (In-Depth series &#8211; Bjarne Stroustrup)</p>
<p>Je ne peux que vous conseillez d&rsquo;étudier assez finements ces exemples et encore plus ces livres, même si j&rsquo;en traiterai assez régulièrement sur ce blog.</p>
<p>Pour les non-anglophones, passez votre chemin.</p>
<p><strong>Maxime Gaudin</strong></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
