<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Langages-De-Programmation | Dr. Goulu</title><link>https://drgoulu.com/tag/langages-de-programmation/</link><atom:link href="https://drgoulu.com/tag/langages-de-programmation/index.xml" rel="self" type="application/rss+xml"/><description>Langages-De-Programmation</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>Langages-De-Programmation</title><link>https://drgoulu.com/tag/langages-de-programmation/</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>Comment ferait quelqu'un qui ne sait pratiquement rien de la programmation ? Comment faire pour maitriser un certain langage qu'on ceut ?</title><link>https://drgoulu.com/2019/12/13/comment-ferait-quelqu-un-qui-ne-sait-pratiquement-rien-de-la-programmation-comment-faire-pour-maitriser-un-certain-langage-qu-on-ceut/</link><pubDate>Fri, 13 Dec 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/12/13/comment-ferait-quelqu-un-qui-ne-sait-pratiquement-rien-de-la-programmation-comment-faire-pour-maitriser-un-certain-langage-qu-on-ceut/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ca dépend quel est votre but.&lt;/p&gt;
&lt;p&gt;Si c&amp;rsquo;est par curiosité ou pour le plaisir essayez
(il y en a d&amp;rsquo;autres, mais celui -là est en français)&lt;/p&gt;
&lt;p&gt;Si vous avez un projet particulier, cherchez-en un existant similaire sur
, essayez de comprendre comment il est fait et de le modifier un petit peu pour apprendre, puis contribuez au projet.&lt;/p&gt;
&lt;p&gt;Si c&amp;rsquo;est dans un objectif professionnel, prenez des cours, il en existe de très bons en ligne (
) et pratiquez, pratiquez et pratiquez …&lt;/p&gt;
&lt;p&gt;Dites vous bien que &amp;ldquo;maîtriser un langage&amp;rdquo; prend entre une semaine et des années suivant ce que vous appelez &amp;ldquo;maîtriser&amp;rdquo; et vos notions de départ.&lt;/p&gt;</description></item><item><title>Pourquoi utilisons-nous JavaScript ?</title><link>https://drgoulu.com/2019/12/09/pourquoi-utilisons-nous-javascript/</link><pubDate>Mon, 09 Dec 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/12/09/pourquoi-utilisons-nous-javascript/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Parce que les browsers l&amp;rsquo;implantent de façon très efficace.&lt;/p&gt;
&lt;p&gt;Je pense qu&amp;rsquo;il faut voir Javascirpt comme &amp;ldquo;l&amp;rsquo;assembleur du web&amp;rdquo; : maintenant qu&amp;rsquo;il existe des langages comme
,
et
qui peuvent être &amp;ldquo;transpilés&amp;rdquo; en JavaScript, il ne faut plus développer de projet important directement en JavaScript.&lt;/p&gt;
&lt;p&gt;Par contre la performance de ce langage dans les browser modernes ne cesse de m&amp;rsquo;étonner . Ca tourne assez vite pour émuler des processeurs d&amp;rsquo;(avant-) hier en temps réel ! voir
&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 dit-on que Python est un langage facile à apprendre ?</title><link>https://drgoulu.com/2019/10/29/pourquoi-dit-on-que-python-est-un-langage-facile-a-apprendre/</link><pubDate>Tue, 29 Oct 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/10/29/pourquoi-dit-on-que-python-est-un-langage-facile-a-apprendre/</guid><description>&lt;p&gt;&lt;em&gt;Réponse publiée
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Parce qu&amp;rsquo;il l&amp;rsquo;est.&lt;/p&gt;
&lt;p&gt;Si vous ne connaissez aucun langage de programmation, Python vous permettra d&amp;rsquo;apprendre la programmation en acquérant de bons réflexes : indentation, variables locales, …&lt;/p&gt;
&lt;p&gt;Si vous connaissez d&amp;rsquo;autres langages de programmation, Python vous apparaîtra plus simple pour tout.&lt;/p&gt;
&lt;p&gt;Avec un peu de pratique vous verrez qu&amp;rsquo;il n&amp;rsquo;y a rien de superflu ou de verbeux en Python. Tout est aussi simple et clair qu&amp;rsquo;il doit l&amp;rsquo;être.&lt;/p&gt;
&lt;p&gt;
&lt;/p&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>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>Quelle est la bonne façon d'apprendre à programmer ?</title><link>https://drgoulu.com/2019/06/11/quelle-est-la-bonne-facon-d-apprendre-a-programmer/</link><pubDate>Tue, 11 Jun 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/06/11/quelle-est-la-bonne-facon-d-apprendre-a-programmer/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;La pratique.&lt;/p&gt;
&lt;p&gt;Programmer des petits trucs qui vous intéressent, participer à des challenges de programmation sur internet , comparer votre code à celui des autres (sans vous décourager…)&lt;/p&gt;
&lt;p&gt;Et puis faire des programmes de plus en plus complexes, en utilisant dans chacun ce que vous avez appris précédemment.&lt;/p&gt;
&lt;p&gt;Les erreurs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;croire que lire un livre vous apprendra à programmer. Ca peut éventuellement marcher si vous tapez vraiment tout le code du bouquin (en ne le regardant si possible pas) en comprenant vraiment ce que chaque ligne fait&lt;/li&gt;
&lt;li&gt;vous attaquer directement au futur blockbuster en 3D réseau &amp;ldquo;Nitefor&amp;rdquo; …&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Lisp est-il un langage de programmation facile ?</title><link>https://drgoulu.com/2019/05/29/lisp-est-il-un-langage-de-programmation-facile/</link><pubDate>Wed, 29 May 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/05/29/lisp-est-il-un-langage-de-programmation-facile/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Lots of Insipid and Stupid Parenthesis ? Non, pas facile du tout.&lt;/p&gt;
&lt;p&gt;Au début ça va, si on a un IDE qui formate ça bien avec des parenthèses multicolores, ce qui n&amp;rsquo;est pas le cas ci-dessous:&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;(defun factorial (n &amp;amp;optional (acc 1))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;Calcule la factorielle de l&amp;#39;entier n.&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(if (&amp;lt;= n 1)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; acc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; (factorial (- n 1) (* acc n))))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;et puis ça donne des
(un bout de browser en LISP trouvé sur GitHub) …&lt;/p&gt;
&lt;p&gt;Sérieusement : dès que j&amp;rsquo;ai appris LISP en 1986, je me suis dépêché d&amp;rsquo;apprendre Prolog pour ce qu&amp;rsquo;on appelait intelligence artificielle à l&amp;rsquo;époque., et aujourd&amp;rsquo;hui les bonnes idées de LISP (car il y en a quand même…) se retrouvent beaucoup plus clairement dans des langages comme Python&lt;/p&gt;
&lt;p&gt;voir
&lt;/p&gt;</description></item><item><title>Qu'est-ce qu'une classe en Python ?</title><link>https://drgoulu.com/2019/05/09/qu-est-ce-qu-une-classe-en-python/</link><pubDate>Thu, 09 May 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/05/09/qu-est-ce-qu-une-classe-en-python/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En première approximation, la même chose qu’une
dans n’importe quel autre langage.&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;Les classes sont un moyen de réunir des données et des fonctionnalités. Créer une nouvelle classe crée un nouveau &lt;em&gt;type&lt;/em&gt; d&amp;rsquo;objet et ainsi de nouvelles &lt;em&gt;instances&lt;/em&gt; de ce type peuvent être construites. Chaque instance peut avoir ses propres attributs, ce qui définit son état. Une instance peut aussi avoir des méthodes (définies par la classe de l&amp;rsquo;instance) pour modifier son état.
(
)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En deuxième approximation, c’est plus subtil et plus puissant :
, on peut définir des
, des
…&lt;/p&gt;</description></item><item><title>Pourquoi les objets intégrés mutables ne peuvent-ils pas être transformés en Python ? Quel est l'avantage de cela ?</title><link>https://drgoulu.com/2019/05/06/pourquoi-les-objets-integres-mutables-ne-peuvent-ils-pas-etre-transformes-en-python-quel-est-l-avantage-de-cela/</link><pubDate>Mon, 06 May 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/05/06/pourquoi-les-objets-integres-mutables-ne-peuvent-ils-pas-etre-transformes-en-python-quel-est-l-avantage-de-cela/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;qu’appelez-vous “transformés” ? Vous voulez dire modifiés comme&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;a=(1,&amp;#39;truc&amp;#39;,true) # tuple
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;a[1]=&amp;#39;machin&amp;#39; # erreur
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;? Alors vous voulez plutôt dire
(immutable en anglais).&lt;/p&gt;
&lt;p&gt;Un objet immutable permet de garantir la cohérence des données qu’il contient en obligeant à les manipuler comme un tout. Ca peut être utile en programmation multi-thread par exemple : chaque thread est sure que l’objet partagé n’est pas en train d’être modifié par une autre thread.&lt;/p&gt;
&lt;p&gt;Un autre avantage est que le hash d’un objet immuable est constant, ce qui permet la recherche très rapide d’un tel objet dans un set ou un dict. C’est pourquoi les clés de dict doivent être de type immuable&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>Qui sont les meilleurs pirates de l'histoire et quels langages de programmation utilisent-ils ?</title><link>https://drgoulu.com/2019/04/29/qui-sont-les-meilleurs-pirates-de-l-histoire-et-quels-langages-de-programmation-utilisent-ils/</link><pubDate>Mon, 29 Apr 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/04/29/qui-sont-les-meilleurs-pirates-de-l-histoire-et-quels-langages-de-programmation-utilisent-ils/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Les meilleurs pirates de l’histoire sont ceux dont personne ne connaît le nom. Les autres sont moins bons, puisqu’ils se sont fait pincer…&lt;/p&gt;
&lt;p&gt;La plupart du temps, on utilise plusieurs langages de programmation, car pour contourner les diverses couches de sécurité il faut les attaquer de manières différente et “injecter” un autre programme dans la couche du dessous. Exemple :
&lt;/p&gt;
&lt;p&gt;Mais le plus fort c’est le
! Je ne sais pas si vous imaginez ça : en désassemblant le code, on voit qu’il a été compilé mais on ne sait pas par quel compilateur ! Les gars qui ont écrit Duqu ont probablement écrit leur propre langage+compilateur avant ! wow !&lt;/p&gt;</description></item><item><title>Pourquoi utiliser Prolog au lieu de Python pour le développement d’une AI?</title><link>https://drgoulu.com/2019/04/16/pourquoi-utiliser-prolog-au-lieu-de-python-pour-le-developpement-dune-ai/</link><pubDate>Tue, 16 Apr 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/04/16/pourquoi-utiliser-prolog-au-lieu-de-python-pour-le-developpement-dune-ai/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Parce qu’on croit encore plus à la magie.&lt;/p&gt;
&lt;p&gt;Python est un langage plus “classique” et général pour lequel il existe des librairies d’
très à la mode.&lt;/p&gt;
&lt;p&gt;
était une approche précédente qui se base sur un
déterminant “tout seul” comment combiner des règles logiques définies en Prolog pour obtenir un résultat.&lt;/p&gt;
&lt;p&gt;Donc si le problème a résoudre se présente sous forme de règles logiques, on peut préférer Prolog, souvent très efficace au début, puis ça devient une bataille contre l’explosion combinatoire …&lt;/p&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>