Aller au contenu

Python, ma rage et mon désespoir.


azad2B

Messages recommandés

Membre, Le prendre au sérieux, nuit gravement à la santé, Posté(e)
azad2B Membre 5 932 messages
Le prendre au sérieux, nuit gravement à la santé,
Posté(e)

L' herpétologie est la Science qui s'intéresse à l' étude des reptiles. Ici, vous l' avez deviné, il va s'agir exclusivement de ce langage de programmation qui a de plus en plus d' adeptes et qui pratiqué aux Collèges et aux Lycées gagne du terrain tous les jours.

Un petit préambule avant de débuter. Sans remonter à la préhistoire partons des années 1975. A cette époque, naissait tous les jours ou presque une nouvelle machine sur lesquelles des milliers de passionnés se sont jeté. Commodore, Apple //, Orion, Thomson, Atari, Z80 et tant d'autres. A la même époque, les chercheurs, physiciens, chimistes, médeçins,  ingénieurs se sont intéressés à la programmation pour développer des choses qui ressemblaient à des modèles et qui leurs étaient utiles. Les langages qui pouvaient leur permettre de dialoguer avec un micro ordinateur, s' appelaient, assembleur, Algol, Cobol, Fortran, Pascal. A part le dernier cité Pascal qui était (et reste) une pure merveille par sa rigueur et la faculté qu'il a de pouvoir être lu comme dans un livre, les autres souffraient de bon nombre de défauts. Et puis sont apparus les Basics. Interprétés, d'abord, puis compilés ensuite, ils ont conquis le monde de ces amateurs de langages, faciles à apprendre, pas trop rigides, efficaces aussi, Ca a été la ruée. Et le temps passant, les Basics ont évolués, se sont ouverts à la POO, brefs ont acquis véritablement droit de cité. Bien sûr, les professionnels du développement sont passés aux C et C++ et il leur a fallut plusieurs années pour bien dominer ces bêtes et leurs ruades sévères. Donc le Basic régnait en maître chez les amateurs. Très vite, on s' est aperçu, que l'on pouvait l' agrémenter ce que l'on appelait des Plug-In qui enrichissaient leur potentiel d'instructions et de fonctions nouvelles orientées vers différentes branches de la Science, de la Finance ou des Statistiques. Et toujours il traînait derrière lui quelques critiques, lesquelles étaient, je crois parfaitement injustifiées. Ou plus précisément alimentées par le fait que ses utilisateurs étaient avant tout des gens pressés d'obtenir un résultat et qui généraient du code illisible pour tout autre qu' eux mêmes (et encore, pendant quelques seulement si le code manquait de commentaires). Je pense entre autre à ce fameux goto qui permettait un branchement instantané à un n° de ligne ou à un label ou étiquette et qui aujourd' hui encore soulève des discussions passionées, stériles et idiotes. (pour votre gouverne, sachez qu'aucun microprocesseur ne pourrait se passer d' instructions de branchement, ils ont non pas un goto, mais une bonne dizaines de disponibles selon le contexte.

Bref. Python est apparu. Doté immédiatement des possibilités de la POO, de quelques instructions élémentaires très simples, de nouveaux objets ( listes, dictionnaires, nupplets ) de quelques facilités d' écriture séduisantes et de quelques petits avantages. Et de choses horribles aussi et dont on aurait pu aisément se passer en usant de marqueurs comme l' accolade ouvrante ou fermante, le double point, la virgule, le point-virgule. On a préféré l'espace et la tabulation. Je pense là au rôle de l' indentation du code qui est une véritable ineptie. A noter que les objets que je viens de citer pouvaient parfaitement être écrits avec le seul Basic puisque ce dernier n'ignore rien des structures de données et des tableaux multi dimensionnels.

Avec Python, sont apparus également des milliers (je dis bien des milliers) de bibliothèques spécialisées, propres à satisfaire les chercheurs toujours disposés à pratiquer le développement d' applications pour leur travail personnel. En outre Python est gratuit, en le rendant universel ( capable de tourner sur les grands OS du jour) ses fondateurs ont trouvés là le moyen (et l'excuse) de ne pas en faire un langage compilé. Il est "interprété" ce qui signifie que n'importe quel plaisantin peut s'amuser avec le code du script et le rendre inutilisable.

