Comment coder proprement ?
Bonjour,
Devant la complexité du programme que je suis censé décrypter , j'ai eu l' occasion de découvrir d'autres programmes (fait avec d'autres langages de programmatio) pour le même algorithme (Fast Multipole Methode).
En fait ma première tâche (théorique) était de comprendre l'algorithme (et sa validité au sens mathématiques). Ayant finit cette étape, je voulais le coder à ma sauce (donc le plus simplement possible) pour bien vérifier ma compréhension...
Dès lors je me suis aperçu de pas mal de choses:
- si j'utilise un langage de script pour faire mon prototype de programme ça ira beaucoup plus vite (car moins de lignes de codes, la possibilité de tester mon algo au fur et à mesure).
J'ai donc pensé à Matlab: mais le fonctionnement est assez étrange! Pour améliorer la lisibilité du programme (et pas avoir un gros script linéaire dégueulasse) l'astuce consiste à découper notre programme en plein de fonctions que l' on peut ensuite utiliser dans notre script principal. Je crois que celà s'appel "la programmation modulaire".
Le problème c'est que je trouve ça un peu fouilli car on se retrouve vite avec pleins de fichiers (un par fonctions! car matlab n'autorise qu'un fichier .m par fonction). Pourtant conceptuellement il peut y avoir des fonctions qui sont similaires et que l'on voudrit regrouper dans un même fichier.
Dans ce cas : le langage C ou Fortran réponds à mon besoin, car il semble axé sur la notion de modularité! On est amené à découper notre fichier en plusieurs fichiers (dans lesquelles on peut regrouper plusieurs fonctions par fichiers!). Je cherhais donc un analogue en langage interprété au langage C et il me semble que Python peut aussi être découpé en plussieurs fichiers.
Le truc c'est que mon initiative pour évoluer vers le C++ vient de : "si j'essai de coder en C++ 'est surtout parce que l'on me l'a recommendé niveau lisibilité de part son côté orienté objet!" Du coup il faut que je code encore un peu différemment il va falloir que je penses en termes d'objets/classe et pas seulement fonction! J'avoue que pour le moment je ne sais pas penser objet! Qu'est ce qui est une structure, une classe? Est ce que je complique pas tout ? Du coup là j'ai l'impression que 'est super lourd et je n'avance pas.
Donc je ne sais pas trop comment coder un petit prototype de l' algo ni avec quel langage... Je suis paumé
1) Coder avec quel langage ?
En tout cas j'ai constaté:
- le Java m'est plus facile à comprendre qie le C++ à la lecture (peut être car les auteurs du projet Java ont voulu faire qqch de plus simple quitte à le rendre plus lent...)
- Le python j' n lis beaucoup de bien et semble offrir le confort d'un langage interprété et le concept d'orienté objet, Il semble un candidat idéal.
2) Comment coder ?
Comment découper le programme ? Un main et pleins de fonctions (comme en Matlab ?)
Un main et pleins de Classes ?
D'ailleurs lorsque je lis le programme (déjà réalisé en Java) je ne sais pas comment procéder:
utiliser le debugger ? Faire un diagramme de classe ? Commencer par la doc (très peu fournie) pour piger le fonctionnement globale ?
3) Finalement quel est le plus simple ? Si je veux me focaliser sur l'algorithme ... (et non sur l'architectur du programme)