Commandement de monsieur taupe
Pour devenir un développeur aguéri, un dev se doit de suivre les 13 commandements de monsieur Taupe. Les voici :
- RTFM -> Google est ton ami
- KISS (Keep it simple, stupid!)
- Un con qui marche ira toujours plus loin que deux sages assis
- On ne résout pas un grand problème avec une grosse solution, mais par une armée de petites solutions
- Il vaut mieux plein de petites travailleuses, qu’une grosse feignante
- Diviser pour mieux régner
- Dieu déteste la répétition, le programmeur aime se prendre pour Dieu
- Ne réinvente pas la roue carrée
- Les variables c’est pas comme les lapins, ca sort pas d’un chapeau
- Pas assez de commentaires, tue le commentaire, trop de commentaire tue le commentaire
- Freud se trompe, tout n’est pas sexe, tout est bit
- La mémoire c’est comme les WC, quand tu as terminé tu tires la chasse
- Pour vivre heureux, vivons caché
- Tes classes, c’est comme ton mur facebook, t’as pas trop envie que ta mére sache tout
- Ne résous pas un probléme, résous LE PROBLEME
Bien Chosir ses opérations
- addition & soustraction = 1 calcul
- multiplication = 4 calculs
- divisions = 20 calculs
- racine carrée = 60 calculs
- cosinus & sinus = 60 calculs
Pour optimiser un maximum son code il faut essayer un maximum d'utiliser les formules les moins gourmande en calcul.
Exemple :
10/2 = 5 -> 20 caluls ⛔
10 * 0.5 = 5 -> 4 calculs ✔
- Racine_carrée_inverse_rapide
float Q_rsqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y; // evil floating point bit level hacking
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed
return y;
}
Lien wikipédiaCondition
un boolean est égale a 0 ou 1
si on veut avoir des condition OU / ET on peut utilisé des maths
ET -> 1 1 = 1 && 00 = 0 OU -> 0 + 0 = 0
Les maths c'est utile !
Les mathématiques de bases sont très sont très souvent utiliser en programmation. Je met les notions de bases qu'il vous faudra réviser !
Pourcentage et quotien
Cas pratique :
TotatlHeight = 3 on veut déplacer quelque chose a 2 Il faut donc calculer le pourcentage pour ne pas utiliser de divisions.
3/2 = 0.666
Penser juste et efficace au lieu de faire de l'optimisation
Exemple au lieu d'utiliser des cosinus et sinus les stocker dans un tableau
- -> lookAtTable
Règle de la programmation objet
Il est important de toujours programmer orienté objet. Il est possible de faire des graph en UML pour s'aider a poser ses idées.
Il éxiste des logiciels qui transforme un graph ULM en code par exemple ENTERPRISE ARCHITECT
Cas inverse, un diagram UML a partir d'un graph : https://app.diagrams.net/
Pour illustré un mon graph j'utilise yed
Logique base de la cybernétique : pas comment je fonctionne mais comment réagit les échanges.
Dans une classe 2 types :
- Composition si une roue sort de la voiture elle "meurt"
- Agrégation si quelqu'un d'ATI quitte la classe il ne meurt pas
Principe de la surcharge et extends
- Les human Hérite des caractéristiques des bipeds,
- Les Biped Hérite des caractéristiques des mamifères,
- Les mamifères Hérite des caractéristiques des Animaux,
- Les Animaux Hérite des caractéristiques des êtres vivants.
L'héritage multiple (extend) est possible en C, C#, C++ mais pas en Python.
Classes abstraite pure :
L'existance précède l'essence !
- Être vivant -> On sait que tout les vivant utilise la méthode "vivre" mais chaqun des entité "vie" différent.
Et des classe abstraite :
- Biped -> Les biped ont 2 jambes mais n'éxiste pas réelement
Une classe (classique)
- Human -> on peut faire spawn un human
Par exemple tout les êtres vivant
Gestion des test
Imginez que vous etes au bord d'une falaise et vous voulez sauter de l'autre coté. il y a 2 manières de réagir.
Manière C++
Je calcule toute les possibilités pour arrivé de l'autre coté puis je saute.
Manière Python
Je saute puis je vois l'erreur. Je modifie ma trajectoire la prochaine fois.
Unity & Unreal
Unity -> faussement difficile
Unity fonctionne de manière component :
Exemple : Pour créer un superhuman je vais créer un human ou je vais y accroché différents script. J'y met mon script de vol, de bouclier, sac....
- -> permet la création de petit jeux vidéo plus rapidement.
Conséquence : pas de logique objet -> code moins propre et moins optimisé. Peut rapidement créer des soucis. L'utilisation de petits scripts est plus compliqué et moins modulaire.
Unity parfait pour commencer la programmation car on peut faire "n'importe quoi" pour tâtonner.
Unreal -> faussement facile
Fonctionne de manière objet. Pas le choix de coder en objet, sinon cela ne fonctionne pas.
-> Oblige a créer des jeux performant, c'est plus utilisable et plus modulaire.
-> bcp de concept a comprendre avant de commencer. Unreal est pensé pour les gros projets d'équipe, et certaines fonctionnalités peuvent être dérangeante pour les petite equipe.
Exemple de création d'un superhuman :
Heritage de la classe human, Héritage de la classe guerrier Héritage de la classe oiseau (car il a des ailes)
Les best chercheur -> sigraph
Le calculs de physique : le dernier retour
Les calculs de physique sont couteux en temps et en performance (temps reel). Il faut bien pensé avant d'utiliser de la simulation.
Voir un autre post