Idée de concours : Optimisation de code

Je pensais plus à de la chasse aux octets superflus :wink: !

fdufnews:
Ce genre de truc peut vite partir en vrille tu sais :smiling_imp: .
Déjà rien que pour se mettre d'accord sur ce que recouvre l'idée d'optimisation du code.

:grin:

+1 avec toi

L'important est toujours de savoir/apprécier l'entrée dans une vrille et de savoir/pouvoir en sortir 8)

fdufnews:
Ce genre de truc peut vite partir en vrille tu sais :smiling_imp: .
Déjà rien que pour se mettre d'accord sur ce que recouvre l'idée d'optimisation du code.

Déclarer un int pour y stocker le numéro d'une broche c'est un bon début.

je sors

Moi je trouve que c'est une bonne idée. Je suis conscient de mes limites en programmation : le C à peu près OK, mais le C++ m'est totalement étranger. Je n'ai pas le temps ni la possibilité de prendre des cours de programmation objet. Apprendre sur un sujet sur lequel je me serais déjà posé des questions me semble un bon moyen de progresser, alors qu'aider des personnes qui ont un niveau plus faible que le mien ne me permettra guère de m'améliorer.

lesept:
Moi je trouve que c'est une bonne idée. Je suis conscient de mes limites en programmation : le C à peu près OK, mais le C++ m'est totalement étranger. Je n'ai pas le temps ni la possibilité de prendre des cours de programmation objet. Apprendre sur un sujet sur lequel je me serais déjà posé des questions me semble un bon moyen de progresser, alors qu'aider des personnes qui ont un niveau plus faible que le mien ne me permettra guère de m'améliorer.

C'est aussi le but recherché .
Confronter les idées de chacun afin que tout le monde progresse/apprenne ...

On peut toujours faire un test si ça vous tente , si c'est un flop car trop "bordélique" ou autre ...tanpis on aura essayé ..

A l'aide d'une carte Arduino, afficher la température d'une sonde DS18B20 toutes les 5 seconds dans le moniteur série

Le possibilités d'optimisation sont pratiquement inexistantes dans un cas aussi simple.

@+

Ajoutez le stockage et l'affichage des valeurs sur un serveur, voire un peu de traitement

hbachetti:
Le possibilités d'optimisation sont pratiquement inexistantes dans un cas aussi simple.

@+

Même en utilisant différentes librairies ?

BrUnO14200:
Même en utilisant différentes librairies ?

:grin:

Pour faire un choix entre les # lib , il faut regarder comment chacune est.. optimisée 8)

Artouste:
:grin:

Pour faire un choix entre les # lib , il faut regarder comment chacune est.. optimisée 8)

D'où ma proposition de concours ... :smiley: !

Même en utilisant différentes librairies ?

Y compris sans librairie en utilisant directement Wire/I2C. Trop simple.

Je propose un nouveau tuto en annexe du concours :

Comment mettre le feu au forum.....

:grin:

Du moment qu'il n'y a pas de prosélytisme pourquoi pas s'il y a des volontaires.
Mais pourquoi s’arrêter au seul logiciel ?
L'optimisation du microcontrôleur est au minimum aussi importante.

De plus pour tout concours il faut un jury ... impartial.

:smiling_imp:

Mon idée de base était de comparer la taille de ...nos programmes :smiley: .

C'était le seul critère "objectif" à mon sens ..

Le but était aussi de proposer une autre façon d'apprendre que les éternels copies de tutos ...

C'était le seul critère "objectif" à mon sens ..

Pas vraiment d'accord. Privilégier la taille au détriment de la lisibilité n'est pas une solution.
Cela conduit généralement à du code du genre gros pâté monolithique.

+1 avec hbachetti... la maintenabilité du code et le respect des types par exemple sont 2 points importants qu’un hack qui fonctionne aujourd’hui est un bug difficile à trouver demain...

Cf bug de l’an 2000 parce qu’on avait voulu économiser 2 octets par date (et pris une représentation ascii)

Cf le bug d’un booléen b auquel on pouvait faire b++ par le passé pour le faire alterner entre true et false

Cf du code en assembleur qui vous laisse coincé dans le passé

La taille de n’est pas tout....

J-M-L:
La taille de n’est pas tout....

Oui, l'important c'est la manière de s'en servir, d'où l'idée initiale...

Peut-être le mot de "concours" était-il mal choisi, car il laisse penser à une comparaison, voire une récompense. Je ne pense pas que c'était inclus dans son idée.

Oui peu importe le nom , ce que j'imaginais c'était une sorte de comparaison de code "propre" pour un sujet donné .

Débrouillez vous avec le sens de "code propre" :smiley: .

Dans l'idée, ca permettait à chacun, du noob au grand crack de participer et de confronter sa fàçon de faire à celles des autres et donc de progresser ..

On pourrait parler de "recueil d'idées de programmation" ... :wink:

Mon idée de base était de comparer la taille de ...nos programmes

Et la rapidité d'exécution peut être intéressante aussi.

Des discussions précédentes je retiens :

  • compacité du code et de l'occupation de l'espace mémoire par les variables.
  • lisibilité du code.
  • et j'ajoute rapidité d’exécution parce que il n'y a pas que le programme qui compte, derrière le micro il y a de l'électronique qui peut être rapide à commander.

Il me semble que la lisibilité du code peut aller à l'encontre de la compacité (Flash et Ram) et de la vitesse d'exécution surtout pour un petit microcontrôleur.
Or on voit plus souvent la RAM saturée que la Flash, ce point a son importance.

Autre point à définir : faut-il obliger à utiliser les bibliothèques existantes ou bien inciter à en écrire de mieux fichues (code optimisé et suppression de trucs tordus comme les yards, les fahrenheits ou le mode AM/PM par exemple)

Comme proposition je pondérerais l'effort à fournir de la façon suivante :

  • compacité du code en flash : 25%
  • compacité de l'espace mémoire en RAM : 40%
  • rapidité d'exécution : 25 %
  • lisibilité : 10%

Si c'est trop compliqué : compacité Flash+ Ram = 100%

Je pense qu'il faut que tu suives ton idée. Ce ne pourra pas être parfait mais au moins cela existera.
Si tu écoutes tout le monde, en 2020 il n'y aura toujours rien de concret.

Propose un sujet, la discussion quittera la sphère philosophique pour entrer dans l'espace concret, et qui veut suivre suivra.
S'il n'y a personne ce ne sera pas une catastrophe.
Si cela donne l'envie à certains d'améliorer ta proposition ce sera super, à condition de ne pas dépasser le mois de janvier/février 2019 (pas 2020).