Je signale aussi que mon langage de prédilection est le C que j'utilise avec un compilateur C++ sans pratiquement jamais toucher à la POO, le code procédural, issu du Pascal, me convenant parfaitement. Mais les temps changent, les ordinateurs aussi, et à moins de générer des utilitaires très techniques en mode "console", je doit reconnaître que créer une application "graphique" n'est pas toujours chose aisée sur un Mac ou un PC sans un vieux Basic ou un Python.

Bref, mon but est d'ouvrir un débat, pour ou contre le Python, inconditionnels, ou ennemis à vos claviers. J'ai hâte de vous lire pour m' éclairer un peu et peut-être m'inciter à plonger un peu plus dans ce langage qui pue le serpent.

 

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant
Membre, Explorateur de Nuages, 47ans Posté(e)
Pheldwyn Membre 25 236 messages
47ans‚ Explorateur de Nuages,
Posté(e)

Je crois que le Python n'a pas mal de succès depuis plusieurs années en effet. Et pourtant, comme tu l'as dit, il est loin d'être exempt de défauts. Loin d'être particulièrement performant qui plus est. Mais bien doté en librairies en effet. 

J'en ai très peu fait, mais c'est vrai que je pense avoir passé 90% du temps à maudire ces foutues tabulations 😅

Je ne me rappelle plus la syntaxe à part cela. Rien de sensationnel en fait, mais j'avais apprécié sa proximité avec le système sous Linux. 

 

J'avais préféré largement me mettre au C# à vrai dire (même si je trouve sa syntaxe pour les évènements contre-intuitive), la syntaxe est agréable, et il y'a quelques mois j'ai découvert rapidement Dart (et Flutter), et il va falloir que je m'y mette, car il avait pas mal de petits détails bien pensés.

Bon, ces temps-ci je me recentre sur le web, un peu de PHP/Laravel, je me suis remis à niveau sur JavaScript et les CSS (lol, après plusieurs années) et je me forme sur ReactJS, sympa.

 

Mais bon, ce n'était pas le web ta question.

Si je devais faire une appli avec une UI graphique ? Perso, vu que j'ai un peu d'expérience, je partirais sur le C# sous windows (j'ai pas creusé, mais ça doit se porter sur du Linux ou du mac, à condition de respecter certaines règles).

Pour du crossplatform, Flutter est peut-être l'avenir pour des applis de gestion simple, car il a l'avantage de ne sortir quasiment qu'un seul code. Mais il a je pense encore pas mal de limites.

