Journal Présentation des librairies pydiderotlibs dédiées à l'enseignement de python

Posté par  . Licence CC By‑SA.
Étiquettes :
17
1
déc.
2019

Présentation

Bonjour à tous,

Mon premier journal pour présenter un projet créé par des profs de math de Marseille: Pydiderotlibs

L'objectif est de créer des librairies dédiées à l'enseignement de python au lycée.

La démarche générale est de cacher les difficultés techniques en présentant des fonctions simples.

Le travail, sous licence MIT, a lieu sur ce dépôt github, on héberge la documentation sur readthedocs et le projet est sur pypi pour être installé facilement via pip.

Exemple 1: Un traceur de courbe

Pédagogiquement, amener les élèves à construire un traceur de courbe est relève un certain intérêt:
- repérage dans le plan
- le sens d'une courbe représentative de fonction
- boucles en python

On a une librairie repere qui permet de faire ca facilement:

from pydiderotlibs.repere import fenetre, point

x = -10
x_max = 10
pas = 0.01

fenetre()

while x < x_max:
    y = x*x
    point(x,y)
    x = x + pas

On obtient une fenêtre graphique tkinter qui contient un repère "interactif".
On peut zoomer, se déplacer dans le repère.

Titre de l'image

Exemple 2: Ca bouge!

Un projet plus ambitieux est le codage d'un jeu de type pong.

On a une librairie graphique qui est une surcouche à pygame facilitant la création d’objets et l'écoute des évènements.

Voici par exemple un cercle qui suit la souris et qu'on peut aussi déplacer au clavier avec les touches haut et bas.

from pydiderotlibs.graphique import fenetre, efface, cercle, ecoute_evenements
from time import sleep

fenetre()

x = 10
y = 10

while 1:
    efface()
    evenements = ecoute_evenements()
    if "haut" in evenements:
        y = y + 1
    if "bas" in evenements:
        y = y - 1
    if "souris" in evenements:
        x, y = evenements["souris"][0], evenements["souris"][1]
    cercle(x, y)
    sleep(0.001)

Conclusion

J'ai présenté deux exemples mais on a d'autres librairies à découvrir.

On essaye de fournir une documentation de qualité et on invite les élèves à travailler avec elle car c'est une bonne pratique. L'import d'une librairie affiche un message:

Merci d'utiliser la librairie repere du module pydiderot.

N'hésitez pas à consulter la documentation en ligne:

https://pydiderotlibs.rtfd.io/librairies/repere.html

