Bonjour
Je débute avec une carte Arduino UNO R4 Wifi. Je m'appuie sur le livre Arduino 3ème édition pour apprendre et je commence donc par le tout début, le fameux sketch blink. Je le compile avec l'IDE Arduino et le livre me montre une capture d'écran du résultat de la compilation. Le croquis devrait utiliser 928 octets mais chez moi il en utilise 52224 ! Je trouve que ça fait beaucoup pour faire clignoter une loupiote.
Dans le doute, j'ai compilé un croquis vide et il utilise 52176 octets (voir capture)
Je ne comprends pas mais je me dis que soit mon compilateur (arduino builder 1.6.1) a un problème, soit l'IDE embarque des "trucs" sans me le dire.
Avez-vous une idée ?
Très probable et ce pour améliorer "l'expérience utilisateur' selon le jargon en vogue
Le compilateur a compilé tout ce qui lui a été demandé de compiler.
Que donne par comparaison la compilation pour une UNO R4 sans WiFI ?
Je n'ai pas de carte UNO R4 sans Wifi.
J'ai indiqué à l'IDE une carte UNO R4 Minima et le croquis vide dégonfle un peu à 38780 octets mais c'est encore beaucoup ...
Chez moi, avec l'IDE 2.3.4 et une carte Arduino Uno Wifi, j'obtiens pour un sketch vide :
Sketch uses 444 bytes (1%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
la UNO R4 WiFi a un microcontrolleur ARM + un ESP32-S3 qui assure en plus de WiFI et BL + la fonction d'interface UART-USB, ça charge le binaire compilé
J'ai indiqué à l'IDE une carte Arduino Uno et je passe aussi à 444 octets.
OK donc je comprends que pour un même sketch, la nature de la carte a un impact sur le contenu compilé. Je suis surpris de ce principe, je pensais que je pourrais maîtriser la compilation à l'aide des includes. Si le compilateur fait des trucs dans mon dos, il va falloir que je sois plus méfiant
Non tu n'a pas besoin d'être méfiant, si tu avais dû coder la même chose sur une Uno R3 auquel tu aurais ajouter manuellement un ESP32, tu aurais bien dû faire le code pour et ajouter les librairies nécessaires.
C'est ce qu'appel @al1fch améliorer l'expérience utilisateur, qui sans ça complexifierais nettement l'écriture de programme sur l'environnement Arduino et donc te permet de faire des choses relativement complexe avec uniquement quelques lignes de code.
Personnellement cette logique me pose problème. Je suis sans doute un vieux c*n mais J'ai commencé à développer des programmes il y a 30 ans. A l'époque on avait besoin de quelques octets pour afficher "bonjour" sur un écran. Aujourd'hui avec les langages de développement évolués censés améliorer cette fameuse expérience utilisateur, il faut plusieurs Mo si on n'est pas vigilant à toutes les librairies embarquées qui ne servent à rien.
On a exactement le même phénomène avec les applications smartphones devenues totalement obèses parce que les développeurs n'en ont plus rien à faire de l'espace occupé par les programmes. Ca contribue inutilement à l'obsolescence du matériel qui doit sans cesse être changé pour absorber des programmes toujours plus gloutons en espace, en capacité de calcul et finalement en énergie.
En tout cas, je vois bien à travers cette petite démonstration qu'un croquis vide peut passer de 444 octets à 52176 octets. Pour ma part, je resterai "vigilant" à défaut d'être méfiant
Chacun sa logique, la tienne n'est pas illogique ou C.
Je suis aussi de la veille "école", j'ai commencé il y a un peu plus de 30 ans aussi.
Oui, mais ces même langage permettent en même temps à des non initier de piloter leur poulier et de voir sur leur smartphone à l'autre bout du monde, combien d'œufs leur poule on pondue.
On pourrait te rétorqué pourquoi prendre une carte avec une connexion WIFI et un processeur pour afficher bonjour sur un écran ?
Oui, le développeur est feignant, il ne fait des efforts que si il est obligé, effectivement.
Par contre je ne pense pas que l'obsolescence ne soit dû qu'a ce phénomène.
Ce qui prends le plus de place sur un smartphone, sont les données utilisateur.
De même ce qui prends le plus de CPU, est moins la non optimisation des algos, que tous les filtres temps réels pour modifier le flux vidéos.
C'est ton choix effectivement, mais si tu as pris une R4 wifi, je ne suis pas sûre qu'un programme pour R3, fonctionne sur une R4 et si tu à pris une R4 wifi, je suppose c'est que tu as des projets sans fil, donc tu devrais vite retourné à 50k.
Après rien ne t'empêche de retourner en arrière et de faire ton propre makefile et de linker uniquement ce que tu décide de linker.
Mais franchement, je ne suis pas sûr que le jeu en vaut la chandel?