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.
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 Christophe B. (site web personnel) . Évalué à 3. Dernière modification le 02 décembre 2019 à 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.
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 cspaier . Évalué à 5.
Bonjour,
La question est légitime et non brutale. En aucun cas agressive.
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.
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 Christophe B. (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 Ysabeau 🧶 (site web personnel, Mastodon) . É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).
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Même remarque que précédemment
Posté par benoar . Évalué à 5.
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 FDF (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 barmic 🦦 . É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.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Même remarque que précédemment
Posté par Christophe B. (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 …
Tu pourrais prévenir quand tu fais de la mauvaise foi … :)
La programmation c'est :
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 barmic 🦦 . Évalué à 2.
Pas des masses et c'est bien pour ça qu'apprendre le développement n'est pas si utile.
Parce que les étudiants du secondaires courent vers les formations en programmation ?
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.
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.
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,…).
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Même remarque que précédemment
Posté par Christophe B. (site web personnel) . Évalué à 2. Dernière modification le 03 décembre 2019 à 14:23.
On se demande pourquoi il y a tant d'offres d'emplois dans le numérique …
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.
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.
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.
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 barmic 🦦 . Évalué à 2. Dernière modification le 03 décembre 2019 à 14:45.
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 ?
On parle du secondaire, non ?
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).
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.
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).
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.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Même remarque que précédemment
Posté par Christophe B. (site web personnel) . Évalué à 2.
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.
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 barmic 🦦 . É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 :
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Même remarque que précédemment
Posté par Christophe B. (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 Tonton Th (Mastodon) . Évalué à 4.
Parce qu'une grande proportion des jobs sont des postes de merde et qu'il y a donc beaucoup de turnover ?
[^] # Re: Même remarque que précédemment
Posté par kantien . Évalué à 2. Dernière modification le 04 décembre 2019 à 16:40.
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 entierp ≥ n
tel quep
est premier; et comme l'exprime l'énoncé précédent, toute preuve de ce théorème est un algorithme qui prend un entiern
en entrée et renvoie un entierp
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 :
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.
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 Christophe B. (site web personnel) . Évalué à 3. Dernière modification le 07 décembre 2019 à 10:47.
Oui mais j'avais prévenu
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 … :)
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 … )
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 kantien . Évalué à 2.
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. ;-)
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. ;-)
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
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 Christophe B. (site web personnel) . Évalué à 2.
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 barmic 🦦 . Évalué à 2.
Et Guillaume Denry nous avait gratifié d'une blague qui m'avait fait pleurer de rire.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Même remarque que précédemment
Posté par Christophe B. (site web personnel) . Évalué à 2.
Je l'avais loupée … Merci beaucoup :)
[^] # Re: Même remarque que précédemment
Posté par kantien . Évalué à 3.
La lucidité est essentielle dans la vie, surtout dans ce cas.
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 :
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 :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 :
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 Christophe B. (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.
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.
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 kantien . É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 :
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-classespomme
etpoire
: 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.
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 Christophe B. (site web personnel) . Évalué à 2.
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 kantien . Évalué à 3.
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. ;-)
Certes, mais encore faut-il ne pas faire cela n'importe comment. ;-)
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.
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
, lesstring
, lesfloat
… comme dans :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 barmic 🦦 . Évalué à 1.
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 ;)
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Même remarque que précédemment
Posté par kantien . Évalué à 2. Dernière modification le 13 décembre 2019 à 00:08.
Ç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.
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 barmic 🦦 . Évalué à 1.
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) ?
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.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Même remarque que précédemment
Posté par Christophe B. (site web personnel) . Évalué à 3.
Non pire que ça !
Je pensais plus a ceci :
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 barmic 🦦 . É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).
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Même remarque que précédemment
Posté par Christophe B. (site web personnel) . Évalué à 2.
Donc on peut construire / re construire une algèbre …
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 ?
:)
[^] # Re: Même remarque que précédemment
Posté par kantien . Évalué à 2.
Ç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 »).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 :
Et ici ce que fais ma fonction
add
sur ma liste d'ingrédients, c'est la même chose que fait ma fonctionsucc
sur les entiers unaires.Pour répondre à ton autre commentaire :
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 Christophe B. (site web personnel) . Évalué à 2. Dernière modification le 14 décembre 2019 à 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 Christophe B. (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 barmic 🦦 . Évalué à 1.
Sans remettre en cause la véracité de ce que tu dis.
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.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Même remarque que précédemment
Posté par kantien . Évalué à 3.
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 barmic 🦦 . Évalué à 1.
On utilise des mots qui ont des sens différents selon leur contexte ?! Mais c'est incroyable !
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Même remarque que précédemment
Posté par kantien . É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.
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 barmic 🦦 . É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.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
# Numworks
Posté par jbbourgoin (site web personnel) . Évalué à 2. Dernière modification le 11 décembre 2019 à 23:48.
Belle initiative !
Ça donne envie de traduire quelques unes des bibliothèques dans le micropython de la Numworks !
[^] # Re: Numworks
Posté par cspaier . É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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.