(dernière modification : )

Code studies

Lire le code

Mark C. Marino a lancé la discipline avec un article sur les Critical code studies (2006).

Objectif des code studies: appliquer les outils herméneutiques des sciences humaines au code.

Qu’est-ce que la «grande littérature»? Un auteur est considéré un «grand auteur» parce que la critique l’en a fait ainsi (ceux dans les institutions de pouvoir). Les jugements que nous portons sont le fruit d’une situation de pouvoir particulière.

La littérature n’a pas de frontières figées. On peut lire «autre chose» et toujours faire de la littérature, comme le cinéma (autrefois considéré comme un art mineur).

On peut faire de l’interprétation littéraire de quoi que ce soit.

Le code est beaucoup plus complexe qu’un manuel d’instruction, il est potentiellement beaucoup plus riche.

Le code a des implications dans toutes les sphères de nos vies, c’est pourquoi il est si important et intéressant à étudier.

Qu’est-ce qu’on lit?

On peut lire le code lui-même, le code est ouvert, s’il est public, publié. Ce qu’on utilise sur un ordinateur, c’est un code binaire compilé, qui n’est pas lisible par un être humain. Lorsqu’on utilise un logiciel compilé en binaire, on ne peut pas lire le code source, il faut faire de la rétro-ingénierie pour deviner le code source, à partir de son fonctionnement externe.

Un langage de programmation

Un langage de programmation peut être haut niveau ou bas niveau (par rapport à la machine). Un langage de haut niveau, comme Python, est plus simple et facile à utiliser, mais est plus éloigné du langage de la machine. Un langage de bas niveau est plus proche de la machine, comme assembly.

Les bibliothèques

Une bibliothèque nous permet d’ajouter une série de termes au langage qu’on utilise déjà. Lorsqu’on lit le code, on verra ces bibliothèques reférencées, mais on ne lira pas vraiment le code de ces bibliothèques.

Implémentation physique

Allocations de la mémoire, etc.

Commentaire

Les commentaires peuvent être très précieux, ils sont très proches du code (généralement sur des lignes contiguës, voire sur les mêmes lignes).

Syntaxe

Structure des algorithmes

La documentation

Extérieure au code.

Historique, commentaires, issues, etc.

Sur des plateformes qui permettent de partager le code (comme Microsoft GitHub, GitLab, etc.), on peut faire des commentaires, examiner la révision.

Détournements du code

Par exemple, écrire un message sur un t-shirt écrit en code (mais qui n’est évidemment pas destiné à être exécuté par une machine).

Code imaginé ou reconstruit (code propriétaire)

Discours sur le code sans accéder au code (ex. la description de l’algorithme PageRank sur le site Google, explication en langage naturel, mais sans accès au code lui-même).

Exemples de code ouvert

Bash:

echo 'Hello world!'

Python:

print('Hello world!')

La continuité avec les autres médiums (ex. imprimé, print) n’est pas neutre.

Exemple: script bash pour convertir la base

echo "Vers quelle base veux-tu transformer un chiffre en base 10?"
read base
echo "Quel chiffre tu veux transformer?"
read chiffre

echo "Le résultat est: "
echo "obase=$base;$chiffre" | bc # base change

La dernière ligne fait la conversion avec un autre logiciel extérieur, bc.