Les questions de Philippe m'en soulèvent d'autres.
Python = effet de mode ?
Dans le domaine des microcontrôleurs quel avantage a un langage interprété par rapport à un langage compilé.
. Un langage interprété s'exécute plus lentement.
. Avec un langage interprété il faut charger un interpréteur en mémoire => perte de place disponible pour le programme (ce n'est peut-être plus un défaut avec les micros modernes).
le principe des dépots python, pour moi, n'est pas clair. Soit on prend dans les dépôts de la distribution, soit il y a un autre "réseau". Peut-on utiliser les deux "réseaux" sans risquer les conflits ou les doublons ?
et puis tout simplement : quel python ? Le 1, 2 ,3, 4, 5 ?
Mais il y en a d'autres plus générales.
Quand j'ai commencé la programation, j'ai lu tout azimut.
Je me souviens avoir lu que le C/C++ l'avait emporté sur le Pascal parce que le C était plus permissif que le rigide Pascal.
Et maintenant je lis que Rust , fortement typé, dit-on, concurence de plus en plus C/C++ parce que plus sécurisé.
Je pense avoir compris que python est aussi plus sécurisé que le C/C++.
Avec l'expérience, revient-on en arrière ?
Je sais qu'il n'y a que les imbéciles qui ne changent pas d'avis, mais de là à être trop intelligent il y a un curseur que je ne sais pas positionner.
Vaste question. En résumé je dirais que chacun fera le choix selon ses besoins ou selon ses affinités.
J'utilise python régulièrement au boulot sur un PC ou une raspberry, même pour du traitement de son en temps réel ou des logiciels d'intelligence artificielle. Sur un microcontrôleur, je choisirai entre C et python selon que j'ai besoin de vitesse ou non.
Un exemple récent : j'ai voulu tester micropython sur un ESP32 équipé d'un écran tactile au format QVGA (je crois). J'ai dû réécrire le driver du tactile car le seul que j'ai trouvé n'était pas bon, de mon point de vue.
Passé cette difficulté, j'ai testé divers codes sans problème particulier.
Mais lorsque j'ai programmé l'affichage de fractales, j'ai vu que la vitesse n'était pas satisfaisante. Une minute pour calculer et afficher une image 240*320 c'est rédhibitoire.
Donc pour cette application je reviendrai au C.
Sinon python est souple, plus succinct dans sa syntaxe, dispose d'une large communauté et n'a pas besoin de compilation donc on peut le tester immédiatement après l'avoir écrit.
Les élèves un peu partout dans le monde apprennent Python comme langage de programmation ce qui doit être un frein à l'usage d'Arduino qui force les profs et les élèves à apprendre un nouveau langage, syntaxe etc...
même si MicroPython se fonde sur Python3, c'est quand même largement incomplet. Je préfère donc conserver python pour mon Mac si le besoin se fait sentir et utiliser le C++ pour mes µC
Python est là depuis assez longtemps pour ne plus être qu'un effet de mode, même si personnellement cela me déplais
La guerre de la rapidité des langages n'a plus vraiment cours, sur le ordinateur.
Il en va de même pour l'occupation mémoire qui est aussi plus importante pour l'interprété.
Même si Python accepte la compilation
Par contre sur microcontrôleur cela a encore son importance.
Quand tu dis sécurisé, tu pense à quoi aux accès mémoire?
Pour moi le meilleur langage est celui que tu maitrise le plus.
Après je ne vois pas trop l'avantage d'apprendre un nouveau langage, parce qu'il est soit disant à la mode.
Comme @lesept si tu as un besoin spécifique qui facilement résolu par un langage pourquoi pas et encore, au vu du temps passer à te former, difficile de déterminer si c'est rentable.
Je préfère conserver C/C++ sur mon Windows et pourquoi pas installer Python si un besoin de portabilité ce fait sentir et que node.js ne puisse résoudre facilement mon problème
Après c'est quand même une grosse question de goût personnel.
J'utilise aujourd'hui C et C++ et non Python par habitude et difficulté au changement.
Par contre J'avais à mon 'époque Microchip PIC' choisi C et abandonné Basic
Si j'avais x décénies de moins , que j'utilise Python au Lycée ou en post Bac y comprise sur une TI 83 "Édition Python" il me semble que ,, dans la foulée, je choisirait MicroPython ou CircuitPython (Adafruit) pour mes bricolages , principalement à base d'ESP32 (contexte ludique et éducatif)
Il me semble que mes modestes besoins en matière de bibliothèques sont largement couverts
(seul manque recensé à ce jour l'équivalent de la bibliothèque LMIC pour LoRaWAN)
J'ai apprécié quelques petits essais effectués avec l'IDE Thonny
Oui si je veux développer un truc un peu sexy j'utilise Swift mais pour des trucs tout simple qui s'interface avec un Arduino et des outils tiers, Python fait le job
Oui, mais je dirai a partir du lycée, hélas ! Malheureusement ce n'est pas le cas partout... dans mon p'tit collège de savoie, si on dit programmation a un prof de techno, il te répondra "Scratch". A ce stade, utiliser python serai un soulagement.
Et si je devais donner mon avis quand a la question de @68tjs, je pense que python est un bon outil (car simple, facile a apprendre, etc...), mais uniquement pour créer des applis, des cartes, enfin bref des trucs pour tourner sur un PC, et pas sur un µC. J'ai un pot qui s'y est mit, il est devenu gaga... Il est en train de coder une (mini) intelligence artificielle... Du coup il a (presque) abandonné Arduino (tristesse...).
C'est un langage semicompile, comme R et Julia (pas les optimisations aggressives et efficaces de C(++) et gfortran);
Dans le domaine des microcontrôleurs, j'ai retenu un ratio de 1 à 5;
Si, de plus, python peut appeler sur des tableaux des fonctions en C(++), Fortran -cas des PC et du calcul intensif_ ça devient complètement négligeable (AFAIK, il faut traficoter micropython pour greffer des librairies compilées par ailleurs)
Sur ARM/PC, ipython3 -un morceau de choix de Jupyter) permet d'évaluer empiriquement le temps d'éxécution de fonctions python, ce qui un aspect sympathique
Là, voilà une question qui fâche sur PC (j'espère que micropython est plus raisonnable)
A l'interieur du même dépôt , l'enfer des dépendances fait qu'on a des configurations où les conditions rendent impossible (sans tricher) de faire cohabiter deux libraries a et b (supposons que a dépende, directement ou indirectement, de c > xxx et que b dépende de la "même" (même nom, version différent- c<xxx).
Comme python est très populaire (et donne de bonnes habitudes d'indentation, ce qui s'automatise autrement -astyle, IDE Arduino-) et permet de faire des maquettes à toute vitesse, youtube (doit prendre en compte la frénésie législative dans le monde entier) et duolingo (doit greffer de nouvelles intelligences artificielles; si un pays décide d'interdire une langue, doit s'adapter très vite pour ne pas être totalement interdit) on fait des choses très satisfaisantes pour des utilisateurs -du moins, en ce qui me concerne-)
Python a réussi à protèger une pseudo expertise par l'obscurité et la confusion:
n'a pas de classement thématique; R en a un (pour 5000 librairies hors biochime) ; pour python, il faut utiliser les classements thématiques de Debian (limités aux paquets que les debianeros ont essayés et adoptés...)
les bibliothèques n'ont pas d'exemple de code, à la différence d'Arduino et R (R incite même fortementà ce que les exemples donnent la solution de l'auteur avant de les mettre dans ses dépôts; c'est tout à fait faisable pour des PC, des ARMs et autres plateformes avec un système d'exploitation)
Un programmeur python coûte moins cher qu'un programmeur C (ou Forran -entretien de pièces de musée-) et se licencie facilement -c'est le hobby chez Twitter, les utilisateurs continuant d'apprécier ses gazouillis: ça va donner de bonnes idées à nos génies phynanciers.
Ils protègent leur peudo expertise en créant des librairies en pagaille, dont plus personne ne peut comprendre l'utilité.
Ma conclusion :
Pas d’avantage flagrant pour python.
Si on a eu l’ocasion d’apprendre python autant l’utiliser si l’occasion se présente.
Pour quelqu’un comme moi, qui n’est plus depuis longtemps un perdreau de l’année, pas la peine d’investir dans des heures de formations (sauf saine curiosité, n’est ce pas Philippe ).
Bonsoir @68tjs,
Oui je suis curieux de nature et puisque Python ou plutôt MicroPython peut être utilisé pour exploiter les micro-contrôleurs, j’essaye de me former avec des livres, internet et l’aide des membres du forum. Je commence par python puis je m’orienterai ensuite vers là version micro-contrôleurs.
Je ne suis pas très bien placé pour porter un jugement sur Python 3 mais du peu que j’en connais, je le trouve plutôt puissant car il permet de programmer très simplement des applications complexes. On peut même se demander qu’est-ce qu’il n’est pas capable de faire, je crois qu’il n’a pas de limite …
Il faut bien sûr avoir un ordinateur avec de la mémoire et un minimum de puissance.
Il est également facile de créer des applications avec une interface graphique à l’aide de Tkinter par exemple.
Bon je suis réaliste et le niveau de mon apprentissage sera limité par mes petites capacités intellectuelles. (Petites capacités que j’ai d’ailleurs mises en évidence aujourd’hui sur un autre fil de discussion) mais cet apprentissage m’apporte beaucoup de plaisir
En fait, c'est une caractéristique que tu retrouvera dans une multitude de langage, c'est essentiellement la raison, pour laquelle les gueguerres entre langage sont un peu stupide.
Après que tu puisse faire quelque chose, ne veut pas dire forcément que c'est la manière la plus approprié et rapide.
Sauf que moi je ne m’implique pas dans les «gueguerres ». J’apprends simplement Python avant Micropython et c’est tout. Peu importe que Python fasse autant que les autres langages et moins vite
Bonne journée.
Normalement, les biblothèques pythons-et même python tout seul- permettent de greffer des shared objects écrits en C(++) voire Fortran ; la couche d'interface en python induit des temps 'éxécution tout à fait négligeables si on travaille sur des gros tableaux, et une facilité de maquettage/évolutions rapides très appréciable.
learn opencv , un blog dédié au traitement d'images qui tourne commercial- donnait ses démos en C++ et python Face Detection – Dlib, OpenCV, and Deep Learning ( C++ / Python ) -et elles étaient pratiquement aussi rapides dans les deux configurations- En passant, c'est grâce à ce blog que j'ai appris un peu de python et je lui en suis redevable.
On ne compte plus sur ce forum les réponses du style :
Pour communiquer entre ton PC et ton ARDUINO : utilise PySerial
Si PySerial n'existait pas, je pense que peu de monde conseillerait de faire la même chose avec l'API Windows ou termios de Linux.
Tous les langages de programmation proposent à l'heure actuelle de nombreuses librairies, et leur niveau est assez équivalent.
Par contre certains langages et leurs librairies sont multiplateformes : JAVA, PYTHON, RUBY, etc.
Une application écrite avec PySerial requiert une seule modification pour tourner sous Windows ou Linux :
Remplacer "COMX" par "/dev/ttyUSBX".
Astuce, essayez ceci :
python3 -m http.server
Ensuite dans un navigateur sur une autre machine : adresse_IP:8000
Ou sur la même machine : 127.0.0.1:8000
Voilà, ce petit serveur WEB vous permet de récupérer des fichiers d'une machine distante.
C'est un peu maigre, pour faire de la pub pour python (1 bibliothèque utile, assez bien documentée parmi quelques dizaines de milliers sous pyPi, de qualité inégale-soyons bisounours-).
en 2011 Capturing an analog signal with Arduino and python | Freedom Embedded balau proposait deux librairies (pySerial et matplotlib -cette dernière est excellente pour transformer un écran de PC/RPi et un Arduino en oscilloscope- ce qui est deux fois moins maigrichon(et j'en sais gré à Balau)
Peut importe que tu t'implique dans les guéguerres ou pas, cela ne change rien à ce que je dit.
Ce n'est pas du tout à ça que je réagissait, mais plus à presque ton "étonnement" que l'on puisse faire beaucoup de chose avec python.
Pourquoi cela ne serait pas le cas, les classes .NET pour gérer le port série ressemble beaucoup à celle de pySerial.
Je ne connais pas de librairies pour Linux, mais j'ai des doutes qu'il n'en existe pas?
De même je crois que la classe "serialport" pour node.js est très proche de pySerial.
Peu importe que ces librairies soient plus ou moins proches de PySerial.
Une seule librairie = un seul apprentissage = capitalisation des connaissances.
Bien entendu pour un developpeur Windows cela n'a aucun sens.
Je n'ai jamais vu sur ce forum de proposition autre que PySerial pour communiquer en série, mis à part terminal plus ou moins évolué.