<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Developpement-Logiciel | Dr. Goulu</title><link>https://drgoulu.com/tag/developpement-logiciel/</link><atom:link href="https://drgoulu.com/tag/developpement-logiciel/index.xml" rel="self" type="application/rss+xml"/><description>Developpement-Logiciel</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-FR</language><lastBuildDate>Mon, 06 Jan 2020 00:00:00 +0000</lastBuildDate><image><url>https://drgoulu.com/media/icon_hu_8d57a97d564ea9bb.png</url><title>Developpement-Logiciel</title><link>https://drgoulu.com/tag/developpement-logiciel/</link></image><item><title>Quelles sont les situations où les espaces blancs devraient être évités en Python ?</title><link>https://drgoulu.com/2020/01/06/quelles-sont-les-situations-ou-les-espaces-blancs-devraient-etre-evites-en-python/</link><pubDate>Mon, 06 Jan 2020 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2020/01/06/quelles-sont-les-situations-ou-les-espaces-blancs-devraient-etre-evites-en-python/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Les recommandations sont dans le
. Utilisez un IDE qui formate le code de cette manière.&lt;/p&gt;
&lt;p&gt;A ma connaissance il n&amp;rsquo;existe aucun cas ou un espace peut provoquer un équivoque, à part la fameuse indentation bien sur…&lt;/p&gt;
&lt;p&gt;Comme j&amp;rsquo;ai déjà eu l&amp;rsquo;occasion de le dire, l&amp;rsquo;indentation Python encourage vraiment à écrire de petites fonction et de petits blocs. Ma règle personnelle est de ne jamais imbriquer plus de 3 niveaux dans une fonction, et de ne jamais faire de fonction plus longue qu&amp;rsquo;un écran. Et de ne pas utiliser d&amp;rsquo;écran en mode portrait…&lt;/p&gt;</description></item><item><title>Pourquoi cette popularité de Python en si peu d'années ?</title><link>https://drgoulu.com/2019/12/07/pourquoi-cette-popularite-de-python-en-si-peu-d-annees/</link><pubDate>Sat, 07 Dec 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/12/07/pourquoi-cette-popularite-de-python-en-si-peu-d-annees/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
existe depuis 1991, donc il lui a quand même fallu une bonne vingtaine d&amp;rsquo;années pour devenir populaire…&lt;/p&gt;
&lt;p&gt;Pendant ces années, une énorme variété de librairies ont été écrites dans ce langage et mises à disposition gratuitement et facilement (via pip ou conda). Aujourd&amp;rsquo;hui, vous trouvez à coup sur des librairies qui implantent 90% des fonctions de haut niveau dont vous avez besoin pour une application quelle qu&amp;rsquo;elle soit.&lt;/p&gt;
&lt;p&gt;De plus, le langage s&amp;rsquo;est révélé très bien conçu, permettant d&amp;rsquo;utiliser et de combiner proprement plusieurs &amp;ldquo;
&amp;rdquo; (je hais ce mot…) . Certains concepts de haut niveau comme les
(les décorateurs c&amp;rsquo;est génial !
) ou les
permettent d&amp;rsquo;étendre les fonctionnalités du langage par des librairies &amp;ldquo;standard&amp;rdquo;. Par exemple le typage statique a été ajouté par la librairie
qu&amp;rsquo;on peut utiliser (ou pas) alors que dans tous les autres langages c&amp;rsquo;est une notion fondamentale du langage (ou pas).&lt;/p&gt;
&lt;p&gt;Bref, ce langage s&amp;rsquo;est révélé à l&amp;rsquo;usage très robuste, étendu et évolutif, d&amp;rsquo;où sa popularité.&lt;/p&gt;
&lt;h6 id="notes-de-bas-de-page"&gt;Notes de bas de page&lt;/h6&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Qu'est-ce qu'un bon exemple de variable globale et de son utilisation en Python ?</title><link>https://drgoulu.com/2019/11/26/qu-est-ce-qu-un-bon-exemple-de-variable-globale-et-de-son-utilisation-en-python/</link><pubDate>Tue, 26 Nov 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/11/26/qu-est-ce-qu-un-bon-exemple-de-variable-globale-et-de-son-utilisation-en-python/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;il n&amp;rsquo;y a aucun bon exemple d&amp;rsquo;utilisation d&amp;rsquo;une variable globale dans aucun langage. Les variables globales, c&amp;rsquo;est le Mal.&lt;/p&gt;
&lt;p&gt;En Python, les quelques variables globales indispensables sont rangées dans un dict retourné par la fonction globals():&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;globals&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;__name__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__doc__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__package__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__loader__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;_frozen_importlib.BuiltinImporter&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__spec__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__annotations__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__builtins__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;builtins&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;built&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Comme vous le voyez, toutes les variables globales ont un nom encadré par des &lt;strong&gt;doubles&lt;/strong&gt; , ce qui signifie qu&amp;rsquo;elles sont privées et ne doivent pas être utilisées, sauf par des adultes consentants.&lt;/p&gt;
&lt;p&gt;quand vous faites&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; a=1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;vous polluez cette pure beauté minimaliste:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;globals&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;__name__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__doc__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__package__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__loader__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;_frozen_importlib.BuiltinImporter&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__spec__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__annotations__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__builtins__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;builtins&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;built&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;BEARK !&lt;/p&gt;</description></item><item><title>Quels sont les différents types d'arguments que vous pouvez utiliser pour définir une fonction Python ?</title><link>https://drgoulu.com/2019/11/26/quels-sont-les-differents-types-d-arguments-que-vous-pouvez-utiliser-pour-definir-une-fonction-python/</link><pubDate>Tue, 26 Nov 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/11/26/quels-sont-les-differents-types-d-arguments-que-vous-pouvez-utiliser-pour-definir-une-fonction-python/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;un seul : référence à un objet. (
)&lt;/p&gt;
&lt;p&gt;il faut bien réaliser qu&amp;rsquo;en python, même les (petits) entiers sont des objets, par exemple :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; a=100
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; (a+a) is 2*a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;True
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;parce que l&amp;rsquo;objet 200 est le même des deux côtés du is, car prédéfini, mais&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; a=1000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; (a+a) is 2*a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;False
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;parce que là, Python construit deux instances d&amp;rsquo;objets 2000 distinctes.&lt;/p&gt;
&lt;p&gt;donc même quand vous croyez passer un entier en paramètre à une fonction, vous passez en réalité une référence à un objet de classe int&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; type(1)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;class &amp;#39;int&amp;#39;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Pourquoi avoir créée autant de language de programmation ?</title><link>https://drgoulu.com/2019/10/16/pourquoi-avoir-creee-autant-de-language-de-programmation/</link><pubDate>Wed, 16 Oct 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/10/16/pourquoi-avoir-creee-autant-de-language-de-programmation/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Parce que le temps passe, et il passe très vite en informatique.&lt;/p&gt;
&lt;p&gt;Les premiers languages étaient très proches du &amp;ldquo;language machine&amp;rdquo;, avec des instructions proches de celles du processeur comme le saut inconditionnel (goto).&lt;/p&gt;
&lt;p&gt;Puis on a peu à peu pris conscience que les programmes devaient être lisibles et maintenables par des humains, et aussi qu&amp;rsquo;un bon compilateur pouvait optimiser le code mieux qu&amp;rsquo;un humain pour les processeurs modernes.&lt;/p&gt;
&lt;p&gt;A chaque étape, et aussi pour certains besoins spécifiques, on a créé des languages déchargeant les programmeurs des tâches ingrates (allouer/desallouer la mémoire) ou leur simplifiant la tâche (synchroniser des threads et processus).&lt;/p&gt;
&lt;p&gt;Ceci continuera jusqu&amp;rsquo;à la généralisation du language qui, selon Nicklaus Wirth, sera celui dans lequel vos collègues auront du plaisir à lire vos programmes.&lt;/p&gt;
&lt;p&gt;Pas demain la veille donc.&lt;/p&gt;</description></item><item><title>Quelles sont les bonnes astuces à connaître pour développer en Python ?</title><link>https://drgoulu.com/2019/10/01/quelles-sont-les-bonnes-astuces-a-connaitre-pour-developper-en-python/</link><pubDate>Tue, 01 Oct 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/10/01/quelles-sont-les-bonnes-astuces-a-connaitre-pour-developper-en-python/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pour du dev sérieux, utiliser la distribution
et un IDE comme PyCharm, VSCode, ou un Eclipse avec PyDev comme
par exemple.&lt;/li&gt;
&lt;li&gt;Définir un e
par projet et y installer uniquement les packages nécessaires.
pour les gros projets.&lt;/li&gt;
&lt;li&gt;Vraiment bien comprendre que tout est objet, et que les &amp;ldquo;variables&amp;rdquo; sont en fait des références à des objets. Si vous ne comprenez pas pourquoi :&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; a=[1,2,3]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; b=a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; a.append(4)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; b
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[1, 2, 3, 4]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;alors révisez
avant de coder.
4. Vraiment bien comprendre que les objets sont définis par leur
, qui gère l&amp;rsquo;héritage et tout et tout.
5. Comprendre les
( instruction
), et la notion sous jacente d&amp;rsquo;itérateur.
6. Connaître l&amp;rsquo;existence de toutes les librairies de
Python. Il y a très probablement déjà là des briques importantes de votre futur programme.
7. Cherchez les autres briques sur
avant de réinventer la roue.
8. Have fun ! N&amp;rsquo;oubliez pas de faire un petit
&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; import antigravity&lt;/code&gt;
de temps en temps :-)&lt;/p&gt;</description></item><item><title>Pourquoi tant d'ingénieurs / programmeurs de logiciels n'aiment-ils pas Python à cause de sa règle d'indentation, alors qu'elle donne au code une apparence organisée et plus propre ?</title><link>https://drgoulu.com/2019/07/05/pourquoi-tant-d-ingenieurs-programmeurs-de-logiciels-n-aiment-ils-pas-python-a-cause-de-sa-regle-d-indentation-alors-qu-elle-donne-au-code-une-apparence-organisee-et-plus-propre/</link><pubDate>Fri, 05 Jul 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/07/05/pourquoi-tant-d-ingenieurs-programmeurs-de-logiciels-n-aiment-ils-pas-python-a-cause-de-sa-regle-d-indentation-alors-qu-elle-donne-au-code-une-apparence-organisee-et-plus-propre/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est assez étonnant en effet, puisqu&amp;rsquo;ils utilisent quasi tous leur IDE pour indenter automatiquement leur code à partir des {{}{{{}}{}}{{{{}}{}}}} pour rendre leur code lisible…&lt;/p&gt;
&lt;p&gt;Un collègue m&amp;rsquo;a dit une fois &amp;ldquo;Oui mais quand je vois }}} dans une longue fonction je sais que j&amp;rsquo;ai imbriqué 3 boucles ou tests alors qu&amp;rsquo;en ne voyant que l&amp;rsquo;indentation je ne sais pas combien de niveaux il y a.&lt;/p&gt;
&lt;p&gt;Je lui ai répondu : moi non plus, c&amp;rsquo;est pour ça que je ne fais jamais de bloc de plus de quelques lignes et de fonction de plus d&amp;rsquo;une page, ce qui est une bonne pratique.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;indentation de Python (et d&amp;rsquo;autres aspects du langage) incite à adopter de bonnes pratiques, et c&amp;rsquo;est plutôt ça que certains n&amp;rsquo;aiment pas.&lt;/p&gt;</description></item><item><title>Puis-je devenir un bon programmeur sans connaissances en mathématiques et en algorithmes ?</title><link>https://drgoulu.com/2019/06/16/puis-je-devenir-un-bon-programmeur-sans-connaissances-en-mathematiques-et-en-algorithmes/</link><pubDate>Sun, 16 Jun 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/06/16/puis-je-devenir-un-bon-programmeur-sans-connaissances-en-mathematiques-et-en-algorithmes/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Sans connaissances en mathématiques éventuellement, si vous évitez les sujets qui en nécessitent (3D, simulation, traitement d&amp;rsquo;image, cryptographie,…)&lt;/p&gt;
&lt;p&gt;S ans connaissances en algorithmes, non. La connaissance des algorithmes est indispensable pour choisir une solution au problème posé, savoir quoi coder et quoi réutiliser, et anticiper les performances de votre programme.&lt;/p&gt;
&lt;p&gt;Connaissance ne veut pas forcément dire maîtrise totale au point de les réécrire, mais vous devez savoir qu&amp;rsquo;un tri est n.log(n) et que le voyageur de commerce est NP.&lt;/p&gt;</description></item><item><title>Quelle est la fonctionnalité la plus intéressante du langage de programmation Python ?</title><link>https://drgoulu.com/2019/06/16/quelle-est-la-fonctionnalite-la-plus-interessante-du-langage-de-programmation-python/</link><pubDate>Sun, 16 Jun 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/06/16/quelle-est-la-fonctionnalite-la-plus-interessante-du-langage-de-programmation-python/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Puisqu&amp;rsquo;on demande LA plus intéressante, je choisis les décorateurs.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est en les découvrant que j&amp;rsquo;ai réalisé que les
du &amp;ldquo;Gang of Four&amp;rdquo; pouvaient se formaliser dans un langage bien fichu. Et le fait est que d&amp;rsquo;autres patterns peuvent être réalisés via les décorateurs, ce que Python fait d&amp;rsquo;ailleurs.&lt;/p&gt;
&lt;p&gt;Bien sur on peut écrire des décorateurs dans presque tous les langages, mais en Python c&amp;rsquo;est simple, et donc beau.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Quelles sont les limitations des dataclasses de Python 3.7 comparé aux classes classiques de Python ?</title><link>https://drgoulu.com/2019/06/12/quelles-sont-les-limitations-des-dataclasses-de-python-3-7-compare-aux-classes-classiques-de-python/</link><pubDate>Wed, 12 Jun 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/06/12/quelles-sont-les-limitations-des-dataclasses-de-python-3-7-compare-aux-classes-classiques-de-python/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;les
sont des classes classiques additionnées de &amp;ldquo;décorateurs&amp;rdquo; qui génèrent automatiquement le code du constructeur et de diverses autres &amp;ldquo;méthodes magiques&amp;rdquo; comme &lt;strong&gt;str&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si vous ne connaissez pas la notion de décorateur, commencez par ça parce que c&amp;rsquo;est absolument génial, et très simple en python
. Et évidemment renseignez vous aussi sur les &amp;ldquo;méthodes magiques&amp;rdquo; si vous ne les connaissez pas.&lt;/p&gt;
&lt;p&gt;Après ça les choses seront claires : vous ne pouvez pas (simplement) écrire votre propre constructeur ou méthode magique d&amp;rsquo;une dataclasse. Par contre vous pouvez lui ajouter plein d&amp;rsquo;autres méthodes comme une classe normale.&lt;/p&gt;
&lt;p&gt;Notes de bas de page&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Est-il possible de créer des méthodes statiques en Python et de les appeler sans initialiser une classe, comme par exemple : ClassName.StaticMethod ()?</title><link>https://drgoulu.com/2019/05/02/est-il-possible-de-creer-des-methodes-statiques-en-python-et-de-les-appeler-sans-initialiser-une-classe-comme-par-exemple-classname-staticmethod/</link><pubDate>Thu, 02 May 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/05/02/est-il-possible-de-creer-des-methodes-statiques-en-python-et-de-les-appeler-sans-initialiser-une-classe-comme-par-exemple-classname-staticmethod/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;oui, ça se fait à l’aide du décorateur @staticmethod qui sert exactement à ça:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;class MyClass:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; @staticmethod
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; def staticmethod():
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return &amp;#39;static method called&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;on peut ensuite appeler soit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MyClass().staticmethod(); # crée un objet, puis appelle sa méthode qui est statique
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;soit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MyClass.staticmethod(); # appelle directement la méthode statique
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;les décorateurs, c’est absolument génialement fabuleusement puissant et simple&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Quelles sont les choses que seuls les programmeurs comprendront ?</title><link>https://drgoulu.com/2019/05/02/quelles-sont-les-choses-que-seuls-les-programmeurs-comprendront/</link><pubDate>Thu, 02 May 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/05/02/quelles-sont-les-choses-que-seuls-les-programmeurs-comprendront/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;les blagues de programmeur comme celle là:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Il y a deux sortes de gens : ceux qui comprennent la notion de récursivité et ceux qui ne comprennent pas qu’il y a deux sortes de gens : ceux qui comprennent la notion de récursivité et ceux qui ne comprennent pas qu’il y a deux sortes de gens : ceux qui comprennent la notion de récursivité et ceux qui ne comprennent pas qu’il y a deux sortes de gens&amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Quels sont les grands dictons de la programmation ?</title><link>https://drgoulu.com/2019/04/30/quels-sont-les-grands-dictons-de-la-programmation/</link><pubDate>Tue, 30 Apr 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/04/30/quels-sont-les-grands-dictons-de-la-programmation/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Les plus célèbres sont les
.&lt;/p&gt;
&lt;p&gt;Mes préférés sont:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La constante d’une personne est la variable d’une autre.&lt;/li&gt;
&lt;li&gt;La simplicité ne précède pas la complexité, elle la suit.&lt;/li&gt;
&lt;li&gt;La preuve de la valeur d’un système informatique est son existence.&lt;/li&gt;
&lt;li&gt;Il ne vaut pas la peine de connaître un langage qui ne modifie pas votre façon de penser la programmation.&lt;/li&gt;
&lt;li&gt;Un langage de programmation est “bas niveau” quand il nécessite de faire attention à ce qui n’a aucune importance.&lt;/li&gt;
&lt;li&gt;Il y a deux manières d’écrire des programmes sans erreurs. Seule la troisième marche.&lt;/li&gt;
&lt;li&gt;Tout programme a (au moins) deux buts : celui pour lequel il a été écrit, et celui pour lequel il ne l’a pas été.&lt;/li&gt;
&lt;li&gt;Tout doit être construit de haut en bas (top-down), sauf la première fois.&lt;/li&gt;
&lt;li&gt;Si vous avez une fonction avec 10 paramètres, vous en avez probablement oublié.&lt;/li&gt;
&lt;li&gt;Une fois que vous comprenez comment écrire un programme, trouvez quelqu’un d’autre pour l’écrire.&lt;/li&gt;
&lt;li&gt;Il est plus facile d’écrire un programme incorrect que d’en comprendre un correct.&lt;/li&gt;
&lt;li&gt;Vous pouvez mesurer les perspectives d’avenir d’un programmeur par son attitude par rapport à la vitalité de FORTRAN.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et une entendue de Niklaus Wirth:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le langage de programmation parfait sera celui dans lequel vos collègues auront du plaisir à lire votre code.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Peut-on dire qu’à partir d’un cahier des charges, avec deux langages différents, on obtiendra deux programmes compilés identiques, pour un même processeur ?</title><link>https://drgoulu.com/2019/04/01/peut-on-dire-qua-partir-dun-cahier-des-charges-avec-deux-langages-differents-on-obtiendra-deux-programmes-compiles-identiques-pour-un-meme-processeur/</link><pubDate>Mon, 01 Apr 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/04/01/peut-on-dire-qua-partir-dun-cahier-des-charges-avec-deux-langages-differents-on-obtiendra-deux-programmes-compiles-identiques-pour-un-meme-processeur/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Non, c’est quasiment impossible d’obtenir deux programmes compilés identiques. Déjà il ne reste plus beaucoup de langages compilés actifs : C++, Go, Swift, Ada, et, il faut le dire, ces bon vieux Formol et Cobtran. Les autres (Python, Java, JavaScript etc.) font chacun leur “bytecode” interprété.&lt;/p&gt;
&lt;p&gt;Les langages compilés et leurs compilateurs sont suffisamment différents dans la représentation des objets voire des chaines de caractères, le passage de paramètres etc et l’optimisation du code pour les processeurs actuels qu’ils vont produire du code différent, à part peut-être pour print(“Hello World!”).&lt;/p&gt;</description></item></channel></rss>