Skip to content

Commit

Permalink
Deployed 6fa94e7 with MkDocs version: 1.6.1
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Sep 24, 2024
1 parent 64bd7c0 commit 0ea4f8e
Show file tree
Hide file tree
Showing 22 changed files with 149 additions and 34 deletions.
4 changes: 2 additions & 2 deletions appendix/grammar/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5632,7 +5632,7 @@

<h1 id="grammaire-c">Grammaire C<a class="headerlink" href="#grammaire-c" title="Lien permanent">¤</a></h1>
<p><a href="https://fr.wikipedia.org/wiki/Yacc_(logiciel)">Yacc</a> (<em>Yet Another COmpiler-Compiler</em>) est un logiciel utilisé pour écrire des analyseurs syntaxiques de code. Il prend en entrée une grammaire.</p>
<p>Parce que les informaticiens ont de l'humour, Yacc à son pendant <abbr title="GNU's Not Unix">GNU</abbr> <a href="https://en.wikipedia.org/wiki/GNU_Bison">Bison</a> plus récent (1985) mais toujours activement développé.</p>
<p>Parce que les informaticiens ont de l'humour, Yacc à son pendant <abbr title="GNU's Not Unix">GNU</abbr> <a href="https://fr.wikipedia.org/wiki/GNU_Bison">Bison</a> plus récent (1985) mais toujours activement développé.</p>
<p>Voici à titre d'information la définition formelle du langage <abbr title="Standard ISO/IEC 9899:1999">C99</abbr> :</p>
<div class="language-text highlight"><pre><span></span><code><span id="__span-0-1"><a href="#__codelineno-0-1" id="__codelineno-0-1" name="__codelineno-0-1"></a>%{
</span><span id="__span-0-2"><a href="#__codelineno-0-2" id="__codelineno-0-2" name="__codelineno-0-2"></a>#include "ast.h"
Expand Down Expand Up @@ -6753,7 +6753,7 @@ <h1 id="grammaire-c">Grammaire C<a class="headerlink" href="#grammaire-c" title=
<span class="md-icon" title="Dernière mise à jour">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg>
</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">9 septembre 2024</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">24 septembre 2024</span>
</span>


Expand Down
4 changes: 2 additions & 2 deletions course-c/05-introduction/c-lang/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6245,7 +6245,7 @@ <h2 id="le-c-et-les-autres">Le C et les autres...<a class="headerlink" href="#le
<p>Sur le podium, <span class="ycr-hashtag" data-index-entry="Python" data-tag="python">Python</span> est un langage de très haut niveau simple à apprendre, mais éloigné du matériel. <span class="ycr-hashtag" data-index-entry="C++" data-tag="c">C++</span> est un langage de programmation orientée objet, très puissant, mais complexe à dompter. Avec la médaille d'argent, C est un excellent compromis entre les deux, il est simple, mais permet de comprendre les bases de la programmation et de la manipulation du matériel. C'est pour cela que ce cours est basé sur le langage C. Ai-je réussi à vous convaincre ?</p>
<p><a href="" id="structured-text-programming"></a></p>
<h2 id="programmation-texte-structuree">Programmation texte structurée<a class="headerlink" href="#programmation-texte-structuree" title="Lien permanent">¤</a></h2>
<p>Le C comme la plupart des langages de programmation utilise du texte structuré, c'est-à-dire que le langage peut être défini par un <strong>vocabulaire</strong>, une <strong>grammaire</strong> et se compose d'un <strong>alphabet</strong>. À l'inverse des <a href="https://en.wikipedia.org/wiki/Natural_language">langages naturels</a> comme le Français, un langage de programmation est un <a href="https://fr.wikipedia.org/wiki/Langage_formel">langage formel</a> et se veut exact dans sa grammaire et son vocabulaire, il n'y a pas de cas particuliers ni d'ambiguïtés possibles dans l'écriture. Les <strong>compilateurs</strong> sont ainsi construits autour d'une grammaire du langage qui est réduite au minimum par souci d'économie de mémoire, pour taire les ambiguïtés et accroître la productivité du développeur.</p>
<p>Le C comme la plupart des langages de programmation utilise du texte structuré, c'est-à-dire que le langage peut être défini par un <strong>vocabulaire</strong>, une <strong>grammaire</strong> et se compose d'un <strong>alphabet</strong>. À l'inverse des <a href="https://fr.wikipedia.org/wiki/Langage_naturel">langages naturels</a> comme le Français, un langage de programmation est un <a href="https://fr.wikipedia.org/wiki/Langage_formel">langage formel</a> et se veut exact dans sa grammaire et son vocabulaire, il n'y a pas de cas particuliers ni d'ambiguïtés possibles dans l'écriture. Les <strong>compilateurs</strong> sont ainsi construits autour d'une grammaire du langage qui est réduite au minimum par souci d'économie de mémoire, pour taire les ambiguïtés et accroître la productivité du développeur.</p>
<p><a href="" id="omelette"></a></p>
<p>Pour mieux comprendre, voici un exemple sous forme de <a href="https://fr.wikipedia.org/wiki/Pseudo-code">pseudo-code</a> utilisant une grammaire simple :</p>
<div class="language-text highlight"><pre><span></span><code><span id="__span-0-1"><a href="#__codelineno-0-1" id="__codelineno-0-1" name="__codelineno-0-1"></a>POUR CHAQUE œuf DANS le panier :
Expand Down Expand Up @@ -6360,7 +6360,7 @@ <h3 id="edition-de-liens-link">Édition de liens (<em>link</em>)<a class="header
<p><figure id="_figure-6"><img alt="Édition des liens de plusieurs objets" class="drawio-diagram" src="../../../assets/images/link.drawio"/><figcaption> Édition des liens de plusieurs objets</figcaption></figure></p>
<p><a href="" id="hello-world"></a></p>
<h2 id="hello-world_1">Hello World !<a class="headerlink" href="#hello-world_1" title="Lien permanent">¤</a></h2>
<p>Il est traditionnellement coutume depuis la publication en <span class="ycr-hashtag" data-index-entry="1978" data-tag="1978">1978</span> du livre <a href="https://en.wikipedia.org/wiki/The_C_Programming_Language">The C Programming Language</a> de reprendre l'exemple de <span class="ycr-hashtag" data-index-entry="Brian Kernighan" data-tag="brian-kernighan">Brian Kernighan</span> comme premier programme.</p>
<p>Il est traditionnellement coutume depuis la publication en <span class="ycr-hashtag" data-index-entry="1978" data-tag="1978">1978</span> du livre <a href="https://fr.wikipedia.org/wiki/C_(langage)">The C Programming Language</a> de reprendre l'exemple de <span class="ycr-hashtag" data-index-entry="Brian Kernighan" data-tag="brian-kernighan">Brian Kernighan</span> comme premier programme.</p>
<div class="language-c highlight"><span class="filename">hello.c</span><pre><span></span><code><span id="__span-3-1"><a href="#__codelineno-3-1" id="__codelineno-3-1" name="__codelineno-3-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;stdio.h&gt;</span>
</span><span id="__span-3-2"><a href="#__codelineno-3-2" id="__codelineno-3-2" name="__codelineno-3-2"></a>
</span><span id="__span-3-3"><a href="#__codelineno-3-3" id="__codelineno-3-3" name="__codelineno-3-3"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
Expand Down
6 changes: 3 additions & 3 deletions course-c/05-introduction/code-of-conduct/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5917,13 +5917,13 @@ <h2 id="apprendre-a-pecher">Apprendre à pêcher<a class="headerlink" href="#app
<p>La morale de cette histoire est plus que jamais applicable en programmation, confier aux expérimentés l'écriture d'algorithmes compliqués, ou se contenter d'observer les réponses des exercices pour se dire : j'ai compris ce n'est pas si compliqué, est une erreur, car pêcher ou expliquer comment pêcher n'est pas la même chose.</p>
<p>Aussi, cet ouvrage se veut être un guide pour apprendre à apprendre le développement logiciel et non un guide exhaustif du langage, car le standard <abbr title="Standard ISO/IEC 9899:1999">C99</abbr>/C11 est disponible sur internet ainsi que le <abbr title="Kernighan and Ritchie">K&amp;R</abbr> qui reste l'ouvrage de référence pour apprendre le C. Il est donc inutile de paraphraser les exemples donnés quand internet apporte toutes les réponses, pour tous les publics du profane réservé au hacker passionné.</p>
<h2 id="une-affaire-de-consensus">Une affaire de consensus<a class="headerlink" href="#une-affaire-de-consensus" title="Lien permanent">¤</a></h2>
<p>En informatique, tout comme dans la société, il existe des religieux, des prosélytes, des dogmatiques, des fanatiques, des contestataires et des maximalistes. Leurs querelles portent souvent sur les outils qu'ils utilisent ou sur des pratiques dont on ne doit pas dévier. Ils débattent parfois âprement des conventions de codage, de l'encodage des fichiers, du choix de la <a href="https://fr.wikipedia.org/wiki/Fin_de_ligne">fin de ligne</a>, de l'interdiction du <span class="ycr-hashtag" data-index-entry="goto" data-tag="goto"><code>goto</code></span>, ou encore du strict respect des règles <a href="https://en.wikipedia.org/wiki/MISRA_C">MISRA</a>.</p>
<p>En informatique, tout comme dans la société, il existe des religieux, des prosélytes, des dogmatiques, des fanatiques, des contestataires et des maximalistes. Leurs querelles portent souvent sur les outils qu'ils utilisent ou sur des pratiques dont on ne doit pas dévier. Ils débattent parfois âprement des conventions de codage, de l'encodage des fichiers, du choix de la <a href="https://fr.wikipedia.org/wiki/Fin_de_ligne">fin de ligne</a>, de l'interdiction du <span class="ycr-hashtag" data-index-entry="goto" data-tag="goto"><code>goto</code></span>, ou encore du strict respect des règles <a href="https://fr.wikipedia.org/wiki/MISRA_C">MISRA</a>.</p>
<p>Ces « guerres de croyances », qui perdurent parfois depuis des générations, se nourrissent d’un manque d’ouverture d’esprit et d’un attachement dogmatique à des habitudes. Cela s’explique souvent par le biais d’<a href="https://fr.wikipedia.org/wiki/Ancrage_(psychologie)">ancrage mental</a> qui s’installe dès l’école, là où l'on inculque parfois des certitudes figées.</p>
<p>L'enseignant se doit d'être sensible à ces questions et doit encourager l'impartialité, ainsi qu'un état d'esprit ouvert, guidé par le bon sens de l'ingénieur.</p>
<p>Un exemple célèbre est celui des <a href="https://fr.wikipedia.org/wiki/Guerre_d%27%C3%A9diteurs">guerres d'éditeurs</a> qui opposent, depuis les années 1970, les adeptes de <code>vi</code> aux fervents défenseurs d'<span class="ycr-hashtag" data-index-entry="emacs" data-tag="emacs"><code>emacs</code></span>. Ces deux éditeurs de texte, extrêmement puissants et complexes à maîtriser, polarisent les opinions de manière radicale. Ces guerres, entretenues à l'origine par un esprit de plaisanterie, ont progressivement pris une tournure émotionnelle qui dépasse parfois le simple cadre de l'outil.</p>
<p>S’enfermer dans une zone de confort renforce le biais du <a href="https://everlaab.com/marteau-de-maslow/">Marteau de Maslow</a>, car lorsqu'on est un marteau, on finit par voir tous les problèmes comme des clous. Ce confort devient alors un ennemi qui freine le regard critique et le pragmatisme, pourtant essentiels. Il faut accepter l’existence de diverses approches pour résoudre un problème donné, car le développement logiciel, plus que tout autre domaine technique, est une aventure collaborative qui ne devrait jamais être soumise à des emprises émotionnelles.</p>
<p>Un programme se doit d'être <strong>neutre</strong>, <strong>impartial</strong>, et <strong>minimaliste</strong>. L’essentiel n’est pas de s'attarder sur des questions esthétiques comme la position des accolades, l’utilisation d'espaces ou de tabulations, ou le choix d’un éditeur sur un autre.</p>
<p>La clé de la bonne attitude c'est d'être à l'écoute du consensus et de ne pas sombrer au <a href="https://en.wikipedia.org/wiki/Attentional_bias">biais d'attention</a>. Il faut non seulement être sensible au consensus local direct : son entreprise, son école, son équipe de travail, mais surtout au consensus planétaire dont l'accès ne peut se faire que par l'interaction directe avec la communauté de développeurs, soit par les forums de discussions (Reddit, stackoverflow), soit par le code lui-même. Vous avez un doute sur la bonne méthode pour écrire tel algorithme ou sur la façon dont votre programme devrait être structuré ? Plongez-vous dans le code des autres, multipliez vos expériences, observez les disparités et les oppositions, et apprenez à ne pas y être sensible.</p>
<p>La clé de la bonne attitude c'est d'être à l'écoute du consensus et de ne pas sombrer au <a href="https://fr.wikipedia.org/wiki/Biais_d%27attention">biais d'attention</a>. Il faut non seulement être sensible au consensus local direct : son entreprise, son école, son équipe de travail, mais surtout au consensus planétaire dont l'accès ne peut se faire que par l'interaction directe avec la communauté de développeurs, soit par les forums de discussions (Reddit, stackoverflow), soit par le code lui-même. Vous avez un doute sur la bonne méthode pour écrire tel algorithme ou sur la façon dont votre programme devrait être structuré ? Plongez-vous dans le code des autres, multipliez vos expériences, observez les disparités et les oppositions, et apprenez à ne pas y être sensible.</p>
<p>Vous verrez qu'au début, un programme ne vous semble lisible que s'il respecte vos habitudes, la taille de vos indentations préférées, la police de caractère qui vous sied le mieux, l'éditeur qui supporte les ligatures...</p>
<p>Par la suite, et à la relecture de cette section, vous apprendrez à faire fi de cette zone de confort qui vous était si cher et que l'important n'est plus la forme, mais le fond. Vous aurez comme <a href="https://fr.wikipedia.org/wiki/Neo_(Matrix)">Néo</a>, libéré votre esprit et serez capable de voir la matrice sans filtre ni biais.</p>
<p>En somme, restez ouvert aux autres points de vue, cherchez à adopter le consensus majoritaire qui dynamise au mieux votre équipe de développement, qui s'encadre le mieux dans votre stratégie de croissance et de collaboration et surtout, abreuvez-vous de code, faites-en des indigestions, rêvez-en la nuit. Vous tradez du Bitcoin, allez lire <a href="https://github.com/bitcoin/bitcoin">le code source</a>, vous aimez Linux, plongez-vous dans le code source du <a href="https://github.com/torvalds/linux">kernel</a>, certains collègues ou amis vous ont parlé de Git, allez voir ses <a href="https://github.com/git/git">entrailles</a>... Oui, tous ces projets sont écrits en C, n'est-ce pas merveilleux ?</p>
Expand Down Expand Up @@ -5995,7 +5995,7 @@ <h2 id="conclusion">Conclusion<a class="headerlink" href="#conclusion" title="Li
<span class="md-icon" title="Dernière mise à jour">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg>
</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">23 septembre 2024</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">24 septembre 2024</span>
</span>


Expand Down
2 changes: 1 addition & 1 deletion course-c/10-numeration/bases/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6143,7 +6143,7 @@ <h2 id="conversions-de-bases">Conversions de bases<a class="headerlink" href="#c
<p>La valeur du chiffre à la position <span class="arithmatex">\(i\)</span></p>
</dd>
</dl>
<p>Ainsi, la valeur <span class="ycr-hashtag" data-index-entry="AP7" data-tag="AP7"><code>AP7</code></span> exprimée en <span class="ycr-hashtag" data-index-entry="base tritrigesimale" data-tag="base-tritrigesimale">base tritrigesimale</span> (base 33) et utilisée pour représenter les plaques des véhicules à Hong Kong peut se convertir en décimales après avoir pris connaissance de la correspondance d'un symbole <a href="https://en.wikipedia.org/wiki/List_of_numeral_systems">tritrigesimal</a> vers le système décimal :</p>
<p>Ainsi, la valeur <span class="ycr-hashtag" data-index-entry="AP7" data-tag="AP7"><code>AP7</code></span> exprimée en <span class="ycr-hashtag" data-index-entry="base tritrigesimale" data-tag="base-tritrigesimale">base tritrigesimale</span> (base 33) et utilisée pour représenter les plaques des véhicules à Hong Kong peut se convertir en décimales après avoir pris connaissance de la correspondance d'un symbole tritrigesimal vers le système décimal :</p>
<div class="language-text highlight"><pre><span></span><code><span id="__span-11-1"><a href="#__codelineno-11-1" id="__codelineno-11-1" name="__codelineno-11-1"></a>Tritrigesimal -&gt; Décimal :
</span><span id="__span-11-2"><a href="#__codelineno-11-2" id="__codelineno-11-2" name="__codelineno-11-2"></a>
</span><span id="__span-11-3"><a href="#__codelineno-11-3" id="__codelineno-11-3" name="__codelineno-11-3"></a> 0 1 2 3 4 5 6 7 8 9 A B C D E F
Expand Down
Loading

0 comments on commit 0ea4f8e

Please sign in to comment.