Algorithme

En fait, les logiciels (même les Intelligence Artificielle les plus avancées) ne sont qu'un regroupement d'algorithmes et de structures données. Cela se résume simplement à :
Algorithmes + Structures de Données (Data Structures) = Logiciels (Softwares).

Promenez-vous dans le monde des algorithmes

En d'autres termes, c'est une liste d'instructions, de procédures ou de formule qui résout un problème… Cela peut être un code pour trier efficacement les résultats d'une recherche, une formule pour trouver le chemin le plus court entre A et B sur une carte, un code pour crypter et décrypter des informations sensibles, etc.

Structures de Données (Data Structures)

Les Structures de Données (Data Structures) permettent de stocker et de récupérer des données, elles représentent la connaissance à organiser en mémoire. Peu importe le problème que nous devons résoudre, d'une manière ou d'une autre, nous devrons manipuler des données !

Apprendre les Structures de Données - Data Structures - Vice Versa

Code mort (Dead Code)

Le code mort est une section de code qui n'est jamais utilisée par l'application.

Boucle infinie (Infinite loop) - Boucle sans fin (Endless loop)

Une boucle infinie est une séquence d'instructions qui se poursuivra indéfiniment, à moins qu'une intervention externe ne se produise. Cela peut être intentionnel, mais la plupart du temps, c'est le symptôme d'une condition de rupture qui ne fonctionne pas. Le résultat d'une telle boucle se traduit souvent par une application qui se fige (et consomme la majeure partie de notre CPU, ce qui peut alors entraîner des rallentissements généraux) ou crash.

Programmation fonctionnelle (Functional Programming)

La programmation fonctionnelle ou FP est un paradigme de programmation. Il s'agit d'un style de programmation utilisant uniquement des fonctions pures. Cela évite de gérer les états d'un object et les effets secondaires en cas de manquement.

Garbage collection

Lorsqu'un programme est en cours d'exécution, il utilise la mémoire de l'ordinateur. Le garbage collection recherche la mémoire qui ne peut plus être utilisée par le programme et la libère, permettant à cet espace libéré d'être réutilisé.

Memoization

La mémorisation est une technique utilisée pour stocker le résultat d'une fonction de calcul en la stockant dans un cache. Si la fonction est appelée ultérieurement à l'aide des mêmes arguments, le résultat est chargé à partir du cache plutôt que d'être recalculé. Cela permet d'économiser les ressources du processeur.

En bref: la mémorisation est un moyen de se souvenir de ce que nous avons déjà trouvé.
Elle est utilisée pour réduire le coût en temps d'éxecution d’une fonction en échange de l'utilisation de la mémoire.
Arbre de Fibonacci de mémorisation - Arbre de calcul coupé

Là où la récursivité naïve échoue avec Fibonacci: l'arbre ci-dessus montre pour chaque indice (racine) les nœuds à calculer (tous ses enfants). Les nœuds rouges montrent des calculs inutiles qui peuvent à la place utiliser les résultats déjà calculés par les bleus.

Pour rappel les nombres de Fibonacci sont définis comme suit:
F(0) = 0
F(1) = 1
F(n) = F(n−1) + F(n−2)

Parse

C'est l'action de transformer des données décrites textuellement en données stockées dans une structure de données. Lorsque nous récupérons des données à partir d'une API Web, il s'agit généralement d'un texte JSON. Nous devons le transformer en objet afin de pouvoir manipuler efficacement les données:

  // JSON data (stored as a string)
  {
    "name": "Maze Solver - Pathfinding",
    "list": {
      "a_star": "A* (A-Star)",
      "bfs": "Breadth First Search",
      "dfs": "Depth First Search",
      "dijkstra": "Dijkstra"
    }
  }
  // JS manipulate data through an Object built from the string parse.
  const parsedData = JSON.parse(data);

  // parsedData is now an object and can be accessed as follows:
  parsedData.name;              // "Maze Solver - Pathfinding"
  parseData.list.forEach(...);  // Iterate over the list

Spaghetti code

Le code spaghetti est un argot utilisé pour décrire un code source difficile à lire ou à suivre en raison de la façon dont le programmeur d'origine a écrit le code. Cela peut être dû à plusieurs facteurs: un projet mal défini, un manque de règles de style de programmation ou encore l'expérience insuffisante du programmeur.

Spaghetti code refactoring

Opérateur ternaire (Ternary Operator)

C'est une façon de raccourcir un simple bloc 'if-else':

  const isTrue = (truth) ? "yes" : "no";

Unary operator

Un opérateur unaire est un opérateur qui ne prend qu'une seule valeur pour son opérations.

  auto x = 1; // x equal 1
  ++x;        // x is now equal to 2