:PROPERTIES:
:ID:       ca50d517-3e8a-4d03-ba38-7ff411e87408
:mtime:    20220928120750
: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

* Classement/tri de données
** [[id:6af01039-a0a9-46fc-abe8-82f9662bc4b7][heap sort algorithm]]

* 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]]