C'est un travail collaboratif et toute aide, remarques, critiques sont les bienvenues.

  • # Même remarque que précédemment

    Posté par  (site Web personnel) . Évalué à 3. Dernière modification le 02/12/19 à 10:10.

    Bonjour,
    Même remarque que pour ce journal

    L'initiative est louable, et je salue les efforts et la passion de certains enseignants qui maintiennent à bout de bras l'éducation nationale.

    Mais bon du point de vue de l'ado : python == math donc pour certain …

    Quel est le but ?

    Apprendre les maths avec python ou apprendre python avec les maths ?

    PS : c'est une vraie question peut être brutale mais pas agressive …

    • [^] # Re: Même remarque que précédemment

      Posté par  . Évalué à 5.

      Bonjour,

      La question est légitime et non brutale. En aucun cas agressive.

      Quel est le but ?

      Bon il y a un côté pragmatique qui ne répond pas à ta question mais motive les outils présentés. De toute façon, c'est au programme et aux épreuves du bac. Donc, il faut l'enseigner.

      En l'état actuel, on a pas vraiment d'outils adaptés à ce qu'on nous demande d'enseigner. Donc on les construit.

      Maintenant, personnellement, je ne trouve pas absurde d'enseigner l'algorithmique au lycée en cours de mathématiques pour plusieurs raisons.

      1) Ça peut aider à la compréhension de concepts mathématiques. Voici deux exemples:

      • L'exemple mentionné dans le journal: Le traceur de courbes.
        La notion de courbe représentative de fonction est un concept pas évident et fondamental. Coder un traceur de courbe est un moyen ludique de le travailler.

      • La notion de suite. Cette année, pour introduire les suites, on a commencé par répondre à un problème d'évolution discrète grâce à python. Les élèves ont ainsi saisi la problématique de récurrence tout en répondant à un problème posé: Pour connaître la situation au rang n, il faut calculer tous les rangs précédents. Sans machine, ça reste abstrait. Avec les machines, on peut calculer tous les rangs facilement.

      2) C'est intéressant en soi:

      • Les élèves utilisent tous des machines informatiques au quotidien. Ils sont en général assez intéressés à comprendre leur fonctionnement: qu'est-ce que la mémoire, un processeur, les entrées-sorties, une variable, …

      • Pour beaucoup, ça sera utile aux poursuites d'études. Les élèves des (ex) filières S et STI2D seront probablement amenés à coder un peu dans leur vie.

      • C'est franchement marrant. Le plaisir de coder une balle qui rebondi sur un écran, de comprendre qu'on peut demander ce qu'on veut à la machine et qu'elle le fait.

      Apprendre les maths avec python ou apprendre python avec les maths ?

      Les deux:

      • apprendre python avec les maths: Coder va mobiliser des notions mathématiques (repérage dans le plan par exemple).

      • apprendre les maths avec python: On peut utiliser python pour travailler sûr et même introduire des concepts mathématiques.

      • [^] # Re: Même remarque que précédemment

        Posté par  (site Web personnel) . Évalué à 5.

        Merci pour ta réponse,
        Comme je l'ai souvent dis c'est rassurant de voir des enseignants motivés par leur travail.

        Mais je trouve dommage que l'informatique, le codage et tout ce qui va avec n'est pas franchement considéré comme un matière.

        On a l'impression que c'est le début d'une nouvelle aventure et que faute de moyens et de temps vous (le corps enseignant) en êtes réduit à vous débrouillez tout seul. ( comme d'habitude j'ai l'impression … )

        C'est le genre de discussion que l'on aurait du avoir il y a 20 ans … pas en 2019

        Vu l'importance de l'outil informatique actuellement, ce qui n'est pas franchement une nouveauté, cela devrait être une matière aussi importante que les autres, peut être même avant le lycée au collège.

        • [^] # Re: Même remarque que précédemment

          Posté par  (site Web personnel) . Évalué à 4.

          Et on devrait apprendre à utiliser un clavier aussi ainsi qu'un outil d'écriture, mais pas en mode machine à écrire.

          Y'a du boulot.

          Quand je pense que j'ai connu des Américains, très diplômés et experts reconnus dans leur spécialité, qui avaient appris la dactylo normalement à un moment de leurs études pour pouvoir écrire leurs textes avec une machine à écrire alors qu'en France, j'ai parfois l'impression que cette matière est frappée du sceau de l’infamie (c'est pourtant le truc le plus utile que j'ai jamais appris au cours de mes études supérieures en carrières de l'information).

          OS préféré Mageia 7, CMS préféré SPIP, suite bureautique préférée LibreOffice, logiciel de dessin préféré Inkscape.

          • [^] # Re: Même remarque que précédemment

            Posté par  . Évalué à 5.

            j'ai parfois l'impression que cette matière est frappée du sceau de l’infamie

            Effectivement, j'ai quelques vagues souvenirs d'avoir commencé à apprendre à taper en dactylo au collège, mais je suis un vieux (on avait encore quelques machines à disquette 5,25", pour donner une idée) ; en tous cas, on avait des exercices de saisie de texte. Depuis, je pense qu'il n'y a plus rien, mais je serais content qu'on me contredise.

            Vu que cette année est celle de la normalisation du Bépo, pourrait-on en profiter pour remettre au goût du jour l'apprentissage de la dactylographie ? Avoir un outil qui ne vient pas vous emmerder et est une extension de vos mains change complètement le rapport qu'on a à la machine. C'est tellement la base que c'est d'une tristesse absolue qu'on veuille apprendre des choses plus avancées en informatique à des gens qui ont un handicap pour taper (oui, devoir regarder son clavier est un handicap ; même si vous ne pensez pas le faire, faites vérifier par un tiers : j'ai toujours vu ceux qui ne tapent pas en dactylo regarder leur clavier au moins une fois toutes les 30 secondes, sans s'en rendre compte).

            • [^] # Re: Même remarque que précédemment

              Posté par  (site Web personnel) . Évalué à -1.

              On pourrait avoir le même genre de commentaire sur les WORDs et autre LibO.
              C'est des outils utiles, mais principalement pour ceux qui n'apprennent pas les nouveaux concepts. Pourtant, ce qui aurait du être des outils de transition entre la machine a écrire et les programmes de gestion de texte restent dominant. Qu'elle ironie.

        • [^] # Re: Même remarque que précédemment

          Posté par  . Évalué à 5.

          Je suis pas du tout d'accord. Oui l'informatique est important, mais non la programmation ne l'est pas. L'un n'implique pas l'autre.

          Être à l'aise avec les nouvelle technologies ne demandent en aucun à en comprendre les rouages bas niveau. Savoir conduire ne demande pas à savoir usiner une soupape.

          La programmation c'est 80 à 90% de mathématiques, donc c'est logique de lier les 2. Regarde ce que sont les fac d'info par exemple.

          AMHA ce qui est nécessaire c'est de maîtriser l'outil (l'ordinateur et les réseaux), de comprendre ce qu'il fait, à quoi il sert et les implications que cela peut avoir. Mais ça ne demande pas à maîtriser python, TCP et des portes logiques.

          • [^] # Re: Même remarque que précédemment

            Posté par  (site Web personnel) . Évalué à 3.

            Attention mauvaise foi :)

            Tu prends 100 gamins au lycée :

            Combien finirons informaticien / developpeur / chef de projet etc …
            Combien finirons … on peut faire quoi avec des maths … profs ? ou faire encore plus d'étude ?

            (j'avais prévenu pour la mauvaise foi)

            Avec ce genre de raisonnement vous remplissez les écoles privées et les organismes de formations externes

            La maitrise d'un traitement de texte, d'un tableur devrait être une matière à part entière
            Et je ne parle pas de l'importance d'un truc comme internet et les réseaux sociaux

            En tout cas c'est plus utile que d'apprendre la flute en cours de musique …

            La programmation c'est 80 à 90% de mathématiques

            Tu pourrais prévenir quand tu fais de la mauvaise foi … :)

            La programmation c'est :

            • de la logique mais il y en a de partout comme en philo par exemple
            • du bon sens … beaucoup de bon sens …
            • une certaine capacité d'abstraction, comme chez les poêtes par exemple

            mais pas autant de mathématique que cela …

            D'ailleurs le bon sens devrait être une matière obligatoire ….

            Tu peu être un excellent codeur et être nul en math
            Comme un musicien n'est pas obligé de connaître les notes, les gammes et le solfège
            Beaucoup de dessinateur se contre foutent des canons grecs et de certaines bases

            • [^] # Re: Même remarque que précédemment

              Posté par  . Évalué à 2.

              Combien finirons informaticien / developpeur / chef de projet etc …
              Combien finirons … on peut faire quoi avec des maths … profs ? ou faire encore plus d'étude ?

              Pas des masses et c'est bien pour ça qu'apprendre le développement n'est pas si utile.

              Avec ce genre de raisonnement vous remplissez les écoles privées et les organismes de formations externes

              Parce que les étudiants du secondaires courent vers les formations en programmation ?

              La maitrise d'un traitement de texte, d'un tableur devrait être une matière à part entière
              Et je ne parle pas de l'importance d'un truc comme internet et les réseaux sociaux

              On s'en fout d'un traitement de texte. Pour moi c'est exactement comme dire qu'on a besoin de savoir écrire avec un stylo plume. Ça peut être utile, mais ce n'est qu'une composante de l'utilisation générale de l'informatique.

              La programmation c'est :

              • de la logique mais il y en a de partout comme en philo par exemple
              • du bon sens … beaucoup de bon sens …
              • une certaine capacité d'abstraction, comme chez les poêtes par exemple

              C'est une formalisation de tout cela et la seule discipline qui formalise cela c'est les mathématiques. Tu peux très bien ne pas vouloir le voir sous un angle mathématiques tout comme tu peux faire des opérations mathématiques tous les jours sans le voir sous un angles mathématiques.

              Tu peu être un excellent codeur et être nul en math

              Non. Si tu es un excellent codeur tu es bon dans au moins une partie des mathématiques. Être bon en mathématiques ce n'est pas forcément avoir de bonnes notes en maths (parce qu'il y a différentes parties en mathématiques, parce que voir les choses sous l'angle informatique est peut être plus parlante pour toi,…).

              • [^] # Re: Même remarque que précédemment

                Posté par  (site Web personnel) . Évalué à 2. Dernière modification le 03/12/19 à 14:23.

                Pas des masses et c'est bien pour ça qu'apprendre le développement n'est pas si utile.

                On se demande pourquoi il y a tant d'offres d'emplois dans le numérique …

                Parce que les étudiants du secondaires courent vers les formations en programmation ?

                Apres le bac et avoir planté 1 ou 2 années a glander en fac … quand il voudront rentrer dans la vraie vie et gagner de l'argent

                ceci dit ya pas que l'info dans la vie : le BTP, la restauration, les aides à domiciles etc … mais bon c'est plus fatiguant et moins rémunérateur.

                On s'en fout d'un traitement de texte. Pour moi c'est exactement comme dire qu'on a besoin de savoir écrire avec un stylo plume. Ça peut être utile, mais ce n'est qu'une composante de l'utilisation générale de l'informatique.

                toi aussi préviens quand c'est de la mauvaise foi :)

                C'est sur, un traitement de texte ça sert à rien … la fonction première des PCs c'est pour jouer au solitaire ou au démineur :)
                Tu sais j'ai bien connu l'époque ou les factures / bons de livraisons etc … la majorité des documents se faisait à la main au stylo plume ou à la machine à écrire, au siécle dernier, c'est marrant mais cela a quasiment disparu depuis quelques années.

                Tu peux très bien ne pas vouloir le voir sous un angle mathématiques tout comme tu peux faire des opérations mathématiques tous les jours sans le voir sous un angles mathématiques.

                Tout peu se ramener à des mathématiques, la n'est pas le problème. Mais c'est valable aussi pour la physique, la biologie, la chimie, l'histoire, la géographie, la philo et même l'informatique surtout de nos jours.

                C'est plus la manière d'aborder les choses qui fait peur, par exemple si tu fais un cours sur le langage SQL tu peu dessiner des patates et parler des inclusions, unions et autres plaisanteries mathématiques.

                Mais tu peu aussi dire qu'avec SQL tu peu extraire d'un fichier de contacts :
                - la liste des jeunes femmes celibataires agés de 18 à 28 ans
                - la liste des jeunes hommes célibataires agés de 18 à 28 ans
                (rayer la/les mentions inutiles)

                Cela n'aura pas le même impact sur l'assistance, et la finalité est la même.

                Non. Si tu es un excellent codeur tu es bon dans au moins une partie des mathématiques. Être bon en mathématiques ce n'est pas forcément avoir de bonnes notes en maths (parce qu'il y a différentes parties en mathématiques, parce que voir les choses sous l'angle informatique est peut être plus parlante pour toi,…).

                Au moins sur ce point on est d'accord.
                Les maths et l'informatique partagent des choses, personne ne dis le contraire.

                Et c'est pour cela que je trouve dommage d'aborder l'informatique uniquement au travers des mathématiques.
                Ceci dit c'est déjà ça.

                • [^] # Re: Même remarque que précédemment

                  Posté par  . Évalué à 2. Dernière modification le 03/12/19 à 14:45.

                  On se demande pourquoi il y a tant d'offres d'emplois dans le numérique …

                  Tu as des chiffres qui donneraient un taux de classes d'ages qui travaillent dans le domaine ? Parce que des pénuries on en a dans pleins de domaines (la médecine, pas mal de branches d'artisanat,…) qui rémunèrent plus et/ou demandent moins d'études est-ce que ça dit que tout le monde se ruent sur la plomberie ?

                  Apres le bac et avoir planté 1 ou 2 années a glander en fac … quand il voudront rentrer dans la vraie vie et gagner de l'argent

                  On parle du secondaire, non ?

                  C'est sur, un traitement de texte ça sert à rien … la fonction première des PCs c'est pour jouer au solitaire ou au démineur :)
                  Tu sais j'ai bien connu l'époque ou les factures / bons de livraisons etc … la majorité des documents se faisait à la main au stylo plume ou à la machine à écrire, au siécle dernier, c'est marrant mais cela a quasiment disparu depuis quelques années.

                  Et la proportion de traitement de texte pour ses usages tend à se réduire au profit du mail, de génération plus ou moins automatisée, etc. Lis bien ce que j'ai écris : je n'ai pas dis que c'était inutile, mais qu'il ne fallait pas se focaliser dessus. Les mails sont largement plus importants par exemple (et non rédiger ses mails dans un traitement de texte pour les copier/coller ou les envoyer en pièce jointe n'est pas une bonne idée).

                  Tout peu se ramener à des mathématiques, la n'est pas le problème. Mais c'est valable aussi pour la physique, la biologie, la chimie, l'histoire, la géographie, la philo et même l'informatique surtout de nos jours.

                  Les mathématiques peuvent décrire beaucoup de choses, mais ce n'est pas ce qu'il se passe pour l'informatique. L'informatique ce sont des applications des mathématiques. Tu peut vouloir ne pas faire peur en taisant cette parentalité, ça ne la supprimera pas pour autant. Mentir aux gens pour qu'ils se retrouvent au pied du mur à la moindre difficulté ça n'est pas les aider. Tu répète souvent à raison ton mantra « fréquence et volume » (c'est bien ça ?), cette question là vient d'un raisonnement mathématiques. Même si tu ne l'a peut être découvert qu'expérimentalement.

                  Cela n'aura pas le même impact sur l'assistance, et la finalité est la même.

                  On peut tout à fait avoir une approche bottom-up. Mais faire l'impasse sur les notions mathématiques ça créent des gens qui ne sont pas en mesure d'appliquer ton propre mantra. Ils vont devoir se péter les dents, plutôt que de réfléchir aux volumes qu'ils manipulent (et donc devoir faire des opération ensemblistes - à minima - pour pouvoir évaluer ce qu'ils sont entrain de faire).

                  Et c'est pour cela que je trouve dommage d'aborder l'informatique uniquement au travers des mathématiques.

                  Tu me donne l'impression d'avoir un raisonnement qui me semble très problématique : « l'enseignement des mathématiques repoussent des étudiants, donc ils ne faut pas associer l'informatique aux maths pour ne pas faire peur à ma fille ». Alors que c'est très contre-nature d'une part et d'autre part on peut envisager les choses autrement et imaginer que l'informatique peut donner des angles d'enseignements différents et bien plus concrets aux mathématiques.

                  • [^] # Re: Même remarque que précédemment

                    Posté par  (site Web personnel) . Évalué à 2.

                    Tu me donne l'impression d'avoir un raisonnement qui me semble très problématique : « l'enseignement des mathématiques repoussent des étudiants, donc ils ne faut pas associer l'informatique aux maths pour ne pas faire peur à ma fille ».

                    Pas tout a fait, même si c'est dommage que ma fille n'ait pas apprécié je prefere la voir faire ce qu'elle a envie.

                    En fait Je crains que l'informatique vu avec le prisme des maths ne fasse fuir certains, même si cela en attire d'autres.

                    C'est une évidence qu'à un moment ou à un autre il faudra aborder la chose mathématiquement parlant, mais si d'abord tu présentes une bête balle qui rebondit, cela amenera un intérêt plus large qu'une sinusoïdale ou une recherche dichotomique.

                    Tu répète souvent à raison ton mantra « fréquence et volume » (c'est bien ça ?), cette question là vient d'un raisonnement mathématiques. Même si tu ne l'a peut être découvert qu'expérimentalement.

                    Oui, comme je le dis souvent on devrait finir un diplome de codeur avec ces 2 mots tatoués sur les avant bras.

                    L'acquisition de l'expérience est à mon avis plus important que la connaissance brute. Je suis surpris que l'on utilise pas certain jeu (vidéo ou non ) pour expérimenter certaines choses.

                    par exemple :

                    MULE est un jeu sympa pour comprendre les lois du marchés, les situations de monopole

                    Civilization rien de mieux pour comprendre l'histoire et la géopolitique

                    Ils ne sont certainement pas adapté à une utilisation en classe, mais le principe de ces jeux permet de démontrer et d'expérimenter certains principes.

                    L'informatique peut être quelque chose de "fun", c'est un formidable outil pour aborder beaucoup de domaine et je trouve dommage de le restreindre aux mathématiques.

                    Bon je reconnais que l'enseignement c'est pas ma partie, et le peu de formations que j'ai donnée m'ont juste démontrer que c'est loin d'être facile et qu'il ne suffit pas de maîtriser son sujet.

                    • [^] # Re: Même remarque que précédemment

                      Posté par  . Évalué à 2.

                      Maintenant tu parle encore d'autre chose. Le cours dont il est question c'est l'étude de la programmation informatique. Qu'il y ai autre chose à faire faire je suis tout à fait d'accord. Je vais essayer d'être plus clair :

                      • je pense que l'étude de la programmation n'est pas quelque chose de particulièrement importante. L'utilisation et les enjeux de l'informatique le sont bien plus.
                      • l'étude de la programmation est particulièrement liée aux mathématiques
                      • l'utilisation d'outil informatique pour enseigner tout et n'importe quoi peu évidement être une bonne chose, mais ça n'a pas de rapport. J'avais déjà des prof qui s'en servaient dans le secondaire (j'ai eu mon bac en 2006)
                      • [^] # Re: Même remarque que précédemment

                        Posté par  (site Web personnel) . Évalué à 2.

                        Merci de clarifier tout cela, on voit que tu as l'habitude … :)

                        Je comprends la logique de ton point vue (pour un matheux c'est la moindre des choses)
                        mais je trouve dommage

                        que l'apprentissage de la programmation soit moins important que certaines autres matières (dessin musique … )
                        que pour l'instant cet apprentissage soit uniquement lié aux mathématiques (même si c'est particulièrement lié)

                        Et surtout que l'on en discute en 2019 … 20 ans trop tard

                • [^] # Re: Même remarque que précédemment

                  Posté par  (site Web personnel) . Évalué à 4.

                  On se demande pourquoi il y a tant d'offres d'emplois dans le numérique …

                  Parce qu'une grande proportion des jobs sont des postes de merde et qu'il y a donc beaucoup de turnover ?

                  * Ils vendront Usenet^W les boites noires quand on aura fini de les remplir.

            • [^] # Re: Même remarque que précédemment

              Posté par  . Évalué à 2. Dernière modification le 04/12/19 à 16:40.

              Tu pourrais prévenir quand tu fais de la mauvaise foi … :)

              La programmation c'est :

              de la logique mais il y en a de partout comme en philo par exemple
              du bon sens … beaucoup de bon sens …
              une certaine capacité d'abstraction, comme chez les poêtes par exemple
              

              mais pas autant de mathématique que cela …

              Là c'est toi qui est de mauvaise foi. D'une manière générale j'ai du mal à comprendre ton insistance à vouloir dissocier la programmation et les mathématiques. Comme t'a répondu JeanClaude, la science qui formalise tout cela c'est les mathématiques, et le résultat qui constate cela c'est la correspondance de Curry-Howard : un programme est la preuve d'un théorème dont l'énoncé est sa spécification.

              L'exemple assez trivial et usuel pour illustrer cela est le théorème énonçant qu'il existe une infinité de nombres premiers. On peut le formuler ainsi : pour tout entier n, il existe un entier p ≥ n tel que p est premier; et comme l'exprime l'énoncé précédent, toute preuve de ce théorème est un algorithme qui prend un entier n en entrée et renvoie un entier p en sortie qui est premier et plus grand que l'entrée.

              La différence entre la programmation et la pratique usuelle des mathématiques est que les mathématiciens s'intéressent peu au contenu algorithmique de leurs preuves, contrairement aux programmeurs.

              Toutes les structures de données (liste, arbres, graphes…) sont des concepts qui relèvent entièrement de la science mathématique, et d'aucune autre. Par exemple, les listes chaînées (qui pourrait être le type de retour d'une requête SQL pour avoir la liste des femmes ou hommes célibataires de 18 à 28 ans ;-) c'est, à peu de chose près, la représentation unaire des entiers naturels.

              J'ai surtout l'impression que tu as une vision réductrice de ce que sont les mathématiques, et ce n'est pas réduire la programmation que de l'identifier aux mathématiques, mais réduire les mathématiques dans leur contenu que de nier cette identité. Quand tu parles de sinusoïdales ou de recherche dichotomique, cela ne concerne qu'une infime partie de ce que traite et contient la mathématique. Pour comparer à la géographie, c'est un peu comme si tu me disais que la surface du globe se réduit à l'Ile de France, mais que l'Andalousie ou la pampa argentine étaient des régions inexistantes.

              On pourra plutôt envisager les choses dans l'autre sens, comme le suggérait JeanClaude :

              on peut envisager les choses autrement et imaginer que l'informatique peut donner des angles d'enseignements différents et bien plus concrets aux mathématiques.

              Soit dit en passant, tu te contredis quelque peu au fil des commentaires. Les patatoïdes ce n'est pas des plaisanteries mathématiques, mais de la logique : cela sert à représenter, de manière sensible, les différents rapports entre l'extension de plusieurs concepts, rapports qui relèvent de la logique formelle. Or la logique est la première des composantes de la programmation, d'après ta liste, mais il ne faudrait pas en parler dans les cours ? C'est un peu étrange comme approche de l'enseignement. ;-)

              Pour finir, tu as sous-entendu que la philosophie pouvait se ramener aux mathématiques, sauf que c'est absolument faux.

              il est nécessaire d'enlever encore en quelque sorte sa dernière ancre à une espérance fantastique, et de montrer que l'application de la mathématique dans cette sorte de connaissance ne peut procurer le moindre avantage, si ce n'est peut être de lui découvrir plus clairement ses propres faiblesses; que la géométrie et la philosophie sont deux choses tout à fait différentes bien qu'elles se donnent la main dans la science de la nature, et que par conséquent le procédés de l'une ne peuvent être imités par l'autre.

              La solidité des mathématiques repose sur des définitions, des axiomes et des démonstrations. Je me contenterai de montrer qu'aucun des ces éléments ne peut être ni fourni ni imité par la philosophie dans le sens où les mathématiciens le prend; que le géomètre, en suivant sa méthode, ne construirait, dans la philosophie, que des châteaux de cartes; que le philosophe, en suivant la sienne dans le domaine de la mathématique, ne pourrait faire naître que du verbiage; encore que la philosophie tienne son rôle dans cette science, rôle qui est d'en connaître les limites, et que le mathématicien lui-même, quand son talent n'est pas déjà limité par la nature et restreint à sa partie, ne puisse pas rejeter les avertissements de la philosophie, ni encore se mettre au-dessus d'eux.

              Kant, Critique de la raison pure.

              Ce qui distingue, entre autre, la mathématique et la philosophie, est que la philosophie est la connaissance rationnelle par concepts là où la mathématique est la connaissance rationnelle par la construction des concepts. Or, construire un concept, c'est présenter a priori l'intuition qui lui correspond; c'est-à-dire présenter, dans nos deux formes de l'intuition sensible que sont l'espace et le temps, un objet qui correspond à notre concept. Autrement dit, la notion de type en informatique est un synonyme de celui de concept mathématique, c'est-à-dire de concept dont les objets sont construits a priori dans l'espace et dans le temps (les deux notions centrales de la complexité algorithmique).

              Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

              • [^] # Re: Même remarque que précédemment

                Posté par  (site Web personnel) . Évalué à 3. Dernière modification le 07/12/19 à 10:47.

                Là c'est toi qui est de mauvaise foi.

                Oui mais j'avais prévenu

                D'une manière générale j'ai du mal à comprendre ton insistance à vouloir dissocier la programmation et les mathématiques.

                Je ne cherche pas à dissocier les 2 , pour faire une plante il faut de l'eau et de la terre, on ne peut les dissocier.

                N'est il pas plus intéressant de parler des fruits et de la plante AVANT de parler de la germination et des réactions chimiques qui vont avec, cela pourra se faire plus tard.

                Et parler d'informatique en commençant par des mathématiques n'est, pour moi, pas une bonne technique

                il ne s'agit que d'un avis personnel, et je reconnais ne pas être compétent en matière d'enseignement.

                attention dredi / mauvaise foi …

                Evoquer des listes chainées en parlant de célibataires hommes et femmes de 18 à 28 ans … faut oser … :)

                c'est, à peu de chose près, la représentation unaire des entiers naturels.

                Et c'est la que je m'aperçois que l'on ne doit pas imaginer les mêmes choses … :)

                Fin du attention dredi / mauvaise foi …

                Si j'ai compris : kant dit intelligement ce que Rabelais disait plus simplement :

                "Science sans conscience n'est ruine de l'âme"

                (je reconnais avoir fait appel a mon ami internet sur ce coup la, j'ai consommé un joker … )

                Ce qui distingue, entre autre, la mathématique et la philosophie, est que la philosophie est la connaissance rationnelle par concepts là où la mathématique est la connaissance rationnelle par la construction des concepts.

                Je suis d'accord avec toi, il m'a fallu relire plusieurs fois pour bien tout assimiler, mais tu as appellé ton ami Kant et moi j'invoque Steve Jobs ( le premier qui parle de bataille de pokemon sort …)

                Steve jobs imaginait un produit, et en avait une vision très précise … les ingénieurs lui répétaient que cela n'était pas possible, que cela n'était pas réalisable.

                Lui répondait que ce n'était pas parce que personne ne l'avait fait, que cela n'était pas possible
                Et qu'il ne s'agissait pas de son problème mais du leur, et il arrivait à les emmener vers sa vision des choses.

                A tel point que son entourage proche parlait de distorsion de la réalité.

                La puissance de l'esprit est beaucoup plus spectaculaire et flamboyante dans un sens, mais sans les fondations, les bases solides et la rationnalité des mathématiques (et d'autres sciences) l'esprit n'est qu'un colosse au pied d'argile.

                Sur ce point nous sommes d'accord, mais commencer par le coté lumineux et flamboyant, à mon avis, permet d'aborder plus facilement le coté moins lumineux et flamboyant (ce n'est pas péjoratif).

                L'équilibre n'est possible qu'avec 2 extrèmités, et en appuyant trop d'un coté on crée un déséquilibre.

                • [^] # Re: Même remarque que précédemment

                  Posté par  . Évalué à 2.

                  Evoquer des listes chainées en parlant de célibataires hommes et femmes de 18 à 28 ans … faut oser … :)

                  c'est, à peu de chose près, la représentation unaire des entiers naturels.

                  Et c'est la que je m'aperçois que l'on ne doit pas imaginer les mêmes choses … :)

                  J'ai écrit cela pour pointer du doigt la relation entre programmation et mathématique. Il ne faut pas oublier que l'objectif de l'option NSI est d'initier les élèves à la programmation, et que l'étude des structure de données (dont les listes chaînées) est au programme de terminale.

                  Ceci étant, j'ai déjà croisé des personnes pour qui une liste de femmes était un entier unaire : on appelait cela des queutards. ;-)

                  let vision_du_queutard (l : femme list) = List.map ignore l

                  Autrement dit, un queutard fait totalement abstraction des femmes sur la liste, mais ne voit en chacune d'elle qu'une croix de plus sur son tableau de chasse : il transforme la liste de femmes en une liste de croix, c'est-à-dire un entier unaire. ;-)

                  Si j'ai compris : kant dit intelligement ce que Rabelais disait plus simplement :

                  "Science sans conscience n'est ruine de l'âme"

                  Non, pas vraiment, il dit juste ici que la philosophie et la mathématique sont deux matières fondamentalement distinctes et que quiconque utilisera la méthode mathématique (définition, axiome et démonstration) en philosophie ne construira que des châteaux de cartes. Ce qui n'est pas le cas en programmation : une API est une axiomatique, programmer contre une interface générique cela revient à faire usage d'axiomes — comme en mathématique.

                  Après, je ne dis pas qu'il ne faut aborder la programmation que sous l'angle des mathématiques, ni ne pas montrer la plante et le fruit, mais qu'éluder la partie mathématique de la programmation n'est pas une chose à faire.

                  Il ne faut pas perdre de vue que l'objectif de l'option NSI au lycée est, avant tout, non de former un futur Steve Jobs, mais d'initier à l'informatique et à la programmation celles et ceux qui seront peut être un jour ses ingénieurs.

                  Ceci étant, je trouve les mathématiques bien plus lumineuse et flamboyante que tout ce qui a jamais pu sortir de la tête d'un Steve Jobs; mais j'ai bien conscience d'avoir une vision ultra-minoritaire au sein de la population. :-P

                  Les mathématiques ont un triple but. Elles doivent fournir un instrument pour l’étude de la nature.

                  Mais ce n’est pas tout : elles ont un but philosophique et, j’ose le dire, un but esthétique. Elles doivent aider le philosophe à approfondir les notions de nombre, d’espace, de temps.

                  Et surtout leurs adeptes y trouvent des jouissances analogues à celles que donnent la peinture et la musique. Ils admirent la délicate harmonie des nombres et des formes ; ils s’émerveillent quand une découverte nouvelle leur ouvre une perspective inattendue ; et la joie qu’ils éprouvent ainsi n’a-t-elle pas le caractère esthétique, bien que les sens n’y prennent aucune part ? Peu de privilégiés sont appelés à la goûter pleinement, cela est vrai, mais n’est-ce pas ce qui arrive pour les arts les plus nobles ?

                  Henri Poincaré, La valeur de la science

                  Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                  • [^] # Re: Même remarque que précédemment

                    Posté par  (site Web personnel) . Évalué à 2.

                    Ceci étant, je trouve les mathématiques bien plus lumineuse et flamboyante que tout ce qui a jamais pu sortir de la tête d'un Steve Jobs; mais j'ai bien conscience d'avoir une vision ultra-minoritaire au sein de la population. :-P

                    J'allais te le dire, mais tu m'enlèves les mots de mon clavier … :)
                    C'est bien d'être lucide :)

                    En tout cas je te remercie pour tes citations qui m'ont bien plus, apparemment il n'y a pas que les mathématiques qui t'intéresse.

                    Je suis en parti d'accord avec toi pour les mathématiques, enfin celle que je peu percevoir à mon niveau. Et il y a tellement de choses à découvrir.

                    Quand à Steve jobs, même si j'ai beaucoup de respect pour lui, son décès avait défrayé la chronique alors que quasiment en même temps Dennis Ritchie nous quittait.

                    Heureusement le chroniqueur Numérique de France Infos avait rappelé ce qu'il nous a légué. mais il aurait mérité beaucoup plus.

                    • [^] # Re: Même remarque que précédemment

                      Posté par  . Évalué à 2.

                      Heureusement le chroniqueur Numérique de France Infos avait rappelé ce qu'il nous a légué. mais il aurait mérité beaucoup plus.

                      Et Guillaume Denry nous avait gratifié d'une blague qui m'avait fait pleurer de rire.

                    • [^] # Re: Même remarque que précédemment

                      Posté par  . Évalué à 3.

                      J'allais te le dire, mais tu m'enlèves les mots de mon clavier … :)
                      C'est bien d'être lucide :)

                      La lucidité est essentielle dans la vie, surtout dans ce cas.

                      En tout cas je te remercie pour tes citations qui m'ont bien plus, apparemment il n'y a pas que les mathématiques qui t'intéresse.

                      Mes centres d'intérêt, en science, se concentrent essentiellement autour de la mathématique, de la logique formelle et de la philosophie (de tradition kantienne). D'ailleurs pour rester sur le thème du journal et de la fomation NSI, j'ai pu voir que le programme de terminal traite du paradigme de la POO. Le logicien en moi espère une seule chose : que ce sera l'occasion de faire disparaître, une bonne fois pour toute, de la tête de la future génération de programmeurs une des plus grosses inepties logiques qu'il m'ait été donné de voir. Je veux dire celle qu'illustre, par exemple, cet article de wikipédia sur les mixins :

                      Contrairement à une classe, un mixin n'est pas destiné à être utilisé seul.

                      Sémantiquement, il n'y a pas de relation « est une sorte de » entre une instance et un mixin.

                      Non, non et non!!!! les classes sont la pire chose au monde pour représenter cette relation sémantique. C'est la notion de type qui fait cela ! Et cela devient pire lorsque l'on dit que les canards sont des animaux, donc la classe canard doit hériter de la classe animale. Ce que l'on a, en réalité, ce sont deux concepts (ou types) « canard » et « animal » dont l'un est le sous-type de l'autre (l'un se nomme le genre, ici animal, et l'autre l'espèce, ici canard). Le verbe est, que les logiciens nomment dans ce cas copule, correspond au : dans le code que j'ai écrit plus haut :

                      let vision_du_queutard (l : femme list) = List.map ignore list

                      L'expression l : femme list se lit « l est une liste de femmes », et les sous classes ne sont pas toujours des sous-types : Subtyping, Subclassing, and Trouble with OOP. Le problème qui arrive dans le cas de l'article est un non respect du principe de substitution de Liskov. Bien que ce principe tire son nom d'un article datant du début des années 1990, il est en réalité connu depuis bien plus longtemps que cela. Ce principe n'est rien d'autre que le dictum de omni et nullo des logiciens qui a reçu cette dénomination latine au moyen âge, et il était déjà connu d'Aristote.

                      Cela fait donc des années que les adeptes de la POO professent et propagent une ineptie logique qui est connue, comme telle, depuis l'antiquité : il serait peut être temps d'y mettre un terme. ;-)

                      Pour finir une citation qui revient sur le lien programmation-mathématique :

                      On est accoutumé à nommer beauté les propriétés évoquées des figures géométriques aussi bien que des nombres […] C'est bien plutôt une démonstration de telles propriétés que l'on serait en droit de nommer belle, parce que, par son intermédiaire, l'entendement comme pouvoir des concepts et l'imagination comme pouvoir de leur présentation a priori se sentent renforcés (ce qui, combiné avec la précision que donne la raison, se nomme l'élégance de la démonstration); car, en tout ceci, du moins la satisfaction, bien que le fondement s'en trouve dans des concepts, est-elle subjective, tandis que la perfection implique une satisfaction objective.

                      Kant, Critique de la faculté de juger.

                      Les programmes étant des démonstrations, tout programmeur verra dans ce texte une référence aux sentiments qu'il a pu resentir devant un beau code.  ;-)

                      Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                      • [^] # Re: Même remarque que précédemment

                        Posté par  (site Web personnel) . Évalué à 2.

                        Tout d'abord le terme mixin ne m'a jamais dérangé, et après quelques recherches, c'est, à mon avis, plus un nouveau mot qu'une réelle avancé technologique.(un peu comme cloud == hébergement)
                        Par contre, si une définition est fausse ou aberrante il faut la corriger.

                        J'ai essayé de comprendre ce que tu voulais dire avec le "est une sorte de", je ne sais si j'ai tout assimilé comme il faut mais j'ai l'impression que :

                        parfois les grands principes se heurtent à la réalité du terrain

                        Il faut des personnes capables de comprendrent et de diffuser des grands principes, sinon c'est le chaos et l'anarchie la n'est pas le problème.
                        Mais parfois sur le terrain, dans la vraie vie, les grands principes ne sont pas toujours applicables stricto senso. Et entre le blanc et le noir il existe de nombreuses nuances de gris …

                        Un bon exemple est l'évolution des mentalités concernant les formes normales en bases de données relationnelles, qui est d'ailleurs bien documentée dans cet article de wikipédia ( https://fr.wikipedia.org/wiki/Forme_normale_(bases_de_donn%C3%A9es_relationnelles) ).
                        je me souviens des puristes qui se moquaient de la structure des données de notre ERP, et que j'attendait après la mise en exploitation quand de notre coté on gérait des centaines de connexions avec des temps de réponses acceptables et une consommation de ressources "normales".
                        Alors que de leur coté ils arrivaient à quelques dizaines de connexions et des temps de traitements médiocres et surtout des besoins en ressources informatiques difficile à absorber.

                        Pour être honnête, en 30 ans, je ne suis tombé que sur 1 seul cas ou l'on pouvait effectivement et réellement comparer les 2 cas :
                        D'un coté le respect de la forme normale et l'évitement à tout prix de la redondance pour limiter les entrées/sorties.
                        Du notre ou le principe de redondance des informations permettait justement d'améliorer bon nombre de traitement lourd.
                        Ou pour simplifier : c'est idiot d'écrire et de tenir a jour des informations identiques dans plusieurs tables (exemple un code client dans les commandes, factures et les lignes qui vont avec) mais cela permettait dans beaucoup de traitement de retrouver facilement les informations dans l'ordre voulu au final.

                        Les principes de bases sont comme un cap, une direction à tenir, mais si il y un iceberg, une tempête … il faut savoir louvoyer et s'adapter à la situation.

                        Cela fait donc des années que les adeptes de la POO professent et propagent une ineptie logique qui est connue, comme telle, depuis l'antiquité : il serait peut être temps d'y mettre un terme. ;-)

                        Inscrit toi sur Wikipédia et propose une modification, en plus on dirait que tu maîtrises le sujet.
                        ceci dit … c'est peut être une galère car cela peut être discuté pendant des années.

                        Les programmes étant des démonstrations, tout programmeur verra dans ce texte une référence aux sentiments qu'il a pu resentir devant un beau code.  ;-)

                        Exact, ce texte à une profondeur difficile à appréhender à la première lecture.
                        je ne connaissais Kant que de nom, mais maintenant j'aurais envie d'en savoir plus …

                        Et pendant que j'y suis, ce n'est pas une attaque frontale mais plutôt l'envie d'avoir une autre vision des choses, plus mathématique qu'informatique …

                        En POO, notamment avec Python, je peu surcharger les operateurs et dénaturer complétement les fondements de l'arithmétique en ré définissant l'addition la soustraction et tout les opérateurs si je le souhaite.

                        Existe t il un principe mathématique derrière cela ?

                        Petite touche d'humour : vous avez 4h :)

                        • [^] # Re: Même remarque que précédemment

                          Posté par  . Évalué à 4.

                          Je crois qu'il y a un malentendu : je n'ai pas de problème particulier avec les mixins, ni avec wikipédia (pas au point d'aller corriger ce qui s'y trouve). Mon problème vient de la manière dont sont présentés les principes de la POO tant dans les livres que dans l'enseignement : on y soutient des choses logiquement fausse (que l'on retrouve ensuite sur wikipédia).

                          Au lieu de prendre un exemple sur wikipédia, j'aurais pu prendre cette discussion sur linuxfr avec le commentaire final de Tonton Th :

                          C'est quoi le sous-entendu sur les devs Ada ?

                          C'est que si tu ne fais pas gaffe dès la première minute, tu vas au marché, tu achètes cinq pommes et deux poires, ben quand tu es rentrée chez toi, tu ne sais pas combien de fruits tu as :)

                          D'autant qu'Ada gère très bien le sous-typage et les problèmes de covariance-contravariance qui y sont associés (en logique, ces notions se ramènent à la distinction entre une raison suffisante et une raison nécessaire).

                          Ce que je reproche à la POO, c'est de prétendre que pour modéliser ce genre de situation, on va avoir une classe fruit qui aura deux sous-classes pomme et poire : sauf que ce n'est pas du tout cela la relation sémantique entre ces concepts. La relation qu'il y a entre eux est une relation de sous-typage et non de sous-classe. C'est cette relation d'héritage entre classe à laquelle faisait allusion mon extrait de wikipédia : les pommes sont une sorte de fruits. Or quand on dit que les pommes sont une sorte de fruits, on affirme que le type pomme est un sous-type (et non une sous-classe) du type fruit. De la même manière que les femmes sont une sorte d'être humains, ou que les femmes entre 18 et 28 ans sont une sorte de femmes. Et c'est là que l'on revient sur l'intérêt d'étudier les patatoïdes, ou les principes de bases de la logique formelle. ;-)

                          En gros, la POO mélange allègrement la notion de concepts et de théories sur un concept donné : elle met tout cela dans un gros sac fourre-tout qu'elle appelle classe. Ainsi, comme exemple d'aberration, si l'on ajoute un résultat à une théorie (mais sans changer le moins du monde le concept dont elle parle), c'est-à-dire si l'on rajoute une méthode à une classe donnée, on obtient une autres famille d'objets (une autre classe). Ce qui revient tout bonnement à dire que Archimède ne parlait pas des même cercles qu'Euclide, sous ce très pernicieux prétexte qu'il avait consigné d'autres résultats sur eux que lui. Tout personne normalement constituée trouverait cela inepte, et c'est pourtant ce que l'on dit en permanence quand on fait de la POO.

                          En POO, notamment avec Python, je peu surcharger les operateurs et dénaturer complétement les fondements de l'arithmétique en ré définissant l'addition la soustraction et tout les opérateurs si je le souhaite.

                          Existe t il un principe mathématique derrière cela ?

                          Je ne suis pas sûr de comprendre la question, mais je dirais que cela s'appelle l'art de refuser de se soumettre à de fortes contraintes (principalement en Python) afin de pouvoir écrire à peu près tout et n'importe quoi, mais surtout n'importe quoi. :-P

                          Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                          • [^] # Re: Même remarque que précédemment

                            Posté par  (site Web personnel) . Évalué à 2.

                            Je ne suis pas sûr de comprendre la question, mais je dirais que cela s'appelle l'art de refuser de se soumettre à de fortes contraintes (principalement en Python) afin de pouvoir écrire à peu près tout et n'importe quoi, mais surtout n'importe quoi. :-P

                            C'est peut être mathématiquement n'importe quoi, mais cela a une existence informatique.
                            les règles sont aussi faites pour être transgresser, c'est un peu comme cela que l'on avance :)

                            • [^] # Re: Même remarque que précédemment

                              Posté par  . Évalué à 3.

                              C'est peut être mathématiquement n'importe quoi, mais cela a une existence informatique.

                              Je ne dis pas le contraire, mais il y a plein de choses qui existent en informatique mais qui ne devrait pas. Je rêve, par exemple, d'un monde où les bugs dans les logiciels ne serait pas la norme mais l'exception; même d'un monde où les bugs n'existent plus (et je ne suis pas le seul). Un bug ça veut dire un programme qui correspond à une preuve fausse : c'est mal d'écrire des preuves erronées. ;-)

                              les règles sont aussi faites pour être transgresser, c'est un peu comme cela que l'on avance :)

                              Certes, mais encore faut-il ne pas faire cela n'importe comment. ;-)

                              >>> x = 1
                              >>> def f(y) : return x + y
                              ... 
                              >>> f(0)
                              1
                              >>> x = "foo"
                              >>> f(0)
                              Traceback (most recent call last):
                                File "<stdin>", line 1, in <module>
                                File "<stdin>", line 1, in f
                              TypeError: Can't convert 'int' object to str implicitly
                              >>>

                              et là, j'ai ri. :-D
                              C'est juste une adaptation en python de l'exemple donné dans ce cours en LISP de la fin des années 50. Ça a vite était corrigé, et cette gestion de la portée des variables est considérée comme une erreur depuis les années 60. ;-)

                              Ceci étant j'ai essayé de redéfinir l'addition sur les entiers, mais ce n'est pas permis.

                              >>> int.__add__ = lambda x:x
                              Traceback (most recent call last):
                                File "<stdin>", line 1, in <module>
                              TypeError: can't set attributes of built-in/extension type 'int'

                              Donc au final, je ne vois pas de quoi tu voulais parler. Si c'est du polymorphisme ad-hoc, c'est-à-dire, surchargé un opérateur pour qu'il soit définit aussi sur les int, les string, les float… comme dans :

                              >>> 1 + 2
                              3
                              >>> 1.5 + 3.4
                              4.9
                              >>> "foo" + "bar"
                              'foobar'

                              alors oui cela correspond à des principes de base des mathématiques, c'est même le degré zéro de l'algèbre moderne. J'en ai parlé ici.

                              Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                              • [^] # Re: Même remarque que précédemment

                                Posté par  . Évalué à 1.

                                Je ne dis pas le contraire, mais il y a plein de choses qui existent en informatique mais qui ne devrait pas. Je rêve, par exemple, d'un monde où les bugs dans les logiciels ne serait pas la norme mais l'exception; même d'un monde où les bugs n'existent plus (et je ne suis pas le seul). Un bug ça veut dire un programme qui correspond à une preuve fausse : c'est mal d'écrire des preuves erronées. ;-)

                                Tu choisi de redéfinir un bug, c'est bien et ça sert ta logique mais c'est loin d'être l'unique façon de créer des bugs. Tu as des choses qui ne sont pas forcément capturées dans ta preuve, tu as des bug d'intégration, tu a des bug qui apparaissent dans des couches autres du service que tu rend,… Tu présente une gestion de la portée que tu considère comme une erreur, ce n'est portant pas un bug. Ça fait parti de la définition de python et une preuve de l'interpréteur python devra garantir que cette erreur existe. Une preuve peut prouver un bug ;)

                                • [^] # Re: Même remarque que précédemment

                                  Posté par  . Évalué à 2. Dernière modification le 13/12/19 à 00:08.

                                  tu as des bug d'intégration, tu a des bug qui apparaissent dans des couches autres du service que tu rend,…

                                  Ça ne change pas le problème : il faut voir la preuve comme la totalité des couches et composants qui composent le service. Peu importe dans quel composant se trouve le bug, ou que celui résulte d'une mauvaise interaction des composants : c'est une erreur dans l'ensemble que constitue la « preuve ». C'est ainsi qu'il faut analyser un système à travers le prisme de la correspondance de Curry-Howard. Quand je parle de preuve ici, ce n'est pas d'une preuve que le système fait ce qu'on attend de lui. C'est le système lui-même que j'identifie à une preuve, et c'est celle-ci qui est erronée s'il y a un bug.

                                  Tu présente une gestion de la portée que tu considère comme une erreur, ce n'est pourtant pas un bug.Ça fait parti de la définition de python et une preuve de l'interpréteur python devra garantir que cette erreur existe.

                                  Non ce n'est pas un bug, ça fait parti de la définition de python, c'est juste un choix quelque peu saugrenu pour un langage qui a commencé au début des années 90.

                                  Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                                  • [^] # Re: Même remarque que précédemment

                                    Posté par  . Évalué à 1.

                                    Ça ne change pas le problème

                                    C'est bien, c'est vrai mais ça n'existe donc pas. Et c'est un concept qui n'est pas particulière utile. Le coût des logiciels dans ton monde idéal rendrait cette industrie pique inexistante. Combien es tu prêt à payer en plus pour chacun des logiciels installés sur ta machine (du noyau aux navigateur voir jusqu'au sites webs que tu utilise) ?

                                    Non ce n'est pas un bug

                                    Une partie non négligeable des problèmes que peut rencontrer un utilisateur quand il manipule un logiciel vient de problème de compréhension entre le développeur et le besoin. La preuve c'est bien, mais ça n'abolira ce que les gens appellent des bugs.

                              • [^] # Re: Même remarque que précédemment

                                Posté par  (site Web personnel) . Évalué à 3.

                                Non pire que ça !

                                Je pensais plus a ceci :

                                class plat_cuisine(object):
                                    def __init__(self):
                                        self.ingredients = []
                                        self.nom = ""
                                
                                    def __add__(self, other):
                                        self.ingredients.append(other)
                                        return self
                                
                                    def __repr__(self):
                                        return "%s %s" % (self.nom, self.ingredients)
                                
                                if __name__ == "__main__":
                                    Soupe=plat_cuisine()
                                    Soupe.nom = "Soupe de "
                                    Soupe += "patate"          ## utilisation de l'operateur + pour simplifier la syntaxe
                                    Soupe += "potiron"         ## il y a d'autres manières de faire bien sur ...
                                
                                    print(Soupe)

                                Cela me donne comme résultat : Soupe de ['patate', 'potiron']

                                Mathématiquement c'est peut être une horreur, mais en cuisine cela se pratique couramment … :)

                                remarque : c'est juste pour discuter et avoir un avis mathématique sur la surchage et le détournement d'opérateur.

                                • [^] # Re: Même remarque que précédemment

                                  Posté par  . Évalué à 1.

                                  Si je ne me trompe pas il s'agit simplement de construire une algèbre, je ne vois pas de problème à cela. Conceptuellement il n'y a pas grande différence entre redéfinir un opérateur pour faire une action ou utiliser une méthode (et c'est parfaitement identique d'un point de vu technique en python).

                                • [^] # Re: Même remarque que précédemment

                                  Posté par  . Évalué à 2.

                                  Mathématiquement c'est peut être une horreur, mais en cuisine cela se pratique couramment … :)

                                  Ça n'a rien d'une horreur mathématique, et ne dit on pas couramment « ajouter un ingrédient à la liste ». Comme te l'a dit JeanClaude : tu définis juste une algèbre sur les recettes de cuisine. Il est où le problème ? D'autant que ton exemple est mal choisi pour « détourner » l'arithmétique : c'est de l'arithmétique ton opérateur. Comme je l'ai dit plus haut : d'un certain point de vue les listes c'est des entiers unaires, et là tu as défini l'opération successeur (ou « ajouter 1 »).

                                  module Arithmetique = struct
                                    type nat = unit list
                                    let zero = []
                                    let succ l = () :: l
                                  end

                                  Voilà : un entier unaire c'est juste une liste de bâtons, zéro c'est la liste vide et la fonction qui calcule le successeur consiste à ajouter un élément dans la liste (c'est à dire ta surcharge de la fonction add).

                                  Toi ce que tu as écris c'est cela :

                                  module Recette = struct
                                    type t = {
                                      ingredients : string list;
                                      nom : string ;
                                    }
                                  
                                    let new () = {ingredients = []; nom = ""}
                                  
                                    let changer_nom nom recette = {recette with nom = nom}
                                    let add ing recette = {
                                      recette with
                                      ingredients = ing :: ingredients
                                    }
                                  
                                  let _ = Recette.(
                                   new ()
                                   |> changer_nom "Soupe de"
                                   |> add "patate"
                                   |> add "potiron"
                                  )

                                  Et ici ce que fais ma fonction add sur ma liste d'ingrédients, c'est la même chose que fait ma fonction succ sur les entiers unaires.

                                  Pour répondre à ton autre commentaire :

                                  Les mathématiques s'arrêteraient elles donc ou l'informatique commence :)

                                  ou l'informatique aurait elle une plus grande portée que les mathématiques ?

                                  :)

                                  Non, comme je le dis depuis le début : c'est la même chose. C'est juste une extension et une généralisation des travaux de Descartes quand il a algébrisé la géométrie mais, entre Descartes et nous, il s'est passé près de 400 ans. ;-)

                                  Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                                  • [^] # Re: Même remarque que précédemment

                                    Posté par  (site Web personnel) . Évalué à 2. Dernière modification le 14/12/19 à 19:17.

                                    T'es vraiment trop fort pour moi …

                                    Après Kant maintenant il faudrait que je lise Descartes en plus …

                                    Mais c'est limite de la triche, tu as fait appel à 2 fois à 1 ami

                                    Question : le langage que tu cites c'est du Ocaml ?

                              • [^] # Re: Même remarque que précédemment

                                Posté par  (site Web personnel) . Évalué à 2.

                                J'ai relu au calme et ai compris ton explication …
                                merci beaucoup :)

                          • [^] # Re: Même remarque que précédemment

                            Posté par  . Évalué à 1.

                            Sans remettre en cause la véracité de ce que tu dis.

                            Tout personne normalement constituée trouverait cela inepte, et c'est pourtant ce que l'on dit en permanence quand on fait de la POO.

                            Un programme n'est pas une simulation de l'univers. Il n'a a aucun moment l'objectif d'être une représentation de la réalité, mais une modélisation de la réalité et oui il y a des raccourcis qui sont pris, des simplifications, des inexactitudes,… C'est l'objectif.

                            Dans une grande quantité de cas tu n'a pas besoin d'une sémantique sophistiquée et il est donc bien plus intéressant d'avoir un langage et un programme qui manipulent des sémantiques triviales plutôt que de perdre beaucoup de monde sur l'autel de la pureté sémantique.

                            • [^] # Re: Même remarque que précédemment

                              Posté par  . Évalué à 3.

                              il est donc bien plus intéressant d'avoir un langage et un programme qui manipulent des sémantiques triviales plutôt que de perdre beaucoup de monde sur l'autel de la pureté sémantique.

                              Le problème n'est pas de savoir si la sémantique est triviale ou pure, ou je ne sais quoi; mais que la sémantique affichée en langue naturelle (confusion entre sous-classe et sous-type) ne correspond pas du tout à la sémantique réelle des langages en question. Lorsque l'on dit à quelqu'un qu'une pomme est un fruit, il comprend sans difficulté et cela à un sens très clair pour lui. Par contre quand on lui dit que pour cela il faut faire une classe pomme qui hérite d'une classe fruit : on lui ment ! car alors on traduit sa pensée dans une autre langue sans aucun respect pour la sémantique de sa proposition (la phrase traduite n'a plus le même sens) : traduttore, traditore.

                              Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                              • [^] # Re: Même remarque que précédemment

                                Posté par  . Évalué à 1.

                                On utilise des mots qui ont des sens différents selon leur contexte ?! Mais c'est incroyable !

                                • [^] # Re: Même remarque que précédemment

                                  Posté par  . Évalué à 2.

                                  Je ne vois pas le rapport qu'il y a entre la question traitée et la polysémie des langages1. De même qu'elle n'a rien à voir avec le fait que toute modélisation est une vision partielle et simplifiée de la réalité. Il s'agit de sémantique des langages et du fait que la relation « est une sorte de » n'a rien à voir avec la notion de classe et d'héritage, contrairement à ce qui est couramment présenté. Un canard, même simplifié, modélisé, tout ce que tu veux, n'a jamais été et ne sera jamais une instance d'une classe canard qui hériterait d'une classe animal. C'est ce que j'avais expliqué en détail dans ce commentaire d'une dépêche.


                                  1. le polymorphisme ad-hoc constitue une forme de polysémie dans les langages de programmation, mais c'est une autre question. 

                                  Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                                  • [^] # Re: Même remarque que précédemment

                                    Posté par  . Évalué à 1.

                                    Et un paquet de langages ont choisi d'amalgamer la notion de type et de classe. Et le monde ne s'est pas arrêté, l'informatique s'est énormément développé, on construit des systèmes absolument incroyables pour aller dans l'espace, faire des opérations à distance ou permettre à chacun de faire une visio avec ses proches éloignés. Comme quoi ça ne crée pas de cataclysmes.

                                    Effectivement tu me diras que l'on l'informatique est le domaine d'ingénierie de la plus piètre qualité et tu aurais raison. Mais la solution n'est pas technique. Ce qui donne cette faible qualité c'est la manière dont on s'en accommode (développeurs, utilisateurs et tout autre porteur d'intérêt). C'est en ayant des démarches de qualité plus importantes que l'on peut améliorer la qualité. La preuve n'est qu'une des façons de faire l'un des étapes de ce genre de démarche. Le système de type en lui même s'il peut aider à construire une preuve, il peut très bien être détourner et ne plus garantir grand chose de pertinent (ne jamais sous estimer les énormités que certains peuvent faire).

                                    Enfin je te rejoins sur le fait que pour certains problèmes de qualité précis, il existe des solutions techniques qui de facto corrigent ce problème et devrait donc être utilisés. Je pense en particulier aux buffer overflow.

  • # Numworks

    Posté par  (site Web personnel) . Évalué à 2. Dernière modification le 11/12/19 à 23:48.

    Belle initiative !

    Ça donne envie de traduire quelques unes des bibliothèques dans le micropython de la Numworks !

    • [^] # Re: Numworks

      Posté par  . Évalué à 0.

      Merci pour l'appréciation.

      C'est une idée intéressante. Hésite pas à proposer sur github.

      Par contre, J'ai toujours trouvé que faire coder des gens sur une machine ne disposant pas d'interface clavier/souris était à la limite du sadisme. Juste mon opinion la dessus.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.