:PROPERTIES: :ID: ca50d517-3e8a-4d03-ba38-7ff411e87408 :mtime: 20220910133708 :ctime: 20211230101331 :END: #+title: Software * Conceptes ** /LBYL/ et /EAFP/ *** *L*ook *B*efore *Y*ou *L*eap Technique consistant à anticiper les éventuelles erreurs (en vérifiant un pointeur /null/ par exemple). *** *E*asier to *A*sk *F*orgiveness than *P*ermission Technique privilégiant l'interception d'erreurs à leur anticipation. Cela permet : * De réduire la charge CPU en vérifications, surtout lorsque la probabilité d'exception est faible, d'autant plus à partir de Python3.11 ([[https://github.com/python/cpython/issues/84403][zero-cost exceptions]]). Il est nécessaire que le language mis en oeuvre permette l'interception d'erreurs (pas le cas du C ou du Go). * Design pattern TODO * Langages ** Compilés *** [[id:ed8be72a-8a4d-4ef7-92e4-78d07095deaf][C++]] *** [[id:673d43c9-0b31-4f28-b550-4eb615c41dac][Rust]] ** Interprétés *** [[id:a877b82e-4925-41de-8903-8109dd98e773][Bash]] *** [[id:33ef1e68-70ad-43c8-850d-4b8ed2c5ea16][Elisp]] *** [[id:d4197090-4ee5-4fa3-ba2d-a70ce9953923][Javascript]] *** [[id:4fabfe6a-b104-464f-8a87-dfd7d761dbcc][Python]] * Composition de docs ** [[id:3250943b-32f0-4bdc-b0d2-5fbcf1724f36][Latex]] * Méthodes/Principes ** [[id:b827c6e7-fe86-4301-a72c-dfaee85e142f][SOLID]] ** [[id:6da0b985-e6f4-4454-bb6a-e941b722365b][Test driven development]] * Gestionnaire de configuration ** [[id:e93719b3-088d-4fe7-9ef8-fc9a4fd84827][Git]] * Outils ** Diff *** [[id:67317dba-3771-405f-ae58-0ef13062975d][diffsitter]] ** Performances *** [[https://www.intel.com/content/www/us/en/developer/tools/oneapi/vtune-profiler.html#gs.26xa9e][Intel® VTune™ Profiler]]