Mais sinon C++ (mais j'aime pas 😅) ... Ou python... Et ses tabulations relous. Ou p''tet Java du coup 🤣

Lien à poster
Partager sur d’autres sites

Membre, Posté(e)
Jim69 Membre 21 859 messages
Maitre des forums‚
Posté(e)

J’aime que C/C++, pas fan de Python avec ses espaces pour marquer les blocks de codes, on se croirait revenu au COBOL et ses 8 espaces pour les cartes perforées.

Lien à poster
Partager sur d’autres sites

Membre, Le prendre au sérieux, nuit gravement à la santé, Posté(e)
azad2B Membre 5 932 messages
Le prendre au sérieux, nuit gravement à la santé,
Posté(e)

Vous me faites peur vous deux. Et je vous rejoint de tout coeur. Le problème est que si vous voulez faire une véritable application graphique, l' usage du  C (et du C++) implique une bonne connaissance de la ToolBox du système d' exploitation de votre ordinateur, et que ça n'est pas gagné d' avance. D'autant plus qu'une bonne partie de votre savoir risque fort de devenir inutile avec l' apparition de W11. Et idem pour les Linux qui évoluent sans cesse. Quand à MacOS, je l'ai définitivement banni de mes ordinateurs au vu de ce qu'est devenu Apple.

Espérons qu' un amoureux de Python viendra nous le vanter d'ici peu.

Je vais aller voir un peu ce que valent des Dart et Flutter, dont je n'ai pas encore entendu parler.

Merci, à vous deux.

Lien à poster
Partager sur d’autres sites

Membre, Explorateur de Nuages, 47ans Posté(e)
Pheldwyn Membre 25 236 messages
47ans‚ Explorateur de Nuages,
Posté(e)
Le 08/12/2021 à 14:45, azad2B a dit :

Je vais aller voir un peu ce que valent des Dart et Flutter, dont je n'ai pas encore entendu parler.

Bon, faut que je calme un peu mon enthousiasme et que je ne te vante pas trop une solution pour ce qu'elle n'est pas :laugh:

Au départ, Flutter c'est la réponse de Google (à React Native) pour faire des applis mobiles multiplateformes. En gros, le même code peut être compilé pour Android et iPhone. Et ils essaient de pousser le truc un peu plus en permettant également de générer des applis web (en transformant le tout en code javascript) et depuis quelques mois des applis desktop (pour windows et mac).
Mais comme je le disais, ça peut être une solution sympa pour une appli simple de gestion, mais ça ne sera sans doute pas adapté si tu as des besoins graphiques évolués (des graph, de la 3D, etc ...), ou pour être proche du système. Peut-être avec de nouvelles librairies à l'avenir.

Déjà C# est peut-être plus adapté, puisque tu peux t'appuyer sur beaucoup de librairies.

Ou Python, c'est peut-être aussi la clé de son succès, une certaine versatilité en offrant quelque chose de plus souple que le C.

Dans tous les cas, ce n'est pas mon fort les librairies graphiques, mais il me semble que tu en as qui sont multi-OS, aussi bien en C, C++, C# et Python (et Java ne l'oublions pas) ? Et que du coup, peu importe le passage de Windows 10 à Windows 11, tu gardes une appli malgré tout maintenable et un savoir-faire équivalent.


 

Lien à poster
Partager sur d’autres sites

Membre, Le prendre au sérieux, nuit gravement à la santé, Posté(e)
azad2B Membre 5 932 messages
Le prendre au sérieux, nuit gravement à la santé,
Posté(e)

Hello @Pheldwyn

Du temps que j'étais encore un fidèle de MacOS, j'utilisais "objectiveC" le compilateur de MacOS très propre et très dédié au Mac. Mais tu le sais sans doute de l' amour à la haine, il n'y a qu'un pas, que j'ai passé  en larguant définitivement  Apple et MacOS. Par contre, je reconnais les qualités matérielles de leurs produit et mes Mac sont tous passés entièrement sous Ubuntu. Et ils tournent très bien.

J'avais écris il y a longtemps une application en C, donc. Et graphique en plus puisque je venais de la bonne école ayant été employé aux Ulis chez ... Apple. Voilà.

Cette application était un testeur de circuits électroniques. Un truc de fou car ce n'était pas un émulateur mais un testeur. Et un testeur que j'avais voulu universel. je ne sais pas si tu as des connaissances en électronique, mais en tous cas il me semble qu'en informatique tu te débrouilles très bien. Alors tu vas comprendre de quoi je parle avec cet exemple.

Tu as sans doute une bonne idée de la façon dont fonctionne un microprocesseur. En gros il a 3 BUS principaux, un BUS adresse, un BUS Data et un BUS dit de contrôle. Selon sa puissance le Bus adresse est constitué d'un certain nombre de fils disons pour un vieux micro processeur un bonne vingtaine, le bus Data dans les vieux processeurs 8 bit avait... 8 fils. Et si l'on voulait tester 'à chaud' un programme qui tournait, on reliait une bonne trentaine de sondes à chacun des fils de ces bus à  un appareil nommé un analyseur logique, appareil qui connaissait les micro processeurs de son époque ainsi que le code hexadecimal de chacune de leurs instruction. Alors on choisissait le type du processeurs, sa fréquence d' horloge et on lançait l' analyse du programme, en faisant fonctionner le processeur en pas à pas. On voyait ainsi le programme tourner et on pouvait suivre par où, il passait et ce qu'il faisait. En prime, pour les vilains crakers, on pouvait en déduire le code source. C'était la belle époque !

Alors ce qui était possible pour un micro processeur devait à fortiori l' être pour un montage électronique. En beaucoup plus facile même. Et c'est ce que j'ai fait. L'appareil (une interface) fonctionne très bien, et  remisé dans un placard, il en sort quelque fois pour les pannes un peu ardues et aléatoires. Il est donc doté d'une quinzaine de sondes et je branche un certain nombre d' entre-elles à différents points du montage à étudier. Un port au format USB (ou fireWire ou série) est relié à un ordinateur et celui ci affiche les tensions prélevées aux endroits où sont placées les sondes. Et cela en temps réel via une conversion analogique/digitale. Rien que du classique donc.

J'ai des amis qui connaissant l'engin ont manifesté le désir d'en possédé un. Alors j'ai fait quelques test élémentaires avec des Arduino et des Raspberry et ce dernier a remporté la palme. C'est donc l'interface très simple en fait si l'on transfère le traitement de la mesure non plus à des modules électroniques réels, mais aux données des différentes fonctions d'un programme. cela sera un petit cadeau que je réserve à mes amis.

Mon problème est donc de passer ce programme en C vers un autre langage accepté par Raspberry (Python donc car je ne connais pas grand chose à l' OS de Raspberry), et pour qu'il soit agréable à utiliser, j'ai opté pour une GUI que je trouvais élégante. Ainsi pour chaque sonde on affiche la plage des tensions normales, et le programme déclenche une alarme si tension ou courant sort de la fenêtre qui lui est attribuée.

L'ennui : Près de 60 fonctions dans les modules à importer (environ 1000 lignes de code),  trois ou quatre fonctions dans le script principal, et une GUI qui prend elle aussi de la place, après passage à Python. D'où mon appel au secours. Un fada de Python pourrait peut-être me rendre le courage qui me manque.

 

 

 

Lien à poster
Partager sur d’autres sites

Membre, Explorateur de Nuages, 47ans Posté(e)
Pheldwyn Membre 25 236 messages
47ans‚ Explorateur de Nuages,
Posté(e)
Le 08/12/2021 à 18:29, azad2B a dit :

L'ennui : Près de 60 fonctions dans les modules à importer (environ 1000 lignes de code),  trois ou quatre fonctions dans le script principal, et une GUI qui prend elle aussi de la place, après passage à Python. D'où mon appel au secours. Un fada de Python pourrait peut-être me rendre le courage qui me manque.

Pas moyen de transformer ton code original en librairie ? Comme cela tu te focus uniquement sur l'interface, en C++ ou en python.

Lien à poster
Partager sur d’autres sites

Membre, Le prendre au sérieux, nuit gravement à la santé, Posté(e)
azad2B Membre 5 932 messages
Le prendre au sérieux, nuit gravement à la santé,
Posté(e)
Le 08/12/2021 à 22:06, Pheldwyn a dit :

Pas moyen de transformer ton code original en librairie ? Comme cela tu te focus uniquement sur l'interface, en C++ ou en python.

Hé bien à vrai dire, le code original à été écrit et compilé sur un Mac qui lui même n'était pas encore doté de MacOS 10,. IL ne tourne actuellement que sur un très vieux MacBook ( avec un G5 de Motorola avec MasOS 9) que j'ai conservé par respect pour son age canonique et pour les quelques utilitaires (et jeux) qu'il possède. Increvable. Et tu sais quoi ? La version Python que j'en ai faite tourne aujourd'hui plus vite en Python que la version en C compilée il y a 20 ans. Et c'est pourquoi, j'ai pensé à des amoureux de Python qui pourraient  m' aider à adapter le code plus proprement que je ne l' ai fait.

Quand je pense que j'ai, et en parfait état de fonctionnement un vieil Apple //e avec un merveilleux 6502.

Et puis, il est prévu de le faire tourner sur un Raspberry. Un ARM !

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×