abstraction

id :20210412165919
dernière édition :
type :architecture
mots-clés :code
mode focus :

[[20200526222401]] modèle, pattern

L’abstraction est un exercice d’analyse permettant de travailler dans un système. Cela consiste en la simplification d’un ensemble d’éléments vus à travers le prisme de modèles de pensée ou bien de conception.

L’abstraction est une posture intellectuelle face à un système complexe.

[[20210313105330]] complexité logicielle

« C’est une simplification, en présence de l’objet concret infiniment complexe et perpétuellement changeant, simplification qui nous est imposée, soit par les nécessités de l’action, soit par les exigences de l’entendement, et qui consiste à considérer un élément de l’objet comme isolé, alors que rien n'est isolable, et comme constant alors que rien n'est au repos. »[^1]

Classes

Dans le jargon de la programmation, l’abstraction « identifie et regroupe des caractéristiques et traitements communs applicables à des entités ou concepts variés »[^2]. On isole des qualités d’un objet concret pour les appliquer à d’autres.

En programmation orienté objet [[20200522122316]], il est possible de réaliser des classes abstraites. Ce sont des modèles de classe ; elles ne sont pas destinés à être instanciés, mais uniquement à prescrire des attributs et méthodes dont d’autres classes vont hériter.

Dans l’extrait de code ci-dessous, la classe User hérite de l’attribut path et de la méthode add de sa classe parente Database qui lui prescrit impérativement la méthode search.

abstract class Database  {
    private  $path;

    abstract function search($item);

    function add() {
        …
    }
}

class  User  extends  Database  {
    private  $id;

    function search($item) {
        …
    }
}

[^1]: CNRTL, Abstraction [^2]: Wikipédia, Abstraction (Informatique)

Liens 3
  • modèle, pattern
  • complexité logicielle
  • programmation orientée objet
Rétroliens 9
  • API, interface de programmation
  • code source
  • matérialité d’un programme
  • modularité logicielle
  • niveaux langages de programmation
  • programmation orientée objet
  • qualités de l’écriture numérique
  • signe abstrait
  • vue

AJAX protocole de requêtes asynchrones

id :20200704100343
dernière édition :
type :programmation
mots-clés :code, web
mode focus :

[[20210405160832]] requête [[20200704153246]] langage de programmation Javascript

L’AJAX (asynchronous JavaScript and XML) recours à la class JavaScript « XMLHttpRequest » incluse dans les navigateurs modernes. Elle permet d’adresser des requêtes HTTP afin d’obtenir des données au format XML, JSON, HTML ou plein texte, comme si l’utilisateur s’était lui-même rendu à l’adresse.

Le traitement se fait désormais principalement en JSON étant donné qu’il s’agit d’un objet JavaScript. Il faudrait en réalité plutôt parle de AJAJ (asynchronous JavaScript and JSON).

L’avantage est qu’il est possible d’obtenir des données (« en arrière-plan ») sans recharger la page : c’est asynchrone car c’est un chargement de données décalé avec celui de la page.

[[20210221130228]] comportement logiciel

Avec JavaScript on peut ensuite modifier agit sur le code source de la page, par exemple pour afficher un retour (callback) suite à un envoi de formulaire. Cette action n’étant pas synchronisée avec une interaction utilisateur (délais de requête), on parle d’une opération asynchrone.

Inscription

JavaScript vanilla

Nouvelle inscription

fetch('data.json').then(function(response) {
    // Chargement de données...
    response.text().then(function(text) {
        // Traitement des données...
        var data = JSON.parse(text);
    });
});

[[20200705083336]] callback, principe de programmation asynchrone

Ancienne inscription

var req = new XMLHttpRequest();
req.open("GET", "./controller/function.php");
req.addEventListener("load", function () {
    if (req.status >= 200 && req.status < 400) {
        fxCallback(req.responseText);
    } else {
        console.error(req.status + " " + req.statusText + " " + url);
    }
});
req.addEventListener("error", function () {
    console.error("Erreur réseau à l'URL " + url);
});
req.send();

JQuery

$.ajax({
    url: "./controller/mail.php",
    type: 'POST',
    data: formulaire.serialize(),
    dataType: 'JSON',
    success: function (JSON, statut) {

        if (JSON.isOk) {formulaire.trigger('reset');}
        formulaire.append('<p>' + JSON.consolMsg + '</p>');
    },
    error: function (resultat, statut, erreur) {
        console.log(resultat);
        console.log(erreur);
    }
});
Liens 4
  • requête
  • javascript langage de programmation
  • comportement logiciel
  • callback et promesses JavaScript
Rétroliens 7
  • API, interface de programmation
  • architecture logiciel MVC
  • architecture de code hypertextuelle
  • comportement logiciel
  • javascript langage de programmation
  • langages de balisage
  • site statique

API, interface de programmation

id :20200701221037
dernière édition :
type :architecture
mots-clés :code
mode focus :

[[20200708132301]] interface

Une API (Application Programming Interface) permet de mettre en relation des programmes[^2] de manière structurée (modulaire [[20210313113130]]). Il s’agit en général d’échanger des données [[20200509195652]] entre deux parties, de faire communiquer des bases selon les principes de l’application [[20200909183033]] : l’API standardise un traitement et tend à uniformiser les programmes et interfaces.

« ensemble normalisé de classes, de méthodes, de fonctions et de constantes qui sert de façade par laquelle un logiciel offre des services à d’autres logiciels »[^1]

« Une API permet à un développeur – une personne qui écrit des programmes informatiques – d’accéder à des jeux de données ou à des blocs de code informatique préécrits pour remplir une certaine fonction »[^3] (p.36)

[[20200701214359]] structures de contrôle

L’utilisation des API dépend de la documentation [[20210118161126]] qui les accompagne. Elle permet de définir notamment « ses usages possibles, la syntaxe à respecter, les formats et type de données disponibles »[^3].

Usage

Ainsi, les API sont omniprésentes dans l’univers composite du Web. On retrouve des API pour toutes sortes de services en ligne :

  • intégration (via un code HTML à copier coller) d’un simple affichage, comme un bouton like de Facebook ;
  • intégration d’une carte (Google Maps ou Openstreet Map) en intégrant l’élément HTML et en soumettant des requêtes AJAX [[20200704100343]] pour l’actualiser ;
  • récupération massive de sets de données auprès d’une base (Twitter) ;
  • pairement en ligne via des formulaires validés à l’aide de clés/jeton d’authentification (token) par un service distant qui statut sur la requête.

Autant de sorties ou d’entrées par lesquelles il est possible de faire transiter (via des tuyaux, pipe) des données.

« Historiquement, les API web se sont développées à partir des années 2000, d’abord autour d’Ebay qui publie son API en 2000, puis Amazon en 2002 […] Google Maps en 2005 […] celle de Twitter […] et de Facebook, toutes deux en 2006 »[^3] (p.40-41)

Risques

« les API ne peuvent justement pas être réduites à leur fonction technique. Elles ont un rôle économique, culturel, politique… Elles sont éminemment ‹ composites ›. Ce sont des objets techniques, qui font partie de nos lectures quotidiennes sans que l’ont ait à s’interroger plus en avant sur cette part technique »[^3] (p.40)

« quatre grands risques découlant d’un usage d’une API: la pression financière, l’instabilité de son fonctionnement, l’homogénéisation des interfaces, et son invisibilité structurelle »[^2]

  • économique : « les API font partie d’un mouvement contemporain de valorisation de la ‹ donnée › comme vecteur de richesse […] si les données sont un enjeu économique et symbolique important, alors les moyens d’accès à ces données deviennent des points de passage névralgiques »[^3] (p.41)
  • culturel : les API « permettent la création de ‹ petites formes › participent à un mouvement de transformation, d’hybridation d’objets culturels fondamentaux par le biais du numérique »[^3] comme avec les carte Google Maps, « lieux où l’hybridation se fait jour, entre la culture informatique de la programmation et la culture lettrée »[^3] (p.42), entre l’outillage technique et la création du sens par l’outillage technique.
  • politique :
    • « enjeux politiques de monstration ou d’invisibilisation »[^3] (p.57)
    • « Grâce à leurs API, Amazon ou Google créent un ‹ écosystème › de développeurs, qui dépendent des données de ces plateformes pour écrire leurs propres logiciels, mais qui en retour bénéficient de moyens d’accès facilités à ces données (grâce à l’API) et peuvent donc les utiliser à leurs propres fins »[^3] (p.41)

Médiation opaque

Une API est une médiatrice de la donnée dans le sens où elle est un péage permettant de contrôler le flux de données pouvant sortir, mais elle en cache aussi la source. Le fonctionnement de l’API même est difficile à appréhender, voire opaque (boîte noire). On sait capter et traiter les données grâce à la documentation, mais on ne sait pas d’où elle viennent, ni comment elles sont rassemblées, ni comment elles sont envoyées. Souvent, le flux de données reçu (volume d’usage) est volontairement limité par l’expéditeur.

« Le conducteur [développeur] ne voit qu’une interface composée d’un volant, de pédales (accélérateur, embrayage, frein), de manettes (clignotants, phares, boîte de vitesse) et de boutons (avertisseur, anti-brouillard, klaxon, etc.) »[^2]

C’est un frein à la rétro-ingénierie, mais aussi un moyen de développer plus rapidement des systèmes complexe. On peut faire abstraction [[20210412165919]] du fonctionnement et des moyens pour se concentrer sur la programmation d’un outil.

« la facilité d’accès aux API permet au développeur de ne pas se soucier de la façon dont fonctionne effectivement l’application distante […] L’API éloigne donc le programmeur d’un code trop complexe et fait écran avec les fonctions des langages de programmation dits standardisés »[^2]

Contrôle du flux

Utiliser une API revient à céder le contrôle du flux des données, par nature instable. Il peut être déplacé, interrompu, limité (quotas), modifié (leur structure et/ou contenu) et son contenu est soumis aux règles d’une base externe, celle de son propriétaire.

Pour la gestion des accès (sécurité, confiance, péage) on compte sur des clés/jetons d’authentification (token) uniques. Elles sont chiffrées [[20210418214149]] et permettent accordent les échanges entre trois entités : l’utilisateur, le développeur et le pourvoyeur. En général, le deuxième met en place le pont entre les deux autres. Sa position de médiateur est authentifiée (contrôlée) via une clé privée. Il va transmettre une clé publique (envoyée par le pourvoyeur) à l’utilisateur. Ce dernier va l’utiliser pour utiliser l’API.

Exemple de clé : a4db08b7-5729-4ba9-8c08-f2df493465a1

Pour prévenir une coupure de l’API, on peut mettre en place un système de cache permettant de garder dans une autre base (sauvegarde) les données récoltées à la source. Cela reste une pratique pouvant être limitée par le propriétaire des données.

[^1]: Wikipédia, Interface de programmation [^2]: Anthony Masure, Le design des programmes, 2014 [^3]: Samuel Goyet, De briques et de blocs. La fonction éditoriale des interfaces de programmation (API) web : entre science combinatoire et industrie du texte, 2017

Liens 9
  • interface
  • modularité logicielle
  • la donnée
  • application
  • structures de contrôle
  • documentation logicielle
  • AJAX protocole de requêtes asynchrones
  • abstraction
  • chiffrement
Rétroliens 9
  • application
  • bibliothèque logicielle
  • compréhension de l’API d’un logiciel
  • dépendances logicielles
  • DOM, document objet model
  • édition numérique
  • headless CMS
  • interface
  • requête

application

id :20200909183033
dernière édition :
type :processus
mots-clés :informatique
mode focus :

Par rapport à un logiciel, une application (« app ») à l’avantage d’être conçue sur une chaîne de production entièrement contrôlée par les fabricants. Ils ont conçu un environnement complet pour contrôler l’utilisation des usagers, mais aussi le travail des concepteurs. Même les designers et développeurs, les professionnels du numérique, sont influencés dans leur métier dans ce sens. On trouve des applications sur les smartphones, mais aussi les ordinateurs (Chrome OS est la plateforme la plus fertile, mais on en trouve aussi sur Windows et Mac OS) et sur le Web (plateformes fonctionnant sur des API [[20200701221037]]).

L’application est un outil de l’esclavage moderne, de l’aliénation à la production (gratuite et/ou détournée, cachée) de données.

[[20200705114827]] digital labor

«  La notion d’application est dénoncée depuis 1971 par Ted Nelson qui y voit là une source d’asservissement pour le public »[^1]

Les utilisateurs et les designers s’adaptent à ces interface (aux usages qu’elles engendrent) au fil des mises à jour. Nous sommes invités à servir toujours plus, toujours plus efficacement.

[[20200802100201]] théorie du nudge

« l’actuelle ‹ génération de logiciels › des terminaux mobiles prend le nom d’‹ applications ›, distinction qu’il y a lieu d’interroger »[^2]

Logiciel // application

L’informatique a changé. Il est devenu portable, plus facile d'utilisation et plus facile à programmer. Les applications sont le résultat de cette transformation (facilitation et accélération). Les développeurs et les designers sont au cœur de cette logique. Les GAFAM donnent généreusement des guides aux professionnels (pour faciliter leur travail, mais aussi l’influencer) pour que jamais on ne trouve une interface qu'ils n'est pas optimisé pour leur récolte.

Ainsi, l’application est un logiciel normé dont on a limité l’environnement logiciel [[20201224152456]] et interactif :

  • guidelines pour les designers
  • Software Development Kit (SDK) développeurs

Les applications permettent aux utilisateurs d’effectuer des tâches spécialisées (ex : Word → traitement de texte) quand les logiciels peuvent avoir une portée très générique (ex : système d’exploitation).

Le ressentis d’utilisation d’une application est fermé à la notion de programmes tant son fonctionnement, ses entrées et sorties, son API, sont opaques (boîte noire, cryptotechnique). Le perfectionnement des techniques informatiques mène inéluctablement à l’effacement de ces techniques. Les utilisateurs et développeurs cherchent des solutions « tout intégrées », des interfaces qu’ils ne veulent pas comprendre, mais simplement utiliser dès lors qu’elles sont simple, efficace et sécurisées.

[[20200709104849]] rapport aux objets techniques

À l’opposé, nous trouvons les logiciels LOS [[20200710204125]], dont le code source (et donc les programmes) est visible par tous et peut être améliorer par une communauté plus ou moins restreinte.

Développeurs

Ces modalités ont un effet direct sur le développement et la maintenance de ces logiciels. Ils sont soumis à différentes plateformes (constructeur du terminal + système d’exploitation + marché d’applications), à leurs changements, et leur chantage. Les constructeurs n’hésitent pas à limiter l’usage de l’appareil en limitant ses mises à jour tandis que les applications doivent elles suivre l’évolution du système d’exploitation. Les développeurs sont contraints de respecter les ambitions économiques des différents partis.

« Citons, en plus des limitations déjà présentes sur l’App Store iPhone et iPad : […] pas de mise à jour payante depuis un ancien logiciel […] ; pas de code fonctionnant en arrière-plan une fois l’application fermée […] ; pas d’accès aux code de bas niveau […] »[^2]

En échange de cela, le développement de ces logiciels est très rapide, facilité par des outils sur mesure pour les porter d’un marché d’application à un autre. Plus le matériel est normé (l’iPhone est un exemple typique), plus il est facile de généraliser la compatibilité de l’application à des centaines d’appareils parfois très différents (issus du même écosystème). La mise sur un marché aussi fermé qu’un store d’application permet à des logiciels de se démarquer rapidement, autrement que dans la jungle du Web. Ils y sont mis en concurrence par un système de notation, commentaire. Les utilisateurs peuvent rapidement télécharger leur solution et la garder à jour automatiquement.

Utilisateurs

Les utilisateurs perdent largement le contrôle des appareils sur lesquels ils installent des applications. Le système d’exploitation de ces appareils sont largement bridés et l’API ne tolère aucun écart, à moins de la casser (jailbreak des iPhone, qui fait perdre la garantie de l’appareil). Les interfaces sont semblablent d’une application à une autre (suivant les guidelines du système d’exploitation) forçant les utilisateurs à se conformer (par le design) à une unique manière d’utiliser leur terminal, de penser leur navigation. Ils sont enfin largement soumis à la récolte de données (en amont ou en aval des applications elles-mêmes) et au marché de la publicité. Les applications sont les supports du travail gratuit sur le Web [[20200705100544]] ; c’est le réel objectif des marchés d’applications.

En échange de cela, l’utilisateur peut profiter d’un grand nombre d’applications qui le suivront tout au long de la vie de son appareil et d’un appareil à l’autre. Il pourra profiter d’un écosystème qui lui permet d’aménager (dans une certaine mesure) un espace de travail. Ce écosystème (entre les applications et avec l’appareil) est aussi sécurisant et protège l’utilisateur d’installations frauduleuses qui pourrait abîmer son appareil (ou voler ses données, le faire payer sans que le marché d’application ne touche sa commission).

[^1]: Julien Dehut, En finir avec Word ! Pour une analyse des enjeux relatifs aux traitements de texte et à leur utilisation, 2018 [^2]: Anthony Masure, Le design des programmes, 2014

Liens 7
  • API, interface de programmation
  • digital labor
  • théorie du nudge
  • environnement de développement
  • rapport aux objets techniques
  • logiciel libre et logiciel open source
  • travail gratuit, économie du web de plateforme
Rétroliens 4
  • API, interface de programmation
  • centralisation
  • problème des logiciels de traitement de texte
  • software/hardware

architecture de code hypertextuelle

id :20210130151200
dernière édition :
type :inscription
mots-clés :code
mode focus :

[[20210115090700]] architexte

Le préfixe « hyper » [[20210114195936]] ne suggère pas la puissance du texte code (ce serait le fétichiser [[20210121192437]]), mais sa nature en réseau. Les développeurs tirent parti de la nature élémentaire du code [[20200906135907]] pour concevoir des œuvres avec une variété de matériaux et d’outils interreliés.

[[20210313105330]] complexité logicielle

Les liaisons entre les fichiers dépendent

et elles permettent de faire circuler l’information.

On peut distinguer plusieurs échelles de liaison pour chaque niveaux de la structure du logiciel [[20210221144451]] :

  1. entre arborescences de répertoires → protocoles ?
  2. entre fichiers → hyperliens ?
  3. entres structures de contrôle → flot de contrôle [[20200930183337]]
Liens 9
  • architexte
  • hyper
  • matérialité d’un programme
  • code source
  • complexité logicielle
  • runtime ou environnement d’exécution
  • AJAX protocole de requêtes asynchrones
  • structure logicielle
  • flot de contrôle
Rétroliens 2
  • empaqueter (bundle) le code
  • espace numérique

architecture logiciel MVC

id :20200704172042
dernière édition :
type :architecture
mots-clés :informatique
mode focus :

[[20201128160455]] architecture logicielle

L’architecture logicielle MVC se compose en trois parties en relation selon le schéma ci-dessous :

  • Model : gestion des flux de données
  • View : génération de l’affichage, de l’interface [[20200708132301]]
  • Controller : gestion des requêtes [[20210405160832]] utilisateur et de sa session

C’est un dispositif adapté à l’architecture trois tiers, elle-même conçue pour faire communiquer le client, l’application et la base de données. Elle prescrit trois couches : présentation, traitement et accès aux données.

[[20210112090725]] client serveur

graph TD
	Model[Model]
	View[View]
	Controller[Controller]
	
	client((client))
	
	client -->|1 requête| Controller
	Controller  -->|2 demande données| Model
	Model  -->|3 obtention données| Controller
	Controller  -->|4 transmition données| View
	View -->|5 affichage| client

Cette architecture permet d’éditer les fonctionnalités d’une couche, sans induire de changement dans les autres. On évite ainsi les effets de bord [[20210109130837]].

Mise en place

Cette architecture se matérialise directement dans l’arborescence de fichier comme ci-dessous :

.
├── index.html
└── core/
    ├── model/
    │   └── user.php
    ├── view/
    │   └── connexion.php
    └── controller/
        └── authentification.php

Grâce à des conditionnels (inspection des requêtes et de la session du client), on va réaliser différentes inclusions de code pour exécuter les différentes opérations.

Technologies

Entre la View et le Controller on va généralement mettre en place un pipe AJAX [[20200704100343]] pour éviter les rechargements de pages et ainsi donné l’illusion d’une application web avec la fluidité d’affichage que cela implique.

Les models sont en général inscrits avec le paradigme de la programmation orientée objet [[20200522122316]] pour sécuriser les appels à la base de données.

De nombreux framework [[20200701222949]] mettent à disposition une architecture MVC comme Symfony, Laravel ou AngularJs.

Liens 8
  • architecture logicielle
  • interface
  • requête
  • client serveur
  • effet de bord
  • AJAX protocole de requêtes asynchrones
  • programmation orientée objet
  • framework ou cadriciel

architecture logicielle

id :20201128160455
dernière édition :
type :architecture
mots-clés :programmation
mode focus :

[[20210221144451]] structure logicielle [[20200508111132]] modélisation de l’architecture d’un logiciel

On parle aussi d’urbanisation logicielle.

Un logiciel est une réponse technique complexe. Une bonne architecture permet de mieux l’appréhender et va de pair avec une documentation [[20210118161126]] efficace pour l’appréhender.

Autre

Un système peut être complexe selon la gestion de son espace ou de sa temporalité, selon son imprévisibilité.

[[20210221130228]] comportement logiciel

Liens 4
  • structure logicielle
  • modélisation de l’architecture d’un logiciel
  • documentation logicielle
  • comportement logiciel
Rétroliens 6
  • architecture logiciel MVC
  • cycle de développement logiciel
  • dépendances logicielles
  • documentation logicielle
  • qualité logicielle
  • structure logicielle

architexte

id :20210115090700
dernière édition :
type :inscription
mots-clés :scienceinformation, lectureecriture
mode focus :

Les architextes sont des « couches de textes »[^3], des textes permettant l’accès à d’autres textes et finalement aux écrits d’écran[^2]. Ce sont des textes (« écriture-calcul »[^4]) capables de récupérer et formater d’autres textes (« écriture-texte »[^4]) pour enfin les afficher. S’ils sont tous écrits et intelligibles par l’humain, ces textes sont de différentes natures. On oppose ainsi l’écriture-texte pour les humains et l’écriture-calcul pour les machines[^4].

[[20210116135423]] inscription computationnelle

« Nous nommons architextes (de archè, origine et commandement), les outils qui permettent l’existence de l’écrit à l’écran et qui, non contents de représenter la structure du texte, en commandent l’exécution et la réalisation »[^1]

« Un traitement de texte, un champ de recherche Google, un logiciel de montage vidéo, une API sont des architextes : ce sont des outils qui permettent d’écrire grâce à un ordinateur. Ces outils ont deux particularités : ce sont des ‹ outils d’écriture écrits ›, ils permettent donc l’écriture en la formatant dans le même temps ; ils sont propre à l’informatique en ceci que cette technique d’écriture est fondée sur une rupture sémiotique et sémantique. C’est cette rupture qui nécessite des outils de conversion – les architextes – entre le niveau de l’inscription (la matérialité du disque dur ou de tout support de mémoire) et celui de l’affichage (l’écran, l’interface) »[^5]

Médiation

L’écrit d’écran « reconnaît la rupture opérée par l’informatique entre le support et le signe, entre le calculé et le perceptible »[^3] et les architextes opèrent la médiation entre le signe et son support, reliés par la computation, le calcul.

« Le texte naît de l’architexte qui en balise l’écriture »[^6] (p.103)

Cette médiation n’est pas une interaction entre l’humain et la machine [[20210115183034]], mais entre un humain et un autre humain par l’intermédiaire d’une machine. Le premier a écrit un texte (code) pour permettre au second de lire d’autres textes.

« Si quelque chose se passe à l’écran, ce n’est pas en raison d’une quelconque interactivité [entre l’humain et la machine], mais parce que des architextes ont en amont rendu possible la saisie d’un comportement humain comme un geste d’écriture ayant pour effet d’afficher un nouveau texte »[^3]

Contrôle

Les architextes sont aussi un moyen de contrôle du texte par les algorithmes. Ce sont « des couches de textes écrites par des programmeurs, qui font circuler des rapports de pouvoir aussi bien symboliques qu’économiques »[^3].

[[20200725133539]] enjeux politiques de l’écriture numérique

Ces mêmes développeurs ont le pouvoir de permettre aux utilisateurs les moins expérimentés de prendre le contrôle de leur machine. Par le texte (code) ils vont permettre à d’autres de lire en concevant des interfaces [[20200708132301]]. Si elle sont suffisamment abouties, elles peuvent effacer la machine, l’assujettir. Elle devient alors le « prolongement de la volonté humaine »[^3].

« tantôt d’humains qui ont du apprendre à la manier et à lui parler pour qu’elle s’exécute (programmeurs), tantôt d’humains qui peuvent très bien tout simplement l’oublier (les utilisateurs) »[^3]

Du même geste, les dispositifs d’architexte occultent la « dimension processuelle de l’activité computationnelle »[^3] derrière des interfaces. Les utilisateurs deviennent incapables de comprendre leur outil et ne voient dans l’affichage que des interactions limitées.

Fausseté

Bien qu’elle permette de lire du texte, la machine informatique n’est pas à proprement parlé une machine à écrire. Elle permet en effet de manipuler du texte, mais il est vide de sens. À force de se focaliser sur le texte informatique, on oublie la machine, sa mécanique et une certaine contingence dans l’exécution d’une texte qui n’est pas toute puissance.

[[20200906135907]] code source

« Ce qui est inscrit, ce sont des données sous forme éléctromagnétique dans un disque dur. Ce qui est affiché, ce sont des lettres, des images, des mots, des vidéos… Tout un ensemble sémiotique qui nécessite un incessant passage, une conversion entre l’inscrit (le technique) et l’affiché (le sémiotique) »[^5] (p.47)

On ne considère le processus informatique que par l’écran, par le texte qui constitue son code source, puis par le texte de la console qui atteste de la progression de l’exécution et enfin par le texte résultant de l’opération. Finalement, on ne prend jamais véritablement le contrôle matériellement de la machine. Selon les langages de programmation, le texte permet un contrôle plus ou moins direct.

[[20200718172257]] niveaux langages de programmation

[^1]: Yves Jeanneret et Emmanuel Souchier, L'énonciation éditoriale dans les écrits d'écran, 2005 [^2]: Emmanuel Souchier, L'écrit d'écran, pratiques d'écriture & informatique, 1996 [^3]: Cléo Collomb, Faire compter les machines, 2017 [^4]: Cléo Collomb et Samuel Goyet, Do computers write on electric screens?, 2016 [^5]: Samuel Goyet, De briques et de blocs. La fonction éditoriale des interfaces de programmation (API) web : entre science combinatoire et industrie du texte, 2017 [^6]: Yves Jeanneret et Emmanuel Souchier, Pour une poétique de l’écrit d’écran, 1999

Liens 6
  • inscription computationnelle
  • rapport humain-machine
  • enjeux politiques de l’écriture numérique
  • interface
  • code source
  • niveaux langages de programmation
Rétroliens 8
  • carnet de programmation
  • architecture de code hypertextuelle
  • code source
  • écriture
  • la loi du code
  • niveaux langages de programmation
  • problème des logiciels de traitement de texte
  • structures de la connaissance

base de données

id :20200623180525
dernière édition :
type :architecture
mots-clés :scienceinformation
mode focus :

[[20210117094335]] système d’information [[20200509195652]] la donnée

« Une base de données est une collection organisée de données »[^1], ainsi sont une base de données :

  • un meuble de fiches ;
  • un fichier tableur ;
  • un fichier JSON ou XML ;
  • une base de données, relationnelle ou non.

L’objectif d’une base de données est de structurer l’information pour pouvoir y accéder plus efficacement. On cherche à pouvoir effectuer le SCRUD (Search, Create, Read, Update and Delete). Ainsi, on va régulariser les entrées à l’aide de formulaires [[20210117100240]], normaliser son contenu et mettre en place des systèmes de recherche en son sein.

Structurer

Pour structurer l’information, il est nécessaire de structurer les supports, puis de les organiser. Ainsi, dans une base de fiches nous allons définir des règles d’édition des fiches (ex : prescrire des règles quant à leur contenu), mais aussi leur appliquer des métadonnées [[20200923152146]].

[[20200624194717]] fiche comme modèle de données

Dans le cas d’une base de fiches, les métadonnées sont le titre, la date, l’auteur… Elles ne font pas partie du propos, mais permettent d’identifier les fiches et de les situer dans l’espace de la base (donc de les y retrouver), mais aussi au-delà (pour un affichage complet). Dans le cas d’une base de données d’utilisateurs, les métadonnées n’incarnent pas ces utilisateurs, mais permettent de leur attribuer des valeurs, des actions.

[[20201003174114]] sérialisation des données

Modèle

Donner à toutes les entrées d’une base la même structure c’est mettre en place un modèle. Un modèle peut être instancié, c’est à dire reproduit en héritant des mêmes champs, des mêmes métadonnées qui vont permettre d’exploiter massivement le contenu d’une base ainsi organisée.

[[20200707113753]] instance informatique

Relation

Les données n’ont de sens que reliées et pour se faire il faut mettre en place des fonctions relationnelles au niveau des métadonnées pour combiner les données, les faire entrer dans le système d’information.

[[20200625172823]] théorie des graphes

Ce travail théorique est guidé par le document modèle conceptuel de données, soit une modélisation théorique des métadonnées. Il nécessite notamment la mise en place des clés afin que chaque objet de la base de donnée soit identifié et puisse être mis en relation avec d’autres.

Clés

On appelle clé primaire l’identifiant unique d’un objet. Il devient clé étrangère dès lors qu’il est appelé hors de son modèle d’origine. Ainsi l’identifiant unique (clé primaire) d’utilisateur devient clé étrangère lorsqu’il est référencé dans le modèle des adresses pour indiquer que tel utilisateur réside à telle adresse.

[[20200622101202]] namespace, espace de nom

Recherche

Le parcours (browsing) d’une base de données relationnelle peut être effectué grâce au langage SQL (Structured Query Language), mais il existe d’autres langages comme SPARQL pour parcourir les éléments du web sémantique [[20200915084904]].

On appelle noSQL les bases de données non-relationnelles : elles possèdent un moteur propre afin d’optimiser la liaison de ces bases colossales.

[^1]: Wilfrid Niobet, Informatique documentaire et les bases de données, 2017

Liens 10
  • système d’information
  • la donnée
  • formulaires
  • métadonnées
  • fiche comme modèle de données
  • sérialisation des données
  • instance informatique
  • théorie des graphes
  • namespace, espace de nom
  • semantic web stack
Rétroliens 5
  • domaine des humanités numériques
  • HyperCard
  • semantic web stack
  • corps de texte balisé, sémantisé, interactif
  • zettelkasten, méthode documentaire

BEM, Bloc Element Modifier

id :20200715212459
dernière édition :
type :inscription
mots-clés :web, code
mode focus :

Le BEM (Bloc Element Modifier) est une convention de nommage des objets du DOM. Elle s’applique aux fichiers HTML. Cette convention permet de structurer la sélection des objets et donc l’affectation des méthodes (CSS et/ JavaScript).

[[20200704160828]] DOM, document objet model [[20200704152459]] css cascading style sheets [[20200704153246]] javascript langage de programmation

Ci-dessous on trouve deux codelets : un extrait de HTML avec la convention de nommage BEM et un extrait de SCSS (langage compilé en CSS).

<div class="btns-content">
    <button class="btns-content__btn"></button>
    <button class="btns-content__btn btns-content__btn--big"></button>
    <button class="btns-content__btn"></button>
</div>
.btns-content {
    backgound-color: red;

    &__btn {
        width: 50px;
        border: none;
        backgound-color: gray;
        color: black;

            &--big {
                width: 100px;
            }

        &:hover {
            backgound-color: black;
            color: white;
        }
    }
}

Dans l’objet HTML btns-content__btn--big on distingue successivement trois chaînes :

  1. le Bloc : btns-content
  2. l’Element (précédé des deux underscores) : btn
  3. le Modificateur (précédé des deux tirets) : big

Ce dernier est un duplicata de l’Element, mais soumis à des règles de style différentes. L’Element est quant à lui soumis au Bloc en tant que son enfant. Cette relation de parenté vient du fait que l’Element est dépendant du Bloc qui lui est autosuffisant : le Bloc a un intérêt à être multiplié dans la page contrairement à ses enfants qui ne sont inscrits que pour lui apporter du contenu.

Ce principe d’autosuffisance renvoie directement au concept d’instance : objet informatique héritant de méthodes et attributs et destiné à être instancié, reproduit. Ainsi, le BEM fait des objets du DOM un véritable espace orienté objet. C’est pour cela qu’on parle également de OOCSS (Object Oriented CSS).

[[20200707113753]] instance informatique

Liens 4
  • DOM, document objet model
  • CSS, Cascading Style Sheets
  • javascript langage de programmation
  • instance informatique
Rétroliens 1
  • DOM, document objet model

bibliothéconomie

id :20200724150507
dernière édition :
type :architecture
mots-clés :scienceinformation
mode focus :

C’est l'ensemble des techniques de gestion et d'organisation des bibliothèques. On par le plus souvent de « science des bibliothèques »

« C’est parce qu’il prend une place dans une système documentaire que l’entité devient un document »[^1]

[[20200708172120]] document [[20200719212204]] espace

L’espace de la bibliothèque

La bibliothèque est un forum, une place publique de partage d’« entités humaines », de documents. C’est un espace complexe par la masse d’information mobilisée. On le divise en deux parties[^2] :

  • front-office : espace stable et ouvert pour les usagers ;
  • back-office : espace évolutif et contrôlé pour la gestion des contenus.

Des médiateurs assurent le passage des documents d’un côté à l’autre

Maillage

Le système bibliothéconomique est un maillage

  • interne : classement, indexation et stockage des documents ;
  • externe : collaboration avec les autres bibliothèques et institutions du domaine.

[^1]: Jean-Michel Salaün, Vu, lu, su. Les architectes de l’information face au monopole du web, 2012 [^2]: référence aux pratiques de programmation, voir la fiche [[20200724170202]] strates de services

Liens 3
  • document
  • espace
  • strates services

bibliothèque logicielle

id :20210417145938
dernière édition :
type :programmation
mode focus :

Les bibliothèques (code library, parfois traduit par librairies de code) sont des ensembles de structures de contrôle [[20200701214359]] réutilisables par les développeurs dans leur code source. Ils incluent le(s) fichier(s) dans leur arborescence et peuvent ainsi profiter d’une code déjà écrit, prescrivant certains processus dans un domaine d’usage défini « plutôt que de réinventer la roue à chaque programme »[^1].

Par exemple, les bibliothèques suivantes prescrivent des processus dans les domaines cités :

  • VisJs pour la création de graphes
  • BeautifulSoup4 pour le web scraping

Les bibliothèques sont en général open source [[20200710204125]] et instaurent une « économie de l’écriture »[^1] du code source, un échange continu et collaboratif entre les développeurs.

[[20210326162804]] communauté de développement

Conception

Les bibliothèques disposent des fonctions et classes généralistes dans un domaine particulier. Elles doivent reposer sur une interface de programmation [[20200701221037]] claire et sont accessibles aux développeurs grâce à leur documentation [[20210118161126]] dédiée.

[^1]: Samuel Goyet, De briques et de blocs. La fonction éditoriale des interfaces de programmation (API) web : entre science combinatoire et industrie du texte, 2017

Liens 5
  • structures de contrôle
  • logiciel libre et logiciel open source
  • communauté de développement
  • API, interface de programmation
  • documentation logicielle
Rétroliens 7
  • chaîne d’édition du code
  • dépendances logicielles
  • empaqueter (bundle) le code
  • framework ou cadriciel
  • gestionnaire de dépendances
  • structure logicielle
  • web scraping

boîte à outils programmable

id :20210303174716
dernière édition :
type :processus
mots-clés :code
mode focus :

Les boîtes à outils (ou toolkit) sont des outils de développement permettant d’automatiser certaines tâches au sein de l’arborescence. Il s’agit d’opérations systématiques et massives sur un ensemble de fichiers. Soient qu’ils sont issus du même répertoire et/ou avec une extension définie. Ils sont alors pris dans un traitement programmé dans différents tuyaux (pipes).

Plusieurs opérations peuvent être exécutées dans ces tuyaux. Nous distinguons :

Cas

Avec des outils comme Gulp et Grunt, on peut par exemple pour tous les fichiers .png (images) contenus dans le répertoire assets/img définir une taille et un niveau de compression pour les transpiler en .jpg (images compressées). On peut faire passer ces mêmes fichiers dans un autre tuyaux pour les renommer, changer leur emplacement. De la même manière on peut transpiler une série de fichiers CoffeeScript en fichiers JavaScript que l’on vient ensuite minifier.

L’outil Webpack est quant à lui un outil de « paquetage » (bundle). Il permet d’assembler tous les contenus (bibliothèques, scripts, images, typographies, données…) d’une application web en un unique fichier bundle.js à relier à la page web.

Liens 3
  • transpiler ou compiler du code
  • minifier le code
  • empaqueter (bundle) le code
Rétroliens 3
  • chaîne d’édition du code
  • EDI, environnement de développement intégré
  • environnement de développement

brutalist web design

id :20200710094139
dernière édition :
type :processus
mots-clés :web, design
mode focus :

[[20200515185607]] le design

Traduction du site brutalist-web.design qui présente les différentes caractéristiques du brutalist web design, design minimaliste de site web.

Voici une liste de site du genre : https://brutalistwebsites.com/

Le premier et principal objectif de ce type de design et de centrer l’attention sur l’utilisateur.

Lisibilité du contenu

Par défaut, un site web qui emploi du HTML valide et n’a pas de style personnalisé sera lisible sur tous les écrans et appareils. Seule une mauvaise conception peut rendre le contenu moins lisible.

Guider l’interaction

Un site web est un document hypertexte qui permet deux formes principales d’interaction : la navigation d’un lien vers un autre endroit et la soumission d’informations à un serveur. Ces fonctions sont assurées, respectivement, par des hyperliens et des boutons. Bien que JavaScript permette à n’importe quel élément de répondre à un clic, les zones cliquables d’une page qui ne sont pas manifestement des hyperliens ou des boutons peuvent dérouter le visiteur.

Design des interrupteurs

Un hyperlien n’a pas d’analogue dans le monde réel. Depuis l’aube du web, la convention veut qu’un hyperlien utilise un soulignement pour révéler son existence (ce qui est une merveilleuse solution, puisque le soulignement n’a pas sa place dans les compositions papier modernes).

Les boutons rendus dans un navigateur doivent ressembler aux boutons rendus sur le système d’exploitation de l’ordinateur qui exécute ledit navigateur.

Le bouton retour fonctionne

Tous les navigateurs ont un bouton intégré appelé « bouton retour ». Ce bouton est une forme d’« annulation », qui ramène l’utilisateur à l’endroit où il se trouvait avant son dernier clic de navigation. Cette acte doit être possible à tout instant et sous cette forme.

Un site se lit en scrollant

Un site web n’est ni un livre ni un magazine. Parce qu’il est visualisé dans un navigateur, les utilisateurs peuvent faire défiler la fenêtre du navigateur pour lire un contenu qui ne peut pas tenir sur un seul écran. Il faut respecter le rythme du visiteur et non le contraindre avec du JavaScript.

Les décorations, si besoin

Un site web n’est ni une application ni un jeu vidéo. Il est destiné au contenu et à l’internaute.

La performance est une fonctionnalité

Les sites web ne sont pas physiques comme un livre ou un magazine. Leur contenu doit être téléchargé sur un réseau informatique, puis rendu dans un navigateur web. Cela prend du temps et de l’énergie.

Liens 1
  • le design
Rétroliens 1
  • site web lowtech

callback et promesses JavaScript

id :20200705083336
dernière édition :
type :programmation
mots-clés :code
mode focus :

[[20201224102746]] fonctions

Les fonctions sont parfois pourvues d’un return, un renvoi. Une fois les opérations terminées au sein de la fonction, une valeur est renvoyée à l’extérieur de la fonction. Il est aussi possible que le renvoi doit se faire vers une autre fonction, sans sortir d’un processus asynchrone.

[[20210221130228]] comportement logiciel

Le callback (rétroaction) est une fonction intégrée dans une autre qui va prendre la suite de l’opération, sa continuité. Elle peut être passée en paramètre de la fonction comme ci-dessous :

function faireQlqChose(value, successCallback, errorCallback){
	// traitement

 if(isOk) {
     successCallback(newValue);
 } else {
     errorCallback(value)
 }
}

function successCallback() {
	// opération en cas de réussite
}

function errorCallback() {
	// opération en cas d'échec
}

C’est une méthode peu souple, intellectuellement très exigeante tant elle peut devenir abstraite par les multiples mises en abîme. Elles est aussi obsolète. Désormais, le JavaScript intègre l’objet Promises (promesses). Elles consiste à un renvoi externe à la fonction, mais sans casser le processus asynchrone, comme ci-dessous :

[[20200704153246]] javascript langage de programmation

function faireQlqChose(value){
  return new Promise((successCallback, failureCallback) => {
    // traitement
    if (isOk) {
      successCallback(newValue);
    } else {
      errorCallback(value);
    }
  })
}

faireQlqChose()
	.then(function(successValue) {
    // première opération en cas de réussite
	})
	.then(function(successValue) {
    // seconde opération en cas de réussite
	})
	.catch(function(failureValue) {
    // opération en cas d'échec
	})

Lutter contre le callbackhell, la sur-incrémentation : http://callbackhell.com/

Liens 3
  • fonctions
  • comportement logiciel
  • javascript langage de programmation
Rétroliens 2
  • AJAX protocole de requêtes asynchrones
  • javascript langage de programmation

carnet de programmation

id :20201222132128
dernière édition :
type :architecture
mots-clés :code
mode focus :

[[20210115090700]] architexte

Comme les éditeurs de texte, les notebook permettent d'inscrire du code, de le commenter, mais avec en plus la possibilité d'un rendu visuel instantané des instructions. Il est ainsi plus facile pour le développeur d’expliquer sa démarche.

Exemples de notebook :

  • Codepen
  • Jupyter
  • Observable

Ce sont des « carnet numérique programmable »[^1] permettant de mettre en place graphiquement un environnement de développement en répartissant visuellement (sections) des variables, des fonctions, des commentaires de code, mais avec en plus un rendu régulier de l'état du programme (message de la console ou rendu graphique). Ce sont autant d'instructions (par le code vers la machine, par les commentaires vers l'utilisateur) qui créent une médiation interactive très complète entre le développeur et le lecteur du code source pour donner un « essai computationnel », un « document-machine »[^1].

« Le notebook facilite la documentation de certaines méthodologies, en particulier quantitatives. Son pouvoir authentificateur réside dans son caractère dynamique : il permet par exemple de faire varier un paramètre dans un dispositif expérimental pour modifier les graphiques qui en découlent, voire d’éprouver tout un processus en remplaçant les données initiales par d’autres. Ce faisant, il vise une recherche reproductible, réplicable, robuste et généralisable. »[^1]

La modification (locale) d'un artefact numérique dans l'interface modifie le comportement final du programme, mais aussi tous les rendus intermédiaires, tout ce qui permet à l'utilisateur d'appréhender le fonctionnement du programme. Il peut modifier le code sans incidence sur l’expérience des autres utilisateurs juste pour enrichir la sienne et ainsi pouvoir reproduire tout ou partie du programme. On a là plus qu'une lecture du code, mais une véritable étude d'un programme avec la possibilité de le réutiliser.

[[20200710204125]] logiciel libre et logiciel open source

[^1]: Arthur Perret, Fonction documentaire de preuve et données numériques, 2020

Liens 2
  • architexte
  • logiciel libre et logiciel open source
Rétroliens 1
  • programmation lettrée

cart sorting, outil UX Design

id :20200501120411
dernière édition :
type :processus
mots-clés :design

Outil d'UX Design : le cart sorting

L'objectif est d'architecturer un système d'information en triant des contenus avec différents potentiels utilisateurs pour comprendre leur logique et imaginer une réponse adéquate.

Avec des petites cartes de papier (format carte à jouer), une table et quelques stylos on va proposer les étapes suivantes aux sujets de l'expérience :

  1. Chaque sujet se voit expliqué le principe de l'expérience ainsi que celui de la palteforme pour laquelle ils sont étudiés ;
  2. Chaque sujet reçoit 5 cartes qu'il complète avec des mots évoquant des contenus à mettre en place sur le site pour répondre au besoin évoqué précédemment ;
  3. Une fois que tout le monde a complété ses cartes, elles sont mises en commun et disposées afin que tout le monde puisse les voir ;
  4. On regroupes les cartes évoquant un contenu proche en une pile à laquelle on rejoute une carte faisant office de couverture et où on inscrit le nom souligné de la pile en fonction de son contenu : la pile devient un concept ;
  5. Les concepts sont déplacés les uns à côté des autres pour former une ligne. On va déplier la pile verticalement : les cartes sous la couverture vont être alignées de bas en haut. Si un concept se retrouve plus vide que les autres, on peut le compléter à ce moment-là : on peut alors considérer les fonctionnalités du site et éventuellement changer les cartes de place, sans jamais déplacer les concepts ;
  6. Une fois l’analyse terminée, on peut enfin replier les concepts en pile.

Démo : https://www.youtube.com/watch?v=FTzHeYPB9c8

centralisation

id :20200909184744
dernière édition :
type :processus
mots-clés :informatique
mode focus :

La centralisation est un bras de fer politique. Il s’oppose radicalement à la culture web du pair à pair (« peer to peer »), celle de l’échange de contenu entre les usagers, à la fois créateurs et consommateurs, capables d’exploiter pleinement leurs outils : ordinateur et ses logiciels, le Web. Elle s’oppose à la culture du libre.

[[20200705112816]] production de contenu web [[20200710204125]] logiciel libre et logiciel open source

Nous sommes dans une étape de récupération du Web par les organisations privées qui voient dans la simplification des interfaces et la récolte de données personnelles des intérêts économiques. Ils centralisent les données, les usages, tous cachés derrière des interfaces opaques pour les utilisateurs, limitées pour les développeurs.

Alors que l’informatique venait apporter à chacun la possibilité de s’approprier pleinement un outil de travail et de création complexe, les utilisateurs sont invités à investir dans écosystèmes simplifiant à l’extrême leur rapport à leur machine.

« C’est le modèle de la vitesse, du gain de temps. Dans cette optique, certains peuvent ainsi écrire que ‹ Linux est gratuit si votre temps n’a pas de valeur › »[^1]

Linux a beau être gratuit, il a un coût d’entrée très élevé.

Mouvements de perte

  • les logiciels sont bornés dans des environnements propriétaires, fermés et deviennent des applications perpétuellement mise à jour et pour lesquels il faut parfois payer un abonnement ;

[[20200909183033]] application

  • la capacité de création et recherche de l’ordinateur est externalisée dans le cloud, dépossédant l’utilisateur de son outil pour l’endetter dans des abonnements aux services de machines virtuelles.

[[20200714155845]] cloud

« Le cloud renvoie directement au Minitel, qui ne comprenait ni stockage de données ni processeur de calcul »[^1]

« Si le cloud computing incarne la concentration des capitaux et forces de production, le home computing est du côté de l’interopérabilité, qui permet à des machines diverses donc différentes de fonctionner ensemble »[^1]

On nous prend nos outils de production et on paie pour les utiliser. Les gens vont le faire parce que le service sera plus performant, sécurisé.

Perte de la capacité à créer

« Tout comme l’application nous retire la possibilité de créer des liens hypertextes, le cloud détruit progressivement la notion de fichier »[^1]

L’utilisateur perd la capacité de créer du lien entre les fichiers, mais aussi de créer des fichiers. Nous perdons peu à peu en littératie, ne comprenons plus nos outils.

[[20200707175829]] littératie numérique

[^1]: Anthony Masure, Le design des programmes, 2014

Liens 5
  • production de contenu web
  • logiciel libre et logiciel open source
  • application
  • cloud
  • littératie numérique

chaîne d’édition du code

id :20210314113151
dernière édition :
type :processus
mots-clés :informatique
mode focus :

[[20200707085937]] édition numérique

Le code source [[20200906135907]] est à la fois une interface permettant de comprendre le fonctionnement d’un programme pour un humain et un suite d’instructions pour la machine. Cette dernière n’a pas besoin d’un code lisible et soigné, mais simplement fonctionnel. Elle exécutera même plus efficacement un code moins verbeux, moins construit et avec au mieux un unique fichier minifié [[20210218193747]]. Les humains ont au contraire besoin de travailler sur un espace et un temps d’exécution ; sur une série de fichiers avec des jalons réguliers dans le code source pour attester de son bon fonctionnement et gérer sa complexité [[20210313105330]].

Pour réunir ces deux matériaux en un espace de travail, les développeurs utilisent des outils programmables [[20210303174716]]. La programmation lettrée [[20200914211839]] tente de fusionner ces deux approches. Elle invite les développeurs à inscrire un code très verbeux qui va ensuite être traité par un programme qui va séparer le fonctionnel de l’explicatif pour optimiser (rendre plus efficient) un rendu pour les humains et un autre pour les machines.

Lorsque l’on utilise une bibliothèque [[20210417145938]], on pourra souvent trouver dans le dépôt une version (commentée, avec messages d’erreur) destinée à être lue par les développeurs et une version empaquetée [[20210314114007]] (dite « production ») destinée à l’exécution.

Liens 8
  • édition numérique
  • code source
  • minifier le code
  • complexité logicielle
  • boîte à outils programmable
  • programmation lettrée
  • bibliothèque logicielle
  • empaqueter (bundle) le code
Rétroliens 1
  • empaqueter (bundle) le code

chiffrement

id :20210418214149
dernière édition :
type :inscription
mode focus :

Le chiffrement permet de verrouiller l’accès à des informations (chaînes de caractère, voire des fichiers entiers), d’authentifier une transaction (intégrité, authenticité). Son application varie selon les algorithmes.

Le chiffrement n’est pas le codage (en base 64, par exemple) qui consiste simplement à transformer une chaîne pour un système de lecture.

Le chiffrement est un procédé de cryptographie, de protection de l’information.

Déchiffrement

Le déchiffrement consiste à retrouver le contenu original (son accès) d’un document chiffré. Il est possible d’ajouter du sel lors du chiffrement pour augmenter le temps de déchiffrement.

Il est possible d’inverser le processus de chiffrement grâce à une clé, selon deux processus distincts.

  • chiffrement symétrique, la même clé permet de chiffrer et déchiffrer l’information ;
  • chiffrement asynchrone, on utilise une première clé publique (lisible par son utilisateur) pour chiffrer l’information et une seconde (appliquée par le service cible) pour la déchiffrer.

Le décryptage consiste à retrouver le contenu original du document sans utiliser la clé de déchiffrement. Il n’est pas possible de « crypter » un document étant donné qu’il est nécessaire de créer une clé pour chiffrer un document (sans quoi on ne pourrait en théorie par le déchiffrer).

Rétroliens 1
  • API, interface de programmation

client serveur

id :20210112090725
dernière édition :
type :architecture
mots-clés :informatique
mode focus :

Le mode de transaction « client-serveur » permet de distinguer ces deux machines selon leur rôle dans un échange de données, tel que :

  • client : envoie des requêtes en attente d’une réponse ;
  • serveur : attend les requêtes des clients et renvoie une réponse au client.

[[20210405160832]] requêtes

La seconde machine est en générale puissante et peut faire appel à d’autres serveurs (en prenant la position de client le cas échéant) pour exécuter des tâches complexes. Ce que ce qu’on désigne par client est souvent un ordinateur personnel, bien moins puissant.

C’est aussi une distinction d’environnement d’exécution [[20201224140951]]. Les serveurs web de manière générale possèdent les environnements pour exécuter les langages PHP, Python, JavaScript ou Ruby, mais les clients (navigateurs web) ne peuvent interpréter que le HTML, le CSS et le JavaScript. Ces trois composants peuvent ainsi être générés depuis le serveur avec le langage (et son runtime) choisi.

Liens 2
  • requête
  • runtime ou environnement d’exécution
Rétroliens 5
  • architecture logiciel MVC
  • espace numérique
  • minifier le code
  • requête
  • site statique

cloud

id :20200714155845
dernière édition :
type :undefined
mots-clés :web, informatique
mode focus :

Service

Pour les particuliers, c’est un service en ligne de stockage de fichier, mais pour les entreprises, le cloud computing correspond à un ensemble de services proposés en SAAS (Software As A Service) par des entreprises comme Amazone, Microsoft et Google selon trois grandes familles :

  • Stockage d’objet
  • Machines virtuelles
  • Cloud privé

La force du cloud est sa flexibilité. Contrairement à un hébergement classique où l’on paie au mois, à l’année une infrastructure pour un niveau de prise en charge (stockage, bande passante, puissance de calcul et puissance de charge), le cloud permet de rapidement monter une infrastructure payée à la minute (voire à la seconde) d’utilisation et dont il est possible de baisser ou monter la charge selon les besoins, en fonction des moments de la journée.

Maintenance

On différencie la disponibilité et la durabilité des données. Ce sont deux taux (estimés entre 95% et 99,99…% ) traitant respectivement de la possibilité d’accéder aux données et celle de les conserver. En effet, lors d’un transfert, d’une distribution, il est possible qu’il y est des interférences et que des données soient perdues. Il est possible d’accéder à l’objet, mais son intégrité n’a pas été respectée.

[[20200509195652]] la donnée

Liens 1
  • la donnée
Rétroliens 1
  • centralisation

code source

id :20200906135907
dernière édition :
type :inscription
mots-clés :code, informatique
mode focus :

Aux débuts de l’informatique, le terme « code » désigne le « code machine », un langage de très bas niveau [[20200718172257]]. C’est de ce dernier dont il est question dans ce document.

Le terme « code » suggère d’emblée que ce qu’il désigne est une inscription prise dans un processus d’exécution, de transformation de l’information dans un flux. Les informations transmises par le code source ne sont que pures instructions ; il ne sert qu’à faire fonctionner, même si finalement il n’aboutis pas.

« Qu'il puisse ou non s'exécuter, le code peut, doit être, transformé en quelque chose de significatif »[^3]

Vide de sens

Le code machine est un système de symboles élémentaires (dont les unités ne peuvent être décomposées et sont indépendantes les unes des autres, dans un système discret [[20210405121526]]) et arbitraires (ils sont dépourvues de signification intrinsèque, ne donnent pas d’indice sur ce qu’ils codent).

« Programmer c’est manipuler aveuglement des symboles »[^2]

Le 0 et le 1 du binaire sont ainsi vides de sens. Ce sont des abstractions [[20210412165919]] : ils remplacent des valeurs dans le simple but de les rendre calculable. C’est possible car le code doit être sans ambiguïté (chaque symbole a une seule signification, c’est la monosémie) et peut être manipulé mécaniquement, par le calcul. Le code est « pure puissance de manipulation »[^1] et le calcul une « représentation graphique de l’activité de la machine »[^3].

[[20210116135423]] inscription computationnelle [[20200905210104]] grammatisation

« Le numérique ne dit pas ce qu’il calcule et c’est pourquoi on peut calculer n’importe quoi. »[^1]. Dès lors que l’on peut coder quelque chose, on peut l’exécuter ; la difficulté est donc de savoir ce que l’on peut coder et comment, de faire une herméneutique du code : interpréter son sens caché et le contenu qu’il produit. Il faut « articuler l’arbitraire du code et l’arbitraire du signe »[^1]. Selon Bruno Bahimont, le code est autothétique, « se manipule indépendamment de ce qu’il signifie et indépendamment de la matière sur laquelle il s’exécute »[^1]. Une structure de contrôle n’a pas besoin de renvoyer à un élément réel pour fonctionner efficacement.

Le code source (et sa compréhension, lisibilité) va être stabilisé grâce à des langages formels et paradigmes de programmation permettant de faire une ingénierie de cet outil. Aussi, on empruntera le nom d’éléments réels, le jargon de métiers pour suggérer le composition du système aux lecteurs.

Code fétiche

« La grande difficulté de la raison computationnelle c’est que le calcul ne se voit pas. Le calcul s’exécute. »[^1]

Si l’on remonte dans les couches logicielles, les langages de programmation alphanumériques nous permettent d’écrire un texte compréhensible avec un peu de contexte pour qui lit l’anglais. On peut ainsi lire le code, constater le résultat de l’opération, mais pas assister à la compilation, ni au traitement. C’est une boîte noire. On peut tout au plus recevoir certaines alertes d’une console quand l’environnement d’exécution [[20201224140951]] le permet.

Ainsi, on ne peut réduire « l’exécution à l’inscription », le « technique au sémiotique »[^4] et l’instruction au résultat. À force de donner trop d’importance à l’écrit en informatique, on finit par :

[[20210115090700]] architexte

« convertir l’action computationnelle en langage, le temps en espace, l’événement en localisation, le technique en sémiotique »[^4]

« on ne peut pas exécuter de code source : il doit être compilé ou interprété […] le code source ne devient source qu'après coup. Le code source est plus précisément une ressource plutôt qu’une source. »[^3]

[[20210121192437]] matérialité d’un programme

Le code n’est la source d’aucune action avant d’avoir été compilé [[20200907090751]] (pour être exécuté) et identifié comme source[^3]. L’idée de code source est une idée de traçage, de sourcing, avant d’être une question d’écriture.

« Il n’y pas de translation parfaite entre une exécution (computationnelle) et une inscription (textuelle), entre l’acte et le langage, entre le processus temporel qu’est l’exécution du programme et l’espace du code »[^4]

Échelle

Le code est un outil général. Le vide de sens qu’il incarne, ordonne et cette non ambiguïté permettent de formuler une quasi infinité d’algorithmes, de système logiques et donc de développer autant de formes, de fonctionnalités. Les limites sont matérielles et intellectuelles et sans cesse repoussées. Les machines sont plus puissantes et les techniciens créer des interfaces pour simplifier le développement, les langages de programmation.

Les langages de programmation [[20200704135046]] sont des outils particuliers. Ils viennent se superposer à cette immensité créative qu’est le code machine et l’ouvre pour un plus grand nombre de personnes grâce au travail technique de certaines. On sacrifie la généralité pour une plus grande efficacité.

[^1]: Bruno Bachimont, Rhétorique de l’intelligibilité, vers des humanités du numérique, 2020 [^2]: Bret Victor, Drawing Dynamic Visualizations, 2015 [^3]: Wendy Hui Kyong Chun, On ‹Sourcery›, or Code as Fetish, 2008 [^4]: Cléo Collomb, Faire compter les machines, 2017

Liens 10
  • niveaux langages de programmation
  • discret / continu
  • abstraction
  • inscription computationnelle
  • grammatisation
  • runtime ou environnement d’exécution
  • architexte
  • matérialité d’un programme
  • transpiler ou compiler du code
  • langages de programmation
Rétroliens 8
  • notions d’algorithmique
  • architexte
  • chaîne d’édition du code
  • architecture de code hypertextuelle
  • niveaux langages de programmation
  • numérisation
  • programmation lettrée
  • structure logicielle

coloration syntaxique

id :20200918100545
dernière édition :
type :inscription
mots-clés :code
mode focus :

On retrouve la coloration syntaxique dans tous les logiciels d’édition et de lecture de texte. Tous les fichiers d’où provient le contenu (sa forme canonique) respectent en effet une convention, le plus souvent du XML (et ses variantes). Ainsi ce qui s’affiche est la forme interprétée de ce code source, soit le résultat d’un parsing, d’une analyse syntaxique.

[[20200930214400]] syntaxe de code [[20200606201922]] qualités de l'écriture numérique

Logiciel d’édition de texte

Avec les logiciels d’édition de texte, la lecture des fichiers de texte brut est souvent très uniforme. Tous les caractères ont la même typographie, même taille, même graisse et couvent la même chasse (largeur du caractère) avec les typographies monospace. C’est la couleur des caractère qui va varier souvent : certains caractères, mots ou chaînes vont être automatiquement colorés en fonction du langage indiqué et de ses mots-clés (if, var, function, mais aussi le marqueur # en markdown ou $ en PHP).

Des logiciels comme Zettlr vont aller plus loin dans la coloration syntaxique, allant bien plus loin dans la transformation des caractères, en taille, en graisse.

[[20200629161610]] texte brut

Logiciel de traitement de texte

Avec les logiciels de traitement de texte, la coloration syntaxique est plus abstraite. Ces logiciels partent bien d’un fichier de code source pour afficher le texte, bien que celui-ci soit largement enfouis et illisible.

[[20200707161136]] problème des logiciels de traitement de texte

Les styles appliqués au texte s’étendent pourtant en fonction d’un balisage, suggéré par l’enchaînement des paragraphes (prêts à l’impression) vont largement varier en taille, placement et couleur.

Liens 4
  • syntaxe de code
  • qualités de l’écriture numérique
  • texte brut
  • problème des logiciels de traitement de texte

commentaire de code

id :20201220084534
dernière édition :
type :programmation
mots-clés :code
mode focus :

C’est une forme d’annotation du code source. La syntaxe de commentaire varie selon les langages, mais il en existe en général deux types : les commentaires sur une ligne et les blocs de commentaire.

Le commentaire de code à différents usages :

  • désactiver une partie du processus : les instructions commentées ne sont plus compilées/interprétés et le programmeur peut ainsi tester son programme en faisant interrupteur sur les structures de contrôle ;
  • préciser une instruction : avec un commentaire sur une ou plusieurs lignes, le programmeur peut expliciter un flux de contrôle long ou peu explicite ;
  • documenter le code : des logiciels comme JSDoc ou phpDocumentor permettent de générer une documentation des différentes fonctions et classes après que le programmeur est formaté ses blocs de commentaire.

[[20200701214359]] structures de contrôle

activeFunction();
// inactiveFunction();

/**
Inactive code :
var inactiveVar = true;
inactiveFunction();
**/

activeFunction();

Documentation dans le code

Le bloc de commentaire (en-tête) suivant signifie que la fonction suivante est un constructeur nécessitant les paramètres title, authors et nbPage, respectivement une chaîne de caractère, un tableau et un nombre entier. On détaille également ce que représentent ces variables.

/**
 * Represents a book.
 * @constructor
 * @param {string} title - The title of the book.
 * @param {array} authors - The author of the book.
 * @param {int} nbPage - Number of page.
 */
function Book(title, authors, nbPage) {…}

Il est ainsi possible de documenter exhaustivement une API ou tout autre programme qui nécessite pour le reutilisateur une compréhension complète. Toutefois ce genre de documentation ne rend pas compte de la structure globale du programme, les unités sont généralement peu détaillés et le tout n’est que texte, sans représentation graphique. Il faut donc la compléter.

Liens 1
  • structures de contrôle
Rétroliens 2
  • documentation logicielle
  • programmation lettrée

communauté de développement

id :20210326162804
dernière édition :
type :processus
mots-clés :informatique
mode focus :

Les projets open source [[20200710204125]] sont ouverts et continus dans le sens où tout le monde peut intervenir dans le cycle de développement [[20210306102014]] (par l’échange ou directement le code) et que de nouvelles fonctionnalités peuvent toujours être apportées aux logiciels.

L’échange continu du temps et des compétences de chacun, le partage de services (espaces de travail) gratuits, fait la force de ce modèle de production logicielle dont se sont emparés des milliers de personnes. Ils travaillent selon différents principes développés dans sa thèse par Flore Barcellini[^1].

Communauté

Une communauté se bâtie (elle-même, par elle-même) sur des règles (valeurs communes, gouvernance) et des objectifs communs. Ses membres partagent un sentiment d’appartenance (qu’ils basent sur des traditions et/ou une relation affective), un espace, des ressources, un langage (jargon) qui regroupent et délimitent la communauté.

« le jargon se rapproche de qui est décrit dans les collectifs de travail comme un langage opératif. […] Ce langage opératif a souvent un lexique et une grammaire plus restreints que le langage courant, il permet ainsi de minimiser le coût des interactions pour échanger des informations, et éventuellement se coordonner, contrôler la pertinence des actions de soi et des autres »[^1] (p.34)

L’intégration d’une personne dans la communauté se fait par cooptation, suite à sa participation. On intègre une personne selon la représentation que les membres de la communauté ont d’elle. Ainsi, chaque membre à une représentation de ses pairs. Les communautés de développeurs sont particulièrement sensibles à la culture des hackers [[20210323194802]] et cette représentation se base largement sur la compétence de la personne.

Compétence

Un participant doit être un minimum polyvalent pour pouvoir satisfaire les besoins épistémiques (apprendre, produire et échanger des connaissances au sein et en dehors du groupe) d’un projet. Il s’agit d’un code source, mais aussi d’une équipe reposant sur un réseau [[20210414220755]]. Flore Barcellini nous permet de dresser l’arborescence de compétences suivante :

  • technique : être un technicien expérimenté ;
    • conception : langages et méthodes de programmation ;
    • usage : méthodes et gestion de la charge de travail, évaluation du produit ;
  • discursif : être adaptée à l’interaction en groupe de co-conception ;
    • clarification (synchronisation cognitive) : définition des propriétés de l’objet en cours de conception ou de sa spécification ;
    • coordination (synchronisation opératoire) : évolution et le maintien dynamique d’un contexte de connaissances, d’une représentation de la situation.

« Le couplage renvoie à la nature et à l’intensité des interactions nécessaires pour pouvoir réaliser une tâche […] la conception collaborative est considérée comme une tâche fortement couplée »[^1] (p.46)

Conception

La conception consiste à « clarifier des spécifications »[^1] (p.50) et faire le suivit de la résolution pour maintenir de la cohérence dans les échanges. Pour résoudre formaliser des problèmes, on peut utiliser le modèle « QOC » pour « Questions Options Critères ».

Activité

Espaces

Les membres de ces communautés se partagent le travail principalement au travers de trois espaces :

  • espace de discussion : (forums en ligne, listes de diffusion) pour échanger sur les contributions, s'entraider ;
  • espace de documentation  : (site web) pour expliquer le fonctionnement et permettre de localiser les ressources (modules, bibliothèques, debug) ;
  • espace d’implémentation (et téléchargement) : (VCS en ligne) stockage du code source et jalonnement des versions du code source et des opérations de maintenance.

Rôles

On distingue plusieurs strates dans la communauté d’un logiciel libre :

  1. les utilisateurs : utilisation (et retours) du logiciel ;
  2. les développeurs : maintenance avec un niveau de modification variable du code source ;
  3. les administrateurs : les core developers, membres de la core team, chargé de la conception générale du logiciel.
flowchart

discussion
documentation
implémentation

utilisateurs -->|demande assistance| discussion
utilisateurs -->|installation, configuration| documentation
utilisateurs -->|téléchargement| implémentation

développeurs -->|spécification| discussion
développeurs -->|argumentation ?| documentation
développeurs -->|modification| implémentation

administrateurs -->|arbitrage| discussion
administrateurs -->|contrôle| documentation
administrateurs -->|contrôle| implémentation

Un rôle est un « phénomène émergeant de l’interaction […] tenu par un individu en fonction des activités qu’il met en œuvre »[^1] (p.54). Les participants peuvent se partager trois rôles distincts[^1] (p.57-59) :

  • médiateur (externe) : ils « traversent des frontières en transférant des informations et des pratiques ». Les frontières peuvent être organisationnelles ou techniques et en les dépassant il inclut les gens. [[20200716211301]]
  • leader (central) : « la position adoptée par une, ou plusieurs personnes, pour conduire un groupe ». Ça n'est pas un chef statutaire (manager), nommé par une institution, mais une personne « reconnu pour ses compétences par les autres membres du groupe ». Ils ont une autorité, mais aussi une influence.
  • expert (interne) : ce sont des « concepteurs d’exception », ils sont les plus habiles : ils mobilisent plus facilement leurs connaissances et disposent intuitivement un bon cadre de travail. Ainsi, ils accomplissent rapidement des tâches plus complexes. Ils ont tendance à devenir des leaders lors des « réunions de conception peu structurées ».

[^1]: Flore Barcellini, Conception de l’artefact, conception du collectif, 2018

Liens 5
  • logiciel libre et logiciel open source
  • cycle de développement logiciel
  • hacker
  • réseau
  • médiation numérique
Rétroliens 2
  • bibliothèque logicielle
  • travail gratuit, économie du web de plateforme

complexité logicielle

id :20210313105330
dernière édition :
type :processus
mode focus :

[[20200508093223]] travailler la complexité

La complexité ne vient pas du nombre, de la « multiplicité des composants, ni même la diversité de leurs interrelations »[^1], mais de « l’imprévisibilité potentielle (non calculable a priori) des comportements de ce système »[^1]. Elle peut aussi venir de l’approche de ce système, de « contraintes [devenues] instables : les représentations du problème et des solutions évoluent en permanence durant le processus »[^3].

[[20210221130228]] comportement logiciel

Décomposer

Devant un système possédant de nombreux composants (issus de l’architecture du logiciel [[20210221144451]]) on se retrouvera devant un système compliqué, (voire hypercompliqué [[20210114195936]]). Imaginons un logiciel composé de 200 programmes, contenant de 5 à 10 modules, avec pour chacun 10 à 30 structures de contrôle. Ce système est compliqué, mais nous avons aussi exprimé qu’il était décomposé, structuré. Ainsi, si les modules [[20210313113130]] sont suffisement stables (pas d’effet de bord [[20210109130837]] entre eux, pas d’imprevisiblité), un développeur pourra se concentrer sur quelques modules pour concevoir et inscrire ses structures de contrôle.

Sa charge cognitive est suffisement maîtrisée pour qu’il ne commette peu ou pas d’erreurs de programmation et qu’il puisse travailler efficacement.

« le programme devient plus compréhensible car il peut être résumé en quelques fonctionnalités clés – celle de chaque module – sans qu’il y ait besoin de rentrer dans le détail. L’{ interface }, c’est-à-dire les façons d’accéder au module et à son action, en ‹ […] révèle le moins possible sur son fonctionnement interne › »[^4] (p.103)

Au contraire, si les structures de contrôle ne sont pas intégrées dans une architecture, à la fois souple et robuste, les développeurs vont devoir passer plus de temps à analyser un problème devenu complexe. Ils vont tenter en premanence de prédire un comportement qui n’est pas intuitif, qui est influencé par un trop grand nombre de paramètres.

Ainsi, un programme fait d’un millier de composants suffisamment stabilisés pour qu’on puisse travailler avec une dizaine est moins lourd qu’un programme de vingt composants à assumer intégralement.

Effet

Cet effort d’architecture prend du temps et de l’espace mémoire. La complexité du projet va affecter le travail de développement dans le temps pour décomposer, isoler, résoudre, mais aussi dans l’espace pour inscrire (coder) cet effort et pouvoir le reproduire (relecture du code, documentation).

Cette configration de travail s’appelle l’adhocratie. C’est la « configuration d’organisation qui mobilise, dans un contexte d’environnements instables et complexes, des compétences pluridisciplinaires et transversales, pour mener à bien des missions précises »[^2]

[^1]: Serge Diebolt, Le petit lexique des termes de la complexité [^2]: Wikipédia, Adhocratie [^3]: Flore Barcellini, Conception de l’artefact, conception du collectif, 2008 [^4]: Samuel Goyet, De briques et de blocs. La fonction éditoriale des interfaces de programmation (API) web : entre science combinatoire et industrie du texte, 2017

Liens 6
  • travailler la complexité
  • comportement logiciel
  • structure logicielle
  • hyper
  • modularité logicielle
  • effet de bord
Rétroliens 6
  • abstraction
  • chaîne d’édition du code
  • architecture de code hypertextuelle
  • comportement logiciel
  • effet de bord
  • modularité logicielle

comportement logiciel

id :20210221130228
dernière édition :
type :processus
mots-clés :code
mode focus :

Les logiciels sont par nature récustifs. Ils sont capables de faire appel et de répéter leurs propres programmes automatiquement. L’imprévisiblité d’un comportement engendre de la complexité [[20210313105330]].

L’exécution d’un programme est diachronique (se prolonge, évolue ou se transforme dans le temps[^1]). Ce n’est pas un processus continue ou même linéaire. Des opérations sont interrompues ou bien sont exécutées en parallèle [[20200930183337]]. Elles peuvent être synchrones (se produisent en même temps, ne se succèdent pas[^1]), asynchrones (décalées dans le temps[^1])

[[20200704100343]] AJAX protocole de requêtes asynchrones

On distingue la chaîne temporelle durant l’exécution du logiciel et la chaîne temporelle des interactions de l’utilisateur. Ce dernier va lancer de nouvelles opérations en cliquant, en remplissant des formulaires.

[^1]: Serge Diebolt, Le petit lexique des termes de la complexité, 2011

Liens 3
  • complexité logicielle
  • flot de contrôle
  • AJAX protocole de requêtes asynchrones
Rétroliens 7
  • AJAX protocole de requêtes asynchrones
  • architecture logicielle
  • callback et promesses JavaScript
  • complexité logicielle
  • javascript langage de programmation
  • programme et programmation
  • UML

compréhension de l’API d’un logiciel

id :20210220101744
dernière édition :
type :processus
mots-clés :code
mode focus :

De manière générale, l’entrée dans la documentation d’un logiciel se fait par un quickstart. Ce guide de « départ rapide » permet d’obtenir rapidement une premier résultat, une base visuelle à importer dans son environnement. Elle est souvent accompagnée d’exemples élaborés par les développeurs. Ils proposent des réutilisations prêtes à être modifiées et extraites pour les intégrer dans un nouveau projet. L’utilisateur peut ainsi ignorer l’interface de programmation (API) [[20200701221037]] du logiciel.

Dans un deuxième temps, l’utilisateur est amené à utiliser son API. Il s’agit des fonctions principales pour personnaliser (plus ou moins profondément) l’utilisation qu’il a du logiciel.

Dans un dernier temps, l’utilisateur est invité à comprendre l’API. Ainsi, il peut proposer des modifications/extensions du logiciel dans une continuité.

Liens 1
  • API, interface de programmation
Rétroliens 1
  • documentation logicielle

configuration

id :20210418085915
dernière édition :
type :processus
mode focus :

La configuration détermine le comportement de la machine (le traitement et ce qui est traité) pour une exécution donnée.

« Si, à chaque étape [du calcul], le mouvement de la machine […] est complètement déterminé par la configuration, nous pouvons appeler cette machine une ‹ machine automatique › »[^1]

Il faut donc être capable de déterminer l’ensemble de leur configuration[^2] pour éviter des interventions humaines.

[^1]: Alan Turing, On Computable Numbers, with an Application to the Entscheidungsproblem, 1937 [^2]: Samuel Goyet, De briques et de blocs. La fonction éditoriale des interfaces de programmation (API) web : entre science combinatoire et industrie du texte, 2017

Rétroliens 2
  • inscription computationnelle
  • système combinatoire

contrat de lecture

id :20200724153738
dernière édition :
type :architecture
mots-clés :scienceinformation
mode focus :

C’est une théorie de Jean-Michel Salaün présentée dans son livre Vu, lu, su. Les architectes de l’information face au monopole du web (2012). Elle consiste en un triptyque de notions rendant compte d’un processus documentaire complet.

[[20200724173541]] processus documentaire

graph TD

vu[Vu : compréhension]
su[Su : sociabilité]
lu[Lu : lisibilité]

vu ---|médiation| su
su ---|contexte| lu
lu ---|mise en forme| vu

« Un document est une trace [Vu] permettant d’interpréter [Lu] un événement passé [Su] à partir d’un contrat de lecture ».

C’est autant le rapport entre un lecteur et un auteur que celui des individus vis-à-vis de la société. Un document digne de ce nom doit en effet être annoncé à une population pour qu’elle puisse connaître son existence et décider d’y accéder.

Liens 1
  • processus documentaire
Rétroliens 4
  • document
  • processualité éditoriale
  • texte
  • zettelkasten, méthode documentaire

corps de texte balisé, sémantisé, interactif

id :20200606213253
dernière édition :
type :inscription
mots-clés :scienceinformation, typographie
mode focus :

Con-texte

Avec l’écriture analogique, le sens des micro-structures du texte est suggéré par leur forme et leur contenu. On distingue un titre et une citation du corps de texte grâce à leur apparence particulière : grands caractères, exergue etc.. Leur attribuer ce sens change leur fonction de contexte, soit l’information qu’ils apportent au texte qui les entoure (sur le support), au document.

[[20200621083005]] la typographie comme interface [[20200815163702]] paradigme de l’imprimé

Dans le cadre l’écriture numérique, cette seule qualité graphique est contextuellement insuffisante. Le sens de ces micro-structures doit être explicite pour les humains, mais aussi pour les machines : il ne s’agit pas simplement d’afficher un titre, il s’agit de faire comprendre à la machine que c’est un titre et en conséquence de l’utiliser pour des usages dépassant son simple affichage et pour aller vers l’interaction documentaire.

« Ainsi, au lieu de considérer une chaîne de caractères comme un titre ou comme le nom d’un auteur et de l’exprimer comme tel, le format n’associe à cette chaîne de caractères qu’un style visuel défini par un type de caractère, une taille, etc »[^3]

« [La micro-structure du texte] était faite sur papier avec des codes graphiques (italique, guillemets, etc.) qui, aujourd’hui, n’ont plus aucun sens. Continuer de les utiliser et confondre le balisage sémantique avec le balisage graphique est un signe de profonde incompréhension de la pratique d’écriture. »[^1]

Interprétation

Par exemple pour un paragraphe balisé sémantiquement comme titre :

  • style graphique (formel) : grands caractères gras ;
  • interaction documentaire (structurelle) : référencement dans le sommaire, mise en place d’une ancre et marquage dynamique du niveau.

Dans le cas du HTML, les micro-structures du texte sont délimitées par des balises interprétées par des logiciels d’analyse syntaxique. Les balises suivantes permettent de reconnaître un titre d’un certain niveau (sémantique) :

<h1>Titre 1</h1>
<h2>Titre 2</h2>
...
<h6>Titre 6</h6>

Il y a aussi eu dans l’histoire ce ce langage des balises (désormais obsolètes) formels et non signifiantes.

<center>
Ce texte sera centré.
 	<p>Ainsi que ce paragraphe.</p>
</center>

Plasticité

Selon l’algorithme d’interprétation du fichier contenant les bases, le paragraphe balisé titre va être affecté graphiquement, mais aussi interactivement et changer de logiciel pourra modifier tout ou partie de ces affectations. C’est la plasticité de l’écriture numérique [[20200606201922]] dont le contenu est abstrait et systématiquement (re)interprété.

Changer de logiciel c’est aussi changer les modalités d’écriture et notre perception du sens, de la forme du texte.

[[20200815162225]] interfaces d’écriture

Parsing

Dans les pratiques de l’écriture numérique, une citation n’est pas une série de lignes, mais une base de données avec différents champs : auteur, titre, éditeur, date, etc.. Procéder ainsi c’est permettre à un algorithme de rassembler les références autrement que par le parsing, soit un découpage du texte pour le réinterpréter [[20200930214400]], le sémantiser. C’est là une pratique incertaine, mais nécessaire quand un travail de recherche sur le sens et l’expression n’a pas été abouti.

« les dynamiques actuelles s’articulent autour de l’introduction d’écritures possédant une sémantique formelle, c’est-à-dire permettant des calculs interprétatifs explicites plutôt que des calculs implicites encapsulés dans les logiciels traitant les données issues des écritures des utilisateurs »[^2]

[[20200623180525]] base de données

[^1]: Marcello V.R., Les chercheurs en SHS s’avent-ils écrire ?, 2018 [^2]: Michael E.S. et Marcello V.R., Pratiques de l’édition numérique, 2014 [^3]: Marcello V.R, Nicolas Sauret, Antoine Fauchier, Margot Mellet, Écrire les SHS en environnement numérique. L’éditeur de texte Stylo, 2020

Liens 6
  • la typographie comme interface
  • paradigme de l’imprimé
  • qualités de l’écriture numérique
  • interfaces d’écriture
  • syntaxe de code
  • base de données
Rétroliens 5
  • interfaces d’écriture
  • langages de balisage léger
  • langages de balisage
  • livre numérique
  • qualités de l’écriture numérique

CSS, Cascading Style Sheets

id :20200704152459
dernière édition :
type :programmation
mots-clés :web
mode focus :

Le CSS (Cascading Style Sheets) est un langage permettant d’inscrire une feuille de style [[20210207120845]] utilisée pour décrire la présentation d’un document inscrit en HTML : apparence, position et réaction des objets qui le composent.

Sélection, règles et portée

Cascade

Selon le principe de cascade de ce langage, il faut retenir trois variables en CSS :

  • le niveau de spécificité des sélecteurs ;
  • la précision des règles ;
  • la portée des sélecteurs.

Ainsi, la spécificité des sélecteurs et des règles doivent être progressives : plus un sélecteur est lourd, spécifique, plus il doit être bas (déclaré tardivement) et peut affecter des règles précises.

Voici les différents sélecteurs, rangés selon leur poids. Il faut ajouter que l’opération de combinaison (ul .list-elt) de ces sélecteurs ajoute en elle-même du poids :

  1. étoile : *, portée maximale
  2. balise : p
  3. classe : .btn
  4. attributs : [data-type="circle"]
  5. identifiants : #main, portée unitaire

L’étoile, le :root, le html doivent être déclarés en premier et affecter des règles très générales (portant sur la totalité des éléments), tandis que les identifiants sont déclarés en dernier et portent des règles spécifiques à un élément :

* { box-sizing: border-box; }
…
#btn-volet-close {
    position: absolute;
    top: 4px;
}

Sélecteurs combinatoires

Les sélecteurs CSS (également utilisables en JavaScript avec les méthodes querySelector et querySelectorAll) permettent d’appréhender les relations de l’espace du DOM [[20200704160828]], entre les balises :

  • parent : vis-à-vis d’une balise qu’elle encapsule ;
  • enfant : se dit d’une balise encapsulée ;
  • frère : relation de balises adjacentes, encapsulées au même niveau.

Ci-dessous des exemples de code mettant en pratique ces relations :

p p { /* tous les p encapsulés dans (enfants de) un p */ }
p > p { /* tous les p enfants directs (sans encapuslation intermédiaire) d’un p */ }
p ~ p { /* tous les p adjacents (frère de) d’un p */ }
p + p { /* le premier p adjacent (frère de) d’un p */ }

/* pseudo-classes */
p:first-child { /* tous les p qui sont premiers éléments encapsulés (enfants) de leur parent */ }
p:last-child { /* tous les p qui sont derniers éléments encapsulés (enfants) de leur parent */ }
p:first-of-type { /* tous les p qui sont premiers éléments encapsulés (enfants) de ce type au sein de leur parent */ }
p:last-of-type { /* tous les p qui sont derniers éléments encapsulés (enfants) de ce type au sein de leur parent */ }
p:nth-child(odd) {}
p:nth-of-type(even) {}

SCSS

Le SCSS et le Less sont des langages de programmation transpilés [[20200907090751]] en CSS et permettent d’optimiser son inscription. Ils permettent de sélectionner les objets et d’affecter les règles via différents systèmes :

  • inclusions (@import : importe toutes les déclarations d’un fichier)
  • extensions (@extend : importe les règles affectées à un sélecteur)
  • tableaux
  • mixins (@mixin : génère des règles selon des paramètres d’entrée)
  • boucles (@each)
  • conditionnelles (@if, @else)
Liens 3
  • feuille de style
  • DOM, document objet model
  • transpiler ou compiler du code
Rétroliens 3
  • BEM, Bloc Element Modifier
  • DOM, document objet model
  • responsive

cycle de développement logiciel

id :20210306102014
dernière édition :
type :processus
mode focus :

Le cycle de développement d’un logiciel couvre tout le long de sa « vie ». Il débute à l’instant où jaillit l’idée du logiciel et prend fin à l’abandon du projet (« mort » du logiciel). Entre temps, il couvre plusieurs périodes, et notamment celle de maintenance [[20210304181626]].

Chaque étape de ce cycle vient enrichir la documentation du logiciel [[20210118161126]] avec la description des expériences vécues et les décisions prises.

Il existe plusieurs diagrammes [[20210117165423]] pour représenter le cycle du développement d’un logiciel. On distingue les linéaires des itératifs.

Représentations linéaires

Elles proposent d’imaginer le développement d’un logiciel comme une succession d’étapes (jalons) sur une longue période.

Source : https://web.maths.unsw.edu.au/~lafaye/CCM/genie-logiciel/cycle-de-vie.htm

« en cascade »

De cette représentation on retient la nécessité de vérifier systématiquement le travail effectué. Il s’effectue en différentes étapes :

  1. spécifications : élicitation, description fonctionnelle (quoi et comment) de chaque artefact sur la base de besoins donnés ;
  2. conception générale : définition de l’environnement de développement [[20201224152456]] ;
  3. conception détaillée : architecture du logiciel [[20201128160455]] ;
  4. programmation : implémentation, traduction des algorithmes dans un langage de programmation ;
  5. tests unitaires : test des modules du logiciel ;
  6. intégration : interfacer les modules développés ;
  7. qualification/recette : vérification de la conformité du logiciel par rapport aux spécifications ;
  8. mise en production : publication, mise en place du logiciel pour usage ;
  9. maintenance : amélioration/adaptation du logiciel à son environnement, ses usagers.

[[20210313113130]] modularité logicielle

« en V »

De cette représentation on retient le besoin d’anticiper les méthodes et critères de validation, d’évaluation, et ce dès la conception. Ainsi, on met en rapport les étapes suivantes issues du diagramme précédent :

  • 1 (spécifications) → 7 (qualification/recette)
  • 2 (conception générale) → 6 (intégration)
  • 3 (conception détaillée) → 5 (tests unitaires)

« en spirale »

De cette représentation, plus orientée vers la gestion de projet, on retient que la majorité du temps de travail de développement logiciel est dédié à la spécification (1) ; à l’échange avec l’usager pour l’expression de ses besoins et leur traduction technique. Cela passe par l’idéation et le développement d’une série de prototypes (artefacts intermédiaires) après lesquels on prendra le temps de réviser la conception générale (2). C’est dans un dernier élan que l’on enchaîne les autres étapes (3 → 9).

Représentations itératives

Elles permettent d’imaginer le travail sur une ou deux semaines plutôt que sur des mois. Les temps de spécification (1) et de qualification/recette (7) sont répétées sur des courtes périodes pour s’adapter à une navette rapide entre l’usager et l’équipe de développement.

[[20200505212332]] méthode des projets agiles

Liens 7
  • maintenance logicielle
  • documentation logicielle
  • diagramme
  • environnement de développement
  • architecture logicielle
  • modularité logicielle
  • méthode des projets agiles
Rétroliens 3
  • communauté de développement
  • maintenance logicielle
  • modélisation de l’architecture d’un logiciel

dépendances logicielles

id :20200701083222
dernière édition :
type :architecture
mots-clés :informatique, lectureecriture
mode focus :

[[20210313113130]] modularité logicielle

Les dépendances logicielles sont des modules externes à l’architecture du développeur ou de l’utilisateur. Le développeur les ajoute à son architecture pour ajouter des fonctionnalités à son programme sans avoir à les développer.

Architecture

L’enjeux du développeur est de garder un système souple et robuste, de décentraliser les efforts et les risques. Ainsi en recourant à des dépendances :

  • on évite de reproduire un élément qui a déjà été développé et vérifié ;
  • on évite les failles globales en isolant les composants : on risque des failles locales et/ou structurelles.

[[20201128160455]] architecture logicielle

« tout l’enjeu n’est pas de nier nos dépendances mais de les choisir en connaissance de cause »[^1]

Les dépendances type bibliothèque de code [[20210417145938]] vont permettre d'ajouter des fonctionnalités tandis que les frameworks permettent de mettre en place une architecture pour les différents processus.

[[20200701222949]] framework ou cadriciel

Il existe aussi les middleware (aussi appelés « intergiciel »), soit des logiciels tiers permettant de traiter le flux d’information entre deux autres programmes. Ce sont des dépendances pouvant être remplacées par l’utilisateur.

Sentier de dépendances

Le risque est l’endettement technique [[20210109130329]] et ses nombreuses conséquences à différents endroits : architecture interne (code spaghetti, cohabitation de différentes architectures etc.) et externe (accessibilité, longueurs dans les chargements etc.).

[[20200709214912]] site web lowtech

L’informatique repose entièrement sur des dépendances à tel point que l’on parle de « couches logicielles », soit des dépendances basées sur des centaines de dépendances.

[[20200701221037]] API, interface de programmation

Temps

Une grande parties des codes source — et donc leur sous-couches, extensions et dépendances — sont gratuits, maintenus par des bénévoles. Le temps joue irrémédiablement sur les dépendances, version après version.

[[20200710204125]] logiciel libre et logiciel open source

Il est très important de connaître la version d’une dépendance dès qu’on l’intègre dans un environnement : la travail de développement étant asynchrone entre les deux projets, les fonctions, l’API peuvent rapidement changer. On parle de version mineures pour des corrections et majeures pour l’ajout de fonctionnalités tel qu’il peut entraîner des bugs dans un programme conçu sous une version antérieure.

[^1]: Arthur Perret, Pour un autre carnet de recherche numérique, 2019

Liens 8
  • modularité logicielle
  • architecture logicielle
  • bibliothèque logicielle
  • framework ou cadriciel
  • dette technique
  • site web lowtech
  • API, interface de programmation
  • logiciel libre et logiciel open source
Rétroliens 7
  • édition numérique
  • framework ou cadriciel
  • gestionnaire de dépendances
  • logiciel libre et logiciel open source
  • mode d’emploi
  • extension et greffons
  • qualité logicielle

dette technique

id :20210109130329
dernière édition :
type :architecture
mots-clés :code
mode focus :

La dette technique est l’ensemble des coûts cachés et nécessaires dus à la complexité montante d’un projet logiciel suivant les choix de conception et de construction diminuant la rentabilité d’un logiciel[^1]. L’incohérence d’un programme, un code source trop complexe ou écrit maladroitement sont une perte de temps considérable. Cette perte d’énergie est l’entropie : la tendance naturelle d’un système à se désordonner.

La dette s’accumule à mesure que le développement progresse et le debugage est d’autant plus complexe. Naturellement, cette entropie va monter au fur et à mesure de la vie du logiciel et les coûts de maintenance [[20210304181626]] vont augmenter en conséquence. On parle d’« érosion de l’architecture logicielle »[^1]. Mais ça n’est pas une fatalité. Les ingénieurs sont là pour prévenir ces risques.

La dette technique est un choix et s’anticipe : on a pas le temps de concevoir une fonctionnalité avec suffisamment de finesse et on va donc décider d’augmenter la complexité du logiciel pour obtenir plus rapidement un résultat. Toutefois, avant de faire cela, il faut se demander si on a le temps de refactoriser [[20210109140006]] ce programme par la suite. Cela revient à se demander si l’on a le temps de développer le programme une seconde fois, pour rembourser la dette[^2].

Une dette technique non anticipée et subie est une pourriture logicielle[^2].

Chute exponentielle

Selon les lois décrites par Manny Lehman [[20210118144930]], un système informatique se doit d’évoluer en permanence pour s’adapter à son environnement, sinon il deviendra progressivement de moins en moins utile dans cet environnement. En effet, les attentes des utilisateurs augmentent. Comme le logiciel est modifié régulièrement, il devient plus en plus complexe (qualité moindre), à moins d’endiguer ce processus. On se rend compte bien tard en général que le projet est devenu trop important sans que les concepteurs et outils n’aient été adaptés.

La complexité d’un logiciel est exponentielle. Tout logiciel a une complexité essentielle qui le précède, une complexité obligatoire découlant du cahier des charges et enfin une complexité accidentelle[^2]. Cette dernière doit être réduite au maximum.

Ainsi, prévenir la dette technique ne doit pas paraître comme un investissement inutile, n’apportant aucune fonctionnalité supplémentaire, consommant inutilement du temps. Au contraire, il faut prendre sérieusement en compte ce risque qui peut conduire à de gros retards, voire à un échec du projet, un arrêt du développement.

Lutter contre l’entropie

Il faut sensibiliser et former les développeurs à anticiper la dette technique engendrée par leur travail. Un code mal écrit n’appelle pas autre chose que plus de code bâclé ; les développeurs pourraient ne pas faire d’effort. Au contraire, un code source excellent appelle à la vigilance. Par conséquent, il faut régulièrement faire une revue de code et ainsi assurer sa qualité, pointer et corriger les dégradations.

« La duplication de code étant l’un des facteurs accélérant le plus l’entropie logicielle », il faut régulièrement faire du refactoring [[20210109140006]] pour qu’il reste maintenable.

[^1]: Arnaud Lemaire, L’entropie logicielle, pourquoi la dette technique ne fait qu’augmenter ?, 2014 [^2]: Arnaud Lemaire, Dette Technique Et Entropie Logicielle, 2018

Liens 3
  • maintenance logicielle
  • refactoring, revue de code
  • lois Lehman
Rétroliens 4
  • dépendances logicielles
  • lois Lehman
  • programmation orientée objet
  • qualité logicielle

diagramme

id :20210117165423
dernière édition :
type :modélisation
mots-clés :scienceinformation
mode focus :

[[20200912130028]] visualisation

Un diagramme est une vue simplifiée [[20200708121357]] et géométrique d’une situation complexe. Il représente des parties d’un ensemble et impose une représentation partielle du phénomène à ses lecteurs. Ils projettent « un regard à la fois impérieux et impossible »[^1] sur une composition générée à partir d’une variété de données. Pour cela ils doivent accepter de se détacher du contexte et de se plonger dans une accumulation d’informations : « l’abstraction totale du regard et la concrétisation totale du réel »[^1].

Composition

Yves Jeanneret énumère[^1] ainsi les composants des diagrammes, soit des compositions « techno-sémiotique », comme « une forme de la raison graphique » [[20200625115033]] :

  • l’écriture (calibrage et alignement des signes) ;
  • la liste (mise en série des unités) ;
  • le tableau (sémantisation des deux dimensions du plan) ;
  • la carte (rabattement sur les deux dimensions d’un plan d’un phénomène multidimensionnel).

Dessin

Yves Jeanneret commente les cercles présents sur un diagramme en exemple :

« la complétude et l’indépendance sont exprimées par le cercle, forme universelle et atomiste »[^1]

Partialité

« tout en exposant un discours fait de visibilité et d’évidence, il [le diagramme] en masque l’histoire et la genèse »[^1]

« En devenant forme, le sens éloigne sa contingence ; il se vide, il s’appauvrit, l’histoire s’évapore, il ne reste plus que la lettre »[^2]

[^1]: Yves Jeanneret, Yves Chevalier, La physionomie des systèmes : diagrammes et représentation, 2009 [^2]: Roland Barthes, Mythologies, 1957

Liens 3
  • visualisation
  • vue
  • structures de la connaissance
Rétroliens 4
  • cycle de développement logiciel
  • documentation logicielle
  • la donnée
  • UML

DigComp, évaluation des compétences numériques

id :20201002103853
dernière édition :
type :processus
mots-clés :web, gestionprojet
mode focus :

En 2017, la Commission européenne présente un rapport sur l’apprentissage des outils numériques comme un processus en plusieurs étapes, passant par différents niveau, et avec pour finalité l’insertion professionnelle, l’inclusion sociale et l’épanouissement personnel dans le milieu numérique.

Nous parlons d’aptitudes, de potentiels à activer des citoyens en vue de devenir capable de s’emparer d’un certain nombre de tâches, de développer des compétences, voire des méta-compétences

Compétences

Pour cela, le rapport défini 21 compétences numériques (réparties sur 5 catégories) que doivent développer les citoyens :

  • Littératie de l’information, des données et contenus numériques :
    • Navigation, recherche et filtrage ;
    • Évaluation ;
    • Gestion ;
  • Communication et collaboration :
    • Interaction ;
    • Partage ;
    • Engagement citoyen ;
    • Collaboration ;
    • Netiquette (e-réputation) ;
    • Gestion de l’identité ;
  • Création de contenus numériques :
    • Conception ;
    • Intégration et réélaboration ;
    • Droits d’auteur et licences ;
    • Programmation ;
  • Sécurité :
    • Connaissances des dispositifs ;
    • Protection des données personnelles et de la vie privée ;
    • Protection de la santé et du bien-être ;
    • Protection de l'environnement ;
  • Résolution de problèmes :
    • Résoudre les problèmes techniques ;
    • Identifier les besoins et les réponses au problèmes ;
    • Utiliser les technologies numériques de manière créative ;
    • Identifier les lacunes en matière de compétences numériques.

Niveaux

La rapport distingue une progression en 8 niveaux (réparties sur 5 sections) :

  • Fondamentaux :
    • Niveau 1 : J’ai besoin d’aide pour trouver les informations dont j’ai besoin, l’accès et pour adopter une stratégie de navigation :
      • Quoi : Tâches simples,
      • Comment : Avec guidage,
      • Qui : Une apprenante constante ;
    • Niveau 2 : J’ai parfois besoin d’aide pour trouver les informations dont j’ai besoin, l’accès et pour adopter une stratégie de navigation :
      • Quoi : Tâches simples,
      • Comment : En voie d’autonomie avec un guidage au besoin,
      • Qui : Une apprenante régulière ;
  • Intermédiaire :
    • Niveau 3 : Seule, j’ai trouvé une routine pour récupérer les informations dont j’ai besoin. Je peux les expliquer, leur accès et ma stratégie de navigation :
      • Quoi : Tâches quotidiennes et résolution de problèmes routiniers,
      • Comment : Autonome,
      • Qui : Elle comprend ce qu’elle fait ;
    • Niveau 4 : En fonction de mes besoins qui peuvent varier, je peux illustrer mes besoins en information et mon environnement numérique, en décrire l’accès et la stratégie de navigation adoptée :
      • Quoi : Tâches parfois nouvelles et résolution de problèmes nouveaux,
      • Comment : Autonome dans son domaine,
      • Qui : Elle comprend son domaine ;
  • Avancé :
    • Niveau 5 : En plus de guider les autres je peux rechercher, accéder et naviguer dans des environnements numériques nouveaux avec une stratégie de recherche personnelle :
      • Quoi : Variété de tâches et problèmes,
      • Comment : En guidant les autres,
      • Qui : Elle adapte ses connaissances ;
    • Niveau 6 : Je peux évaluer mes besoins et ceux des autres, adapter ma stratégie de recherche et finalement choisir les informations les plus appropriées de la récolte :
      • Quoi : Choix des meilleures tâches,
      • Comment : Adapter l’environnement d’autres utilisatrices dans un domaine complexe,
      • Qui : Elle évalue ;
  • Hautement spécialisé :
    • Niveau 7 : Hautement spécialisée, je peux conceptualiser et intégrer des solutions à des problèmes complexes liés à la récolte, le filtrage, l’accès et la navigation :
      • Quoi : Résolution de problèmes avec un nombre limité de solution,
      • Comment : Contribution et aide dans un cadre professionnel,
      • Qui : Elle est créative ;
    • Niveau 8 : Au plus haut niveau de spécialité, je peux résoudre des problèmes complexes car aux nombreux facteurs d’interaction et proposer un processus-solution :
      • Quoi : Résolution de problèmes complexes (nombreux facteurs),
      • Comment : Proposition de processus et méthodes dans un domaine,
      • Qui : Elle est créative ;

Pour accéder aux niveaux 7 et 8, il faut accepter de ses limiter à un domaine. En effet, la documentation de solutions à des problèmes (complexes, au niveau 8) demande de prendre en compte les contraintes d’un domaine particulier.

On remarque que la recherche d’information telle qu’elle est décrite pour les différents niveaux retombe toujours sur le même cycle :

  1. Définition de l’information recherchée
  2. Accès aux données et contenus
  3. Stratégie de navigation dans la base
  4. Filtrage des informations (acquis au niveau 6)
  5. Intégration de la solution (acquis au niveau 7)
Rétroliens 2
  • littératie numérique
  • niveaux des (ré)utilisateur logiciel

digital labor

id :20200705114827
dernière édition :
type :processus
mots-clés :web
mode focus :

[[20200705100544]] travail gratuit, économie du web de plateforme

Le travail sur le web, globalement collectif, a son pendant individuel. Il est récemment « devenu possible de penser les activités des internautes comme un travail individualisé et finalisé et de déployer un autre dispositif, celui du digital labor »[^1]

Déséquilibre

Les « Activités rémunérées et bénévoles cohabitent depuis les premiers pas du réseau » mais elles entretiennent depuis quelques années un « rapport de force […] transformé et inversé avec la massification du web et la prise du pouvoir des acteurs économiques dans les zones de haute visibilité du web »[^1]

Selon Dominique Cardon, cela tient à trois facteurs :

  • Déséquilibre marchand
  • Calcul de réputation
  • Micro-évaluation macrophage du travail

Déséquilibre marchand

Le reversement s'est fait quand les plateformes ont vu que les pages individuelles ne leur rapportaient pas suffisamment de visiteurs et qu'elles ont donc ambitionné de centraliser l'activité des internautes. Ainsi, sur Facebook il est possible de s’y enquérir

  • de l'actualité (international, sport, culture… );
  • de la vie de ses proches ;
  • de se divertir ;
  • de prolonger cette activité d'agrégation par le biais des messages privés.

Ainsi l'expérience web de nombreux internautes se limite à un ou deux réseaux. Ajoutons à leurs habitudes d'utilisation Instagram (racheté par Facebook), centré sur le partage de photo et vidéos, et des millions d'internautes se retrouvent, sinon entièrement, en grande partie dépendants des algorithmes de Facebook.

Dans la même idée, Amazon agrège des sites marchands, si bien qu'une très grande parties des achats du monde passent pas ses voies. Enfin, le plus grand : Google est notre second cerveau, rien que ça.

Calcul de réputation

« [L'économie de la réputation] ne cherche plus à étendre le tissu de dettes mutuelles[^2] entre internautes, mais à calculer une valeur qui les singularise et les distingue les uns des autres »[^1]

Les réseaux sociaux ont implanté des outils métriques de réputation (e-réputation, netiquette) favorisant ainsi la création de contenu, motivée par l'augmentation de ces chiffres à la face des autres internautes.

Micro-évaluation macrophage du travail

On estime le travail d'un développeur, d'un graphiste non pas sur le tout de son œuvre, cela serait trop complexe (et dépend principalement des interfaces auxquelles nous avons accès), mais sur des unités, des mots-clés, une interface. Si le tout est supérieur à la sommes de ses particules, alors on comprend pourquoi le micro-travail est si malsain pour nos métiers et tend à le travestir.

Ainsi, le tout n'est plus que du ressort des agrégateurs qui gardent et nourrissent les intelligences artificielles qui leur permettent de mieux en mieux de considérer ce tout qu'ils revendent en particules sur des interfaces. Du côté des algorithmes, le travail s'affine, du côté des interfaces il se banalise en chiffres, graphiques, mots-clés.

Ce sont ces particules qui favorisent un travail continu car marchandable. Ce travail entraîne les algorithmes qui fournissent de meilleures particules, bouclant la boucle.

Exemple : Le graphiste produit des contenus qu'il affiche sur son Behance. Sur l'interface on affiche ses outils, le nombre de projet, de commentaires, de likes. Face à cette interface le graphiste souhaite davantage valoriser son travail et va donc ajouter des projets, s'investir socialement (travail cognitif) pour obtenir plus de commentaires, de likes. Du côté des algorithmes, on analyse les commentaires, positifs ou négatifs, on dresse un portrait du travailleur en « agrégeant/transsubstantisant »[^2] des contenus d'autres plateformes qu‘il fréquente (facile, il les a relié à sa page Behance pour faciliter son travail social) : est-ce qu'il est en relation avec d'autres graphistes ? Quelles sont leurs statistiques, leur profil ?

Où sont les interfaces qui affichent de tels résultats et qui peut y accéder ? Combien paieraient un recruteur pour embaucher par pur espionnage ?

Travail

Selon Antonio Casili, l'activité de créateur de contenus (interactions, tweet, commentaire, article de blog, partage de code etc.) est assimilable au travail (invisible et invisibilisé pourtant réel, non qualifié, gratuit, contrôlé et exploité) parce que « productrices de valeurs, faisant l'objet d'un quelconque encadrement contractuel et soumises à des métriques de performance » :

  • productrices de valeurs : contenus (photos, saisies) et même chaque connexion génère de la donnée exploitable, revendable[^4] (traces numériques) ;
  • encadrement contractuel : encadrement de la participation ;
  • métriques de performance : mesure et récompense des performances

[[20200509195652]] la donnée

Les internautes sont des « ‘‘travailleurs qui s’ignorent’’, convaincus d'être plutôt des consommateurs, voire des bénéficiaires de services gratuits en ligne » et automatiques.

Entraînement des algorithmes

Bien souvent, c'est un humain qui se cache derrière un algorithme d’« intelligence artificielle ». Des humains entraînent directement les résultats de Google, de Siri, modérent les posts Facebook, saisissent que tel photo contient bien un visage, que telle image contient tel texte. Ce cadre professionnel précaire, déjà peu visible, cache une usine mondiale :

Le crowdsourcing est la production participative (des internautes) par sous-traitance (des métiers que l’on cite au-dessus). Les usagers de certaines plateformes le font également, à l’insu de leur plein gré.

  • lorsque l'on rempli un captcha sensé empêcher les machines d'accéder à la fonctionnalités, on entraîne parallèlement les algorithmes de reconnaissance de caractères de Google ;
  • lorsque on identifie un ami sur une photo Facebook, on entraine un logiciel de reconnaissance facial en indiquant que tel visage correspond à telle page et aux métadonnées qui y sont liées ;
  • en utilisant les filtres Snapchat ou Instagram appliqués à un visage scanné ;
  • lorsque l’on signale un contenu qui nous dérange.

On exploite la capacité des internautes à émettre des contributions de « faible intensité et à faible expertise ». Dominique Cardon paraphrase Yochai Benkler pour expliciter ce que ce dernier appelle le « miracle de l'agrégation » :

« Son argument était entièrement bâti sur l'idée que, situés au-dessus des contributions individuelles, sérialisées et locales des internautes, des mécanismes humains ou automatiques permettaient de produire autre chose, une connaissance publique, sans lien de continuité avec les contributions unitaires, mais qui résultait de l'effet coordonné des contributions unitaires. Ce mécanisme d'agrégation/transsubstantiation fait de l'intelligence collective un bien qui est plus que la somme des parties : les foules peuvent prendre des décisions ‘‘sages’’ à partir d'opinions idiotes »[^1]

Les algorithmes d’« intelligence artificielle » sont ou ont été sur-entraînées par des êtres humains. Non seulement ces services ont l'air automatiques, mais en plus les gens qui les entraînent ne se reconnaissent pas ou ne sont reconnus comme des travailleurs (des entraîneurs).

Travail cognitif

D’où l’expression « cognitariat » (le nouveau prolétariat), soit le domaine des emplois non qualifiés, précaires, peu rémunéré et centré sur le cognitif : dialogue, coopération, échange. Pour la version web, on parle de « cybertariat » :

ServiceActionBiens
UberConduire quelqu'unvoiture
Deliveroo, Uber Eats, Just Eativrer quelqu'unvélo
AirbnbHéberger quelqu'unappartement
TaskRabbitRendre un service au domicile de quelqu'un
BeMyEyePrendre la photo d'un produit dans un magasin
Facebook, GoogleInterpréter un contenuordinateur

On dresse le tableau suivant dans le cas de Deliverroo (et ses concurents). La même application vise plusieurs cibles, pour capturer certaines données et les revendre à des acheteurs. Non seulement le consommateur paie le service, mais il entraîne également d’autres conséquences économiques. Ainsi, les livreurs entraînent à leur insu des véhicules autonomes.

cibledonnées capturéesacheteur
consommateurEnregistrer ce que les gens mangentsindustrie agroalimentaire
restaurateurÉvaluer la perfomance (en combien de temps ? Pour quelle note ?)catalogues touristiques
livreurPar quelles voies et comment (vitesse, gestion obstacles) ?fabriquants de véhicules autonomes

Sous couvert de sharing economy (service d'un particulier à un autre, mis en relation par les plateformes citées), les micro-travailleurs ne sont pas protégés, sont sans statut et mettent en jeu leurs propres biens :

« les entreprises propriétaires des applications mobiles ont dans le passé voulu se dégager de leurs obligations, en insistant sur le fait que leur activité se borne à l'intermédiation algorithmique. Une fois effectuée la mise en relation, leur responsabilité s'arrêterait »[^3]

Ce premier travail en cache souvent un autre, plus discret, plus pervers. Quand un chauffeur Uber ou Deliveroo se déplace, il utilise l'application de la plateforme qui profite du voyage pour enregistrer des données sur le déplacement, le croisement avec d'autres chauffeurs. Ces données sont ensuite utilisées pour développer les applications dédiées au véhicules autonome : à terme, il remplaceront les chauffeurs qui ont entraînés leur propre succession, automatisée. D'un métier précaire ils iront… vers pas de métier.

« Le cœur de métier de ces nouvelles entreprises est l'exploitation algorithmique des données de mobilité et de consommation de leurs utilisateurs »[^3]

Solution

Il ne serait pas éthique d’accepter une rémunération pour nos activités en ligne « face à l'impossibilité de protéger nos données personnelles » (p. 37). Ce serait créer un nouveau « marché répugnant » des données personnelles (à classer non loin du commerce d'organes). Ce serait « privatiser la privacy »[^3].

« Quoique personnelles, ces données, ces productions digitales, ne sont pas du ressort de la propriété privée, mais le produit d'un commun, d'une collectivité. Par conséquent, la rémunération devrait chercher à redonner aux commons ce qui a été extrait des commons. »[^3]

Antonio Casili a plutôt l'idée « d'un revenu de base », de « mesures redistributives ».

« Ce n'est pas parce qu'une entreprise est installée dans un certain pays qu'il faut l'imposer, mais parce qu'il y a des millions de citoyens qui réalisent un ‘‘travail invisible’’ et gratuit pour cette entreprise »[^3]

[^1]: Dominique Cardon, Internet par gros temps, 2015 [^2]: voir [[20200705112816]] production de contenu web [^3]: Antonio Casili, Qu'est ce que le digital Labor : Travail, technologies et conflictualités, 2015 [^4]: voir [[20200625095558]] économie documentaire des réseaux sociaux

Liens 4
  • travail gratuit, économie du web de plateforme
  • la donnée
  • production de contenu web
  • économie documentaire des réseaux sociaux
Rétroliens 4
  • application
  • espace numérique
  • production de contenu web
  • traces numériques

discret / continu

id :20210405121526
dernière édition :
type :processus
mode focus :

Dans la théorie des ensembles, on distingue les ensembles discrets et ensembles continus. Il s’agit d’un tout dont les propriétés de liaison entre les parties varient.

Discret

Cet ensemble est une suite d’items discontinue. Ils sont élémentaires, séparés les uns des autres et constituent des étapes intermédiaires dans la suite.

Par exemple, l’alphabet est un ensemble discret : A → B, C → D.

C’est une méthode pour isoler des éléments d’un système complexe et ainsi rendre calculables (par une machine) ce domaine.

[[20200508093223]] travailler la complexité

Continu

Les items remarqués de cet ensemble sont séparés par une infinité d’autres items. Par exemple, l’ensemble des nombres réels (nombres avec décimal) est un ensemble continu : 1,1 ; 1,12 ; 1,13 ; 1,131 ; 1,2 ; 1,21.

La liaison s’étend entre des points infiniment loin les uns des autres.

Liens 1
  • travailler la complexité
Rétroliens 4
  • code source
  • inscription computationnelle
  • numérisation
  • structures de la connaissance

document

id :20200708172120
dernière édition :
type :inscription
mots-clés :scienceinformation, lectureecriture
mode focus :

La notion de document « dont nous avons hérité au tournant des années 2000 a été façonnée par plusieurs décennies de tradition théorique ». Elle est « avant tout fonctionnelle, elle nous permet d’appréhender la trace écrite comme une information enregistrée en vue de sa transmission »[^2]

« un document est une inscription pourvue des trois propriétés suivantes : [1] elle est délimitée dans le temps et dans l’espace, [2] elle est intentionnelle et [3] elle est publiée. La délimitation dans l’espace permet de déterminer quelles sont les parties constituant le document. La délimitation dans le temps permet de déterminer un ordre canonique de parcours pour la consultation ou la lecture : elle fixe où commence et où s’arrête la lecture du document. La délimitation dans le temps et l’espace fixe donc la mise en ordre spatiale (la question de repérer les éléments constitutifs est décidable) et la mise en ordre temporelle (la question d’ordonner les éléments constitutifs est décidable). L’intentionnalité documentaire peut être a priori ou a posteriori. La publication permet d’établir une version de référence. »[^1]

Le document est le sujet de problématiques en tant que :

  • « une forme physique perceptible dont la matérialité physique [ou sa numérisation] se prête à l’instrumentation technique »[^3] ;
  • un signe avec ses problématiques de « manipulation, lecture et interprétation du contenu » ;
  • un medium, « objet social, objet de négociation et de transaction culturelle et économique », il est vecteur d’échange

C’est parce qu’il prend place dans un système documentaire que l’entité devient un document.

[[20200724153738]] processus documentaire

Structure

Un document est une organisation d’informations dans un espace (ou même dans le temps, pour un document audiovisuel) de présentation défini dans la mesure où la structure du document va aussi contrôler sa lecture (ordre, rythme) et définir ses modalités d’interaction (lecture, annotation). Ainsi un document est un environnement dont la structure est explicite (table des matières, niveaux de titre) quand le contrôle et l’interaction sont suggérés.

« Le livre sert non seulement à énoncer des théories, mais à les construire ; non seulement à traduire une pensée, mais à la former. »[^6]

Variété

« La définition la plus générale qu’on puisse donne du Livre et du Document est celle-ci : un support d’une certaine matière et dimension, éventuellement d’un certain pliage ou enroulement sur lequel sont portés des signes représentatifs de certaines données intellectuelles. […] Le plus petit document c’est une inscription. »[^6]

Chez Otlet, le document est avant tout un support pour des inscriptions.

Selon la théorie de Bruno Bachimont :

  • Certains document permettent à la fois de conserver de l’information et de la diffuser ; c’est le cas avec les livres ou les affiches.
  • Certains documents (ineffables) ne sont qu’un encodage de l’information dont la diffusion se fait par un intermédiaire ; c’est le cas avec les VHS, CD.
  • Parmi cette seconde variété, le document numérique a une place particulière car il peut changer de forme à volonté (via un programme qui permettra de modifier la vue du document) selon l’appareil de diffusion : sous forme de feuille papier via une imprimante ou de page web via un navigateur. D’un même encodage de l’information on peut aboutir à différentes formes canoniques du document.

Valeurs

Liste des valeurs du document :

  • pédagogique : le document permet d’apprendre par son contenu. D’après l’étymologie : documentum, le modèle, l’exemple est dérivé sur latin docere, montrer, instruire)
  • juridique : question du droit, le document comme preuve, le document atteste, le document ne doit donc pas être falsifié.
  • historique : le document se garde, se mémorise et s’il passe l’épreuve du temps, il peut devenir un monument selon la maxime de Michel Foucault.

Numérique

Le document numérique est un document « orthothétique »[^3] (néologisme formé de orthotès, l’exactitude et thésis, la position) dans le sens où il reproduit (et objective) la structure sur un support immatériel. La document numérique est dans la continuité du document matériel.

Cependant, « le numérique marque une rupture dans la manière de concevoir et d’élaborer le contenu »[^3] : objectiver la structure du document (création de modèles, de fonctions et d’autres matériaux instanciables) nécessite d’abstraire le contenu, « donnant une contrepartie matérielle et manipulable »[^3] au document numérique.

[[20200606201922]] qualités de l'écriture numérique

C’est ainsi qu’il devient possible de créer des protodocuments[^4], soit des copies de l’œuvre originale, le contenu abstrait produit par l’auteur. Cette souplesse pose la question d’une philologie de l’écriture numérique, « art d’établir des versions de référence[^5] ».

Valeur de processus

Ainsi le document numérique est instable, falsifiable, souvent stocké dans un labyrinthe informationnel. On lui trouve d’autres qualités liés à sa décentralisation :

  • sa valeur juridique ne dépend plus du document comme support, mais comme processus ayant permis sa création ;
  • la valeur de son contenu ne dépend plus seulement de ses auteurs attribués, mais de sa processualité éditoriale.

[[20200722215106]] processualité éditoriale

[^1]: Bruno Bachimont, Ingénierie des connaissances et des contenus, 2007 [^2]: Arthur Perret, Matière à pensées : outils d’édition et médiation de la créativité, 2018 [^3]: Stéphane Crozat et Bruno Bachimont, Réinterroger les structures documentaires : de la numérisation à l’informatisation, 2004 [^4]: Jean-Michel Salaün, Vu, lu, su. Les architectes de l’information face au monopole du web, 2012 [^5]: Bruno Bachimont, Rhétorique de l’intelligibilité, vers des humanités du numérique, 2020 [^6]: Paul Otlet, Traité de documentation, 1934

Liens 3
  • contrat de lecture
  • qualités de l’écriture numérique
  • processualité éditoriale
Rétroliens 4
  • bibliothéconomie
  • écrit et oral
  • édition numérique
  • processus documentaire

documentarisation

id :20210408172535
dernière édition :
type :processus
mode focus :

La documentarisation est un traitement documentaire permettant

  • de singulariser un document pour pouvoir le retrouver dans une base (documentarisation externe)
  • « mettre en cohérence et à articuler les différents fragments qui constituent le ‹ texte › »[^1] (documentarisation interne)

Un document avec une forte granularité est un document pourvu de nombreux fragments.

« La documentarisation est une activité d’annotation au sens élargi que nous donnons à ce terme, susceptible de remplir trois fonctions complémentaires, attentionnelle, associative, contributive. Elle peut recourir à divers procédés allant de la sélection de propriétés typographiques visant à mettre en relief certaines parties du texte, annotations attentionnelles, à l’utilisation de langages d’organisation des connaissances systématisées contribuant à la classification, à l’indexation, à la contextualisation temporelle ou sociale du document, annotations associatives et contributives »[^1]

La documentarisation permet de retrouver un document dans une base, mais peut aussi permettre de lui donner sa fonction (ex : dater un document cessé être une preuve, sans quoi il serait invalide).

« La documentarisation correspond à des opérations d’inscription particulières qui visent à permettre la réutilisation du support dans le cadre de transactions ultérieures de la personne avec elle-même ou avec d’autres personnes mémorisation et coordination »[^1]

[^1]: Manuel Zacklad, Genres de dispositifs de médiation numérique et régimes de documentalité, 2015

Rétroliens 1
  • processus documentaire

documentation logicielle

id :20210118161126
dernière édition :
type :processus
mots-clés :code
mode focus :

Un logiciel est un ensemble de programmes pourvu d’une documentation. Sans documentation, un logiciel ne peut être utilisé, maintenu, n’a pas d’histoire et donc aucun avenir.

On peut aller jusqu’à dire qu’un logiciel est une documentation par lui-même. C’est l’objectif de la programmation lettrée [[20200914211839]]. Le code source est alors une description technique, modulaire, intégrant des tests et faisant suite à des spécifications traduites en une conception globale ; le tout est détaillé dans l’arborescence du logiciel, au sein des fichiers de code.

Miroir de l’architecture

La documentation est à l’image de l’architecture logicielle [[20201128160455]] qu’elle permet d’explorer. On y fait référence pour comprendre les différents composants de la structure du logiciel [[20210221144451]]. La documentation c’est le point de départ de tout développeur, (re)utilisateur.

Ne pas mettre à jour la documentation au fur et à mesure du développement mène à une décorrélation entre les explications et les évolutions du programme et impact lourdement sa maintenance [[20210304181626]].

Réseau

La documentation est un support de médiation [[20200716211301]] entre deux réseaux ; elle accueille une diversité de (re)utilisateurs, aux niveaux différents [[20210220100014]], et les renvoie vers des ressources leur permettant d’utiliser un logiciel à différents niveaux d’abstraction [[20210220101744]].

« L’interdépendnace entre les documents est grande : il existe des relations entre les différentes parties de la documentation et entre la documentation et le code source. »[^2] (p.8)

Usages

Via différents dispositifs de

  • navigation,
  • vulgarisation,
  • évaluation,

une documentation opère une médiation et sert

  • l’utilisation du logiciel (guides et mode d’emploi [[20210213103719]] pour les utilisateurs et évaluation de l’intérêt de la proposition),
  • la continuité du développement du logiciel (entre les développeurs et pour y intégrer les réutilisateurs, éventuellement une communauté) [[20210304181626]].

La rédaction de la documentation est, dans la logique de la programmation lettrée [[20200914211839]], l’occasion d’une revue de code [[20210109140006]] pour les développeurs.

Modes d’écriture

Une grande variété d’utilisateurs viennent lire la documentation pour des besoins différents, avec une manière de comprendre différents. Il est nécessaire de répondre à tous. Nous allons donc créer quatre documentation en une[^1].

  • Exécutable : Donner un point de départ avec des explications purement pratiques, étape par étape, sans trop d’explications.
  • How to : Réponse à un problème donné dont on donne le contexte et les solutions. On propose également à l’utilisateur d’étudier des cas semblables dans le cas où cette page ne correspond pas exactement à son problème.
  • Encyclopédique : Explications de la machinerie et de la philosophie du logiciel.
  • FAQ : Réponses courtes et directes à des questions récurrentes.

Ces contenus doivent être reliés par des liens hypertexte pour permettre à l’utilisateur d’explorer un réseau de connaissance plutôt qu’une liste d’éventuelles solutions.

On ne peut se contenter de texte lorsque l’on parle d’architecture de code source. Il faut également utiliser des diagrammes [[20210117165423]].

« Une nécessité dans ce cadre est de pouvoir accéder au code source et à la documentation via une description sémantique de leur contenu. L’environnement doit être capable de gérer en plus du contenu textuel, voire graphique, des composants logiciels, leur contenu sémantique sous forme de termes d’indexation de structure plus ou moins complexe (mots-clés, graphes conceptuels, etc.) »[^2] (p.5)

Remarques

Il faut faire le lien avec d’autres documentation, décentraliser l’aide.

La documentation externe au code source doit être accompagnée d’une documentation interne au code source [[20201220084534]].

[^1]: Matthias Dugué, Revoir la documentation, de zéro, 2019 [^2]: Sahar Jarwah, Un modèle générique pour la gestion des informations complexes et dynamiques, 1992

Liens 11
  • programmation lettrée
  • architecture logicielle
  • structure logicielle
  • maintenance logicielle
  • médiation numérique
  • niveaux des (ré)utilisateur logiciel
  • compréhension de l’API d’un logiciel
  • mode d’emploi
  • refactoring, revue de code
  • diagramme
  • commentaire de code
Rétroliens 10
  • API, interface de programmation
  • architecture logicielle
  • bibliothèque logicielle
  • cycle de développement logiciel
  • environnement de développement
  • maintenance logicielle
  • matérialité d’un programme
  • programmation lettrée
  • structure logicielle
  • système combinatoire

DOM, document objet model

id :20200704160828
dernière édition :
type :architecture
mots-clés :web, code
mode focus :

Le DOM (Document Object Model) est une API [[20200701221037]] présentée sous la forme d’une arborescence d’objets. Ils prennent la forme de balises telles qu’on les écrits en HTML, avec leurs attributs. Toutefois le DOM comprend aussi les affectations CSS [[20200704152459]] et JavaScript [[20200704153246]], ce dernier permettant d’actualiser dynamiquement le DOM.

Encapsulation

Chaque balise est un potentiel nœud, une potentielle parente d’autres balises dans l’arborescence.

Le nœud est une articulation de la page et il est possible d’affecter des balises en masse en ciblant leur parent (fonction récursive).

<ul class="list">
    <li class="list__item">Lorem ipsum</li>
    <li class="list__item">Lorem ipsum</li>
</ul>
<button id="cible">Ajouter élément</button>

Objets

Le DOM est une structure abstraite permettant aux développeur·euse·s d’ancrer des attributs et fonctions sur les éléments qui composent une page web.

Chaque objet tel qu’il est délimité par les balises (entre chevrons) a ses propres attributs (comme l’attribut class visible ci-dessus) et méthodes qu’il est possible de leur affecter en CSS ou en JavaScript. Cette notion de classe renvoie directement aux principes de la programmation orientée objet [[20200522122316]].

Pour se faire il est nécessaire de sélectionner (comme ci-dessus avec le bouton, via son attribut id) l’objet avec de pouvoir le manipuler. Toujours dans une logique orientée objet, la convention BEM [[20200715212459]] permet d’appréhender de manière structurée le DOM.

La méthode typique affectée à un objet du DOM est l’ajout d’événement (addEventListener), comme ci-dessous :

var button = document.querySelector('#cible')
	.addEventListener('click', fonction);

Shadown DOM

Le Shadown DOM (aussi appelé Virtual DOM, DOM fantôme) est une structure cachée du DOM permettant d’intégrer dans les pages web des arborescence d’objets indépendantes. Les objets y sont soustraits aux règles globales du DOM comme les sélecteurs CSS ou JavaScript. Ainsi il est possible de modulariser la page web, d’isoler des composants.

Cet environnement peut être manipulé en JavaScript. Il sert notamment aux navigateurs pour mettre en place les lecteurs vidéos à l’insertion de la balise <video>. Ils sont composés de nombreux éléments, mais intouchables nativement, par les affectations globales.

Liens 5
  • API, interface de programmation
  • CSS, Cascading Style Sheets
  • javascript langage de programmation
  • programmation orientée objet
  • BEM, Bloc Element Modifier
Rétroliens 4
  • BEM, Bloc Element Modifier
  • CSS, Cascading Style Sheets
  • javascript langage de programmation
  • web scraping

domaine des humanités numériques

id :20200725085518
dernière édition :
type :undefined
mots-clés :scienceinformation
mode focus :

Les humanités numériques (aussi appelées humanités digitales) sont un champ de recherche scientifique transdisciplinaire. Il vient en aide et se nourrit d’autres disciplines par des pratiques croisées de chercheurs, souvent issus des sciences humaines et sociales (SHS) ou même des arts.

Il s’agit globalement d’extraire, traiter (analyser, encoder, modéliser… ) et partager de la connaissance. C’est aussi un champ de recherche sur la culture numérique.

Humanités digitales

Olivier Le Deuff préfère l’appellation « humanités digitales » qui n’est pas un anglicisme, mais un latinisme. Digital vient de digit, le doigt, celui qui permet de compter (on retrouve l’idée de numérique, d’itération, de calculabilité des données), de pointé (appelé l’index, référence d’autant plus frappante).

Cette expression fait à merveille le lien entre les techniques du chiffre (algorithmique) et de la lettre (documentation). Ainsi les humanités digitales seraient « une poétique de la main tendue entre la lettre et le chiffre, entre le savoir et le faire, entre l’homme et la technique »[^1]. Il se garde volontairement d’utiliser l’expression « homme-machine », trop spécifique dans ce contexte vu l’ampleur des problématiques soulevées par les humanités numériques.

« Quelle que soit notre définition de la culture, nous pouvons nous accorder sur le fait qu’elle est liée à l’écriture, sinon grandement portée par elle. Dans un registre littéraire, la culture est faite de romans, de commentaires de ces œuvres, de relectures, etc. L’écriture conditionne aussi les mathématiques, la physique, le fonctionnement, le mode d’emploi de nos machines, de nos logiciels, les enregistrements (films, musique, etc.), tout en évoluant avec ces inventions et avec l’usage que nous faisons d’elle. »[^2]

Pratiques

La pratiques du champ des humanités numériques est divisées en trois sous-disciplines :

  • digital humanities : croisement entres les approches subjectives (aesthesis) des humanités (SHS, arts) et les approches objectives des sciences exactes (mathesis universalis) afin de dépasser cette séparation ;
  • digital methods : études des logiciels, des applications et interfaces de programmation (API) ;
  • cultural studies : traitement massif de données en vue de les valoriser (sémantisation, diffusion).

[[20200509195652]] la donnée [[20200623180525]] base de données

Ces pratiques portent sur des corpus de texte, de (base de) données. Cela consiste autant en une étude de l'humain par le numérique, qu’une étude du numérique par les humanités. Il pose en effet de nombreuses problématiques.

[[20200801210302]] espace numérique

Limites

Le fait d’extraire une étude en science humaine de son champ ou une œuvre d’art de son support les dénaturent. Le numérique place l’œuvre en dehors de l’espace et du temps ce qui nous fait perdre des notions fondamentales interactives entre une personne et un objet. Une visualisation de données n’est pas un « medium de véracité », mais une « forme de sensibilité » interchangeable.

Les humanités numériques sont comme une béquille numérique pour des disciplines qui se sont peu ouvertes aux usages numériques parmi les SHS. Pour autant, de nombreuses disciplines scientifiques, du côté des lettres comme du côté des chiffre, se sont appropriées ces outils. Aussi, ces deux bords que les humanités numériques réconcilient dans leurs pratiques n’ont pas attendu la transdiscipline pour travailler en interdisiplinaire. Des économistes s’emparent largement des théories philosophiques.

Attention à garder un œil critique sur le numérique, sur le modèle économique qu’il impose au monde, mais aussi au microcosme de la recherche.

[^1]: Olivier Le Deuff, Le temps de humanités digitales, 2014 [^2]: Éric Guichard, Les humanités numériques n’existent pas, 2019

Liens 3
  • la donnée
  • base de données
  • espace numérique

économie documentaire des réseaux sociaux

id :20200625095558
dernière édition :
type :processus
mots-clés :scienceinformation
mode focus :

[[20200801205256]] l'humain est un document

Ainsi on retrouve des fiches de toutes les formes sur les réseaux sociaux. Tout le monde peut commenter, annoter (like, commentaires), partager et indexer (tags, libellés) ce qui est une véritable fiche documentaire, rangée dans la base qui forme le profil utilisateur.

[[20200624194717]] fiche comme modèle de données [[20200805104653]] traces numériques

« On peut également noter une volonté de renouer avec les cartes de visite sur les réseaux Instagram ou Snapchat qui permettent d’échanger de façon interactive des profils sous forme de cartes à jouer avec un décorum et un symbole de type Qrcode pour aller découvrir le compte de la personne. L’objectif est de réduire le profil à une simple carte à consulter »[^1]

Sur ces fiches on retrouve du texte, des images, des icônes (emojies), des liens hypertextes, soit un outil de récolte de données et métadonnées : la fiche est le croisement entre la communication d’un utilisateur et la réactions des autres vis-à-vis de cette information. Les algorithmes dressent ainsi un index (« base de données des intentions »[^4]) quand les utilisateurs voient un profil.

« La gestion ds identités numériques laisse entrevoir la constitution d’un pan-catalogue des individualités humaines, ouvert à l’indexation par les moteurs de recherche, et pose ainsi la question de la pertinence des profils humains. »[^2]

La stratégie informationnelle, documentaire, a pour fin l’analyse sociale. C’est pourquoi les réseaux sociaux vont jouer sur l’économie de l’attention, envoyer des notifications pour le shoot de dopamine, mettre en place un design incitatif, une interface centrée sur l’interaction.

[[20200802100201]] théorie du nudge

Analyse des contenus

L’analyse des personnes s'effectue par l’analyse des contenus (qui renseignent les algorithmes sur ces mêmes personnes). Avec la reconnaissance optique de caractères, des visages, ou plus simplement les analyses d’humeur, de sujet, il est possible d’obtenir de nombreuses informations sur un post.

Analyse personnelle

Les algorithmes n’ont pas la finesse pour analyser le comportement d’une personne, mais d’une masse, sachant qu’elle va déterminer le comportement personnelle. À cette masse catégorisée, indexée, on va proposer un contenu dans une perspective marchande (techno-économique[^3]), le digital audience labor.

« les médias sociaux vendent des bases de données personnelles renseignant les préférences et les comportements de portions de leurs publics à des annonceurs qui les achètent. »[^5]

Ce contenu peut être publicitaire, mais la plupart du temps il s’agit d’autres posts, souvent du même registre (filter bubble, bulle d'information) et plus rarement d’un registre voisin.

En analysant les groupes et en y plaçant les personnes, les réseaux sociaux sont capables d'identifier les contenus en les analysant, mais ils se basent aussi sur les informations qu'ils ont de la personne qui a posté le contenu et les informations des personnes qui interagissent avec ce contenu. En donnant accès au like, au dislike ou à d'autres formes de métadonnées, on entraîne l'algorithme à savoir où nous nous situons dans la population et où il peut venir nous proposer du contenu pour valider ou préciser cette position.

graph TB
	internaute[internaute fidelisé et actif]
	externe[entreprise externe]
	interface(interface active et personnalisée)
	donnees(production de données)
	algorithmes{{algorithmes}}
	marchandisation{{marchandisation}}
	personnalisation{{personnalisation}}
	publicite{{publicité}}
	
	internaute --> donnees
	donnees --> interface
	donnees --> algorithmes
	algorithmes --> personnalisation
	algorithmes --> marchandisation
	personnalisation --> interface
	interface --> internaute
	interface --> publicite
	publicite --> marchandisation
	marchandisation --> externe

Le placement est précis : nous savons que les réseaux sociaux sont capables de déterminer le genre, la sexualité, les appartenances politiques et culturelles d’une personne. C’est une ouverture à l’astroturfing : désinformation populaire (propagande) basée sur un traitement algorithmique.

[[20200619130655]] ideologie big data la vérité que nous enseigne le big data

[^1]: Olivier Le Deuff, La fiche entre économie informationnelle et attentionnelle, 2019 [^2]: Olivier Ertzscheid, L’homme est un document comme les autres : du World Wide Web au World Life Web, 2009 [^3]: expression de Éric Sadin [^4]: John Battelle, The Database of Intentions, 2003 [^5]: Antonio Casili, Qu'est ce que le gigital Labor : Travail, technologies et conflictualités, 2015

Liens 5
  • l'humain est un document
  • fiche comme modèle de données
  • traces numériques
  • théorie du nudge
  • la vérité que nous enseigne le big data
Rétroliens 4
  • digital labor
  • fiche comme modèle de données
  • l'humain est un document
  • travail gratuit, économie du web de plateforme

écrit et oral

id :20200903113405
dernière édition :
type :inscription
mots-clés :scienceinformation
mode focus :

« L’énonciation orale […] est toujours un acte circonstanciel, interpersonnel et non strictement reproductible. L’écriture est la possibilité du jeu de l’écriture sur la langue »[^1] (p.9)

« Le calembour est possible oralement, pas l’anagramme. […] L’écriture ne reproduit pas seulement le flux de la parole, elle en permet la dissection »[^1] (p.10)

Formaliser le savoir

L’écriture permet de manipuler le discours et tend ainsi à l’objectiver[^3]. L’écriture n’est pas une « stricte phonographie », mais permet « d’ouvrir la voie à un développement critique et créateur du savoir »[^1] (p.9).

[[20200905210104]] grammatisation

« une société orale n’est pas dépourvue de d’esprit critique mais dépourvue des moyens de se constituer une tradition critique »[^1]

Cet effet se répand dans la culture d’une société. Yves Jeanneret paraphrase[^5] ainsi Jack Goody au sujet des sociétés dotées d’une littératie [[20200707175829]] : ce sont « les sociétés qui connaissent un état de développement de l’écriture influençant toute forme de communication, y compris non écrite ».

Autorité de l’écrit

Cette tradition est nécessaire pour pratiquer une discipline comme la philosophie qui se nourrit des écrits des pairs et anciens pour descendre vers les nouveaux. On compte aussi sur l’écrit comme preuve, avis scientifique : document. L’écrit applique ainsi à la langue une dimension politique : des institutions (écoles, Académie…) font autorité sur l’écrit et décident par extension de ce qui est digne d’être parlé ou non.

[[20200708172120]] document

« Ce qui est jugé important ne passe plus par la parole. La parole n’est plus que conversation, échange anodin. Elle n’est dans notre société jamais en rapport avec la vérité et la preuve. »[^4]

Mythe du Phèdre

Platon et rapporte un dialogue de son maître, Socrate, qu'il entretient avec Phèdre. Socrate vient à parler de Theut, dieu égyptien qui inventa en premier la science des nombres (l’algèbre, la géométrie, etc.) puis en second l’écriture :

« Elle ne peut produire dans les âmes, en effet, que l'oubli de ce qu'elles savent en leur faisant négliger la mémoire. Parce qu'ils auront foi dans l'écriture, c'est par le dehors, par des empreintes étrangères, et non plus du dedans et du fond d'eux-mêmes, que les hommes chercheront à se ressouvenir. Tu as trouvé le remède [pharmakon], non point pour enrichir la mémoire, mais pour conserver les souvenirs qu'elle a. Tu donnes à tes disciples la présomption qu'ils ont la science, non la science elle-même. Quand ils auront, en effet, beaucoup appris sans maître, ils s'imagineront devenus très savants, et ils ne seront pour la plupart que des ignorants de commerce incommode, des savants imaginaires [doxosophoi] au lieu de vrais savants. »[^2]

[^1]: Jack Goody, La Raison graphique, 1979 [^2]: Platon, Phèdre (274e-275), traduction de Mario Menier [^3]: Jean-Marie Privat, Sur La Raison graphique. La domestication de la pensée sauvage de Jack Goody, 2018 [^4]: Raphaël Pividal, La Maison de l’écriture, 1976 [^5]: Yves Jeanneret, Yves Chevalier, La physionomie des systèmes : diagrammes et représentation, 2009

Liens 3
  • grammatisation
  • littératie numérique
  • document

écriture

id :20210406141809
dernière édition :
type :inscription
mots-clés :scienceinformation
mode focus :

L’écriture est « l’inscription de signes sur un support »[^1] (p.43). Elle a trois pans :

  • sémiotique grâce à des signes « observables, interprétables et analysables »
  • technique grâce à « la mise en œuvre d’un savoir-faire technique d’altération (l’inscription) d’une matière (le support) » dans le domaine des architextes [[20210115090700]]
  • communicationnel car elle « produit un objet observable […] qui organise une situation de communication »

« ne présupposons pas que l’écriture est la consignation volontaire d’un discours et qu’elle ne s’adresse qu’à d’autres humains. […] l’écriture comme consignation volontaire de la pensée par un sujet rationnel, à destination d’autres sujets humains rationnels, est un cas particulier de ce phénomène qui recouvre bien d’autres modalités »[^1] (p.44)

L’écriture est une « technologie de l’intellect »[^2] permettant de structurer la connaissance [[20200625115033]] et ainsi notre manière d’appréhender le monde.

On accorde également une facette sociale à l’écriture de par sa technicité. L’écriture n’est pas neutre et mobilise des enjeux institutionnels, d’apprentissage, de maîtrise. L’écriture se partage, mais peut aussi exclure des individus (non maîtrise, impossibilité d’écrire). Elle est aujourd’hui industrialisée.

L’écriture est composite, composée des supports, outils et techniques de sa communauté d’utilisateurs pour représenter une variété de savoirs.

« Elle permet de lier les multiples dimensions d’un phénomène, de le comprendre non pas dans son intégralité mais dans la façon dont ces différentes logiques se croisent et s’hybrident »[^1] (p.45)

Écriture en informatique

« Il ne peut y avoir d’écriture que s’il y a une interprétation et une lecture faite par un humain »[^2] (p.141)

« une modification du système d’écriture est aussi une modification de nos structures de pensée […] l’informatique introduit dans l’histoire de l’écriture un mouvement d’abstraction, dû à la formalisation du calcul et à la rupture sémiotique entre inscription et affichage »[^1] (p.50)

Ainsi, l’écriture sur ordinateur appartient à un autre domaine technique, celui du calcul et donc de l’inscription computationnelle [[20210116135423]].

[^1]: Samuel Goyet, De briques et de blocs. La fonction éditoriale des interfaces de programmation (API) web : entre science combinatoire et industrie du texte, 2017 [^2]: Jack Goody, La Raison graphique, 1979

Liens 3
  • architexte
  • structures de la connaissance
  • inscription computationnelle

EDI, environnement de développement intégré

id :20210303170947
dernière édition :
type :processus
mots-clés :code
mode focus :

Un EDI (Environnement de Développement Intégré) est un ensemble d’outils aidant à la conception des logiciels. Il s’agit d’un éditeur de texte « intelligent », capable de compiler/interpréter [[20200718182015]] un ensemble de fichiers de code. Ainsi, il peut livrer une appréciation des inscriptions, proposer une autocomplétion, des corrections ou même du refactoring [[20210109140006]].

Ils peuvent également parcourir l’arborescence à la recherche d’outils comme les boîtes à outils programmables [[20210303174716]].

Exemples d’EDI :

  • Visual Studio Code
  • Atom
  • Web Storm
Liens 3
  • langages compilés ou interprétés
  • refactoring, revue de code
  • boîte à outils programmable
Rétroliens 1
  • environnement de développement

édition numérique

id :20200707085937
dernière édition :
type :architecture
mots-clés :lectureecriture
mode focus :

L’édition est une chaîne de traitement documentaire, un processus qui accompagne l’objet intellectuel document [[20200708172120]] par des étapes successives. Les techniques numériques permettent d’automatiser certains de ces processus, mais aussi d’intégrer nos documents sur de nouveaux supports (ex : diagrammes interactifs), pour de nouvelles manières de lire et apprendre.

« Si la langue anglaise fait la distinction entre l’édition en tant que filière (publishing) et l’élaboration effective du document (editing) […] le terme français d’édition a acquis une certaine polysémie. […] Éditer, c’est orchestrer l’élaboration du document. Dans le contexte de cet article c’est la seconde dimension qui nous intéresse : éditer au sens de créer et manipuler des fichiers ; éditeur au sens de logiciel d’édition ; édition au sens de pratiques d’écriture, entre conception, rédaction et programmation »[^1]

L’écriture numérique possède certaines qualités [[20200606201922]] qui font d’elle un matériau malléable auquel on applique une variété d’outils. Ils permettent de la

Ainsi, le document numérique a son propre univers d’édition que l’informatique permet largement d’automatiser. On peut parler de « programmation éditoriale » comme on parle d’« éditeur au sens de logiciel d’édition ; édition au sens de pratiques d’écriture, entre conception, rédaction et programmation »[^6].

[[20200607195524]] métier d'éditeur

« il ne s’agit pas seulement de choisir, de légitimer, de mettre en forme et de diffuser un contenu, mais il s’agit aussi de réfléchir à l’ensemble des techniques que l’on va utiliser ou créer [… et] aux contextes de circulation produits par l’espace numérique »[^4]

[[20200801210302]] espace numérique

Étapes

Tout au long du processus d’édition numérique, lecture et écriture, conception et diffusion se confondent. L’informatique oblige à entretenir une architecture pour poursuivre le processus d’édition sans friction. On pourrait parler de chaîne éditoriale, voire de système éditorial, « car sa structure est non-linéaire »[^10].

Écrire → Entreposer, regrouper → Mettre en page → Fabriquer → Diffuser.

« La finalité n’est plus de retrouver des documents, mais d’en produire de nouveaux, à l’aide des ressources retrouvées. On passe ainsi de l’indexation pour la recherche à l’indexation pour la publication. »[^7]

Éditorialisation

« l’éditorialisation est une instance de mise en forme et de structuration d’un contenu dans un environnement numérique »[^8]

« L’éditorialisation est une partie de la chaîne du texte, où différents acteurs spécialisés – et souvent différents de l’auteur du texte : typographes, correcteurs, éditeurs, imprimeurs… – interviennent sur le texte en le transformant. En cela, l’éditorialisation est intimement liée au texte et à sa matérialité »[^9] (p.55)

[[20200621084631]] editorialisation [[20200707112034]] instance de mise en page

Diffusion et distribution

Elle se fait en général sur le web : il faut choisir les formats d’export que vont rencontrer les internautes.

« Publiés sur le web, les textes numériques sont destinés à être lus autant par des humains que par des machines. Ainsi, éditer un livre numérique ne consiste plus seulement à travailler sa mise en forme, mais requiert en premier lieu de le structurer selon un balisage sémantique. »[^5]

Le document numérique s’inscrit également dans un réseau [[20210414220755]]. Antoine Fauchié a entièrement travaillé son mémoire, puis sa thèse à l’aide d’outils numériques et de plateformes comme Git (dont les commits sont relancés sur Twitter).

[[20200618141829]] formats de fichier numériques

Dépendances

[[20200701083222]] dépendances logicielles

Ce processus dépend d’une série plus ou moins importante de logiciels ou de programmes rassemblés.

« Plutôt que de faire porter la continuité d’une chaîne d’édition sur la maintenabilité d’un ou plusieurs logiciels par des sociétés privées ou des communautés centralisées, un système modulaire repose sur l’assemblage de plusieurs programmes, autonomes et connectés »[^2]

[^1]: Arthur Perret, Matière à pensées. Outils d’édition et médiation de la créativité, 2018 [^2]: Antoine Fauchié, Vers un système modulaire de publication : éditer avec le numérique, 2019 [^4]: Michael E.S, Macello V.R., Pratiques de l'édition numérique, 2014 [^5]: Marcello V.R, Nicolas Sauret, Antoine Fauchier, Margot Mellet, Écrire les SHS en environnement numérique. L’éditeur de texte Stylo, 2020 [^6]: Arthur Perret, Matière à pensées : outils d’édition et médiation de la créativité, 2018 [^7]: Bruno Bachimont, Nouvelles tendances applicatives: de l’indexation à l’éditorialisation, 2007 [^8]: Marcello V.R. Qu'est-ce que l'éditorialisation?, 2016 [^9]: Samuel Goyet, De briques et de blocs. La fonction éditoriale des interfaces de programmation (API) web : entre science combinatoire et industrie du texte, 2017 [^10]: Florian Harmand, Arthur Perret, Former à la notion de réseau par la conception et l’interprétation : l’atelier Reticulum, 2021

Liens 11
  • document
  • qualités de l’écriture numérique
  • API, interface de programmation
  • feuille de style
  • métier d'éditeur
  • espace numérique
  • éditorialisation
  • instance de mise en page
  • réseau
  • formats de fichier numériques
  • dépendances logicielles
Rétroliens 4
  • chaîne d’édition du code
  • livre numérique
  • processualité éditoriale
  • texte brut

éditorialisation

id :20200621084631
dernière édition :
type :processus
mots-clés :scienceinformation
mode focus :

« L’éditorialisation est l’ensemble des dynamiques qui constituent l’espace numérique et qui permettent, à partir de cette constitution, l’émergence du sens. Ces dynamiques sont le résultat de forces et d’actions différentes qui déterminent après coup l’apparition et l’identification d’objets particuliers (personnes, communautés, algorithmes, plateformes…). »[^7]

[[20200801210302]] espace numérique

L’éditorialiste relate des faits en introduisant sa propre opinion. On retrouve ce geste dans l’éditorialisation numérique telle que la production de contenu ou l’interaction d’humains comme une manière d’interpréter le monde (donner du sens).

Dispositifs

Un contenu inscrit dans un fichier numérique est abstrait[^1] tandis que sa mise en forme dépend de logiciels qui vont permettre de réaliser son éditorialisation soit « l’ensemble des pratiques d’organisation et de structuration de contenus sur le web »[^2] :

« ensemble des appareils techniques (le réseau, les serveurs, les plateformes, les CMS, les algorithmes des moteurs de recherche), des structures (l’hypertexte, le multimédia, les métadonnées) et des pratiques (l’annotation, les commentaires, les recommandations via les réseaux sociaux) permettant de produire et d’organiser un contenu sur le web »[^6]

Ce sont ces « dispositifs technologiques qui déterminent le contexte d’un contenu et son accessibilité »[^2]. Ces logiciels permettant d'appréhender le texte sont des « super-structures qui déterminent les conditions de l’accès à l’information »[^3].

[[20200708132301]] interface

Contexte se lit ici littéralement, comme ce qui accompagne le texte.

Dans l’espace

Éditorialiser, c’est produire de l’espace numérique, donner la capacité d’exister à un contenu ou une personne : « dans l’espace numérique, un objet doit être connecté et mis en relation avec les autres objets pour exister »[^6]. Toutefois, l’éditorialisation ne se produit pas dans un espace numérique général, mais dans un « environnement numérique particulier »[^6].

Pour se mouvoir dans cet espace, ne pas le subir, mais contrôler ses mouvements et sa place, il est nécessaire de comprendre les enjeux (acteurs, dispositifs) du numérique par la littératie.

[[20200707175829]] littératie numérique

Caractéristiques

On lui distingue cinq caractéristiques à l’éditorialisation[^6] :

  • processualité : « Tout processus d’éditorialisation est toujours en cours ; il est toujours dans une dynamique de mouvement », il est en permanence remis en question (versions d’écriture, re-publication, déplacement dans les résultats de recherche, bug etc.) [[20200722215106]] processualité éditoriale
  • performativité : « L’idée de performativité se réfère au fait qu’une action particulière produit quelque chose qui n’était pas prévu – qui n’était pas prévisible – avant ladite action » : l’éditorialisation est justement un « processus ouvert » et créer ses propres normes, modèles d’utilisation en vue d’opérations. « L’éditorialisation est un acte performatif dans le sens où elle tend à agir sur le réel plutôt qu’elle ne le représente. »
  • ontologique
  • multiplicité
  • collectivité

Indexation et combinaison

L’éditorialisation a une dimension culturelle, inscrite dans l’espace et le temps. Elle n’est pas simplement le fruit de dispositifs, mais d’une structure en mouvement perpétuel.

« l’indexation fine du contenu permet de ne retrouver que les segments concernés par la recherche d’information et de paramétrer l’usage de ces segments. »[^5]

[^1]: voir la fiche [[20200606201922]] qualités de l'écriture numérique [^2]: Michael E.S, Macello V.R., Pratiques de l'édition numérique, 2014 [^3]: Louis-Olivier Brassard, Infobésité avant la lettre, 2013 [^4]: Marcello Vitali-Rosati, La fin de l’autorité ? Pour une philosophie politique du web. [^5]: Bruno Bachimont, Nouvelles tendances applicatives: de l’indexation à l’éditorialisation, 2007 [^6]: Marcello V.R. Qu'est-ce que l'éditorialisation?, 2016 [^7]: Louis-Olivier Brassard Qu’est-ce que l’éditorialisation ?, 2020

Liens 5
  • espace numérique
  • interface
  • littératie numérique
  • processualité éditoriale
  • qualités de l’écriture numérique
Rétroliens 3
  • édition numérique
  • espace numérique
  • la vérité que nous enseigne le big data

effet de bord

id :20210109130837
dernière édition :
type :programmation
mots-clés :code
mode focus :

Une fonction est dite « à effet de bord » (avec effet secondaire) si elle affecte autre chose que son environnement local, interne. Ainsi, affecter une variable externe à la fonction ou même modifier l’affichage de l’interface sont des effets de bord.

Souvent, ces effets nuisent à la cohérence du programme en aboutissant à des comportements imprévus (exécutions implicites augmentant la complexité du programme [[20210313105330]]), voire des défaillances en cascades. Ces bugs sont souvent liés à une mauvaise appréhension de la portée des variables [[20200522093949]].

La programmation fonctionnelle [[20201222163154]] cherche à minimiser les effets de bords en les encapsulant au sein de monades.

Liens 3
  • complexité logicielle
  • la portée des variables
  • programmation fonctionnelle
Rétroliens 5
  • architecture logiciel MVC
  • complexité logicielle
  • fonctions pures
  • la portée des variables
  • programmation déclarative

empaqueter (bundle) le code

id :20210314114007
dernière édition :
type :inscription
mots-clés :code
mode focus :

[[20210314113151]] chaîne d’édition du code

Lorsque l’on développe un programme, nous allons rapidement devoir modulariser [[20210313113130]] celui-ci. Cela implique de répartir son code source et ses données dans plusieurs fichiers, mais aussi de faire appel à des bibliothèques [[20210417145938]]. On prendra soin de lier le tout avec des appels hypertextes comme ci-dessous pour un bundle JavaScript.

[[20210130151200]] architecture de code hypertextuelle

// index.js
import fx from 'functions';
import d3 from 'd3';

function component() {
    document.body.appendChild(fx());
}

Avec un outil comme Webpack, on peut lancer l’empaquetage à partir d’un fichier « racine » (ici index.js). Nous allons alors obtenir un fichier bundle.js, soit l’agrégation du code source de index.js et celui de ses imports. Il est également possible de joindre d’autres fichiers de données, des feuilles de styles dans ce tout dont on ne peut plus distinguer les parties.

Durant le processus, il est possible d’appliquer des filtres aux fichiers. C’est utile lorsque l’on veut transpiler [[20200907090751]] ou minifier [[20210218193747]] du code « à la volée ».

Ces opérations sont utiles pour diminuer le nombre de fichiers à appeler et executer durant l’utilisation du logiciel. C’est aussi une perte de lisiblité très importante du code qui devient illisible pour un humain.

Liens 6
  • chaîne d’édition du code
  • modularité logicielle
  • bibliothèque logicielle
  • architecture de code hypertextuelle
  • transpiler ou compiler du code
  • minifier le code
Rétroliens 2
  • boîte à outils programmable
  • chaîne d’édition du code

encodage du texte

id :20200717141735
dernière édition :
type :inscription
mots-clés :lectureecriture, code
mode focus :

Le texte brut n’existe pas. D’immenses tableaux (appelés encodings) stockés dans les ordinateurs contiennent toutes les lettres d’un côté, et toutes les combinaisons de 0 et de 1 de l’autre. Or, presque chaque pays a créé son propre tableau, et ces tableaux sont incompatibles entre eux : pour la même combinaison de 0 et de 1, ils donnent un caractère différent voire rien du tout.

[[20200629161610]] texte brut

Selon les environnements (navigateur web, terminal ou console Python), l’encodage peut être très différent et d’un copier/coller à l’autre, on peut changer plusieurs fois d’encoding. Ainsi, le texte brute, le code, sont encodés et il est crucial de savoir comment pour éviter de perdre de l’information.

Encodage caractères

L’ASCII support les caractères anglais (donc pas les accents) tandis que l’UTF-8 permet de coder tous les caractères.

L’UTF-8 (Universal Character Set Transformation Format, sur 8 bits) est le langage universel : c’est une implémentation de Unicode, un tableau gigantesque qui contient suffisamment de combinaisons pour éliminer les problèmes d’encodage à travers le monde (l’ésperanto informatique).

Problèmes d’encoding

Lorsque l’on a un problème d’encoding c’est que l’ordinateur n’arrive pas à trouver comment afficher le caractère : il n’a pas utilisé le bon tableau. Il faut donc lui indiquer quel est le bon tableau (en supposant qu’on l’on connaisse l’encodage d’origine et l’encodage cible) ou bien transcoder le caractère.

Déclarer encodage

Placer la ligne suivante en haut de certains fichiers permet d’assurer que l’ordinateur sait quel encoding utilisé.

# coding: utf8

Source : http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/

Liens 1
  • texte brut
Rétroliens 5
  • la donnée
  • matérialité d’un programme
  • software/hardware
  • texte brut
  • URI, uniform resource locator

encre des données

id :20201119142248
dernière édition :
type :modélisation
mots-clés :design, donnee
mode focus :

[[20200912130028]] visualisation

L’encre des données (data-ink) est un concept développé par Edward Tufte dans son livre The Visual Display of Quantitative Data (1983). Il permet d’établir un rapport entre l’encre (nombre de pixels) utilisée pour un affichage de données et celle utilisée pour effectivement afficher les données. Il convient en effet de trouver un équilibre dans cet affichage afin de ne pas distraire l’internaute, de le détourner du véritable sujet de la page.

Pour équilibrer cet affichage, il est nécessaire d’appliquer le calcul suivant. Le résultat doit être le plus proche possible de 1.

data-ink ratio = encre des données / encre de l’affichage

Ainsi, on limite au maximum les aplats et les tracés inutiles en ne gardant que les repères nécessaires.

Source : https://infovis-wiki.net/wiki/Data-Ink_Ratio

Liens 1
  • visualisation

enjeux politiques de l’écriture numérique

id :20200725133539
dernière édition :
type :undefined
mots-clés :scienceinformation
mode focus :

L’écriture numérique est en enjeux politique comme l’écriture de manière générale :

« Nous savons aussi que la maîtrise de l’écrit est un paramètre essentiel de ces rapports de pouvoir, ne serait-ce que parce qu’elle donne la possibilité d’infléchir les orientations de la culture de l’écrit. […] les grandes entreprises du numérique maîtrisent l’écriture, la confisquent à leur manière en nous louant des logiciels, en favorisant des formats de fichier, des protocoles, des modes d’échange en ligne (qui sont écrits), en déformant le monde perçu selon leurs perspectives, parfois appelées algorithmes »[^1]

[[20201025084447]] la loi du code

« Nous avons donc perdu progressivement la capacité d’écrire dans un langage interprétable par la machine. »[^2]

[[20200707161136]] problème des logiciels de traitement de texte

[^1]: Éric Guichard, Les humanités numériques n’existent pas, 2019 [^2]: Julien Dehut, En finir avec Word ! Pour une analyse des enjeux relatifs aux traitements de texte et à leur utilisation, 2018

Liens 2
  • la loi du code
  • problème des logiciels de traitement de texte
Rétroliens 3
  • architexte
  • espace numérique
  • littératie numérique

énonciation éditoriale

id :20200916105659
dernière édition :
type :inscription
mots-clés :scienceinformation
mode focus :

Considérons deux vues d’un texte. Si le texte « premier » n’est fait que de grammaire et de sens, il ne « s’objective qu’à travers l’existence d’un texte second », matériel : L’énonciation éditoriale est le texte « pas uniquement comme texte écrit, mais comme objet ‹ polyphonique ›, objectivé sur un support matériel » : par « matérialité du support et de l’écriture, l’organisation du texte, sa mise en forme »[^1]

Des exemples d’œuvres mettant en évidence cette dualité équilibrée et interdépendante :

  • Cent mille milliards de poèmes de Raymond Queneau (1961) ;
  • Exercices de style de Raymond Queneau (1961) ;
  • Composition n° 1 de Marc Saporta (1962).

Épaisseur du texte

Le texte impose une « résistance physique »[^1], sociale, culturelle. Il adopte un format, une matière, une graphie (mise en page, typographie, illustration) porte un ensemble d’attributs (titre, auteur, éditeur et droits, ISBN), autant d’éléments observables qui plus qu’accompagner le texte le font vivre, lui donne une identité et une connotation qui vient s’ajouter au sens du texte.

Au sujet de la typographie, « son évidente omniprésence masque son existence au point de la faire disparaître et d’en effacer le sens et la fonction »[^1]

[[20200712214549]] typographie

Sur écran

Prendre en compte le fond plutôt que la forme du texte, ou l’inverse, sont des « erreur symétrique »[^2] et c’est le risque du texte sur écran.

Le risque est de « voir la détermination technique l’emporter sur toutes les autres »[^2], que le texte soit réduit à son affichage, qu’il soit réduit à une tâche automatique. En effet, on perd de vue l’« épaisseur technique » nécessaire à l’instance du contenu (fond) et de l’interface (forme).

[^1]: Emmanuel Souchier, L’image du texte pour une théorie de l’énonciation éditoriale, 1998 [^2]: Dominique Cotte, Écrits de réseaux, écrits en strates. Sens, technique, logique, 2004

Liens 1
  • typographie

environnement de développement

id :20201224152456
dernière édition :
type :processus
mots-clés :informatique
mode focus :

L’environnement de développement se forme autour d’un projet (ou d’une série de projets) logiciel. Il compose l’espace de travail des développeurs, la chaîne de production. Il s’agit autant de la méthodologie de projet que de l’inscription du code. Il encadre la structure du logiciel [[20210221144451]] et lui ajoute différents dispositifs présentés ci-après.

L’environnement de développement a pour rôle de rendre le travail des techniciens plus efficient. Il intègre des outils permettent de traiter automatiquement certains fichiers, d’aider à l’inscription du code ou encore de limiter les erreurs. Il ne sert pas nécessairement à accélérer le développement, mais à assurer son efficacité.

Un code plus contraignant à écrire (sel syntaxique, framework…) est un code plus réfléchit ; la vitesse n’est pas nécessairement un critère d’efficience.

Dispositifs

On dresse plusieurs catégories de dispositifs au sein de l’environnement de développement :

Ces dispositifs laissent tous une trace dans l’arborescence du logiciel. Soit ils intègrent directement le code source, soit ils laissent un fichier de configuration sur lequel ils viennent se greffer d’une installation à l’autre. Ce système permet de versionner la configuration de l’environnement de développement. Ils deviennent tous en quelque sorte des dépendances du projet.

Documentation

Deux documents permettent d’appréhender l’environnement de développement :

Liens 6
  • structure logicielle
  • versionnement Git
  • forge
  • EDI, environnement de développement intégré
  • boîte à outils programmable
  • documentation logicielle
Rétroliens 8
  • application
  • cycle de développement logiciel
  • forge
  • gestionnaire de dépendances
  • langages de programmation
  • niveaux des (ré)utilisateur logiciel
  • structure logicielle
  • versionnement Git

espace

id :20200719212204
dernière édition :
type :architecture
mots-clés :philosophie
mode focus :

L’espace est une notion fondamentalement humains tant elle est conditionne notre perception du monde. L’espace est le résultat de la structure des relations entre des objets. Deux philosophes s’opposent et conçoivent différemment la relation entre les objets.

Descartes

Il défini l’espace objectif, homogène : des points sont reliés sans hiérarchie d’aucune sorte.

Foucault

L’espace est un « ensemble de relations entre les objets qui portent des valeurs ». C’est un espace de valeurs qui dans tous les cas suggère un mouvement des objets, un rapport nécessairement inégal entre eux. Même les espaces sont inégaux : « des lieux ont plus de poids que d’autres »[^1]

Cette vision est le fruit d’analyses politiques et phénoménologiques[^1].

[^1]: Marcello Vitali-Rosati, La fin de l’autorité ? Pour une philosophie politique du web.

Rétroliens 5
  • bibliothéconomie
  • espace numérique
  • namespace, espace de nom
  • processualité éditoriale
  • réseau

espace numérique

id :20200801210302
dernière édition :
type :architecture
mots-clés :web, scienceinformation
mode focus :

[[20200719212204]] espace

On pense souvent le Web comme un « non espace, un non lieu, une utopie dans le sens étymologique du mot  »[^1] : « en aucun lieu ». De par la nature de l’espace numérique on peut oublier que nos actes (ex : l’envoi d’un fichier) ont des conséquences. On oublie les coûts humains, matériels, écologiques du réseau Internet et de son entrée jusque dans nos espaces physiques intimes.

« Il est important de souligner que si nous comprenons le mot ‹ numérique › dans un sens culturel, l’espace numérique est notre espace principal, l’espace dans lequel nous vivons, et pas seulement l’espace du web ou des objets en ligne. »[^2]

[[20200621084631]] éditorialisation

Si le numérique ne peut être comme matériel, alors il ne peut être politique. Hors il change radicalement notre rapport à l’information.

[[20200725133539]] enjeux politiques de l’écriture numérique [[20200705114827]] digital labor

Effacement

Le numérique « prend une dimension anthropologique, il fait parti de notre condition d’êtres humains »[^3]. C’est ainsi qu’il faut comprendre le numérique, l’étudier et ainsi prévenir le risque qu’il devienne « impensable […] dans nos usages puisque on sera plus ou moins condamnés à ne penser qu’à travers les outils que le numérique a mis en place et donc il se sera effacé à travers les objets qu’il aura contribué à élaborer ».

Le numérique comme technique va avoir cette tendance naturelle à s’effacer au profit des outils et des usages qu’il a permis de créer.

[[20200709104849]] rapport aux objets techniques

Hybride

Internet n’est pas un espace séparé du monde physique, du réel, mais un espace hybride. Il s’invite dans l’espace pre-numérique (qui précède le monde numérique) via l’implantation récente d’objets interconnectés par le réseau Internet (téléphone, montres, véhicules… ). On ajoute cette hybridation à la densité et la nature hyperactive du numérique qui définissent cet espace.

Fragmenté

Le numérique est un espace que l’on ne peut toucher mais qui est bien réel, bien qu’il soit aussi fragmenté : nous sommes chacun derrière nos écrans et l’existence de chaque objet tient aux liens qui le raccrochent à une réalité, comme celle d’un moteur de recherche.

[[20210114195936]] hyper

« [par rapport au papier, l’ordinateur comme outil d’écriture découple] trois espaces nettement distincts sur l’ordinateur : celui de la saisie (le clavier), celui de l’affichage (l’écran) et celui de l’enregistrement (la mémoire) […] C’est dans cet écart que se glisse et se manifeste la supposée dématérialisation »[^4]

Le Web est fragmenté en de nombreux endroits, en de nombreux sites, eux-mêmes fragmentés en pages, elle-même fragmentées en différents fichiers réunis par différents protocoles (par exemple link pour le CSS, include entre des fichiers PHP). L’envoi des pages se fait entre un client et un serveur [[20210112090725]] qui échangent non pas un flux continu de données, mais des paquets qui sont décomposés d’un côté puis réceptionnés, recoupés, regroupées à l’arrivée. Ces paquets arrivent sur différents terminaux qui ont chacun leurs différentes couches logicielles par lesquelles passent les informations avant d’arriver sur des interfaces elles-mêmes morcelées.

[[20210130151200]] architecture de code hypertextuelle

« L’environnement numérique est prescriptif, car il détermine la forme des contenus qu’il héberge »[^2]

Contrôle

Deux catégories de multinationales contrôlent le monde numérique. Il s’agit autant de la partie matérielle (hardware) que de la partie logicielle (software) :

GAFAM : Google, Amazon, Facebook, Apple et Microsoft BATX : Baidu, Alibaba, Tencent et Xiaomi

[^1]: Marcello Vitali-Rosati, La fin de l’autorité ? Pour une philosophie politique du web. [^2]: Marcello V.R. Qu’est-ce que l’éditorialisation?, 2016 [^3]: Bruno Bachimont, Rhétorique de l’intelligibilité, vers des humanités du numérique, 2020 [^4]: Pascal Robert et Nathalie Pinède, Le document numérique : un nouvel équipement politique de la mémoire sociale ?, 2012

Liens 8
  • espace
  • éditorialisation
  • enjeux politiques de l’écriture numérique
  • digital labor
  • rapport aux objets techniques
  • hyper
  • client serveur
  • architecture de code hypertextuelle
Rétroliens 6
  • édition numérique
  • éditorialisation
  • les versions historiques du web
  • domaine des humanités numériques
  • numérique
  • objet informatique

extension et greffons

id :20201201135325
dernière édition :
type :architecture
mots-clés :informatique, lectureecriture
mode focus :

On parle d’extension (add-on) ou de greffons (plugin). Les deux permettent d’ajouter des fonctionnalités. Contrairement aux extensions, les greffons sont des applications à part entière, dites standalone. Ainsi, elles n’ont pas de dépendances.

[[20200701083222]] dépendances logicielles

Liens 1
  • dépendances logicielles

feuille de style

id :20210207120845
dernière édition :
type :inscription
mots-clés :code
mode focus :

Une feuille de style est ensemble de règles permettant de modifier l’apparence d’une classe d’éléments. Cette apparence affecte consécutivement l’ensemble des objets [[20210130110228]] de cette classe. Ainsi, en définissant un visuel pour la classe paragraphe, on modifie le visuel de tous les paragraphes du document.

Ces règles peuvent être établies dans un fichier externe ou bien directement en en-tête du fichier contenant les classes qu’elle affecte. Dans le premier cas, une seule feuille de style peut affecter plusieurs fichiers, tant que ceux-ci répondent au même schéma de données. Un fichier peut également faire appel à plusieurs feuilles de style.

Il est possible de définir des règles relatives à la typographie [[20200621094836]], à la couleurs (corps et arrière-plan), à la position (absolues, marges) des éléments dans l’espace du document…

Il existe les feuilles de style CSS (pour les fichiers HTML) et les feuilles de style XSL (pour les fichiers XML).

Liens 2
  • objet informatique
  • règles typographiques
Rétroliens 2
  • CSS, Cascading Style Sheets
  • édition numérique

fiche comme modèle de données

id :20200624194717
dernière édition :
type :inscription
mots-clés :scienceinformation
mode focus :

La fiche est un outil historique d’organisation des connaissances et de l’information. Son étymologie latine (figere) renvoie à ses potentialités de fixer l’information.

Usage

Jean-François Bert cite quelque[^3] usages de la fiche :

  • « la fiche facilite les renvois, rend possible une lecture fragmentaire » : le lecteur est capable d’exploiter les fiches à l’unité ou bien d’en « compiler » plusieurs pour une information plus générale. On donne au lecteur la capacité de diriger sa lecture.
  • elle « sert à multiplier les informations ponctuelles, à les compiler, à les commenter, à les expliciter, à les vérifier et à les corriger, ou encore à les authentifier »
  • « elle engage aussi la question de la visualisation, et de la remémoration » comme un schéma de pensée que l’on pourrait imprimer intellectuellement, la fiche oblige aussi à se rappeler, à réexpliquer une pensée. La fiche est un « travail redondant qui n’est pas fait en pure perte puisque ce doublon pourra, à terme, être reclassé selon un ordre ou une classification différents »[^3]

[[20200622164608]] hypertexte [[20200630153054]] zettelkasten

Format

Il faut voir dans la petite taille de la fiche non pas une limite à imposer à sa mémoire, mais l’opportunité de discipliner son esprit à composer une pensée sur une surface définie ; c’est une épreuve de design.

Jean-François Bert différencie la fiche à « références multiples » et la fiche à « référence unique ». La première, plus grande, est destinée à être classée tandis que la seconde, « à portée de main » peut « être facilement mise de côté »[^3].

Paul Otlet prescrit le format désormais standardisé 125 × 75 mm : « Sur la gauche, le nom de l’auteur et son prénom entre parenthèses. À droite, un chiffre international, tiré de la CDD. Sur la seconde ligne, la date de publication, le titre de l’ouvrage in extenso. Puis viendront les indications de lieu, d’édition, d’impression »[^3].

Numérique

Les posts[^2] des réseaux sociaux sont autant de fiches que s’échangent et partagent les internautes avec de nouvelles formes d’annotations (comme la possibilité de d’ajouter un like, des commentaires). Ces métadonnées sont inscrites en vue d’une re-indexation permanente du contenu.

[[20200625095558]] économie documentaire des réseaux sociaux

On retrouve aussi la fiche comme fichier, notamment Markdown avec l’entête YAML (YAML Front Matter).

De la pile à la base de données

La notion de « pile » (de fiche) constitue le principe du logiciel HyperCard. L’équivalent informatique de la fiche est l’instance informatique d’objets via une class qui prend l’apparence de formulaires. On y inscrit les données avec un contrôle de la saisie pour les stocker sur une base de données. L’interface de cette dernière prend le plus souvent la forme d’un tableau avec à disposition des outils de tableur pour traiter en masse les objets qui apparaissent sous forme de ligne. Le paradigme de la programmation orienté objet permet de contrôler précisément ce type de système avec une méthode complète pour concevoir, modéliser et programmer ce type d’infrastructure.

[[20200622164608]] HyperCard [[20200707113753]] instance informatique

AnalogiqueInformatique
meublebase de données
modèleclasse
méthodeformulaire
ficheobjet

Les moyens changent, le vocabulaire, les outils, mais l’intention et la méthode demeurent. Ainsi, l’identifiant est un élément fondamental de ce système documentaire : chaque fiche, chaque objet doit pouvoir être précisément nommé et localisé.

Activité humaine

Il y a aussi quelque chose de personnel et compulsif dans le fiche.

« Faire des fiches est une activité humble et répétitive, machinale et parfois compulsive, dans certains cas pathologique. On retrouve une discipline du corps, de la main et de l’attention qui se déploie dans une temporalité mesurée à l’aune de critères quantitatifs » Christian Jacob, préface [^3]

[^1]: décomposer un problème complexe en « sous-problèmes » plus simples [^2]: tweets, cartes Tinder, publications Facebook, Intagram, ou sur un forum [^3]: Jean-François Bert, Une histoire de la fiche érudite, 2019 [^4]: Olivier Le Deuf, La fiche entre économie informationnelle et attentionnelle, 2019

Liens 4
  • hypertexte
  • zettelkasten, méthode documentaire
  • économie documentaire des réseaux sociaux
  • instance informatique
Rétroliens 3
  • base de données
  • économie documentaire des réseaux sociaux
  • HyperCard

flot de contrôle

id :20200930183337
dernière édition :
type :programmation
mots-clés :code
mode focus :

Le flot de contrôle est un l’ordre d’exécution des instructions d’un programme tel qu’il est défini par l’inscription des structures de contrôle et mots-clés d’un langage.

[[20200701214359]] structures de contrôle

Pour le code ci-dessous, on fait appel deux fois aux instructions contenues dans la fonction isContainingPairs. La structure for est une boucle qui encapsule deux conditionnelles. La première court-circuite la boucle si le test n’est pas vrai. Le seconde interrompt l’exécution de la fonction (donc de toutes ses instructions) si le résultat du test n’est pas 0. Après l’exécution de la boucle, la fonction retourne la valeur true.

La valeur true est retournée dans tous les cas où la fonction n’a pas été interrompue lors des itérations.

// vérifier si le tableau en paramètre contient des nombre entiers pairs
function isContainingPairs(array) {

	for (i = 0; i < array.length; i++) {
		if (Number.isInteger(array[i]) !== true) {
  			continue; }
	
  		if (array[i] % 2 !== 0) {
  			return false; }
	}

	return true;
}

const one = isContainingPairs([2,16,'hello',4,12]) // true
const two = isContainingPairs([3,2,'bye',7]) // false

Le flot de contrôle peut être formalisé sous la forme d’un graphe comme j’ai tenté de le faire ci-dessous pour la boucle :

graph LR

i
elt[element]

i --> elt
elt --> testInteger{est un nombre entier}
testInteger -->|non| i
testInteger -->|oui| testPair{est pair}
testPair -->|non| arret((arret))
testPair -->|oui| i

[[20200625172823]] théorie des graphes

Liens 2
  • structures de contrôle
  • théorie des graphes
Rétroliens 6
  • architecture de code hypertextuelle
  • comportement logiciel
  • programmation fonctionnelle
  • programmation orientée objet
  • structures de contrôle
  • structure logicielle

fonctions

id :20201224102746
dernière édition :
type :programmation
mots-clés :code
mode focus :

Ce sont des séquences génériques de calcul. Elles peuvent être répétées, appelées en cascade ou intégrées les unes aux autres et ainsi (re)organisés à volonté, dans une logique combinatoire [[20210416144157]].

Une fonction admet les éléments suivants :

  • paramètres : liste des intrants impératifs d’une fonction, éventuellement avec une valeur par défaut ;
  • intrants (ou entrées) : valeurs effectivement intégrées à la fonction, qu’elles soient globales[^1] ou passées en paramètre ;
  • extrants (ou sorties) : valeur retournée par la fonction.

Le mot-clé return permet généralement de mettre fin à l’exécution et de retourner la valeur finale que prendra la fonction. Si la fonction ne retourne pas de valeur, on l’appelle une routine (subroutine).

Écriture

On écrit en algèbre la fonction f de la manière suivante, qui va permettre de multiplier le nombre x (entrée) par deux :

ƒ(x) = x * 2 tel quel ƒ(4) revient à écrire 8.

[[20210109132504]] transparence référentielle

Dans la plupart des langages de programmation, cette même fonction va s’écrire de la manière suivante :

function f(x) {
    return x * 2;
}

const f = x => x * 2 ;

Usages

On distingue trois usages de fonctions[^2] :

  • Application : obtenir une valeur basée sur le traitement d’entrées ;
  • Procédural : répéter l’exécution d’une séquence d’instructions ;
  • Interface : commander des parties du système grâce aux fonctions proposées par le runtime [[20201224140951]].

[[20201224145634]] fonctions pures

On parle de fonctions d’ordre supérieur pour celles prenant en paramètre une autre fonction comme dans l’exemple suivant avec la fonction filter :

function isEven(v) {
    return v % 2 == 0;
}

let evens = [1,4,12,5].filter(isEven) // [4, 12]

[^1]: [[20200522093949]] la portée des variables

Liens 5
  • système combinatoire
  • transparence référentielle
  • runtime ou environnement d’exécution
  • fonctions pures
  • la portée des variables
Rétroliens 6
  • notions d’algorithmique
  • callback et promesses JavaScript
  • fonctions pures
  • matérialité d’un programme
  • structures de contrôle
  • système combinatoire

fonctions pures

id :20201224145634
dernière édition :
type :programmation
mots-clés :code
mode focus :

[[20201224102746]] fonctions

Une fonction pure est une fonction pour laquelle on a toujours la même sortie pour les mêmes entrées[^2] et sans effet de bord [[20210109130837]] : elle renvoie simplement le résultat de cette opération. Ce sont des éléments très simples du programme, facilement interchangeables, indépendants de l’état extérieur et qui ne peuvent donc muter.

On garanti ainsi la transparence référentielle [[20210109132504]].

Exemple

La fonction pure suivante se substitue à sa valeur de sortie, sans autre effet que de renvoyer systématiquement la même sortie pour la même entrée.

function double(int) {
    return int*2;
}

Ainsi, double(4); renvoie 8, indépendamment du contexte, du nombre d’appel, de sa place dans le flux de contrôle[^1].

Inversement, la fonction suivante déclenche l’arrêt du programme si la valeur globale sysIsActive vaut false. Ça n’est donc pas une fonction pure.

[[20200522093949]] la portée des variables

function double(int) {
    if(!sysIsActive) {
        process.exit();
    }
    
    return int*2;
}

[^1]: Eric Elliott, Master the JavaScript Interview: What is a Pure Function?, 2016

Liens 4
  • fonctions
  • effet de bord
  • transparence référentielle
  • la portée des variables
Rétroliens 3
  • fonctions
  • programmation fonctionnelle
  • transparence référentielle

forge

id :20210111200221
dernière édition :
type :architecture
mots-clés :informatique
mode focus :

[[20201224152456]] environnement de développement

Une forge est un système de maintenance collaboratif permettant de rassembler les productions de différents développeurs afin de les assembler (via des opérations systématiques) pour former un ou plusieurs logiciels.

[[20200707101208]] versionnement Git

Exemples :

Liens 2
  • environnement de développement
  • versionnement Git
Rétroliens 1
  • environnement de développement

formats de fichier numériques

id :20200618141829
dernière édition :
type :inscription
mots-clés :informatique
mode focus :

L’ordinateur dresse un index des formats de fichiers et des outils permettant de les interpréter. Ainsi un certain nombre de formats de fichier dépendent d'un logiciel, voire de sa version. Le contenu d'un fichier peut aussi ne pas correspondre au format annoncé (en général par son extension).

Typologie

  • format propriétaire : les spécifications techniques sont détenues par une organisation privé comme pour le .docx de Microsoft ou le .pdf de Adobe. Toutefois, pour ces exemples, les spécifications techniques sont publiées.
    • format opaque : les spécifications ne sont pas diffusées comme pour l'ancien format .doc de Microsoft.
  • formats libres ou ouverts : les concepteurs ne revendiquent pas la propriété comme pour les formats .html, .json.

L’extension n'est qu'une information sur le format du fichier : elle peut être modifiée. Par exemple, changer l'extension .docx d'un fichier Word en .zip (archive) permet de se rendre compte que les fichiers .docx sont en fait des répertoires comportant une multitude de fichiers.

Choix

On ne choisit pas un format de fichier par hasard. Ils brident plus ou moins l'affichage et la modification des données qu'ils contiennent, sont plus ou moins interopérables, plus ou moins légers.

[[20200629161610]] texte brut [[20200619133835]] langages de balisage léger

Liens 2
  • texte brut
  • langages de balisage léger
Rétroliens 1
  • édition numérique

formulaires

id :20210117100240
dernière édition :
type :inscription
mots-clés :scienceinformation
mode focus :

Un formulaire est un document préparé pour recueillir des réponses d’une population ciblée. Il est formalisé comme une série de champs. Chaque champ est une question à laquelle l’usager peut répondre selon les modalités proposées.

L’intérêt du formulaire est de guider l’usager à trouver la réponse, mais aussi à la formuler. Pour une question, une série d’images ou d’autres documents on peut ainsi proposer des réponses prêtes à être approuvées par l’usager, ou bien le laisser s’exprimer plus librement.

Formater la saisie

Ce qui sont des consignes sur le papier peuvent devenir des conditions de saisie sur les supports numériques. Ainsi, on peut limiter les réponses d’un champ quant à leur type (alphabétique, numérique, alphanumérique, fichier), le nombre de caractère. On peut aussi mettre en place des contraintes formelles comme l’obligation de cocher un certain nombre de réponse.

Comme cela on s’assure que les informations récoltées peuvent rentrer dans un système d’information, qu’elles sont formatées pour pouvoir être prises en charge par le système.

Rétroliens 1
  • base de données

framework ou cadriciel

id :20200701222949
dernière édition :
type :architecture
mots-clés :informatique
mode focus :

[[20200701083222]] dépendances logicielles

Un framework, ou cadritiel, est une base logicielle venant encadrer le développement d’un projet qu’il intègre et pour lequel il va prescrire une architecture, fournir des outils de développement. Les framework peuvent contrôler globalement les imports de bibliothèques [[20210417145938]] (voir l’exemple de VueJs ci-après).

Ils présentent plusieurs avantages :

  • accélération du développement ;
  • entraide de la communauté et documentation complète ;
  • sécurité et fiabilité sur une base de fonctionnalités.

Toutefois, il s’agit de projet open source [[20200710204125]] et ils peuvent dont être abandonnés. Aussi, les framework n’apportent pas de pluvalue métier : deux équipes qui travaillent avec le même cadriciel n’ont aucun avantage concurrentiel entre elles.

Cas

Le framwork Laravel cadre des logiciels PHP. Il met à disposition des développeurs de nombreuses classes et fonctions pour rediriger, authentifier l’utilisateur ou encore sécuriser et faciliter l’écriture des appels à une base de données.

Le framework Hugo permet de créer des sites statiques. Les fichiers qu’on y intègre ont une place très précise qui détermine leur traitement. Par exemple, un fichier de style placé dans le répertoire /assets/css prévaut sur (remplace) son équivalent provenant d’un dans un thème et placé dans le répertoire /themes/theme_name/assets/css. Hugo met à disposition des développeurs la commande hugo serve qui permet d’initialiser le site sur un serveur web local, automatiquement actualisé à chaque modification.

Le CMS Wordpress peut être considérer comme un framework dans le sens où il organise une base de données et met à disposition une série de fonctions pour construire des pages web compatibles avec des thèmes et mises à jour régulières.

VueJs peut être considéré comme une bibliothèque pouvant être intégrée à un site web pour en faire une interface dynamique. L’une de ses fonctionnalités est la création de web components (composants HTML prescrits en JavaScript et intégrés au DOM). Il est possible de pousser cet usage jusqu’à créer des composants mêlant HTML, JavaScript et CSS dans des fichiers .vue nécessitant un environnement d’exécution [[20201224140951]] adapté. Il devient alors un puissant framework pour générer des pages web dynamique très efficacement. Pour s’implémenter dans cet environnement d’exécution particulier, des bibliothèques se sont adaptées à VueJs avec une version particulière.

Liens 4
  • dépendances logicielles
  • bibliothèque logicielle
  • logiciel libre et logiciel open source
  • runtime ou environnement d’exécution
Rétroliens 4
  • architecture logiciel MVC
  • dépendances logicielles
  • gestionnaire de dépendances
  • structure logicielle

gestionnaire de dépendances

id :20210221151929
dernière édition :
type :architecture
mots-clés :code
mode focus :

[[20200701083222]] dépendances logicielles

Dans l’espace d’un logiciel [[20210221144451]] on retrouve de nombreuses bibliothèques [[20210417145938]], des frameworks [[20200701222949]] ainsi que des outils de développement [[20201224152456]]. Tous peuvent être installés en une commande grâce aux gestionnaires de dépendances.

Ce sont des logiciels installés sur la machine du développeur. Ils sont connectés à des serveurs de livraison de fichiers. À chaque installation d’un paquet une liste de configuration est complétée et peut être transmise à un autre développeur. C’est le fichier package.json de NodeJs. Il n’aura alors plus qu’à exécuter une commande qui téléchargera tous les paquets nécessaires.

Lors de l’enregistrement d’une dépendance, on prend garde à sa version. Elle elle notée dans la liste de configuration et fait référence. En effet, un changement majeur pour une dépendance peut entraîner le dysfonctionnement général du logiciel dépendant.

EnvironnementGestionnaireBase
JavaScriptNPM, Yarnhttps://www.npmjs.com/
PHPComposerhttps://packagist.org/
Pythonpiphttps://pypi.org/
RubyRubyGemshttps://rubygems.org/
Liens 5
  • dépendances logicielles
  • structure logicielle
  • bibliothèque logicielle
  • framework ou cadriciel
  • environnement de développement

git flow, programmation agile

id :20200707101657
dernière édition :
type :architecture
mots-clés :web, informatique
mode focus :

[[20200707101208]] versionnement Git [[20200505212332]] méthode des projets agiles

Il n’est pas possible pour deux développeurs de travailler en même temps sur les mêmes fichiers. Ils doivent déplacer leur travail dans le temps ou l'espace pour pouvoir co-contribuer à un même projet. Les systèmes de gestion de version comme Git permettent de créer des branches et ainsi de réserver un espace à la contribution d’une personne et de reporter l’intégration de ces modifications dans le code source.

Ainsi la formation de l’équipe influe largement sur la modularisation du code [[20210313113130]]. On divise le code en fichiers et modules pour faciliter le travail des développeurs.

Équipe

Est lead-dev est une personne particulièrement soucieuse de la cohérence du projet, du respect de la présente convention de développement. Iel est capable de comprendre les différents langages et connaît les méthodes de développement. Sans nécessairement installer une hiérarchie, c’est un·e développeur·se qui obtient une responsabilité supplémentaire, celle de la revue de code. Iel ne corrige pas nécessairement le code, mais le relis et le valide ou non.

Git Flow

Le dépôt (repository) contenant le code source est divisé en plusieurs branches (branch) permettant de différencier plusieurs étapes dans le code source. Les branchs permettent de garder un code source bien lisibles

![schema git flow](./images fiches/git flow.png)

  • Master : c’est la branch unique maîtresse, dite de production. Elle ne contient que des produits finis répartis en versions et composés d’un code fonctionnel et abouti. À chaque merge dans le master on considère qu’une nouvelle version indépendante est créée, utilisable. On ne modifie jamais directement le master qui, s’il contient des bugs, est retravaillé dans la branch Develop.
  • Develop : c’est la branch unique de développement regroupant les fonctionnalités dernièrement développées et mises en commun : le tout doit encore y être debuggé par le·a lead-dev. Une fois que toutes les fonctionnalités ont été réunies et qu’elles interagissent sans bug, cette branch est merge dans le master.
  • Feature : c’est une branch de fonctionnalité. Il est possible d’en créer une multitude rigoureusement différenciées par leur nom feature-[nom_fonctionnalité]. On fait bien attention à y développer cette unique fonction tant qu’elle est indépendante (qu’elle se suffit à elle-même). Il est envisageable de fork une branch Feature sous ne nom feature-[nom_fonctionnalité]--[spécification], mais une à la fois et avec précaution. Une fois que cette fonctionnalité est aboutie, vérifiée et débuggée, elle peut être merge dans la branch Develop.

Source : https://fr.lutece.paris.fr/

Pour que les fonctionnalités soient bien indépendantes, il est nécessaire de découper préalablement le projet en travaux à assigner aux développeur·euse·s qui vont travailler dans leurs branch Feature.

Mouvements

Dans la mesure du possible, on ne merge que vers le haut : de Feature à Develop et de Develop à Master*.* L’appel (pull) d’une branch supérieure depuis une branch inférieure peut en effet causer des conflits. La supérieure, espace de merge et de débogage, peut être incompatible avec l’inférieure, non-débugué ou même compatible avec les merges d’autres Feature. Suite à un pull dans une Feature, elle devra être débuggée pour poursuivre son développement. Si ces corrections ne sont pas compatibles avec celles auparavant effectuées dans la branch supérieure, on va droit dans le mur. Même lorsque le pull ne cause pas immédiatement de bug, c’est lors du merge final de la Feature que peuvent apparaitre des anomalies complexes ; le code source est alors bon à jeter et il faut rollback. En prévention de cela, il ne faut pas supprimer les Feature qui n’ont pas été merge dans le Master.

Pour échanger autour du code qui a été commit, on profite des outils Git. Les développeur·euse·s doivent régulièrement envoyer leur travail sur le repository et annoncer leur avancement pour recueillir les remarques des collaborateurs et pouvoir profiter du rollback, utile en cas d’embourbement. Ainsi, un·e développeur·se qui pense avoir achevé son travail émet une demande de fusion (merge-request) pour la branch supérieure. Le·a lead-dev confirme ou non cette demande.

Il est important de ne pas accumuler les merges de Feature par intermittence, mais de les exécuter tous ensemble. Les forks de Develop donnant les branchs Feature doivent pouvoir partir d’une base fonctionnelle, débuggée. Sans cela il faudra re-alimenter (pull) les branches Feature avec la version corrigée et cela peut causer des conflits immédiatement ou par la suite. Le conflit, c’est l’échec du processus de versionning. Pour l’éviter, il faut débuter une nouvelle séquence de développement par un merge de toutes les branchs Feature au sein de Develop. Là on débugue et seulement ensuite on pourra fork pour développer les nouvelles fonctionnalités sur des bases saines. En attendant ce merge de toutes les branchs Feature au sein de Develop, les développeur·euse·s continuent de fork la même base de code source depuis Develop en laissant en attente les Feature abouties.

Liens 3
  • versionnement Git
  • méthode des projets agiles
  • modularité logicielle
Rétroliens 2
  • méthode des projets agiles
  • versionnement Git

grammatisation

id :20200905210104
dernière édition :
type :inscription
mots-clés :scienceinformation
mode focus :

C’est un concept de Bruno Bachimont. Il s’agit d’un « système d’expression qui donne lieu à une manipulation et qui de ce fait reconfigure nos possibilités même d’expression »[^1].

Il prend l’exemple de l’écriture comme grammatisation de la parole dans la mesure où l’écriture permet de « codifier dans un système de manipulation »[^1], comme l’alphabet, « permet de reconfigurer ce que l’on a à dire », le discours.

De la même manière, numériser une photographie argentique c’est faire la grammatisation du cliché : il pourra être manipulé sur des logiciels car transformé en code machine pouvant être calculé. On a ainsi augmenté nos possibilités d’expression.

« On réduit une expression à son pur potentiel calculatoire »[^1]

[[20210116135423]] inscription computationnelle

[^1]: Bruno Bachimont, Rhétorique de l’intelligibilité, vers des humanités du numérique, 2020

Liens 1
  • inscription computationnelle
Rétroliens 5
  • code source
  • écrit et oral
  • numérisation
  • programmation orientée objet
  • syntaxe de code

hacker

id :20210323194802
dernière édition :
type :undefined
mots-clés :informatique
mode focus :

Un hacker est un débrouillard, une personne qui maîtrise l’outil informatique et s’emparent plus largement des questions d’ethique des réseaux (néthique, partage des connaissance), de perfectionnisme du travail et qui refuse de l’autorité (du marché)[^1]. On le confond souvent avec son cousin cracker, destructeur de système informatique. Il est opposé au lurker, l’utilisateur passif.

Les hackers sont fondamentalement communautaires. Ils fabriquent des outils informatiques pour le bien communs. Ils sont soucieux de prouver leur mérite par leurs compétences, leurs réalisations et revendiquent leur parternité sur leur code.

[^1]: Pekka Himanen, L’éthique hacker, 2001

Rétroliens 2
  • communauté de développement
  • logiciel libre et logiciel open source

headless CMS

id :20210312173555
dernière édition :
type :processus
mode focus :

Par rapport aux CMS (Content Managment System) traditionnels (Wordpress, Joomla…) le headless CMS (système de gestion de contenus sans interface) n’a par d’interface front end. On ne garde que les interfaces suivantes :

  • la gestion des données, via une interface back end de modélisation et d’enregistrement ;
  • le système de requêtes via une API [[20200701221037]].

L’avantage de ce système est sa souplesse, sa robustesse grâce aux API. Il permet de réaliser des projet ad hoc, destiné à un usage particulier.

Souplesse

Greffés sur une seule base de données, les headless CMS peuvent recevoir et distribuer de l’information à une multitude d’interfaces et terminaux (site web, applications mobiles…) tout en centralisant les données qu’ils renvoient. L’API peut ainsi capter et renvoyer une variété de requêtes.

Ils permettent aussi à une variété d’usagers de modifier les données du site avec une gestion stricte des permissions d’utilisateurs authentifiés.

Robustesse

Séparer la base de données de son affichage permet de limiter les réactions en chaînes en cas de problèmes techniques ou simplement de maintenance [[20210304181626]] des interfaces connectées. L’accès est également plus difficile pour les intrus, les intéractions étanat limitées à des requêtes à une API limitée.

Liens 2
  • API, interface de programmation
  • maintenance logicielle

histoire de OpenSSL

id :20200705101927
dernière édition :
type :undefined
mots-clés :web
mode focus :

Dans son livre Sur quoi reposent nos infrastructures numériques ? (2017), Nadia Eghbal évoque le groupe de développeurs réunis en 1998 qui a construit OpenSSL. Un développeur à temps plein et une poignée de développeurs bénévoles maintiennent depuis un logiciel qui sécurise une très grande partie des infrastructures du web, même les GAFAM, Netflix, notamment pour les transactions bancaires.

Cette équipe a manqué de moyens durant toute son existence, et aujoud’hui encore elle compte sur un bien faible effectif et peu de dons par rapport au service qu’elle rend à l’humanité.

« Il y avait juste de quoi payer le salaire d’un développeur, Stephen Henson. Cela signifie que les deux tiers du Web reposaient sur un logiciel de chiffrement maintenu par un seul employé à temps plein »[^1]

Une faille majeur, Heartbleed, a permise « à n’importe quel pirate suffisamment doué de détourner des informations sécurisées en transit vers des serveurs vulnérables »[^1]

« Ce qui est mystérieux, ce n’est pas qu’une poignée de bénévoles surchargés de travail ait raté ce bug, mais plutôt qu’il n’y ait pas eu davantage de bugs de ce genre »

[^1]: Nadia Eghbal, Sur quoi reposent nos infrastructures numériques ?, 2017

Rétroliens 1
  • travail gratuit, économie du web de plateforme

hyper

id :20210114195936
dernière édition :
type :processus
mots-clés :scienceinformation
mode focus :

hyper- est un préfixe largement utilisé dans le domaine du numérique avec hypertexte, hypermédia… On lui trouve un sens mathématique, celui d’extension, de généralisation[^1]. Ainsi, hyper- est relatif à la structure et non à la taille[^1].

« Sens spatial ou quasi-spatial de ‹ au-dessus ›, ‹ au-délà › »[^2]

Cette notion d’extension est bien souvent une notion de mise en réseau, de liaison entre des objets d’un espace donné.

[[20200622164608]] hypertexte

L’hyper- structure n’est pas perceptible directement par nos sens. Il faut une machine pour pouvoir l’apprécier.

[^1]: Ted Nelson, The Home Computer Revolution, 1977 [^2]: Trésor de la langue française

Liens 1
  • hypertexte
Rétroliens 5
  • architecture de code hypertextuelle
  • complexité logicielle
  • espace numérique
  • hypermédia
  • hypertexte

HyperCard

id :20200622183005
dernière édition :
type :architecture
mots-clés :donnee
mode focus :

HyperCard est un logiciel développé par Apple en 1987 pour Mac OS versions 9 (compatible avec les versions antérieures). Il inclut une interface graphique et un langage de programmation, HyperTalk (langage de programmation à la syntaxe très proche de la lange anglaise rendant la programmation accessible) permettant de réaliser des applications.

put the value of card field "typehere" into theValue

Le logiciel permet de créer des bases de données (piles de cartes si on utilise le jargon du logiciel), par exemple, un carnet d'adresses : l'utilisateur créer les champs (prénom, nom, adresse, téléphone… ) et n'a qu'à instancier les cartes ainsi formatées.

[[20200707113753]] instance informatique [[20200624194717]] fiche comme modèle de données [[20200623180525]] base de données

Les piles se présentaient sous la forme d'un diaporama et deux flèches permettaient de faire défiler les cartes. Le logiciel proposait nativement une série de pile pré-conçues et supportait textes, images et sons. Il était également possible d'ajouter des boutons, de leur associé des actions comme jouer un son.

Le logiciel inclut une fonction de recherche dans les données et il était possible au clic de passer d'une carte à une autre. C'est l'un des premiers procédé hypertexte assimilable à un système de fiche.

[[20200622164608]] hypertexte

« It's kind of the freedom to organize the information, according to are things or associate with each other, not just according to the next in the list »[^1]

[^1]: Bill Atkinson, vidéo Hypercard

Liens 4
  • instance informatique
  • fiche comme modèle de données
  • base de données
  • hypertexte

hypermédia

id :20200625163043
dernière édition :
type :inscription
mots-clés :scienceinformation
mode focus :

[[20210114195936]] hyper [[20200622164608]] hypertexte

Sont hypermédias les supports combinant plusieurs type de média comme la son, l’image ou la vidéo. Ils profitent de la technologie hypertexte qui permet « d’évoquer simultanément les questions liées à la nature du support ou du média et celles liées au type d’organisation qu’il met en œuvre »[^1]

« L'autre idée [avec l'hypertexte], qui est indépendante et largement une question de technologie et de temps, concerne les documents multimédias qui incluent des graphiques, de la parole et de la vidéo. Je ne discuterai pas davantage de ce dernier aspect ici, bien que j'emploierai le mot ‹ Hypermédia › pour indiquer que l'on n'est pas lié au texte. »[^2]

[^1]: Olivier Ertzscheid, Les enjeux cognitifs et stylistiques de l’organisation hypertextuelle, 2002 [^2]: Tim Berners-Lee, The original proposal of the WWW, HTMLized, 1990

Liens 2
  • hyper
  • hypertexte
Rétroliens 1
  • hypertexte

hypertexte

id :20200622164608
dernière édition :
type :architecture
mots-clés :scienceinformation, informatique
mode focus :

[[20210114195936]] hyper [[20200625163043]] hypermédia

Thed Nelson, considéré comme l'inventeur du terme, donne la définition suivante de l'hypertexte : « une écriture-lecture non-linéaire donnant à l’utilisateur une liberté de mouvement  » soit un système basé sur l’interaction (« hypertextualité »[^2]) dans l’espace d’une base documentaire.

Hypertexte désigne tantôt un principe d'organisation « réticulaire » (en réseau [[20210414220755]]) de l'information, tantôt une série de techniques et de logiciels. On retrouve son inspiration dans les techniques documentaires et informatique que l'hypertexte continue d'enrichir, mais aussi dans les théories utopistes du savoir universel (Paul Otlet, Vannevar Bush).

« l’hypertexte une notion et non une technologie, un mode de lecture-écriture qui s’est incarné à travers des techniques très différentes et qui ne saurait être réduit à une seule d’entre elles »[^1]

On retrouve l'hypertexte tant dans les documents papiers (index, sommaire, note de bas de page… ) que les documents numériques (fichier PDF, page web, fichier de code… ).

Histoire

L’hypertexte a été conceptualisé dans les années 1930, notamment par Paul Otlet dans son Traité de documentation et Vannevar Bush avec sa théorie du Memex, son article As we may think. Ils ont « nourri » ce concept avant qu’il n’arrive en informatique, dans les années 80, notamment grâce au logiciel HyperCard de Apple.

[[20200622110109]] memex de Vannevar Bush [[20200622164608]] HyperCard de Apple

Déploiement

[[20200829163448]] organisation, structure et système

Un système hypertexte se déploie dans une base documentaire dans la mesure où chaque élément cible est identifié dans les limites de la base. C’est à cette condition que les liens sont fonctionnels et pérennes.

[[20200622101202]] namespace (espace de nom)

« L’hypertexte est ce qui reste de l’édifice du sens, une fois la pierre du texte ôtée »[^2]

L’hypertexte est « une structure indéfiniment récursive du sens »[^2] : il projette son sens propre, donne du sens à sa source, et recommence.

Cardinalité

La cardinalité d’un système hypertexte est « la possibilité d’établir des liens hypertextuels non plus mono-directionnels mais multi-directionnels (depuis un ou plusieurs documents, vers un ou plusieurs autres), leurs ancres faisant alors office de pivot »[^2]. On décentralise la connaissance : « L’hypertexte est un système infiniment dé-centrable et re-centrable dont le point de focalisation provisoire dépend du lecteur »[^3]. L’hypertexte dépasse les trois dimensions, le domaine de ce qui peut être perçu, d’où le préfixe hyper-. L’hypertexte est la géométrie non euclidienne du texte.

Vue graphique

Une base hypertexte est une organisation rhizomatique dans la mesure où toute idée (nœud) peut réciproquement en influencer une autre, sans soucis hiérarchique.

[[20200625115033]] structures de la connaissance [[20200625172823]] théorie des graph

On retrouve la notion de hiérarchie dans la structure interne des documents hypertexte (enchaînement des titres de différents niveaux). Elle permet notamment de réaliser des transclusions (inclusion d’une référence dans une autre).

Notre esprit procède notamment par associations : on estime qu’une idée est le résultat de la combinaison d’autres idées, elles-mêmes synthèses de champs conceptuels plus ou moins larges et puisés dans une galaxie. C’est de là que vient le besoin de « non-linéarité » que l’on évoquait dans la définition de Thed Nelson : on ne peut saisir une idée sans saisir son champ. Lequel ne s’étend pas de manière linéaire.

« toute l’acquisition du langage consiste à associer des mots et des objets, à désigner des abstractions par des concepts […] tout effort intellectuel, du plus simple au plus complexe, passe par l’activation d’un réseau d’associations qui permettent à la pensée de se mettre en place et de saisir les objets et/ou les concepts qu’elle vise à appréhender »[^2]

Inscription

L’hypertexte comme système est basé sur l’inscription d’hyperliens comme unités. Un hyperlien se compose « d’une ancre reliant un nœud-source et un nœud-cible »[^2].

[[20200622140512]] wikilinks

Cette définition inclut volontairement de très nombreux systèmes nés avec l’écriture. Les notes de page et unités de glossaires, index, ou même simples listes de documents sont autant de lien hypertextes.

Utilisation

On cherche à mettre en place de la sérendipité : permettre aux utilisateurs de découvrir par hasard ou sagacité. C’est particulièrement pertinent car l’esprit humain fonctionne par association d’idée.

[^1]: Alexandre Serres, Hypertexte : une histoire à revisiter, 2015. [^2]: Olivier Ertzscheid, Les enjeux cognitifs et stylistiques de l’organisation hypertextuelle: le Lieu, Le Lien, Le Livre, 2002 [^3]: George Landow, Hypertext, 1991

Liens 10
  • hyper
  • hypermédia
  • réseau
  • memex de Vannevar Bush
  • hypertexte
  • organisation, structure et système
  • namespace, espace de nom
  • structures de la connaissance
  • théorie des graphes
  • wikilinks
Rétroliens 7
  • fiche comme modèle de données
  • hyper
  • HyperCard
  • hypermédia
  • hypertexte
  • livre numérique
  • wikilinks

inscription computationnelle

id :20210116135423
dernière édition :
type :inscription
mots-clés :scienceinformation, code
mode focus :

[[20201012091721]] signe abstrait

« Computationnel » dérive de la computation qui désigne le calcul. Ainsi, l’agir de la machine informatique est essentiellement porté sur le calcul et dans le domaine du dénombrable (ce qui peut être compté). Dans ce sens, le code qui est transmis à la machine porte essentiellement sur ses opérations. Il n’est lui même qu’une abstraction d’un système basé sur la combinaison du binaire, via de portes logiques.

[[20210121192437]] matérialité d’un programme

« il est possible de comprendre la machine computationnelle comme une machine à écrire […] parce qu’elle permet aux humains d’écrire, mais parce que son fonctionnement repose sur un certain type d’écriture […] qui ne répond pas aux mêmes impératifs que ceux des humains »[^1]

D’après Alan Turing[^3], une machine n’écrit pas, ne lit pas ; elle scanne (to scan), elle inscrit (to write down) et elle « manipule des symboles »[^2] (p.140). Elle n’interprète pas, n’a pas de mémoire ; elle suit en permanence le cours d’opérations pour effectuer des changements d’état sur ses supports (circuits, disques…).

[[20210121192437]] matérialité d’un programme

« les signes ne font pas l’objet d’une interprétation contextuelle, mais ne font que renvoyer à une signification précodée qui va déclencher un mouvement de la machine »[^2] (p.140)

L’« écriture-calcul »[^2] de la machine est « auto-reproductible »[^2] (p.140), « Ce qui se calcule est ce qui peut s’écrire automatiquement »[^2] (p.145), dans un système, avec une configuration [[20210418085915]] et des valeurs tous finis[^3] (déterminable par avance). Ainsi, le calcul par la machine est discret [[20210405121526]] (suite d’opérations élémentaires et discontinues), sans quoi il ne peut être combinatoire [[20210416144157]].

« l’informatique en tant que science est fondée sur une certaine conception automatisée et machinique de l’écriture »[^2] (p.78)

L’écriture des machines « est unidimensionnelle et elle repose des signes monosémiques : la machine scanne un ensemble fini de signes sur un support »[^1].

[^1]: Cléo Collomb, Faire compter les machines, 2017 [^2]: Samuel Goyet, De briques et de blocs. La fonction éditoriale des interfaces de programmation (API) web : entre science combinatoire et industrie du texte, 2017 [^3]: Alan Turing, On Computable Numbers, with an Application to the Entscheidungsproblem, 1937

Liens 5
  • signe abstrait
  • matérialité d’un programme
  • configuration
  • discret / continu
  • système combinatoire
Rétroliens 6
  • architexte
  • code source
  • écriture
  • grammatisation
  • programme et programmation
  • structures de la connaissance

inscription typographique du code comme corps des artefacts numériques

id :20200530195417
dernière édition :
type :inscription
mots-clés :typographie, code
mode focus :

En programmation, on utilise en général une typographie monospace, à chasse fixe (opposé à chasse variable), où la hauteur et la largeur du glyphe (dessin du caractère) sont toujours les mêmes, quel qu’il soit. La plus connue de ces typographies est Courrier et ses variantes. Il existe aussi Consolas et toutes les formes dites « mono » de typographies célèbres.

Morphologie typographique

Le fait que les caractères soient dans un espace carré permet d’envisager un alignement vertical. C’est inutile dans un texte à lire horizontalement, mais particulièrement important lorsqu’il s’agit d’aligner des corps de texte signifiant par leur contenu, mais aussi par leur forme.

« la linéarité graphique est double, autant vertical qu’horizontale »[^1], (p.11)

Selon leur syntaxe, les langages de programmation n’ont pas la même morphologie typographique.

[[20200930214400]] syntaxe de code

  • Les retours à la lignes plus ou moins récurrents. Le XML et ses dérivés sont des fichiers denses formés par de longues ligne de code. Le CSS ou le YAML sont au contraire verticaux.
  • Certains caractères comme {, ] ou ( tendent à dessiner les artefacts numériques dont la saisie est rythmée par les différents opérateurs. Ce sont souvent des couples de caractères comme => ou &&.
  • L’indentation du code (espace typographique variable) donne forme verticale, dos au code. Elle est parfois forcée au cœur du code pour faciliter la lecture des affectations de variables, comme ci-dessous.
$courte      = 1
$longueeeeee = 2
$lit         = 3

La forme du code dépend beaucoup de la syntaxe utilisée qui peut varier d’un langage de programmation à un autre, mais aussi en fonction du paradigme de programmation utilisé.

[[20200530191442]] paradigmes de programmation

Forme des mots-clés

Les logiciels de traitement de texte intègrent pour la plupart des fonctionnalités de stylisation syntaxique facilitant la lecture de certains mots-clés comme this, return, les booléens ou bien d’autres mots pris dans un contexte. Ci-dessous, functionName pourra être coloré tant qu’il est entre le mot-clé function et le couple {}.

function functionName(int) {
	if (int !== 10) {
		return false;
	}

    return 10;
}

Ces mots sont automatiquement colorés (on parle de coloration syntaxique) ou stylisés (gras, italique, soulignement). Ainsi ils sont reconnus comme des formes (dessin typographique) plus que comme une groupe de lettres que l’on pourrait compléter avec préfixe ou suffixe. Cela accélère largement la lecture alors que l’œil cherche une couleur ou une forme plutôt que de texte.

Les ligatures accentuent cela. Ainsi des opérateurs comme => sont changés par la police Fira Code en une flèche doublée complète. L’opérateur === est transformé en un signe « égal » à trois barres horizontales. Une barre oblique vient s’ajouter pour l’opérateur !==.

Le code n’est pas écrit pour être lu, mais être interprété. C’est pourquoi je préfère parler d’inscription du texte comme code plutôt que d’écriture. Cette interprétation est le geste d’un humain ou d’une machine, tous deux à la recherche d’une logique sémantique, une inscription systémique d’artefacts définis en arborescence.

[^1]: Jack Goody, La Raison graphique, 1979

Liens 2
  • syntaxe de code
  • paradigmes de programmation
Rétroliens 4
  • interfaces d’écriture
  • minifier le code
  • paradigmes de programmation
  • la typographie comme interface

instance de mise en page

id :20200707112034
dernière édition :
type :architecture
mots-clés :typographie
mode focus :

[[20200707113753]] instance informatique

Avec les logiciels comme Pandoc il est possible transpiler (convertir du code d’un langage à un autre) un fichier plein texte balisé en Mardown ou en HTML en un fichier à la structure plus complexe comme l’ODT ou le PDF.

[[20200907090751]] transpiler ou compiler du code

Ainsi rédiger en plein texte permet non seulement pour un temps de se concentrer sur le fond plutôt que sur la forme du document, mais aussi à terme de contrôler sa mise en page. Avec des logiciels comme LaTeX ou PageJs on ne reproduit plus une mise en page, mais on l’instancie : les templates produits pour ces logiciels deviennent des class et permettent ainsi de mettre en page à la chaîne plutôt que de recopier une charte.

Liens 2
  • instance informatique
  • transpiler ou compiler du code
Rétroliens 1
  • édition numérique

instance informatique

id :20200707113753
dernière édition :
type :architecture
mots-clés :typographie
mode focus :

Une instance est la reproduction d’un objet. Lequel hérite comme toutes les autres instances des structures de contrôle [[20200701214359]] de leur classe mère. Elle a le rôle de patron (pattern) duquel découlent les instances.

[[20200526222401]] ingénierie, le concept de modèle

Les codelets JavaScript et PHP ci-dessous font exactement la même chose :

  1. Déclaration d’un prototype (JavaScript) ou d’une class (PHP)
  2. Déclaration des attributs prenom, nom, age et genre
  3. Déclaration d’une méthode parler
  4. Instance du prototype (JavaScript) ou de la class (PHP) en un objet guillaume
  5. Construction de l’objet par l’affectation des valeurs suivantes, respectivement assignées aux attributs précédemment déclarés : Guillaume, Brioudes, 21 et h
  6. Affectation de la valeur Hello world! à la méthode parler et lecture immédiate
function Personne(prenom, nom, age, genre) {
	this.prenom = prenom;
    this.nom = nom;
    this.age = age;
    this.genre = genre;
};
Personne.prototype.parler = function (paroles) {
    console.log(this.prenom + ' ' + this.nom + ' dit ' + paroles);
}

var guillaume = new Personne('Guillaume', 'Brioudes', 21, 'h');

var discours = guillaume.parler('Hello world!');
class Personne {
    private $prenom;
    private $nom;
    private $age;
    private $genre;
    
    function __construct() {
        // ...
    }
    
    public function parler($paroles) {
        echo $this->prenom . ' ' . $this->nom . ' dit ' . $paroles
    }
}

$guillaume = new Personne('Guillaume', 'Brioudes', 21, 'h');

$discours = $guillaume->parler('Hello world!');
Liens 2
  • structures de contrôle
  • modèle, pattern
Rétroliens 10
  • notions d’algorithmique
  • base de données
  • BEM, Bloc Element Modifier
  • fiche comme modèle de données
  • HyperCard
  • instance de mise en page
  • objet informatique
  • programmation impérative
  • programmation orientée objet
  • visualisation

interface

id :20200708132301
dernière édition :
type :inscription
mots-clés :scienceinformation, lectureecriture
mode focus :

[[20200715204714]] responsive

Une interface est « un tiers médiateur organisant des modalités d’interaction »[^1] avec un objet technique. Elle peut aussi en limiter l’usage et l’effort de l’utilisateur qui s’appauvrit dans son expérience de la machine.

« Prenons le voyant lumineux: certes, il possède un sens fonctionnel primaire et univoque, indiquer l’existence d’une tension ou d’un courant ; mais en plus, il est la balise de l’enceinte technophanique, le symbole de l’existence d’un fonctionnement, il indique une présence et une actualité »[^2]

« Or, la généralisation de ces interfaces graphiques représente une régression, un appauvrissement sémantique dans notre relation avec la machine »[^3]

[[20200709104849]] rapport aux objets techniques

GUI : Graphical User Interface.

Échanges

Quand on parle d’interface, on pense souvent aux interfaces d’utilisation, mais il existe également les interfaces de programmation [[20200701221037]], de développement.

On distingue généralement trois couches pour un logiciel (voir ci-dessous). Le développeur se situe sur la deuxième, faisant communiquer les deux extrêmes :

  1. Niveau matériel [[20210121192437]] et logiciel fondamental ;
  2. Gestion des « informations persistantes et du contrôle d’activités »[^5] (p.19) ;
  3. interface utilisateur.

Les interfaces utilisateur et développeur font respectivement face à deux problématiques : le « fossé de l’évaluation » et le « fossé d’exécution ».

Le premier se situe entre les intentions, les capacités de l’utilisateur et les représentations effectives de l’interface.

« L’écart est faible lorsque le système fournit des informations sur son état sous une forme facile à obtenir, facile à interpréter et correspondant à l’idée que l’on se fait du système »[^4]

Le second se situe entre les intentions, capacités du développeur et ce que le système lui permet de faire, la mesure dans laquelle il le soutient dans son travail.

[^1]: Arthur Perret, Matière à pensées : outils d’édition et médiation de la créativité, 2018 [^2]: Gilbert Simondon, Sur la technique, 2014 [^3]: Julien Dehut, En finir avec Word ! Pour une analyse des enjeux relatifs aux traitements de texte et à leur utilisation, 2018 [^4]: Donald Norman, The Psychology of Everyday Things, 1988 [^5]: Sahar Jarwah, Un modèle générique pour la gestion des informations complexes et dynamiques, 1992

Liens 4
  • responsive
  • rapport aux objets techniques
  • API, interface de programmation
  • matérialité d’un programme
Rétroliens 11
  • API, interface de programmation
  • architecture logiciel MVC
  • architexte
  • éditorialisation
  • interfaces d’écriture
  • niveaux des (ré)utilisateur logiciel
  • programmation utilisateur
  • semantic web stack
  • skeuomorphisme
  • visualisation
  • vue

interfaces d’écriture

id :20200815162225
dernière édition :
type :inscription
mots-clés :typographie, lectureecriture
mode focus :

[[20200708132301]] interface

On reconnaît trois modes de présentation du texte pour les logiciels d'écriture numérique. Le schéma d’iceberg exprime ci-dessous l’enfoncement progressif de l’utilisateur dans la réel essence de son texte

![schema iceberg architecture sémantique](./images fiches/schema iceberg contenu semantique.svg)

WYSIWYG

What You See Is What You Get : point de vue graphique (formel) sur la saisie pour une lecture/écriture destinée à l'impression : la mise en forme est identique de l’interface à l’impression (papier ou numérique).

« L’idée sous-tendue par le WISIWIG […] est d’obtenir sur une page papier l’exacte reproduction de ce qui est représenté à l’écran ; ce qui semble rétrospectivement une condition sine qua non de leur utilisation puisque la finalité des traitements de texte demeure l’impression »[^2]

[[20200707161136]] problème des logiciels de traitement de texte

Logiciels exemple :

  • Word, Writer, Pages et autre logiciel de traitement de texte
  • TinyMCE, CKEditor
  • Dreamweaver

WYSIWYM

What You See Is What You Mean : point de vue sémantique : on se focalise sur le sens et/par la structure du contenu plutôt que le rendu graphique, l’affichage.

« Cependant, la possibilité d’affichage existe et elle crée une décorrélation intéressante. Ce n’est pas nécessairement une séparation entre fond et forme, puisqu’un même fichier HTML ou LaTeX peut contenir à la fois des informations de nature sémantique et stylistique. »[^1]

[[20200606213253]] corps de texte balisé, sémantisé, interactif

Logiciels exemple : Zettlr, Obsidian

WYSIWYC

What You See Is What You Code : vue directe sur le code source avec possibilité de l’éditer.

[[20200530195417]] inscription typographique du code comme corps des artefacts numériques

Logiciels exemple : VS Code, BBEedit, Notepad++ et autres éditeurs de texte

[^2]: Julien Dehut, En finir avec Word ! Pour une analyse des enjeux relatifs aux traitements de texte et à leur utilisation, 2018

Liens 4
  • interface
  • problème des logiciels de traitement de texte
  • corps de texte balisé, sémantisé, interactif
  • inscription typographique du code comme corps des artefacts numériques
Rétroliens 3
  • problème des logiciels de traitement de texte
  • texte brut
  • corps de texte balisé, sémantisé, interactif

interpréter un langage

id :20201128143742
dernière édition :
type :inscription
mots-clés :code
mode focus :

Voici les différentes étapes pour interpréter un énoncé de langue naturelle formé de caractère (message électronique).

Premier niveau, la reconnaissance des mots : « on dispose généralement d'un lexique dans lequel les noms sont au singulier, les adjectifs au masculin singulier, les verbes à l'infinitif »[^1], mais les énoncés contiennent une variété plus importante avec les règles de grammaires, éventuelles erreurs d’orthographes voire avec des mots non intégrés au lexique. Pour limiter cela il convient de limiter le nombre de mots des agents : connecteurs logiques et vocabulaire d’une ontologie.

[[20200809102622]] ontologie

Deuxième niveau, l’analyse syntaxique : on tente de comprendre la structure de l’énoncée, en général à l’échelle d’une phrase.

[[20200930214400]] syntaxe du code

Troisième niveau, la sémantique : on cherche la significations des structures syntaxiques. Leur « interprétation consiste à exprimer cette signification dans un langage utilisable par un ordinateur. ».

Sens

Le niveau pragmatique :

« les messages véhiculent souvent autre chose que leur ‹ sens littéral ›  ; la situation dans laquelle ils sont émis, les rapports entre l'émetteur et le(s) récepteur(s) leur confèrent une signification particulière qui ne se trouve pas dans leur contenu propre »[^1]

[^1]: Adina Florea, Daniel Kayser, Stefan Pentiuc, Agents intelligents, 2002

Liens 2
  • ontologie
  • syntaxe de code
Rétroliens 2
  • syntaxe de code
  • système multi-agent

javascript langage de programmation

id :20200704153246
dernière édition :
type :programmation
mots-clés :code, web
mode focus :

Le langage de programmation JavaScript est apparu pour la première fois en 1996, au sein du navigateur Web Netscape Navigator. Il est principalement utilisé pour développer des sites web en « front office » (au niveau de l’interface). Toutefois on lui trouve des usages différent en « back office » web, ou même pour développer des applications et logiciels (NodeJs).

Le JavaScript permet de gérer des événements comme un clic, un survol ou envoi de formulaire, ou même le passage d’une certaine période de temps. À partir de ces évènements, il peut notamment lancer des processus asynchrones.

L’exécution du code se poursuit linéairement, mais un processus asynchrone ne sera pas « attendu » pour poursuivre le programme. Les programmes JavaScript servent principalement à modifier le DOM, la structure de la page web.

[[20200704160828]] DOM, document objet model

Event loop

JavaScript est synchrone et mono-thread : chaque ligne sera exécutée l’une après l’autre en attendant la fin de l’exécution de la ligne précédente : JavaScript ne permet de faire qu’une seule chose à la fois. Toutefois, il est possible d’inscrire des fonctions asynchrones. Elles vont être mises à part, non exécutées dans la continuité : on passe à la fonction suivante sans exécutée celle-ci.

[[20210221130228]] comportement logiciel

JavaScript est basé sur un moteur. C’est une boucle régulière qui va se charger des fonctions en général mises à l’écart pour leur complexité, leur longueur d’exécution. NodeJs tire le meilleur parti de ce fonctionnement.

Les fonctions anonymes suivantes, sont asynchrones : la Event loop se chargera d’elles toutes les 5 secondes.

setTimeout(function() {
	// executé au bout de 5 secondes
}, 5000);

setInterval(function() {
	// executé toutes les 5 secondes
}, 5000);

[[20200705083336]] callback, principe de programmation asynchrone [[20200704100343]] AJAX protocole de requêtes asynchrones

Prototypage

[[20200522122316]] programmation orientée objet

C’est un langage entièrement orienté objet. Il fonctionne avec des prototypes : les bases du langage et ses principales interfaces sont fournies par des objets instanciés, modifiés, instanciés. Par exemple, String est une objet global de JavaScript permettant de construire des chaînes de caractère : toute chaîne de caractère JavaScript est un objet String. Les éléments des deux couples suivants ont exactement la même valeur :

var text = String('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');
var textBis = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.';

var array = Array(42);
var arrayBis = [42];

Aux instances de String il est possible d’appliquer les méthodes comme split. Il est aussi possible d’ajouter des méthodes au prototype String ou même de créer son propre prototype qui héritera de l’objet des objets, Object.

function Personne(prenom, nom, age, genre) {
	this.prenom = prenom;
    this.nom = nom;
    this.age = age;
    this.genre = genre;
};
Personne.prototype.parler = function (paroles) {
    console.log(this.prenom + ' ' + this.nom + ' dit ' + paroles);
}

var guillaume = new Personne('Guillaume', 'Brioudes', 21, 'h');
var discours = guillaume.parler('Hello world!');

var valerie = new Personne('Valérie', 'Schlotter', 42, 'f');

function Table(shape, width) {
    this.action = '(╯°¤°)╯ ┻━┻';
}
graph LR
	discours -->|hérite de| guillaume
	parler -->|hérite de| Personne
	guillaume((guillaume)) -->|hérite de| Personne
	valerie((valerie)) -->|hérite de| Personne
	Personne((Personne)) -->|hérite de| Object((Object))
	Table((Table)) -->|hérite de| Object((Object))

Source : https://developer.mozilla.org/

Liens 5
  • DOM, document objet model
  • comportement logiciel
  • callback et promesses JavaScript
  • AJAX protocole de requêtes asynchrones
  • programmation orientée objet
Rétroliens 5
  • AJAX protocole de requêtes asynchrones
  • BEM, Bloc Element Modifier
  • callback et promesses JavaScript
  • DOM, document objet model
  • langages de programmation

l'humain est un document

id :20200801205256
dernière édition :
type :processus
mots-clés :scienceinformation, web
mode focus :

« L’homme est un document comme les autres  » écrivait Suzanne Briet ou Robert Pages.

[[20200625095558]] économie documentaire des réseaux sociaux

« Pour qu’une personne existe dans l’espace numérique, elle doit avoir un profil sur Facebook, sur Twitter, sur LinkedIn ou sur une autre plateforme qui puisse l’identifier et la rendre visible »[^1]

[^1]: Marcello V.R. Qu'est-ce que l'éditorialisation?, 2016

Liens 1
  • économie documentaire des réseaux sociaux
Rétroliens 1
  • économie documentaire des réseaux sociaux

l’outil thesaurus

id :20200503195405
dernière édition :
type :architecture
mots-clés :scienceinformation

« Un thesaurus est une liste d'autorité organisée de descripteurs et de non-descripteurs obéissant à des règles terminologiques propres et reliés entre eux par des relations sémantiques (hiérarchiques, associatives, ou d'équivalence). Cette liste sert à traduire en un langage artificiel dépourvu d'ambiguïté des notions exprimées en langage naturel » AFNOR

Une liste structurée de concepts, destinés à représenter de manière univoque le contenu des documents et des questions dans un système documentaire déterminé, et à assister l'utilisateur dans l'indexation des documents et des questions — Van Slype

la donnée

id :20200509195652
dernière édition :
type :processus
mots-clés :donnee, scienceinformation
mode focus :

Une donnée est une unité d’information dans le contexte d’un programme.

Traitement

Elles sont prises dans un processus de transformation permanent[^1] :

  1. Données : extraites, on les liste, tri, caractérise avec des métadonnées [[20200923152146]] ;
  2. Code : elles sont sérialisées [[20201003174114]] pour former un environnement abstrait ;
  3. Interface : elles sont représentées sur une interface dont on peut les extraire.
flowchart LR
Données <--> Code <--> Interface <--> Données

Les données sont reconnues comme telle parce qu’elles intègrent un processus. Ainsi, il n’y a de données que lorsqu’elles sont massives, que lorsque l’on a intérêt à les traiter avec un algorithme [[20200519215026]]. Pour cela on aura mis en place des moyens de stockage, traitement et représentation. Pour ce derniers point, les données ne peuvent être appréhendées par les humains que par le biais d’une interface. Il s’agit souvent d’un diagramme [[20210117165423]].

Neutralité

Les données sont neutres dans la mesure où tous les moyens mis en place pour leur traitement sont substituables.

[[20200606201922]] qualités de l’écriture numérique

Toutefois, rien que le fait d’enregistrer les données nécessite de mettre en place un contexte de traitement (en vue de réaliser certains objectifs). Les données ne sont alors plus neutres. Les données peuvent éventuellement être formatées sans que l’on puisse les sérialiser [[20201003174114]] à nouveau.

Formatage

Les volumes de données peuvent adopter trois formats distincts :

Format des donnéesFichiers types
Données structuréesFichiers de tableur, extractions de base de données
Données semi-structuréesCSV, Json, XML, YAML
Données non structuréesTextes, Image, fichiers complexes

Structurées et semi-structurées

Les données structurées permettent d’être régulier au niveau de la structure des objets [[20210130110228]] et de leur traitement, avec des accès conditionnels rapides. En revanche, elles ne permettent pas de traduire une pensée plus contingente, attachée au réel ou à la variété du Web. Les données semi-structurées ont leur intérêt dans le sens où il est possible d’être plus libre dans l’enregistrement des données.

« les bases de données traditionnelles (structurées) ne peuvent pas travailler sur des données dont le schéma n’est pas fixé a priori »[^2]

Or, la structure des données peut évoluer au cours de l’enregistrement ou du traitement. Les objets ne sont pas tous entièrement adaptés au schéma, parfois des valeurs nulles. Les attributs peuvent avoir une ou plusieurs valeurs et nécessitent d’être traités de la même manière.

L’architecture des données semi-structurées est implicite. Elle nécessite à la fois une analyse et une interprétation humaines des métadonnées, données pour établir une logique et enfin pouvoir passer à l’extraction des données et à leur traitement. Le schéma et les données on tendance à se confondre. Cette architecture est aussi non impérative, si sur la structure des objets, ni sur leurs valeurs.

Non structurées

Certains objets comme les BLOB, Binary Large Object (non formaté) ou les CLOB, Character Large Object (caractères encodés [[20200717141735]]) sont complexes à interroger.

Les requêtes [[20210405160832]] sur des textes longs vont consister en une recherche de mot-clés. Dans le cas d’images, il va être nécessaire de faire un premier traitement de reconnaissance

Croisement

Le sens d’une donnée est si restreint que nous devons en relier plusieurs entre elles afin d’en dégager une information. Pour évaluer la pertinence du croisement entre plusieurs données, il nous faut également connaître le sujet de ce qui deviennent des fragments : nous devons disposer d’un contexte pour chacun (couple clé-valeur). Grâce à une métadonnée « Paris » n’est plus un nom de ville, mais un prénom qu’il est alors pertinent de relier à « 75 », un âge et non un numéro de département comme on en aurait jugé trop rapidement. Disons que ces données sont extraites d’une base « Utilisateurs » comme indiqué dans la documentation fournie. « Paris, 75 ans, est un utilisateur » ; voici une information exploitable.

Évaluation

Pour évaluer un volume de données, on dispose de cinq critères :

  • Volume
  • Variété (formats)
  • Vitesse (temps réel ? données chaudes (récentes) ou données froides (anciennes) ?)
  • Véracité
  • Valeur (pluvalue du traitement)

Ouverture

Des données ouvertes sont des données :

  • dont la licence est ouverte ;
  • dont on ne paie pas l’accès ;
  • qui sont lisibles avec des moyens accessibles au grand public (tableurs) ;
  • à jour ;
  • facile à télécharger, en une seule fois ;
  • sans contrainte d’accès, identification ou demande préalable ;
  • accessibles directement sur le web.

[[20210123204800]] programmation utilisateur

[^1]: Prathyush, https://twitter.com/prathyvsh/status/1250739432929427456?s=20 [^2]: Tuyet Tram Dang Ngoc, Fédération de données semi-structurées avec XML, 2003

Liens 9
  • métadonnées
  • sérialisation des données
  • notions d’algorithmique
  • diagramme
  • qualités de l’écriture numérique
  • objet informatique
  • encodage du texte
  • requête
  • programmation utilisateur
Rétroliens 10
  • API, interface de programmation
  • base de données
  • cloud
  • digital labor
  • domaine des humanités numériques
  • la vérité que nous enseigne le big data
  • processus documentaire
  • semantic web stack
  • sérialisation des données
  • traces numériques

la loi du code

id :20201025084447
dernière édition :
type :processus
mots-clés :scienceinformation
mode focus :

Le code détermine l’accès à l’information (en tant qu’architexte [[20210115090700]] ) et s’il change, l’espace numérique change également en tant qu’espace politique.

« Du code, c’est du texte – jusqu’à ce qu’il détermine le cadre de vie des citoyens. Alors, le code devient loi. »[^2]

« Le code régule. Il met en place certaines valeurs plutôt que d’autres. Il rend possible ou interdit certaines libertés. Il protège la vie privée ou favorise la surveillance. Des gens choisissent la manière dont le code effectue cela. Des gens écrivent ce code. »[^1]

Responsabilité des personnes

Le code est écrit par des humains pour une finalité humaine. L’étude critique d’un logiciel, d’un programme, d’une application va au-delà de l’analyse de ses performances, de ses fonctionnalités et tente d’étudier son impact sur les utilisateurs (effets « extra-fonctionnels »).

« La question n’est donc pas de savoir qui décidera de la manière dont le cyberespace est régulé : ce seront les codeurs. La seule question est de savoir si nous aurons collectivement un rôle dans leur choix – et donc dans la manière dont ces valeurs sont garanties – ou si nous laisserons aux codeurs le soin de choisir nos valeurs à notre place »[^1]

« En tant que conceptrices et concepteurs de ces programmes, de ces algorithmes, notre responsabilité est de veiller à ce que nos créations servent à aider, à libérer. De refuser de produire des outils conçus pour exploiter, asservir, réprimer ou polluer »[^3]

« Ce sont eux, ces ‹ codeurs › et ‹ codeuses ›, ces ‹ agilistes ›, ‹ CTO ›, ‹ Tech lead ›, ‹ Lead Dev ›, et consorts, ce sont eux qui ‹ implémentent ces valeurs ›, eux qui ‹ garantissent ou empêchent certaines ‹ libertés ›. Ce sont eux qui nous laissent aussi, et ainsi, entrevoir enfin la possibilité de choix collectifs ‹ dans la manière dont ces valeurs sont garanties ›. »[^4]

Réglementation

Le protocole TCP/IP qui permet les échanges sur le Web est neutre, n’identifie pas ses utilisateurs où les données qu’il transporte rendant ainsi l’espionnage complexe. Le Web est ainsi difficilement régulable. Toutefois, cette liberté ne peut être garantie par le code : il n’est pas fixe et le protocole TCP/IP peut être modifié, remplacé. Certaines institutions ont tout intérêt à le faire.

La question n’est pas « faut-il ou non réglementer ? » puisque l’environnement numérique est par essence le croisement de flux régulés par des instructions machines. La question est « comment faut-il réguler ? comment prendre cette décision ? ». Les intérêt de cette régulation ne doivent pas être privés, mais pour le bien commun.

Les développeur·ses

La formation et la sensibilisation des développeuses et développeurs est cruciale pour éviter qu’ils ne développent des interfaces dangereuses. Soit qu’elles emprisonnent les utilisateurs, qu’elles récupèrent leurs données personnelles, qu’elles se substituent à d’autres usages pour les limiter…

[^1]: Lawrence Lessig, Code and Other Laws of Cyberspace, 2000 [^2]: Louis-Olivier Brassard, Le code, c’est la loi, 2020 [^3]: https://onestla.tech/ [^4]: Olivier Ertzscheid Code is Outlaw. C’est la lutte digitale et la grève reconduc’stream, 2019

Liens 1
  • architexte
Rétroliens 2
  • enjeux politiques de l’écriture numérique
  • la vérité que nous enseigne le big data

la portée des variables

id :20200522093949
dernière édition :
type :architecture
mots-clés :code
mode focus :

Les variables (et constantes) ont une portée : leur valeur persiste différemment d’un langage de programmation à une autre au sein de l’espace de nom [[20200622101202]], entre les structures de contrôle [[20200701214359]]. Contrôler la portée des variables, c’est éviter des appels et affectations inattendues, des effets de bord [[20210109130837]].

Une variable (ou constante) globale est une variable dont la définition peut être atteinte à l’extérieur du corps de toute fonction ou classe. C’est un intrant, sans qu’elle n’ait besoin d’être passé en paramètre. Ainsi, on peut utiliser sa valeur n’importe où dans le programme.

Au contraire, des variables locales ont une portée limitée.

PHP

En PHP, on voit ci-dessous qu’une variable externe à une fonction n’a pas de valeur en son sein, pas plus qu’une variable déclarée dans la fonction n’a de valeur à l’extérieur.

$nbExterne =  5;
echo $nbExterne; // --> 5

function triple()  {
    echo $nbExterne * 3; // -->  Undefined variable
    $nbInterne = 42;
}
triple(); // --> 0

echo $nbInterne; // -->  Undefined variable

Il faut préciser avec le mot-clé global que la valeur de la variable vaut et peut être modifiée dans l’ensemble de l’espace de nom;

$nbExterne = 5;

function  triple()  {
    global $nbExterne;
    $nbExterne *= 3;
    echo $nbExterne;
}
triple(); // --> 15
echo $nbExterne; // --> 15

JavaScript

Le JavaScript est plus complexe avec une variété de déclarations et un jeu subtil des encapsulations.

Un objet déclaré avec le mot-clé const ne peut être réaffecté (on ne peut modifier la valeur de l’artefact), mais est mutable (on peut toujours modifier ses propriétés), sauf si on utilise la méthode Object.freeze().

Toute déclaration varou const est par défaut globale, sauf si elle est encapsulée au sein d’une fonction comme le montre l’exemple ci-dessous.

const multiplicateur = 2;
var nbExterne = 5;

function tripe() {
    console.log(nbExterne * multiplicateur);
    var nbInterne = 42;
}
tripe(); // --> 10

console.log(nbInterne); // --> Uncaught ReferenceError

Une variable déclarée avec le mot-clé let ne peut être appelée en dehors de la structure de contrôle dans laquelle elle a été encapsulée :

for (const i of [20, 30, 40, 50]) {
 	let plus = 1;
	var result =  i + plus;
 	console.log(result); // --> 21, 31, 41, 51
}

console.log(result); // --> 51
console.log(plus); // --> Uncaught ReferenceError

function letTest() {
 	let x = 1;
	if (true) {
    	let x = 2;  // variable différente
    	console.log(x); // --> 2
  	}
  	console.log(x); // --> 1
}

letTest()

Pour éviter d’écraser les variables par inadvertance ou de se retrouver avec des valeurs incertaines, les développeurs JavaScript ont pour convention d’utiliser systématiquement les fonctions anonymes encapsulées. Elles sont déclarées sans nom et immédiatement exécutées et permettent de « scope », d’emprisonner, les valeurs des variables qu’elles contiennent.

// valeurs globales

(function()  {
	// valeur isolées
})();

De plus, tout ce qui est attaché à window devient une variable globale du navigateur.

var nbExterne = 42;

(function() {
    var prive = 2;
    var nbInterne = nbExterne * prive;
    window.nbInterne = nbInterne;
})();

console.log(nbInterne); // --> 84
Liens 3
  • namespace, espace de nom
  • structures de contrôle
  • effet de bord
Rétroliens 5
  • effet de bord
  • fonctions
  • fonctions pures
  • programmation fonctionnelle
  • structures de contrôle

la typographie comme interface

id :20200621083005
dernière édition :
type :inscription
mots-clés :typographie
mode focus :

[[20200712214549]] typographie

Face au trop d'information du web (« infobésité ») « C’est la tâche du typographe de diviser, d’organiser et d’interpréter cette masse d’information »[^1]. Ainsi il faut imaginer la typographie comme une interface et un dispositif d'éditorialisation, soit comme un matériau plus de design que simplement d'esthétique : « Choisir une police n’est pas de la typographie »[^1].

« Optimiser la typographie consiste à optimiser la lisibilité, l’accessibilité, l’usabilité, l’équilibre graphique général »[^2]

[[20200530195417]] inscription typographique du code comme corps des artefacts numériques

Ce travail de design se joue sur deux échelles :

  • macro-typographique : structure générale d’un texte
  • micro-typographique : détails des caractères et espacement des mots

[[20200621094836]] règles typographiques

[^1]: Emil Ruder, Web Design is 95% Typography, traduit sur la référence [^2] [^2]: Oliver Reichenstein, Le web, 95% de typographie, 2013 [^3]: Emil Ruder, Typographie, 1981

Liens 3
  • typographie
  • inscription typographique du code comme corps des artefacts numériques
  • règles typographiques
Rétroliens 2
  • corps de texte balisé, sémantisé, interactif
  • typographie

la vérité que nous enseigne le big data

id :20200619130655
dernière édition :
type :processus
mots-clés :donnee
mode focus :

[[20200509195652]] la donnée [[20201025084447]] la loi du code

« l’humain a érigé une instance à nous dire la vérité en toutes choses »[^1]. Le big data porté par l’intelligence artificielle a pour mission « d’expertiser des états du réel »[^1] dans le mesure où il échappe à nos capacités cognitives. Antoinette Rouvroy parle d’idéologie du big data qui nous « dispenserait de la représentation »[^2]. Dans les deux cas il s’agit d’observer le « vrai monde ».

Antoinette Rouvroy et Éric Sadin notent toutefois que cette réalité qui est décrite n’est pas complète. Il l’oppose à l’« exactitude des choses ». On ne peut assimiler ce dont les intelligence artificielles nous rendent compte à des faits : Elle explique que la charge de sécurité est souvent trop lourde pour exploiter des données personnelles alors les opérateurs sont obligés d’anonymiser, c’est à dire de « désindexer, décontextualiser, c’est à dire rendre les données amnésiques de leurs sources, amnésiques de leurs conditions de production. Hors rendre les données amnésiques de leurs conditions de production : on les fait apparaître comme des faits neutres »[^2]. On ne peut plus vérifier leur validité étant donné la perte de contexte. S’il faut revenir aux sources de ces données, on entre dans un « processus d’éditorialisation »[^2].

[[20200621084631]] éditorialisation

Le risque du big data, c’est la corrélation. « Toute vérité a une valeur performative »[^1] : une annonce du logiciel fait autorité et déclenche une réaction de l’humain, sans qu’il est nécessairement la possibilité d’évaluer ce qui devrait rester une suggestion. L’idéologie la transforme en injonction. Ces injonctions viennent selon Éric Sadin organiser les espaces communs, la société et son histoire. Le big data s’inscrit dans nos sociétés et deviens du « long data »[^6], des données historiques.

Éric Sadin voit l’origine de l’idéologie du big data dans ce qu’il appelle le technocapitalisme : la « monétisation de tous nos comportement, d’un marchandisation intégrale de la vie, d’une organisation algorithmique de la société ».

[^1]: Éric Sadin dans la vidéo l’asservissement par l’Intelligence Artificielle ?, 2018, de Thinkerview [^2]: Antoinette Rouvroy dans la vidéo Rencontre avec Antoinette Rouvroy : gouvernementalité algorithmique et idéologie des big data, 2018, de Le Mouton Numérique [^6]: Dominique Vinck, Humanités numériques: la culture face aux nouvelles technologies, 2016, p.23

Liens 3
  • la donnée
  • la loi du code
  • éditorialisation
Rétroliens 1
  • économie documentaire des réseaux sociaux

langages compilés ou interprétés

id :20200718182015
dernière édition :
type :processus
mots-clés :code
mode focus :

Ce sont deux grandes familles de langages, différenciés par le traitement de leur code source.

Langages interprétés

Exemples : JavaScript, Java, Python

Ce sont des langages de script [[20210408103043]].

Le même code source pourra marcher directement sur tout ordinateur qui possède le logiciel d’interprétation (runtime [[20201224140951]]) adéquat. C’est une chaîne de dépendances qui va ralentir l’exécution et éventuellement provoquer du bruit, des dysfonctionnements.

Le code source est exécuté ligne par ligne : le logiciel exécute les opérations linéairement.

graph LR
	codesouce[code source]
    interpreteur[interpréteur]
    donneeentree[données d'entrée]
    donneesotie[données de sortie]
    
    codesouce --> interpreteur
    donneeentree --> interpreteur
    interpreteur --> donneesotie

Langages compilés

Exemples : C, C++

Les programmes sont complètement convertis en binaire et exécutés sur l'ordinateur, donc plus rapidement, avec peu de dépendances. Il faut toutefois faire face à des problématiques de version du système d’exploitation.

graph TD
	codesouce[code source]
    compilateur[compilateur]
    binaire[code machine binaire]
    sysexploitation[système d'exploitation]
    donneeentree[données d'entrée]
    donneesotie[données de sortie]
    
    codesouce --> compilateur
    compilateur --> binaire
    binaire --> sysexploitation
    donneeentree --> sysexploitation
    sysexploitation --> donneesotie

On parle parfois de « compilation à la volée », soit l’interprétation ligne par ligne, chacune compilées.

Source : http://www.france-ioi.org/algo/course.php?idChapter=561&idCourse=2368

Liens 2
  • script
  • runtime ou environnement d’exécution
Rétroliens 5
  • EDI, environnement de développement intégré
  • minifier le code
  • niveaux langages de programmation
  • runtime ou environnement d’exécution
  • script

langages de balisage

id :20210205230127
dernière édition :
type :architecture
mots-clés :scienceinformation, code
mode focus :

Les langages de balisage permettent d’enrichir du texte en apportant du contexte, du sens et de la structure. On peut ainsi baliser du texte devenu un set de des données que l’on peut intégrer dans un fichier ou pour les transférer (AJAX [[20200704100343]]). Ils reposent sur l’utilisation de balises permettant d’encadrer des chaînes de caractères. Ainsi, elles séquencent le flux du texte. Elles peuvent facilement être retrouvées dans le texte via une analyse syntaxique [[20200930214400]] permettant ainsi de traiter automatiquement le contenu enchâssé, ses attributs.

[[20200606213253]] corps de texte balisé, sémantisé, interactif

Les balises peuvent être délimitées de différentes manières. Le plus souvent par des chevrons <> avec les langages dérivés du SGML. Ce peut être avec des antislash \ comme en LaTeX. Ce sont des unités syntaxiques.

<balise attribut="valeur">contenu enchâssé</balise>

Granularité

La granularité est le détail des données. Dans les exemples ci-dessous, le premier à une granularité plus élevée. C’est à dire que l’on peut cibler les me^me éléments avec plus de finesse.

<introduction>
    <titre>Titre de mon document</titre>
    <ss-titre>Sous titre de mon document</ss-titre>
</introduction>

<introduction>Titre de mon document - Sous titre de mon document</titre></introduction>

Historique

Les langages de balisage ont d’abord servit à documenter le code source. IBM a été la première entreprise à devoir imaginer documenter ses nombreux travaux informatiques. Cela a commencé avec la GML. Les SGML apporte les feuilles de style : la mise en en page ne dépend plus de la structure logique du document, mais de règles externes adaptées à un support donné.

graph
GML --> SGML
SGML --> HTML
SGML --> TEI
SGML --> XML
XML --> XHTML
XML --> RDF
XML --> RSS

Schéma de données

https://fr.wikipedia.org/wiki/Standard_Generalized_Markup_Language https://fr.wikipedia.org/wiki/Document_type_definition https://fr.wikipedia.org/wiki/Liste_des_entit%C3%A9s_de_caract%C3%A8re_de_XML_et_HTML https://fr.wikipedia.org/wiki/Text_Encoding_Initiative

Liens 3
  • AJAX protocole de requêtes asynchrones
  • syntaxe de code
  • corps de texte balisé, sémantisé, interactif

langages de balisage léger

id :20200619133835
dernière édition :
type :inscription
mots-clés :traitementtexte
mode focus :

Le markdown et le Textile sont des langages de balisage léger (lightweight markup languages) créés en 2004. Leur syntaxe sont si légères (facile à lire et à écrire) que les formatés avec eux peuvent être lus « en l'état sans donner l’impression d'avoir été balisé ou formaté par des instructions particulières »[^1] .

[[20200930214400]] syntaxe de code [[20200629161610]] texte brut

Ce balisage permet de déclarer certains styles de caractère (italique, gras) et même quelques éléments sémantiques (niveaux de titres, insertion de code), notamment avec les YAML Frontmatter, entête de métadonnées. Ces fichiers sont ainsi préparés pour un affichage et un export graphique (PDF, DOCX, ODT) et/ou sémantique (HTML, LaTeX). À l'origine, le markdown a été créé pour le blogging, pour une compilation en HTML.

[[20200606213253]] corps de texte balisé, sémantisé, interactif

Évolution

Par exemple, le markdown n'a jamais été standardisé et les internautes ont pu librement y ajouter des extensions :

  • MultiMarkdown qui ajoute notamment les fonctionnalités suivantes : pieds de page, tableaux, légendes.
  • GitHub Flavored Markdown

Ainsi selon les interpréteurs (JavaScript, Python, PHP…) il est possible de barrer, surligner, de mettre en places des bandeaux, des liens[^2], des listes de tâche, de définitions etc.. Ces langages sont dédiés à la prise de note, à la rédaction de documentation selon ses nouveaux usages.

Variété

Il est possible en markdown d'obtenir un même résultat avec différentes syntaxes :

Textile, AsciiDoc : _italique_ *bold*
Markdown : *italique* **bold**
Wikicréole : //italique// **gras**
BBCode : [i]italique[/i] [b]gras[/b]
LangageUsage
MarkdownArticle de blog et documentation
AsciiDocDocuments publiables
BBCodeForums de discussion
reStructuredTextDocumentation Python
Wikitexte, WikicréoleRédaction pages des logiciels de wiki

[^1]: Wikipédia, Markdown, lu le 19/06/2020 [^2]: Voir [[20200622140512]] wikilinks

Liens 4
  • syntaxe de code
  • texte brut
  • corps de texte balisé, sémantisé, interactif
  • wikilinks
Rétroliens 3
  • formats de fichier numériques
  • texte brut
  • zettelkasten, méthode documentaire

langages de programmation

id :20200704135046
dernière édition :
type :inscription
mots-clés :informatique, web
mode focus :

Un langage de programmation est un langage formel (« système de signes composé d’un vocabulaire et d’une syntaxe » [[20200930214400]], dépourvu des « notions d’ambiguïté, de doute, d’incompréhension »[^1]) permettant de formuler des algorithmes [[20200519215026]] prescrits à des machines.

[[20200704153246]] javascript langage de programmation

Utilisation

Les langages de programmation sont interchangeables : ils ne sont qu’un outil parmi d’autres pour exprimer une solution (circuit logique) pour un problème donné. On choisi un langage de programmation pour ses paradigmes [[20200530191442]] et surtout pour l’environnement [[20201224152456]] auquel il est lié.

Généalogie

Les langages de programmation sont souvent des interfaces pour faire appel à d’autres langages. Par exemple, le langage PHP est développé en langage C.

[[20200718172257]] niveaux langages de programmation

graph TD
    C --> PHP
    C --> C++
    C++ --> Java
    C++ --> C#
    
    C --> NodeJs((NodeJs))
    C++ --> NodeJs
    JavaScript --> NodeJs
    JavaScript --> AngularJs((AngularJs))

[^1]: Anthony Masure, Le design des programmes, 2014

Liens 6
  • syntaxe de code
  • notions d’algorithmique
  • javascript langage de programmation
  • paradigmes de programmation
  • environnement de développement
  • niveaux langages de programmation
Rétroliens 3
  • code source
  • paradigmes de programmation
  • programme et programmation

le design

id :20200515185607
dernière édition :
type :undefined
mots-clés :design
mode focus :

Le design est une démarche créatrice concentrée sur le palpable et visant à répondre à un besoin humain étudié. La formule « dessein + dessin = design » l'exprime élégamment. Un dessein est une « conception par l’esprit d'un but à atteindre, d'une fin à réaliser » (CNRTL) : plus qu'une intention c'est un processus intellectuel.

« Le design ce n’est pas l’apparence et le ressenti. C’est comment cela fonctionne. » (Steve Jobs)

Le design est d’après Stéphane Vial :

  • une esthétique (beauté formelle)
  • une sociologie (dans les mains et les esprits, par les interactions sociales)
  • un événement (expérience du monde)

Dieter Rams, cité par Antony Masure[^2], ajoute qu’un « bon design est inventif, […] rend le produit utile, […] aide le produit à être compris, […] est honnête, […] soutenable, […] dure longtemps, […] est cohérent jusqu’au moindre détail, […] tient compte de l’environnement, […] est aussi peu design que possible ».

Réguler la société

« Prenons un feu rouge : pourquoi il y a trois lumières ? On pourrait mettre une lumière avec trois ampoules qui changent. On s’est rendu compte qu’il faut doubler une information pour qu’elle soit compréhensible et sûre, et donc changer aussi la position de la lumière »[^1]

Pour cela le design est profondément ancré dans le monde et ses usages industriels

https://scolaire.loupbrun.ca/conferences/philo-design/#/%2Fconferences%2Fphilo-design%2F14%2F

[^1]: Annabelle Laurent, La conscience d'une pollution mentale créée par le numérique émerge, 2017 [^2]: Anthony Masure, Le design des programmes, 2014

Rétroliens 3
  • brutalist web design
  • processus de l’UX Design
  • théorie du nudge

les versions historiques du web

id :20200617210141
dernière édition :
type :processus
mots-clés :web
mode focus :

Le web est un mode de circulation des contenus sur le réseau international Internet. Il a connu plusieurs paradigmes :

[[20200623110109]] notion de paradigme

  • Web 1.0, paradigme de la bibliothèque : web de documents avec l'idée que les navigateurs web sont autant des outils de lecture que des outils d'édition. « Les notions de lecture-écriture sont indissociables pour assurer la circulation de l’information bilatérale »[^1].
  • Web 2.0 : web de plateforme avec l’écriture collaborative documents devenus des données. « Au-delà de l’écriture explicite (texte) par les utilisateurs, ce sont donc toutes leurs interactions qui deviennent autant d’écritures rejoignant les données utilisables par les logiciels du web »[^1].
  • Web 3.0, paradigme du web sémantique : web sémantique dans la mesure où des logiciels sont maintenant installés sur les serveurs et les clients pour traiter la data en circulation sur le réseau.

Ces changements sont causés par un glissement de la valeur : matériel (hardware) → logiciel (software) → données (data) → données liées (linked data). Ainsi, nous allons vers le big-data.

[[20200801210302]] espace numérique

Web documentaireWeb de données
Objetpageressource
ProtocoleHTTPHTTP
Norme de fichier XMLHTMLRDF
IdentificationURLURI
Circulationliens hypertextepropriétés

Le Web écrase tout par son processus éditorial [[20200722215106]].

Le Web n’est pas « non structuré », mais il est constitué une très grande variété de structures. Cela rend son traitement très complexe (imprévisible).

[^1]: E.S Michael et V.R Marcello, Pratiques de l'édition numérique, 2014

Liens 3
  • notion de paradigme
  • espace numérique
  • processualité éditoriale
Rétroliens 1
  • travail gratuit, économie du web de plateforme

liste des références

id :20210408140818
dernière édition :
type :inscription
mots-clés :code

Les index sont des listes ordonnées de références. Les éléments suivants peuvent être/contenir des index, mais sans s’y limiter.

  • glossaire : liste de définitions dans un domaine particulier
  • lexique : ouvrage autonome contenant des définitions de termes
  • sommaire : liste brève des parties d’un document (plan ?)
  • table (des matières, des figures, des tableaux…) : liste exhaustive des éléments d’un document

littératie numérique

id :20200707175829
dernière édition :
type :processus
mots-clés :lectureecriture
mode focus :

La littératie est « l’aptitude à comprendre et à utiliser l’information écrite dans la vie courante […] en vue d’atteindre des buts personnels et d'étendre ses connaissances et ses capacités »[^1]. C’est la capacité à lire, à accéder à un document, à une information.

« Cette culture [de l’édition numérique] n’est rien d’autre que la littératie numérique qui ajoute au savoir-lire-et-écrire la maîtrise du milieu d’écriture et une capacité à inscrire l’espace autant qu’à le structurer. Il s’agit à la fois de savoir évoluer dans cet environnement (l’habiter) et de le faire évoluer (le designer). »[^2]

On parle désormais de translittératie quand il s’agit d’interagir en différents endroits, entre une documentation variée (forme, canaux) et une multitude de plateformes (réseaux sociaux et autres services en ligne). Parmi les compétences attendues en littératie, on trouve l’« alphabétisme informatique »

[[20201002103853]] DigComp, évaluation des compétences numériques

Le mal du siècle en matière de documentation est en effet la perdition des objets et du savoir-lire. On relève un analphabétisme numérique, une incapacité à lire du code, à utiliser un terminal de commandes ; c’est un effet largement soutenu par les outils comme les logiciels de traitement de texte et autres interfaces graphiques donnant une illusion de littératie.

[[20200725133539]] enjeux politiques de l'écriture numérique

[^1]: OCDE, La littératie à l’ère de l’information, [^2]: Marcello V.R, Nicolas Sauret, Antoine Fauchier, Margot Mellet, Écrire les SHS en environnement numérique. L’éditeur de texte Stylo, 2020

Liens 2
  • DigComp, évaluation des compétences numériques
  • enjeux politiques de l’écriture numérique
Rétroliens 5
  • centralisation
  • écrit et oral
  • éditorialisation
  • problème des logiciels de traitement de texte
  • production de contenu web

livre numérique

id :20200701110951
dernière édition :
type :undefined
mots-clés :scienceinformation
mode focus :

Ce n’est qu’au Moyen-Âge que le livre prend la forme (du « codex ») que nous avons désormais l’habitude de voir. Avant cela, les écris étaient inscrits sur des rouleaux (forme dite « volumen »).

Hypertexte

Le passage du volumen (linéarité) au codex (tabularité[^2]) a permis d’intégrer les notions hypertextes : les pages sont des unités qu’il est possible de dénombrer (et donc d’identifier précisément) et d’annoter (liens internes, notes de bas de page).

[[20200622164608]] hypertexte hypertexte

Sur le web

Toutefois, ce que ce que l’on considère aujourd’hui comme le principal domaine de l’hypertexte, le web, s’apparente d’avantage à un volumen : les pages web défilent (certes verticalement et non plus horizontalement) et les seules unités qu’il est possible d’identifier sont des balises (ancres) cachées dans le code source de la page.

[[20200606213253]] corps de texte balisé, sémantisé, interactif

Édition

[[20200707085937]] édition numérique

« éditer un ouvrage entraîne la conception du système de publication, en fonction du type de publication et des contraintes inhérentes à la structure ou à la diffusion »[^1]

La forme de la page (comme on la trouve en fond sur Word ou LibreOffice Writer) n’a pas de sens sur écran, sinon pour vérifier la mise en page d’un contenu à imprimer sur support physique.

[[20200815163702]] paradigme de l’imprimé

Hors, lorsque nous travaillons pour et dans un format numérique (par nature suffisamment flexible, modulaire pour se détacher des supports physiques finis comme le papier ou le codex). La rédaction du livre doit donc être entièrement repensée.

[^1]: Antoine Fauchié, Vers un système modulaire de publication : éditer avec le numérique, 2019 [^2]: « possibilité pour le lecteur d'accéder à des données visuelles dans l'ordre qu'il choisit » Christian Vandendorpe, Du papyrus à l'hypertexte, 1999

Liens 4
  • hypertexte
  • corps de texte balisé, sémantisé, interactif
  • édition numérique
  • paradigme de l’imprimé

logiciel libre et logiciel open source

id :20200710204125
dernière édition :
type :processus
mots-clés :web
mode focus :

« Logiciel libre » est une expression largement galvaudée. Les logiciels libres (free) tendent à être confondus avec les logiciels open source (open) malgré leurs différences éthiques et ontologiques (de nature). On les confond dans le domaine du « LOS », Libre Open Source, lancé dans les années 80.

« Les deux expressions décrivent à peu près la même catégorie de logiciel, mais elles représentent des points de vue basés sur des valeurs fondamentalement différentes. L’open source est une méthodologie de développement ; le logiciel libre est un mouvement de société »[^1]

On reconnait dans ce milieu militant, hacker [[20210323194802]] plusieurs personnalités, dont Richard Stallman (projet GNU, Free Software Fondation…) et Linus Torvalds (développement de Linux, Git…).

Logiciel libre

Le logiciel libre se veut respecter « les libertés essentielles de l'utilisateur : la liberté de l’utiliser, de l’étudier, de le modifier et d’en redistribuer des copies, modifiées ou non »[^1]. Free ne veut pas dire gratuit, mais renvoie à la liberté de (re)utilisation. Ainsi, le logiciel libre est une démarche politique des développeurs, conscients que, si le matériel est désormais accessible à tous, le logiciel reste une problématique sociale. Il est cher et soumit au bon vouloir de grandes multinationales.

Open source

Le logiciel open source (OSS, Open Source Software) se veut transparent et collaboratif. S’il est vrai que le code source du logiciel libre est également public et est l’œuvre d’une équipe de développement, c’est dans un tout autre dessein que l’open source grandit.

C’est une logique pragmatique des organisations et administrations consistant à ouvrir le code de leurs logiciels pour obtenir les contributions des internautes. C’est une amélioration continue favorisant « la fabrication ou la possession de logiciels puissants et fiables »[^1] selon la Loi de Linus. Elle dispose qu’une équipe de testeurs/développeurs suffisamment nombreuse peut arriver à bout de tous les bugs : le correctif sera évident pour l’un d'entre eux.

« Le mouvement du logiciel open source s’est écarté des aspects sociopolitiques du mouvement du logiciel libre pour se concentrer sur les bénéfices pratiques du développement logiciel et encourager des applications créatives et commerciales plus larges. »[^2]

Mouvements politiques

Le logiciel libre et le logiciel open source sont deux démarches communautaires d’utilité publique, mais dans deux directions radicalement différentes.

Libre marxiste

Le logiciel libre ne s’oppose ni au code source ouvert (open source), ni au code source fermé. « l'ennemi est le logiciel privateur »[^1], le logiciel d’un propriétaire qui enferme les utilisateurs dans son écosystème et menaçant à tout instant de les priver de leurs travail. On retrouve là le schéma marxiste du prolétaire, dépossédé de ses moyens de production, pris par le capitaliste rentier (propriété lucrative).

Ainsi, on retrouve parmi les logiciels libres des alternatives aux grands noms du logiciel propriétaire liberticide : Microsoft Word → Libre Office Writer ; Adobe Photoshop → Gimp ; Adobe Illustrator → Inkscape ; Adobe InDesign → Scribus ; Google Chrome → Firefox… Ils sont liberticides par leurs systèmes d’abonnement, leurs formats de fichier fermés et plus généralement leur domination des usages. Le logiciel libre se propose comme une solution pour les utilisateurs de pouvoir créer sans faire appel à ces logiciels.

Open capitaliste

Pour défendre les valeurs du libre, l’équipe d’un logiciel ne peut se contenter d’ouvrir son code source, mais elle doit se donner les moyens d’établir de la liberté durablement pour son logiciel. Le projet open source est quant à lui bien plus éphémère, soumis à des mouvements de mode. Ainsi on retrouve de nombreuses dépendances logicielles [[20200701083222]] sans cesse améliorées avant d’être remplacées au bout de quelques années par un autre projet plus influant.

« La plupart des discussions sur l'open source ne s'intéressent pas au bien et au mal, seulement à la popularité et au succès. »[^1]

Les paradigmes changeant sans cesse avec des développeurs sous la pression du changement. Cela n’est pas liberté, mais une mise en concurrence permanente des communauté et des organisations derrière elles. L’ouverture du code source vise plus un accroissement de capital qu’une mise en commun ; c’est à qui remportera le plus de succès et non de pérennité dans un pure esprit capitaliste.

[[20200705100544]] travail gratuit, économie du web de plateforme

Maintenance

La nature décentralisée de l’open source – réalisé à la fois par tout le monde et par personne – rend instable sa maintenance [[20210304181626]].

Comme avec la Linux Fondation pour logiciel libre, les projets open source basé sur NodeJs tendent à se pérenniser au sein de la OpenJS Fondation. Le nom laisse encore quelques doutes. Pourtant ces dépendances logicielles deviennent peu à peu les bases de grandes infrastructures utiles à des milliers de personnes. Leur maintenance devient impérative, sans quoi il se peut que de nombreux utilisateurs ne puissent plus utiliser leurs outils voire deviennent sensibles à des attaques. Ils se retrouvent alors pris au piège, faute de pérennité, malgré les bonnes intentions de la communauté.

« Le logiciel open source est créé et utilisé aujourd'hui à une vitesse jamais vue auparavant. Beaucoup de projets open source sont en train d’expérimenter la difficile transition d’une création désintéressée à une infrastructure publique essentielle. »[^2]

Dépolitisation

« faire de l’information ouverte par défaut est devenu une telle évidence culturelle aujourd’hui que les développeurs ne s’imaginent plus faire les choses autrement – un contexte bien différent de celui des rebelles politisés du logiciel libre des années 1980. »[^2]

Ainsi, il n’est plus question de défendre un idéal de liberté technique quand tout semble aller pour le mieux concernant la libre circulation du code, de l’informatique. Les développeurs ne prennent parfois plus le temps d’appliquer une licence à leur logiciel ; le code est en ligne et prendra qui voudra.

[^1]: Richard Stallman, En quoi l'open source perd de vue l'éthique du logiciel libre [^2]: Nadia Eghbal, Sur quoi reposent nos infrastructures numériques ?, 2017

Liens 4
  • hacker
  • dépendances logicielles
  • travail gratuit, économie du web de plateforme
  • maintenance logicielle
Rétroliens 10
  • application
  • bibliothèque logicielle
  • carnet de programmation
  • centralisation
  • communauté de développement
  • dépendances logicielles
  • framework ou cadriciel
  • travail gratuit, économie du web de plateforme
  • versionnement Git
  • wiki

lois Lehman

id :20210118144930
dernière édition :
type :architecture
mots-clés :code
mode focus :

Meir Lehman distingue[^1] trois types de logiciel. Selon leur type on leur attribue d’office certaines problématiques liées à la dette technique [[20210109130329]] et à la maintenance [[20210304181626]]. Ces types sont attribués d’après deux variables :

  • les spécifications (objectifs), les fonctionnalités attendues à la fin du développement ;
  • les solutions (moyens), les réponses techniques apportées dans le sens des spécifications.
typespécificationssolutions
Statiquedéfiniesdéfinies
Pratiquedéfiniesincertaines
Embarquéincertainesincertaines

Ainsi, les logiciels statiques sont développés dans une certitude complète et ne sont pas amenés à évoluer, comme un programme sur calculatrice. Les logiciels pratiques ont une finalité bien définie, évoluent peu, mais le développement est plus complexe car la solution n’est pas évidente. C’est le cas d’un jeu. Les logiciels embarqués évoluent avec leurs utilisateurs dans des situations changeantes. Ils sont à la fois complexes pour leur précision et amenés à évoluer très régulièrement, comme pour un logiciel métier.

Lois

Ce dernier type intéresse particulièrement Lehman qui lui dédie huit lois que l’on peut résumer ainsi :

  • il doit s’adapter en permanence aux changements de son environnement, sans quoi il devient moins utile : les modifications vont au gré de ses utilisateurs et de leur propre métier, mais aussi en fonction des évolutions techniques ;
  • il nécessite un effort supplémentaire et toujours plus important pour lutter contre son obésité : une complexité croissante et une multiplication permanente des fonctionnalités ;
  • il est nécessaire de conserver tout au long de la vie du logiciel la familiarité que ses utilisateurs ont entretenu avec lui en considérant que ce nombre d’utilisateur est globalement stable.

[^1]: Meir Lehman, Programs, Life Cycles, and Laws of Software Evolution, 1980

Liens 2
  • dette technique
  • maintenance logicielle
Rétroliens 1
  • dette technique

macros-définition

id :20201106103452
dernière édition :
type :inscription
mots-clés :code
mode focus :

Il s’agit de définir (macro-instruction) une instructions qui pourra être répétée par substitution : Une chaîne de caractère (substitution) permet de placer une occurrence de l’instruction (définition) à laquelle est elle rattachée. Ce processus (macro-expansion) nécessite une analyse syntaxique de la saisie.

[[20200930214400]] syntaxe de code

Ainsi, la saisie bjr (substitution) peut-être une macro ordonnant l’insertion de la chaîne de caractère bonjour (définition). Saisir bjr bjr rend bonjour bonjour. Il est aussi possible d’ajouter des arguments comme en écrivant bjr*3 qui donnerait bonjour bonjour bonjour.

Les définitions et leur substitution sont définies dans un dictionnaire.

Analogie avec le code

Bien que les macros n’ont pas la même utilité que les langages de programmation, on retrouve cette idée de définition et substitution avec les variables en programmation. Avec le langage Python on inscrit d’ailleurs explicitement une définition, abrégé def.

def tell_name(prenom, nom):
    print("Je suis " + prenom + " " + nom + ".")

tell_name("Guillaume", "Brioudes")

>> Je suis Guillaume Brioudes.

Utilisation

Les macros ne permettent pas de prescrire des algorithmes comme le permet un langage de programmation et ses structures de contrôle.

[[20200701214359]] structures de contrôle

Les macros permettent de répéter d’importantes portions de code soit substituées à des chaînes de caractère comme vu précédemment, soit appelées lors de certaines commandes, par exemple une combinaison de touches. On accélère ainsi la soumissions des requêtes [[20210405160832]].

Liens 3
  • syntaxe de code
  • structures de contrôle
  • requête

maintenance logicielle

id :20210304181626
dernière édition :
type :processus
mots-clés :informatique
mode focus :

La maintenance fait partie intégrante de la vie du logiciel [[20210306102014]]. Elle débute une fois le logiciel déployé, « mis en production ». Son arrête signifie la mort du logiciel. En effet, il pourra être rapidement dépassé en terme de fonctionnalité, d’environnement (dépendance logicielle et matérielle).

On différencie 4 niveaux de maintenance[^1], de plus en plus lourds à effectuer :

  1. Correction d’erreurs dans le code source (et éventuellement sa documentation).
  2. Améliorations pour assurer de meilleurs performances, une meilleur interaction.
  3. Adaptation à un nouvel environnement, à de nouveaux composants.
  4. Évolution pour répondre à de nouveaux besoins.

Pour une maintenance, on effectue successivement l’analyse du problème, le spécifications de solution, la planification de la conception et du développement et enfin des tests.

Difficultés

  • identifier la structure du logiciel pour y dénicher l’origine du problème

Les difficultés de maintenance sur le long terme pour un logiciel sont notamment dues à la mauvaise documentation [[20210118161126]] de ce dernier.

[^1]: Sahar Jarwah, Un modèle générique pour la gestion des informations complexes et dynamiques, 1992

Liens 2
  • cycle de développement logiciel
  • documentation logicielle
Rétroliens 8
  • refactoring, revue de code
  • cycle de développement logiciel
  • dette technique
  • documentation logicielle
  • headless CMS
  • logiciel libre et logiciel open source
  • lois Lehman
  • modularité logicielle

matérialité d’un programme

id :20210121192437
dernière édition :
type :processus
mots-clés :informatique
mode focus :

[[20200808143420]] programme et programmation [[20210415160329]] software/hardware

Sur la carte mère de l’ordinateur et ses différents composants (notamment le processeur) sont disposés des fils. Le courant électrique passe ou non dans ces fils, équivalent à un 1 (true, un courant de 5 volts passe) ou à un 0 (false, aucun courant ne passe). C’est le binaire de l’informatique, filant presque à la vitesse de la lumière dans les circuits.

« l’altération de la matière électrique peut être lue et interprétée par une machine selon un codage précis »[^3] (p.141)

Huit fils permettent de faire passer 8 bits (0 ou 1). Sur 8 bits il est possible de transmettre des valeurs allant de 0 à 255. Avec 32 fils on arrive à un éventail de plus de 4 milliards de combinaisons.

« le matériel n’a pas besoin de logiciel pour ‹ faire quelque chose › »[^1]

Grâce à des portes logiques, il est possible de comparer les valeurs de plusieurs fils. Dans le cas d’une porte « AND », l’ensemble des fils qui y entrent doivent conduire du courant pour que la porte elle-même envoie une impulsion. C’est la logique booléenne.

« Le code source devient source [d’un fonctionnement] lorsqu’il s’intègre aux portes logiques (et à un niveau encore plus bas, aux transistors qui composent ces portes) »[^1]

« Lorsqu’une valeur change soudainement, il y a une brève période pendant laquelle une porte donnera une fausse valeur. De plus, parce que les signaux se propagent dans le temps dans l’espace, ils produisent un champ magnétique qui peut corrompre d’autres signaux à proximité »[^1]

Manipulations

Aux débuts de l’informatique, la programmation du calcul des machines dépendait entièrement des manipulations matérielles (branchement de câbles).

« il n’y a pas à proprement parler de ‹ logiciel ›. Il y a une certaine configuration matérielle de la machine, rendant sa manipulation très fastidieuse »[^3] (p.116)

Désormais, nous sommes passés du câblage à l’écriture, de la « logistique à la logique »[^3] (p.114), la seconde ayant pris le pas sur la première, reléguée au second plan (bien qu’elle reste déterminante). La documentation de code [[20210118161126]] et les modélisations [[20200508111132]] permettent de saisir la logique combinatoire [[20210416144157]], mais aussi de retrouver les métaphores matérielles d’unités, de branchement.

De la même manière, les données ont été d’abord été fixées sur du matériel (carte perforées) avant que, comme aujourd’hui, elles ne se confondent (dans des fichiers texte [[20200629161610]]) avec le programme qui va les traiter : elles sont inscrites dans le même espace et le même encodage [[20200717141735]].

L’abstraction [[20210412165919]], la capacité recalculatoire de l’informatique trouve sa pleine puissance quand la programmation est devenu à proprement parler un travail d’écriture (de routines, d’encapsulation des instructions [[20201224102746]]) :

« C’est cette indifférenciation [de la données et des instructions de traitement] qui permet une plus grande plasticité de la machine et une programmation grandement facilitée. Il n’y a plus besoin de réarranger les câbles et autres interrupteurs de l’ordinateur. Il suffit de réécrire des instructions et/ou de lui fournir un autre jeu de données »[^3] (p.118)

Perfomativité du code

Grâce à une écriture facilitée par les langages de programmation alphanumériques [[20200718172257]], on est tenté de penser la machine comme un humain très docile ; comme si elle allait répondre à tous les ordres parce qu’on lui a demandé, comme on lui a demandé. Or, il n’en est rien : on anthropomorphise par erreur la machine et son fonctionnement tandis que sa performance dépasse largement notre influence.

« voir le code comme subjectivement performatif ou énonciatif, c’est l’anthropomorphiser, le projeter sur la rubrique de la psychologie, plutôt que de le comprendre à travers sa propre logique de ‹ calcul › ou de ‹ commande › »[^1] (Alexander R. Galloway)

Croire que l’on peut donner un but et un désir aux machines c’est en faire des fétiches.

On peut voir à tord en l’informatique une « réalité comme soumise à des pouvoirs animés dont les buts pourraient être devinés et influencés »[^1] ; en faire un fétiche pour ne pas admettre qu’il y a une contingence ou en tous cas un manque de contrôle sur les actions de la machine. On cherche à tord une fausse causalité.

On reconnaît que le code est composé d’axiomes[^1] « évident, non démontrable, universel »[^2].

[^1]: Wendy Hui Kyong Chun, On ‹Sourcery›, or Code as Fetish, 2008 [^2]: CNRTL, Axiome [^3]: Samuel Goyet, De briques et de blocs. La fonction éditoriale des interfaces de programmation (API) web : entre science combinatoire et industrie du texte, 2017

Liens 10
  • programme et programmation
  • software/hardware
  • documentation logicielle
  • modélisation de l’architecture d’un logiciel
  • système combinatoire
  • texte brut
  • encodage du texte
  • abstraction
  • fonctions
  • niveaux langages de programmation
Rétroliens 6
  • architecture de code hypertextuelle
  • code source
  • inscription computationnelle
  • interface
  • niveaux langages de programmation
  • software/hardware

médiation numérique

id :20200716211301
dernière édition :
type :processus
mots-clés :scienceinformation
mode focus :

Le médiateur à un rôle à la fois « épistémique et cognitif », il « traversent des frontières en transférant des informations et des pratiques »[^2] (p.57-58). Ces frontières peuvent être organisationnelles ou techniques. En les dépassant il inclut les individus dans un processus de groupe. Pour cela il traite (recherche, filtre, traduit) puis transfert des informations tout en réduisant les pertes. Le médiateur est à la fois dans l’information (le contenu) et la communication (le canal). Il est à l'aise dans les différents domaines mobilisés et c'est ainsi qu'il gagne sa légitimité et contribue à la performance d’une équipe dans l’accomplissement de ses tâches.

Selon Régis Debray, la méthode médiologique (étude des médiations techniques et institutionnelles d’un groupe humain) consiste en :

« l’établissement, cas par cas, de corrélations […] entre les activités symboliques d’un groupe humain (religion, idéologie, littérature, art), ses formes d’organisation et son mode de saisie, d’archivage et de circulation des traces »[^1]

En d’autres termes, il s’agit de transmettre un sujet à un individu en prennant en compte sa culture et les formes d’organisation du savoir que vous partager tout deux. Par ce geste il résout à la fois un problème de conception (traitement de l’information) et à la fois un problème socio-relationnel (soutient moral, résolution de conflits)[^2] (p.58).

Dispositifs

« La médiation numérique est une démarche visant à mettre en œuvre des dispositifs de flux, des dispositifs passerelles et des dispositifs ponctuels pour favoriser l’accès organisé ou fortuit, l’appropriation et la dissémination de contenus à des fins de diffusion des savoirs et des savoir-faire » Sylvère Mercier

  • dispositif de flux : dispositif stable permettant le développement d’une identité numérique pérenne, attractive et d’une habitude de lecture. Ex : un réseau social.
  • dispositif ponctuel : mise en forme d’informations de manière attractive de manière à capter l’attention des utilisateurs. Il peut s’insérer dans un dispositif de flux. Ex : un article de blog, une vidéo YouTube.
  • dispositif passerelle : milieu fait d’une réalité tangible et de données numériques pour créer un lien entre le monde numérique et le monde réel. Ex : une borne dans un musée qui donne des informations numériques.

[^1]: Régis Debray, Manifeste médiologique, 1994 [^2]: Flore Barcellini, Conception de l’artefact, conception du collectif, 2018

Rétroliens 4
  • communauté de développement
  • documentation logicielle
  • mode d’emploi
  • strates services

memex de Vannevar Bush

id :20200622110109
dernière édition :
type :architecture
mots-clés :informatique, web
mode focus :

Intention

Vannevar Bush voulait augmenter la mémoire humaine, en taille et en pérennité. Pour ce faire il veut reprendre le modèle de l'encyclopédie, mais lui ajouter un mode interactif et asynchrone : Il a étudié le cheminement de l'information, de la pensée, comme il le présente dans son essaie As We May Think (1945)[^2] dans lequel il théorise le Memex, sa « fiction technique »[^4].

« [The human mind] operates by association. With one item in its grasp, it snaps instantly to the next that is suggested by the association of thoughts, in accordance with some intricate web of trails carried by the cells of the brain. » « Man cannot hope fully to duplicate this mental process artificially, but he certainly ought to be able to learn from it. »[^1]

Il veut essayer de reproduire un circuit intuitif pour consulter, annoter et partager des documents de manière fluide et pour ce faire être assisté par une machine. Ainsi le Memex (MEMory EXtender) est une interface de consultation d'une base de données documentaire (stockée sur des bandes magnétiques).

« Yet specialization becomes increasingly necessary for progress, and the effort to bridge between disciplines is correspondingly superficial. »[^1]

Il entreprend cette création en voyant ses pairs nécessairement s'enfoncer dans les strates de la spécialisation, compliquant la communication entre les différentes branches. Le Memex permettrait d'échanger plus facilement en partageant des encyclopédies conçues à partir d'une masse documentaire écrémée, annotée et reliée. De plus, le parcours de cette encyclopédie est aidé par des outils permettant de passer les pages à grande vitesse, de se rendre à un point précis de la base grâce à une interface mécanique simple.

On parle d'un proto-hypertexte, d'un prototype établissant les principes de l'hypertexte d'après les écris de Paul Otlet comme Vannevar Bush dit s'être inspiré.

Fonctionnement

On considère le Memex de Vannevar Bush comme l'un des premiers appareil hypertexte. C'est un meuble (« ordinary desk ») avec différents équipements permettant de lire et annoter différents documents stockés sur des bandes magnétiques. Les documents (ensembles de pages) s'affichent sur un écran écrans et des manettes permettent de passer d'une page à une autre plus ou moins rapidement : « If he deflects it further to the right, he steps through the book 10 pages at a time; still further at 100 pages at a time. »[^1].

Le second écran peut également être sollicité pour pouvoir consulter une autre page, comme complément d'étude de la première : « As he has several projection positions, he can leave one item in position while he calls up another »[^1]. L'utilisateur peut même décider de faire une liaison entre les deux.

Chaque page possède un identifiant unique qui y est annoté. Le meuble affiche également l'identifiant de la page active. Un clavier permet de saisir un identifiant et un bouton de lancer l'affichage de la page correspondante à l'identifiant entré : « If the user wishes to consult a certain book, he taps its code on the keyboard, and the title page of the book promptly appears before him »[^1].

Un stylet permet d'annoter le document sur l'un des deux écrans, voire d'en créer un : une platine (« transparent platen ») est disposées sur le bureau et permet de « photographier » un document, une saisie manuscrite (« memoranda »), pour l'enregistrer sur la bobine.

Utilisation

Dans son essaie As We May Think (1945), Vannevar Bush imagine des professionnels (un avocat, un médecin, un historien… ) revenir sur leurs anciens écris ou ceux de leurs pairs. Il imagine une enquête sur les arcs ou un chercheur exécuterai successivement les taches suivantes :

  1. Il trouve une problématique
  2. Il lit ce qu'il a déjà dans son Memex, lit d'autres sources et il relie (link) les plus pertinentes dans l'arborescence de son Memex tandis qu'il annote et forme ainsi une piste (« building a trail », enregistré pendant l'utilisation sur la bande magnétique), bifurque sur une autre (« he branches off on a side »)
  3. Il partage son travail

Photographie

Le Memex est principalement basé sur la photographie au sens de support photosensible : sensible aux rayonnements lumineux. C'est ce procédé qui va permettre d'imprimer les documents sur les bandes microfilm (support de stockage analogique), mais aussi d'y apporter des notes avec le stylet. Ainsi le Memex profite des dernières techniques analogiques en matière de prise de vue « à la volée ».

Le Memex restera toujours, résolument, une machine analogique.

[[20200613160247]] opposition numérique/analogique [[20200623110109]] notion de paradigme

Partage

Plus tard il se rend compte qu'il a besoin de ces travaux pour un pair : il photographie tout le parcours (« photographs the whole trail out ») et lui partage pour l'insérer dans son propre Memex.

La base est stockée sur une bobine, plus facilement reproductible, consultable et mois chère qu'un corpus de centaines de pages.

Construire ainsi des encyclopédies et les partager est plus efficace que de mettre en place une grande bibliothèque où l'on « trouverait tout » pour concrètement voir une minorité miner l'information plutôt que de la trouver.

« Even the modern great library is not generally consulted; it is nibbled at by a few. »[^1]

Liaison

Le Memex en tant que prototype ne permet pas d'intégrer des liens aux pages, mais de programmer leur succession (par signets, « associative indexing »). Ainsi, ne peut succéder à une page qu'une seule autre page, définie à l'avance: « It is exactly as though the physical items had been gathered together from widely separated sources and bound together to form a new book »[^1]. Ces liens hypertextes ne sont pas « cardinaux », multi-directionnels.

Pourtant la théorie du Memex va au-delà de cette limite : Vannevar Bush imagine une structure interne des pages dans un format qu'il n'est pas celui du document original, mais une version adaptée pour son outil et qui serait conçu suite au scan d'un document.

Hypertexte

Selon Alexandre Serres[^3], on peut prêter les caractéristiques hypertextes suivantes au Memex :

  • lecture et écriture non linéaires : navigation et annotation personnalisées
  • découpage de l’information en unités préindexées grâce à des identifiants uniques et inscrits dans les pages
  • multifenêtrage permettant de consulter et compare les documents

Vers le web

Le Memex est le premier outil permettant d'actionner une logique documentaire précurseur de ce qu'est le web et cela selon différents aspects :

  • Chaque document, chaque page est identifié permettant de mettre en place les liaisons
  • Il est possible de lire et écrire sur les pages (comme Tim Berners-Lee imaginera l'utilisation des pages web)
  • On peut créer un documents et le stocker dans la base
  • La base documentaire peut être partagée (physiquement, en donnant a bobine)

Sources

https://www.youtube.com/watch?v=q8s2jkq-R5o https://www.youtube.com/watch?v=c539cK58ees https://en.wikipedia.org/wiki/Memex https://www.theatlantic.com/magazine/archive/1945/07/as-we-may-think/303881/

[^1]: Vannevar Bush, As We May Think, 1945 [^2]: Selon Alexandre Serres dans Hypertexte : une histoire à revisiter (2015), les recherches de Vannevar Bush sur le Memex et la rédaction de son article auraient commencé dès 1932 [^3]: Alexandre Serres, Hypertexte : une histoire à revisiter, 2015 [^4]: Anthony Masure, Le design des programmes, 2014

Liens 2
  • opposition numérique/analogique
  • notion de paradigme
Rétroliens 1
  • hypertexte

métadonnées

id :20200923152146
dernière édition :
type :inscription
mots-clés :scienceinformation
mode focus :

Les métadonnées sont des « données permettant à un système de manipuler d’autres données »[^1]. Sans intégrer le contenu, elles permettent de singulariser et d’apporter des précision sur un objet. Le titre d’un livre n’est pas juste une information de description de l’objet, mais aussi un moyen de retrouver l’ouvrage dans une base documentaire.

Pour un objet on peut enregistrer des métadonnées de différents types pour autant d’usages :

  • descriptives (Dublin Core : titre, date, droits…)
  • administratives (identifiant, date de modification, de suppression…)
  • structure (type de données, nombre d’octets…)

Micro-données

Le Dublin Core est un schéma de micro-données, une ontologie [[20200809102622]] de 15 métadonnées permettant de caractériser tout document. Elles sont relatives

  • au contenu (titre, sujet, description, source, langue, relation, couverture) ;
  • à la propriété intellectuelle (créateur, contributeurs, éditeur, gestion des droits) ;
  • à la génération (date, type, format, identifiant).

On peut également citer ces autres schémas :

  • Open Graph (Facebook)
  • Schema.org (Bing, Google, Yahoo! et Yandex)

Ils permettent d’enregistrer du contenu sémantique au sein des pages web comme avec les balises présentées ci-dessous. On indique successivement le titre de la page web selon les schémas Dublin Core, Open Graph et Twitter

<meta name="DC.Title" content="…">
<meta property="og:title" content="…">
<meta name="twitter:title" content="…">

[^1]: Bruno Bachimont, Ingénierie des connaissances et des contenus, 2007

Liens 1
  • ontologie
Rétroliens 4
  • base de données
  • la donnée
  • objet informatique
  • processus documentaire

méthode des projets agiles

id :20200505212332
dernière édition :
type :processus
mots-clés :gestionprojet
mode focus :

Les projets agiles répondent à une difficulté inhérente aux projets innovants : rassembler des personnes de différents métiers pour proposer une solution en réponse à un besoin évolutif. Ces méthodes ne sont pas adaptées à tous les projets et certaines sont plus lourdes que d‘autres à mettre en place. Un·e master est présent·e dans l‘équipe pour s‘assurer que les principes suivants sont appliqués.

Les principes suivants découlent de la méthodologie Scrum, mais il est possible d‘alléger ces principes pour aller avec une GPS : Gestion de Projet Simple.

Découper le besoin

L‘expression du besoin innovant évolue au fur et à mesure du projet. Tel qu‘il est exprimé par la personne en demande, nous parlons d‘un besoin primaire. Cette notion va être travaillée durant le « sprint 0 » dans différents documents, notamment un cahier des charges (objectif, délais et coûts) pour devenir un besoin fonctionnel, auquel on est désormais en mesure de répondre techniquement, par une cascade de tâches.

![schema methode projet agile scrum](./images fiches/schema methode projet agile scrum.png)

Itérations

Cette cascade de tâches va être amenée à évoluer : le besoin va se préciser, les difficultés vont orienter les choix techniques. Le projet innovant est agile par nécessité. Œuvrer nécessite toutefois une certaine stabilité. Ainsi on va enchaîner en équipe les phases d‘analyse et de réalisation. Pour veiller à ce que que le tout corresponde au besoin évolutif, on ajoutera une phase d‘évaluation de la réponse technique.

  1. Analyse
  2. Réalisation
  3. Évaluation (si elle est concluante par rapport à ce qui a été demandé après analyse, on passe on retourne à l‘étape 1, sinon à l‘étape 2)

Ces trois phases vont former un sprint, une période limitée débutant par un brief, une mise au point sur ce qui va être réalisé par les membres de l‘équipe durant le semaine, la quinzaine, le mois. On va itérer les sprints jusqu‘à avoir complété et validé toutes les tâches de la cascade. Toutes les modalités de travail sont définies lors du « sprint 0 ».

User stories

Dans l‘équipe est nommé·e un·e product owner, responsable de la conception des user stories. Ce sont des blocs de fonctionnalité qui répondent à un même besoin utilisateur. Les user stories seront plus tard découpées en tâches dès lors qu‘elles sont valides : elles doivent

  • être indépendantes
  • être négociables en terme de « coût »
  • être interchangeables ;
  • apporter une valeur ajoutée au projet ;
  • être estimables en temps et argent
  • avoir une taille appropriée

Chaque user story valide entre dans le backlog de l‘équipe, la liste d‘attente.

Créer la situation

Pour les méthodes agiles, on va privilégier des situations plutôt que des dispositifs inertes :

  • individus et interaction, plutôt que processus et outils ;
  • fonctionnalités opérationnelles, plutôt que documentation exhaustive ;
  • collaboration avec le client, plutôt que contractualisation des relations ;
  • acceptation du changement, plutôt que conformité aux plans.

L‘un des grands outils de la méthode agile est le mur blanc couvert de post-it, chacun représentant une tâche. Ainsi des informations minimales peuvent êtres (dé)placées formant un système concret pour appréhender son équivalent abstrait. La version électronique de ce dispositif est bien moins prisée.

En effet, cet agencement créer des situation : avoir terminé une tâche signifie pouvoir venir à ce mur et déplacer un post-it. Les gens quittent leur écran et se lèvent, vont vers le tableau, s‘y réunissent.

Le mur couvert de post-it disposés sous forme de colonnes selon la typologie suivante :

  • backlog : n‘a pas encore été planifié ;
  • sprint x : a faire dans le sprint actuel ;
  • in progress : en cours de réalisation ;
  • testing : en cours de test. S‘il y a un bug, retour à la colonne in progress ;
  • done : tâches terminées. On n‘en retire pas les post-it, c‘est plaisant de voir le projet avancer.

Réunions

Au départ de chaque sprint, on planifie : les ouvriers et le·a Product owner échangent autour des user stories. C’est le moment de préciser concrètement les besoins et de parler technique. Les ouvriers vont donner des points (« coût ») à chaque user stories en fonction de la complexité de réalisation qu‘ils estiment. C‘est le poker planning En effet, chaque sprint a un « coût » maximum que l‘équipe peut encaisser en collaboration. Si une user story obtient un coût trop important, c‘est qu‘elle n‘a pas bien été définie : elle doit être scindée. Si des ouvriers donnent un « coût » très différent pour une même user story, c‘est qu‘elle n‘a pas bien été comprise. Ce nombre peut évoluer, au fur et à mesure du projet. Il vise à limiter les tâches réalisées, mieux réalisé quand il n‘est pas exécuté sous pression.

Une fois que ces « coûts » ont été définis, tout le monde se lance dans le travail sans revenir en arrière pour planifier. Les retours sur les user stories se feront au début du print suivant.

Tous les jours, l‘équipe va procéder à une « mêlée » de 15 minutes : une réunion où tout le monde va présenter les tâches sur lesquelles il a avancé depuis la derrière « mêlée » et comment cela s‘est déroulé. Tout le monde sait où en est tout le monde.

En fin de sprint on fait une revue de ce qui a été produit. C’est le moment des commentaires, suggestions qui sont potentiellement placées dans le tableau, en backlog. Avec cette méthode, on a le droit à l’erreur et il y a de la remise en question permanente en équipe : ce n’est jamais l’erreur d’un seul, ni du système, mais de l‘équipe.

Réalisation

La réalisation varie selon l‘avancée du projet. Les premières réalisations sont des prototypes tandis que les dernières s‘approchent d‘un produit fini. De même l‘évaluation peut prendre la forme d‘un test, d‘une révision en fonction de la réalisation. L‘évaluation entre pairs est un principe clé de la méthode de projet agile.

[[20200707101657]] git flow, programmation agile

Liens 1
  • git flow, programmation agile
Rétroliens 4
  • cycle de développement logiciel
  • git flow, programmation agile
  • processus de l’UX Design
  • qualité logicielle

métier d'éditeur

id :20200607195524
dernière édition :
type :processus
mots-clés :scienceinformation, lectureEcriture
mode focus :

Il est le « professionnel de la chose éditoriale » est compétent dans le « savoir éditer ». Il est à la fois « homme de lettres et entrepreneur ». Un éditeur a une double responsabilité matérielle et morale vis à vis d'une œuvre, comme une « contre-signature » perpétuelle dans son métier. Il est à la fois

  • editor : « consacre et qui dirige la publication d’ouvrages », développement du manuscrit, conception de la maquette dans un travail plus technique
  • publisher : « responsabilités de gestionnaire et d’administrateur propres aux conditions de production et de diffusion des ouvrages »

Figure symbolique de l'éditeur

Sa fonction lui confère aussi une légitimité symbolique dans le champ littéraire et plus généralement culturelle. Il jouit tout comme l'objet livre d'un statut particulier qui lui donne le pouvoir de « consacrer » des auteurs et a fortiori des écrivains : on lui reconnaît « le mérite de la révélation et le privilège de la propriété ».

Pour un éditeur, choisir un auteur, publier un livre c'est se constituer une image de marque, « une identité singulières ». Son catalogue est une vitrine, pour les auteurs, mais aussi pour le public entre lesquels il se place comme médiateur, toujours dans son antagonisme d'« homme de lettres et entrepreneur ».

Processus d'édition

Une œuvre peut être soumise (l'auteur propose son manuscrit) ou bien commandée (la maison d'édition a demandé à un auteur de lui concevoir une œuvre, librement ou non).

  1. Choix des manuscrits

Le manuscrit est l'œuvre, plus ou moins brute, telle qu'elle a été produite par l'auteur. C'est ce document que va consulter l'éditeur ou bien qu'il va confier à un lecteur externe, voire un comité de lecture dans les maisons d'édition de grande taille.

Le choix va s'opérer selon une ligne ou politique éditoriale avec pour ultime juge l'éditeur qui va étudier les critères de sa collection, de son catalogue.

  1. Élaboration et mise en forme

L'auteur va être accompagné dans l'« élaboration et la rédaction finale de son ouvrage ». L'éditeur peut déléguer ce travail à un directeur de collection ou à un directeur littéraire. La collaboration débute entre les deux partis. Dans les grandes maisons d'édition, l'éditeur doit travailler avec des responsables financiers et dans tous les cas établir avec l'auteur le « tirage » envisagé dans un contrat de cession des droits d'auteurs précisant les devoir des deux partis.

Ensuite on corrige, on traduit en faisait appel à des agents externes. La coordination de ces nombreuses personnes dépend de l'éditeur ou bien souvent d'un secrétaire d’édition.

  1. Fabrication

L'éditeur donne son imprimatur.

De nombreuses personnes vont encore intervenir sur le livre dans une démarche à la fois artistique et technique. Avant de réaliser les « épreuves de l’ouvrage », il faut mettre en page, « déterminer la taille et le type de caractères retenus, superviser la reproduction et l’insertion des illustrations […] calibrer la maquette du livre, en estimer le nombre de pages ».

« Sans chercher à surestimer l’importance de la valeur esthétique d’un livre, sa présentation matérielle (qualité de l’impression, choix des papiers et cartons), sa signature graphique (élégance, recherche du design, esthétique générale) sont pourtant eux aussi responsables de la signature et de l’image (de marque) de la maison d’édition »

  1. Diffusion et distribution

« En apposant son nom ou celui de sa maison d’édition au bas d’un livre, un éditeur s’engage de facto dans l’espace public », mais il engage également les « valeurs littéraires », celles d'un mouvement artistique, d'un courant de pensée. C'est un rôle social, politique qui a grande échelle assure « le développement et la pérennité de la vie intellectuelle ».

Enjeux du numérique

Le numérique vient bouleverser l’institution de l'édition. Toutefois les éditeurs ont la possibilité d’exercer leur rôle, plus important que jamais. Quand de toutes parts on écrit et on publie dans l'espace public (réseau mondial), quand on pourrait croire que l'on peut se passer d'eux, les éditeurs gardent tout de même leur autorité artistique et intellectuelle et par conséquent leur rôle de médiateur.

« du livre papier à son pendant dématérialisé, s’impose encore et toujours la nécessité d’un intermédiaire entre l’auteur et le lecteur » ; « les lecteurs de demain auront besoin de certifications, de labels, de garanties de qualité. Les éditeurs leur apporteront cette caution »

Source : EBERLE-SINATRA, Michael et VITALI ROSATI, Marcello (éd.), 2014. Pratiques de l’édition numérique [en ligne]. Parcours numériques. Montréal : Les Presses de l’Université de Montréal. [Consulté le 7 juin 2020]. Parcours numériques. ISBN 978-2-7606-3202-8. Disponible à l’adresse : http://parcoursnumeriques-pum.ca/introduction-20

Rétroliens 1
  • édition numérique

minifier le code

id :20210218193747
dernière édition :
type :inscription
mots-clés :code
mode focus :

La minification de code source est une opération souvent automatisée par un outil de développement [[20210218193747]]. Elle consiste à appliquer plusieurs opérations (combinables) à un code source :

  • supprimant les espaces, tabulations (peuvent facilement être retrouvés avec un logiciel de beautify) ;
  • supprimer les commentaires ;
  • factoriser toutes les opérations et conditionnelles ;
  • renommer les fonctions et variables avec un minium de caractères.

Cela a souvent pour effet de rendre les fichiers sortants difficilement compréhensibles, voire illisibles par les humains. On voit ci-dessous que l’on perd toute notion de sémantique (le nom isWide et le paramètre number explicitaient respectivement l’utilité de la fonction et le type de données requis) et d’espace (le marquage de la conditionnel).

[[20200530195417]] inscription typographique du code comme corps des artefacts numériques

function isWide(number) {
    if (number >= 1000) {
        return true;
    }
    return false;
}
// minify :
function f(e){return e>=1e3}

Utilité

  • Perte de poids : les fichiers étant réduits à une taille minimum, ils sont plus rapides à télécharger pour les clients [[20210112090725]] et à interpréter [[20200718182015]]. Il est possible de réduire de 15% à 70% le poids.
  • Rendre le code impénétrable : que ce soit pour éviter la rétro-ingénierie, la concurrence ou simplement pour cacher les particularité de son code, un développeur peut décider d’en effacer le sens.
Liens 4
  • minifier le code
  • inscription typographique du code comme corps des artefacts numériques
  • client serveur
  • langages compilés ou interprétés
Rétroliens 4
  • boîte à outils programmable
  • chaîne d’édition du code
  • empaqueter (bundle) le code
  • minifier le code

mode d’emploi

id :20210213103719
dernière édition :
type :processus
mode focus :

[[20200716211301]] médiation numérique [[20200709104849]] rapport aux objets techniques

Le mode d’emploi est une documentation permettant de « décrire un objet technique de manière à rendre intelligible son mode de fonctionnement et l’interaction qu’il suppose avec un utilisateur »[^1]. Il est adressé au grand public (cible très générale) pour leur faire acquérir des compétences techniques spécifiques et non pour comprendre le fonctionnement de l’objet.

Le médiateur, narrateur du mode d’emploi s’incarne comme le concepteur de l’objet technique. Il est celui qui a compris l’objet technique dans toute sa complexité matérielle et procédurale (temporel). Or, ça n’est pas d’un technicien dont nous avons besoin pour écrire le mode d’emploi, mais d’un narrateur :

« Passer de la manœuvre (observée ou éprouvée) au mode d’emploi, c’est passer de la chronologie des opérations à la chronologie propre au récit »[^1]

La narration du mode d’emploi est la mise en situation de l’utilisateur.

On se demandera lors de sa rédaction comment établir un rapport sain avec le lecteur (de fait mis en position d’incapacité) et comment traduire clairement un processus, passer du texte au geste.

La conception de l’objet technique va former le mode d’emploi, va prescrire une narration. Faciliter son usage c’est anticiper un mode d’emploi plus accessible, c’est minimiser l’apprentissage nécessaire pour l’utilisation de l’objet technique.

Temps d’utilisation

« l’initiation, le perfectionnement, l’aide-mémoire, le dépannage sont autant d’usages différents du mode d’emploi »[^1]

Le mode d’emploi va pouvoir être consulté à plusieurs temps. Beaucoup d’utilisateurs s’estiment déjà formés et capables en autonomie. Ils ne vont donc pas le lire. D’autres ne vont le lire que pour dépannage, quand l’interface de la machine n’est plus capable de le guider seule. Les connaissances de l’utilisateur vont également varier au contact de l’objet technique référence. Pour répondre à cette diversité des usages, il nous fait un mode d’emploi modulaire. Une partie nommée dans le sommaire va être adaptée à un usage précis.

Dépannage

Dans la partie dédiée au dépannage on va paradoxalement faire appel aux connaissances techniques de l’utilisateur. En parallèle d’explications techniques exhaustives, on va laisser l’utilisateur pallier ses propres spécificités. On pourra également le renvoyer vers d’autres aides.

Lors du dépannage, tous les utilisateurs ne partent pas du même point, ou peuvent être interrompus dans leur démarche. Certains vont reprendre la démarche de mise en route depuis le début ne sachant pas à quel point de la chaîne temporelle du fonctionnement de l’appareil ils se trouvent. D’autres vont se situer et tenter de retrouver leur jalon dans les consignes de dépannage. Il est donc important de représenter cette chaîne temporelle et les démarches possibles depuis chacune.

Programmation de l’action

« le mode d’emploi se définit en particulier par le fait qu’il suppose un temps d’utilisation qui soit distinct du temps d’utilisation du dispositif lui-même »[^1]

Lorsqu’un utilisateur lit un mode d’emploi, on veut contrôler son action. S’il doit lire (pour comprendre) un certain nombre d’étapes avant d’agir, il faut le manipuler à cette fin.

« il faut même, dans certains styles didactiques, s’employer à le faire taire et à l’empêcher d’agir »[^1]

Le médiateur, narrateur du mode d’emploi (qui incarne le concepteur de l’objet technique), doit aussi s’effacer dans la transmission de sa compétence pour que l’utilisateur (qui devient capable) puisse se l’approprier.

« Le fantasme de maîtrise de la transmission, de modelage parfait et contrôlé de l’enfant ou de l’apprenti doit être toujours déçu sous peine de conduire éducateur et éduqué dans une relation pathologique »[^1]

Le médiateur, narrateur est aveugle, « ne sait rien à coup sûr des effets du processus de transmission ». Il ne peut juger du transfert de ses compétences. Ce transfert est l’équivalent d’une traduction (subjective, imparfaite) plus que d’une transposition (symétrique, aboutie). Les consignes laissées à l’utilisateur laissent de l’inadéquation et du malentendu[^1].

On fait confiance à la capacité de réinterprétation de l’utilisateur.

« Dire la technique, c’est passer d’une structuration technique du monde à une structuration linguistique, deux médiations qui ne sont jamais équivalentes »[^1]

Empathie

Un guidage absolu ne mène pas nécessairement à une bonne traduction, un bon « rapport didactique »[^1]. Notre vocabulaire de transmission est hérité d’autres personnes. On ne s’adresse pas par notre mode d’emploi à nos cousins, mais à un autre mode de compréhension. Il faut donc traduire largement.

« Assurer la transmission, c’est aussi anticiper la trahison probable de ces positions, le refus par l’utilisateur de les tenir »[^1]

Il faut anticiper une diversité sociale des usages, des littératies, une variabilité du temps dédié à la formation à l’outil et à son usage. On cherche à mettre en scène un usage. On est alors tenté de proposer une diversité des narrations, des expressions pour éviter un dispositif trop particulier. On peut évoquer des objets du quotidien pour donner un repère à un maximum de personnes.

« Il faut parvenir à produire un supposé utilisateur universel à travers cette réduction dans la mesure où chaque situation ne peut être traitée de façon particulière »[^1]

Verbalisation

On se demandera comment utiliser les bons « marqueurs linguistiques »[^1] pour instaurer une relation didactique, un rapport social unidirectionnel, sans interaction autre que le lecture. L’utilisateur prend quant à lui des décisions unilatérales.

Écrire « le moteur s’arrête quand le manche est placé à la verticale » revient à « annuler rhétoriquement le travail de l’utilisateur, qui reste pourtant indispensable »[^1].

Madeleine Akrich et Dominique Boullier[^1] dressent une liste de positions concepteur-utilisateur :

  • concepteur abstrait : « Mettre le coffret sous tension », avec un vocabulaire neutre et convenu dans les notices d’un domaine ;
  • concepteur accompagnant : « Mettons sous tension le coffret », on met en scène un rapport de direction du concepteur vers l’utilisateur, mais en le décrivant comme un geste à deux pour l’adoucir ;
  • concepteur directeur : « Mettez le coffret sous tension », pour une relation franche prescriptive et impérative ;
  • concepteur met en garde : on interdit des usages pour prévenir une erreur, voire un danger.

« Ces choix rhétoriques se combinent dans un même mode d’emploi, mais dans une proportion limitée : on construit un rapport social en l’inscrivant dans ces styles, et le modèle adopté contraint durablement l’exposition »[^1]

Ils mettent en évidence trois biais dans la rédaction des mode d’emploi :

  • Éviter les difficultés de la narration en utilisant un vocabulaire trop technique.
  • Parier sur la représentation logique par l’utilisateur de l’objet technique.
  • Narrer un espace de manœuvre, représenté par le langage, avec un lecteur engagé dans une panoplie de solutions.

Il ne faut pas confondre ce que l’on est capable d’en dire avec la réalité de l’objet technique. Ce sont deux mondes différents.

« Décrire la transmission des techniques, c’est toujours risquer de la ramener à la description des médiations que l’on a pour la décrire, à savoir le langage »[^1]

Distances

« ces relations [entre un objet et son utilisateur] ne peuvent pas être uniquement décrites sur le registre de la manipulation. Cela est particulièrement sensible dans le cas d’un certain nombre de technologies modernes pour lesquelles le lien entre le geste et le résultat escompté est assez faible, ce qui est dû à l’allongement de la chaîne des intermédiaires auxquels est déléguée la réalisation du programme d’action »[^1]

Les objets techniques numériques instaurent de fait une large distance avec leurs utilisateurs. Ils définissent un « scénario d’interaction »[^1] dans lequel l’utilisateur ne peut intervenir.

L’objet technique est lui-même pris dans un système, en interaction avec d’autres objets techniques. Il est dans un contrôle relatif d’un scénario dont il est un maillon, voire le déclencheur, mais que l’utilisateur n’a pas la capacité de contrôler à travers lui.

[[20200701083222]] dépendances logicielles

« au travers d’un même objet, plusieurs états ou ‹ postures › de l’utilisateur sont gérés simultanément »

[^1]: Madeleine Akrich et Dominique Boullier, Le mode d’emploi : genèse, forme et usage, 1996

Liens 3
  • médiation numérique
  • rapport aux objets techniques
  • dépendances logicielles
Rétroliens 1
  • documentation logicielle

modèle, pattern

id :20200526222401
dernière édition :
type :architecture
mots-clés :informatique, design
mode focus :

Un modèle (pattern) forme l’axe de symétrie entre sa composition et son instance. Créer un modèle est un geste d’ingénierie selon cette application :

« d’abord un prototype, concret ou conceptuel, qui servira de « modèle » à une construction réelle : le modèle est ainsi devenu, en outre, l’assemblage de concepts représentant de manière simplifiée une chose réelle déjà existante (objet, phénomène, etc.), en vue de la comprendre, d’en prédire le comportement. » Wikipédia

On conçoit une version simplifiée ce qui implique des biais nécessaires pour pouvoir extrapoler ce modèle et l'appliquer à différentes entités.

  • Le modèle représente une réalité, il ne constitue pas cette réalité ;
  • Un modèle n’a pas à être parfaitement ressemblant, mais à adapté à l'utilisation souhaitée : pour une même réalité il peut exister plusieurs modèles.
Rétroliens 2
  • abstraction
  • instance informatique

modélisation de l’architecture d’un logiciel

id :20200508111132
dernière édition :
type :modélisation
mots-clés :informatique, gestionprojet
mode focus :

[[20200708121357]] vue

Trop souvent on passe immédiatement au développement sans prendre le temps de préparer l’ouvrage tant il est facile et peu coûteux de rédiger des lignes de code, d’effacer, de recommencer. Démarrer un projet sans plan ne viendrait à l’idée d’aucun architecte. Le résultat est au mieux bancal.

Au cours du cycle de développement [[20210306102014]], les modélisations nous permettre de :

  • conceptualiser : imaginer l’urbanisation (dessin + dessein → design) ;
  • tester : l’intégrité et la sécurité du logiciel d’après le modèle.

Il est possible de modéliser l’ensemble des éléments de la structure d’un logiciel [[20210221144451]] et ainsi de décrire la circulation des informations et instruction en son sein. Une structure que l’on aurait des difficultés à représenter, à simplifier par le dessin, est potentiellement mal construite, pas assez décomposée en modules et cannaux.

Les langages de programmation graphique [[20201127165909]] comme l’UML (Unified Modeling Langage) (ou l’OOSE, Object Oriented Software Engineering, dont il dérive) aident à designer (« dessein + dessin ») un système d’information [[20210117094335]] sous ses aspects structurels et comportementaux à l’aide de diagrammes.

[[20210221142559]] UML

Liens 5
  • vue
  • cycle de développement logiciel
  • structure logicielle
  • programmation graphique
  • système d’information
Rétroliens 4
  • architecture logicielle
  • matérialité d’un programme
  • modularité logicielle
  • travailler la complexité

modularité logicielle

id :20210313113130
dernière édition :
type :architecture
mots-clés :programmation
mode focus :

Une cause d’échec dans le développement logiciel est l’instabilité du système, entraînant un trop de complexité [[20210313105330]]. Pour pallier cela, le plus simple est toujours le mieux, dans la mesure où la complexité est suffisante (et maîtrisée) pour encadrer le développement et la maintenance du programme [[20210304181626]], sans submerger l’équipe. Pour cela on recours à la programmation structurée, on modularise le programme. C’est une forme de design des programmes.

On trouve dans la modularisation du code source un mode

  • d’organisation des tâches,
  • de modélisation de l’architecture d’un logiciel [[20200508111132]],
  • d’écriture des programmes.

Le module

Un module est une unité simple, autosuffisante[^2] ; « un module peut être compris sans avoir besoin d’une vue d’ensemble du programme ». Il est extrait de la décomposition fonctionnelle du programme, fruit de cet assemblage, dans une logique combinatoire [[20210416144157]].

Pratique

Un code modulaire peut aussi être plus facilement travaillé en équipe. Il est plus facile de jalonné des modules autonomes tout en limitant le risque de conflits durant le versionnement [[20200707101208]].

« Ainsi, le programme n’est plus compris comme une suite plus ou moins complexe d’instructions mais comme un assemblage de différentes tâches, chaque tâche pouvant être isolée et recombinée à d’autres »[^2] (p.103)

Selon David Parnas (dans Expected Benefits of Modular Programming, cité par Samuel Goyet[^2]), il y a trois bénéfices à recourir à la programmation modulaire :

  • bénéfice managérial : les développeurs travaillent sur des modules séparés en autonomie, sans besoin de se coordonner sur l’exécution des tâches ;
  • bénéfice commercial : pour maintenance, on peut rapidement localiser et modifier une partie di programme ;
  • bénéfice cognitif : il est plus facile d’appréhender des modules plutôt qu’un système entier.

Concepts

Grady Booch publie Analyse et conception orientées objet et applications (1994) et « énonce les caractéristiques nécessaires d’un paradigme d'ingénierie logicielle permettant de construire des systèmes complexes »[^1] :

  • la décomposition : capacité de diviser le problème en sous-problèmes (composantes) plus simples (réductionnisme [[20200508093223]]), les sous-problèmes étant plus maniables, plus facilement testables (tests unitaires) et pouvant être traités d’une façon relativement autonome ;
  • l’abstraction [[20210412165919]] : capacité de définir un modèle simplifié du système qui met en évidence une partie de ses détails et propriétés, tout en éliminant les autres ; donc l’attention peut se concentrer sur les aspects saillants du problème, et se dispenser des détails moins importants ;
  • l’organisation : procédé consistant à identifier et à gérer les rapports entre les divers sous-problèmes (composantes) à résoudre. On peut ainsi établir des relations organisationnelles entre composantes : les grouper, décrire leurs relations.

On cherche à maîtriser les modules du logiciel par

  • la cohésion : qualité de la structuration des modules
  • le couplage, interfaçage : interconnexion des modules
  • la compréhensibilité
  • l’adaptabilité

[^1]: Adina Florea, Daniel Kayser, Stefan Pentiuc, Agents intelligents, 2002 [^2]: Samuel Goyet, De briques et de blocs. La fonction éditoriale des interfaces de programmation (API) web : entre science combinatoire et industrie du texte, 2017

Liens 7
  • complexité logicielle
  • maintenance logicielle
  • modélisation de l’architecture d’un logiciel
  • système combinatoire
  • versionnement Git
  • travailler la complexité
  • abstraction
Rétroliens 10
  • API, interface de programmation
  • complexité logicielle
  • cycle de développement logiciel
  • dépendances logicielles
  • empaqueter (bundle) le code
  • git flow, programmation agile
  • principes de programmation
  • programmation orientée objet
  • programmation orientée aspects
  • structure logicielle

mot

id :20201119203021
dernière édition :
type :inscription
mots-clés :linguisitique

Définition

Un mot est un « son ou groupe de sons articulés ou figurés graphiquement, constituant une unité porteuse de signification à laquelle est liée, dans une langue donnée, une représentation d'un être, d'un objet, d'un concept »^1. On peut fixer le mot sur un support et alors le séparer graphiquement des autres mots par une espace typographique.

Construction

![construction d’un mot](./images fiches/arbre mot.png)

Le schéma ci-dessus permet de saisir tout la complexité de la composition des mots, leur variété. Ainsi la langue (signée) est capable de soutenir un lexique complexe.

D’abord on distingue les monèmes qui peuvent varier en genre, nombre etc. ou qui ont vocation à l’exprimer (les morphèmes) et les autres (lexèmes).

La première catégorie est la plus foisonnante puisqu’elle regroupe les articles, les pronoms, les prépositions etc. (classe fermée), leur combinaison (formes contractées : « de le » devient « du »), les noms et les verbes (classe ouverte) sujets à la conjugaison, à l’accord en genre et en nombre, et leur combinaison (base dérivationnelle, « auto » et « route » fusionnent en « autoroute »). C’est une anatomie du mot dont on distingue les composants : le radical travail- porte un sens, complété par un suffixe (travaill-ons), un préfixe (re-travail) qui complètent ce sens.

La seconde catégorie traite des monèmes qui ne varient pas, soit les radicaux (utilisés couramment avec préfixe et suffixe) et les autonomisables, mots invariants et aboutis dans la variété de leur sens.

Ce schéma est une approche grammaticale de la langue,

namespace, espace de nom

id :20200622101202
dernière édition :
type :architecture
mots-clés :code
mode focus :

[[20200719212204]] espace

C'est un concept informatique spatial dans le sens où il peut couvrir un fichier, un répertoire ou un système plus large encore comme une ontologie, une taxonomie et autres lexiques limités. Dans cet espace on va inscrire des termes, des identifiants et leur affecter une valeur (chaîne de caractère, nombre, fonction, class, objet… page, fichier…) qui pourra être retrouvée en faisant appel à ce terme.

Autrement dit, c’est la rédaction d’un lexique limité appartenant à un certain contexte.

[[20200701214359]] structures de contrôle

Selon les langages, certains termes sont réservés et ne peuvent être utilisés par le programmeur.

C'est abstrait dans le sens où ces valeurs sont en générale inscrites en texte brute dans un fichier ou autre base de données. Elles ne sont utiles qu'une fois interprétées par des logiciels, souvent dans le cadre de la programmation. L'informatique ne tolérant pas les ambiguïtés, chacun de ces terme est unique, bien que les logiciels peuvent accorder une certaine souplesse, par exemple quant à la casse.

[[20200519215026]] notions d'algorithmique

Liens 3
  • espace
  • structures de contrôle
  • notions d’algorithmique
Rétroliens 6
  • base de données
  • hypertexte
  • la portée des variables
  • structures de contrôle
  • UML
  • URI, uniform resource locator

niveaux des (ré)utilisateur logiciel

id :20210220100014
dernière édition :
type :processus
mots-clés :code
mode focus :

[[20201002103853]] DigComp, évaluation des compétences numériques

La typologie d’utilisateur suivante débute avec des utilisateurs amenés à consulter la documentation à différents niveaux d’abstraction. Ils vont au-delà de la simple utilisation du logiciel (suggérée par son interface) pour entamer une démarche de compréhension approfondie.

En effet, de nombreux logiciels ne proposent plus d’interface [[20200708132301]] passé un certain niveau d’utilisation. C’est le cas des logiciels open source dont l’interface repose quasi-exclusivement sur un terminal, mais aussi de certains logiciels professionnels supportant les scripts [[20210408103043]].

La programmation est plus ou moins complexe et nécessite un certain niveau de compétence pour faire face à l’abstraction. Pour chaque niveau on liste des attentes pouvant être satisfaites par la documentation. Un utilisateur de niveau 4 pourra avoir les attentes des niveaux qui le précède.

  1. utilisateurs « non avertis », sans formation à l’informatique
    • trouver les consignes d’installation
    • comprendre le fonctionnement du logiciel, qui n’est pas un induit par son interface
    • comprendre la démarche et la genèse du logiciel
    • trouver un accès au support (déclarer des dysfonctionnements ou proposer des modifications)
  2. utilisateurs « avertis », avec des notions sur la donnée et sa circulation
    • comprendre l’utilisation et l’espace des données
    • comparaison avec d’autres logiciels
    • comprendre le fonctionnement externe du logiciel, les technologies avec lesquelles il est en lien
  3. utilisateurs « avancés », avec des notions de programmation
    • comprendre le fonctionnement interne du logiciel, l’arborescence, les liaisons entre les structures de contrôle
    • comprendre comment modifier certaines parties du logiciel, les plus détaillées par la documentation
    • comprendre comment utiliser les outils de développement
  4. utilisateurs « experts », avec des notions de développement
    • comprendre toute la complexité du logiciel pour le réécrire, faire de la résolution de bug, du refactoring
    • comprendre comment modifier la documentation dans son architecture

Flore Barcellini propose[^1] (p.18) une autre typologie, plus hiérarchique. Elle permet de répartie les rôles de chacun au sein du projet en fonction de ses compétences :

  • utilisateurs (actifs) : remonter les dysfonctionnements, proposer des améliorations ;
  • développeurs :
    • contributeurs : ils ajoutent et maintiennent les composants du logiciel ;
    • core developers : ils ont une vue d’ensemble sur le projet, s’assurent de la qualité du code et de l’envrionnement du logiciel [[20201224152456]] en plus d’y contribuer.

[^1]: Flore Barcellini, Conception de l’artefact, conception du collectif, 2008

Liens 4
  • DigComp, évaluation des compétences numériques
  • interface
  • script
  • environnement de développement
Rétroliens 1
  • documentation logicielle

niveaux langages de programmation

id :20200718172257
dernière édition :
type :programmation
mots-clés :informatique
mode focus :

L’informatique fonctionne grâce à des circuits logiques électriques, des portes (transistors) fermées ou ouvertes [[20210121192437]], soit respectivement 0 et 1 (binaire). Lorsque l’on développe un logiciel on ne saisit pas ces séquences du domaine du « langage machine » (par opposition aux humains).

[[20200906135907]] code source

Il y a plusieurs paramètres de l’ordinateur à gérer pendant l’exécution d’un programme comme la mémoire (les registres), l’adressage et les instructions machines (opérations élémentaires).

On différencie les langages de programmation de haut niveau et de bas niveau selon leur abstraction [[20210412165919]], leur détachement des conditions matérielles et fonctionnelles (binaire et portes logiques) de la machine pour vernir contrôler sur d’autres logiciels chargés de traduire leurs instructions vers les couches plus bases (du haut niveau vers le bas niveau, en passant par différentes strates).

[[20210115090700]] architexte

Haut niveau

Les langages de haut niveau sont souvent appelés « langages de programmation », non pas qu’ils ont le monopole de la programmation, mais ils permettent d’appréhender le fonctionnement complexe d’un système informatique pour un humain avec des chaînes alphanumériques : ils peuvent intégrer des mots usuels des langues naturelles, les chiffres, la ponctuation et des symboles mathématiques.

C’est une « textualisation de l’activité computationnelle »[^1], une abstraction du fonctionnement (par le binaire) calculatoire de la machine. Cette simplification de l’organisation des processus faciliter la lecture/écriture des programmes pour les humains, mais empêche aussi les usagers d’exploiter totalement les possibles de la machine. Elle « déborde »[^1] toujours de ce qui peut potentiellement écrit par un humain.

Il est nécessaire de les compiler en langage machine ou de les interpréter avec un logiciel pour les exécuter. Afin de gagner du temps en programmation, on accepte d’en perdre en exécution.

[[20200718182015]] langages compilés ou interprétés

Exemples : C, C++, PHP, JavaScript

Bas niveau

Les langages d’assemblage permettent de manipuler explicitement les registres et d’adresser des instructions au processeur (instructions machines). Ce sont des langages très techniques, très concrets.

Finalement, les langages les plus concrets (qui agissent sur le système) sont ceux qui paraissent les plus abstraits (dans l’écriture) tant les instructions sont précises, normées et peu naturelles.

[^1]: Cléo Collomb, Faire compter les machines, 2017

Liens 5
  • matérialité d’un programme
  • code source
  • abstraction
  • architexte
  • langages compilés ou interprétés
Rétroliens 9
  • architexte
  • code source
  • transpiler ou compiler du code
  • langages de programmation
  • matérialité d’un programme
  • programmation graphique
  • programmation lettrée
  • software/hardware
  • structures de contrôle

notion de paradigme

id :20200623110109
dernière édition :
type :processus
mots-clés :methode
mode focus :

Dans un modèle

Thomas Samuel Kuhn écrit en 1962 La structure des révolutions scientifiques le terme paradigme désormais couramment employé pour désigner un modèle quelconque. Ce mot vient du grac ancien paradeïgma qui signifie « exemple », « modèle ».

« Pour Kuhn, il s'agit des principes et méthodes partagés par une communauté scientifique »[^1]. Ainsi, il rompt avec une partie de l'histoire des sciences qui voudrait une « évolution continue par accumulation du savoir selon la méthode scientifique grâce à des découvertes individuelles »[^1] pour admettre que des groupes (« maîtres, contemporains et successeurs »[^1]) se forment et influencent la recherche plutôt que des individus. C'est ce que ce Kuhn appelle « science normale » et c'est elle qui « prépare l'étudiant à devenir membre d'une communauté scientifique »[^2]

« L'utilité d'un paradigme est de renseigner les scientifiques sur les entités que la nature contient ou ne contient pas et sur la façon dont elles se comportent. […] En apprenant un paradigme, l'homme de science acquiert à la fois une théorie, des méthodes et des critères de jugement, généralement en un mélange inextricable »[^2]

Ainsi Kuhn réfute « l’opinion positiviste classique selon laquelle l’observation est l’arbitre neutre entre les théories concurrentes » : dans une certaine mesure, les scientifiques appliquant différents paradigmes ne perçoivent pas le monde de la même manière.

Un paradigme « détermine la légitimité des problèmes et aussi des solutions proposées » soit « l'articulation des phénomènes et théories que le paradigme fournit déjà »[^2]

Par « inextricable » il faut comprendre « Qui ne peut être démêlé ; dont on ne peut reconnaître les éléments »[^3]. Dans ce nuage d'idées, le scientifique effectue un « travail d'ajustement, de mise au point et de précision du paradigme », ce qui « permet la transmission et le perfectionnement du savoir. Mais, cela a pour inconvénient une dogmatisation »[^1]. Patrick Juignet souligne l'aspect « cumulatif-intégratif » de la science, essentiel pour les jeunes chercheurs qui n'ont pas à ré-inventer le travail de leurs pairs, mais avec le risque de rester enfermé dans une même arborescence de connaissances et de tourner en rond, non pas pour un individu, mais pour tout un groupe de recherche.

Révolution

Les paradigmes sont inconciliables et passer de l'un à l'autre est un long processus discontinu, difficile ; une crise. Ainsi la révolution, le passage d'un paradigme à l'autre est inévitable et « bien que le monde ne change pas après un changement de paradigme, l'homme de science travaille désormais dans un monde différent »[^2].

Échos

Pour les développeurs

Remplace « scientifique » par « développeur » et on a exactement l'origine des paradigmes de programmation.

[[20200530191442]] paradigmes de programmation

Pour les techniciens

Patrice Flichy écrit sur le « paradigme technique » qui « indique les directions de recherche à entreprendre et celles qui au contraire doivent être abandonnées »

[^1]: Patrick Juignet, Les paradigmes scientifiques selon Thomas Kuhn, 2015 [^2]: Thomas Samuel Kuhn, La structure des révolutions scientifiques, 1962 [^3]: Larousse, inextricable

Liens 1
  • paradigmes de programmation
Rétroliens 3
  • les versions historiques du web
  • memex de Vannevar Bush
  • paradigmes de programmation

notions d’algorithmique

id :20200519215026
dernière édition :
type :programmation
mots-clés :code
mode focus :

Un algorithme est un énoncé, une liste d’instructions permettant de résoudre un problème de manière systématique.

« L’algorithme est dit correct si la solution est juste. Son efficacité est mesurée par la vitesse de résolution, ainsi que par les ressources utilisées par les machines pour l’effectuer »[^1]

Typologie de problèmes

Le problème « Trouver le plus court chemin de l'IUT à la place de la Victoire à Bordeaux » n'est pas intéressant d'un point de vue algorithmique car il motive une réponse unique. « Trouver le chemin le plus court entre deux adresses a et b à ville » offre en revanche de nombreuses possibilités de réponse (extrant, output ou sortie) en même temps que ses trois paramètres (intrant, input ou entrée) qui limitent son champ : a, b et ville. Aussi, la première proposition est une instance de la seconde.

[[20200707113753]] instance informatique

Les deux propositions peuvent être traitées algorithmiquement, mais programmer une fonction [[20201224102746]] telle que décrite dans la seconde permet de résoudre une gamme entière de problèmes.

Ambiguïté

La notion d’algorithme ne se limite pas à l'informatique mais constitue le principal matériau de la programmation informatique. En effet, ils permettent de prévoir un enchaînement d'instructions souple et fiable. Pour satisfaire au mieux ce besoin ils se construisent avec des langages non ambigus, formels.

[[20200906135907]] code source

[^1]: Anthony Masure, Le design des programmes, 2014

Liens 3
  • instance informatique
  • fonctions
  • code source
Rétroliens 5
  • la donnée
  • langages de programmation
  • namespace, espace de nom
  • programme et programmation
  • script

numérique

id :20200905201903
dernière édition :
type :undefined
mots-clés :scienceinformation
mode focus :

Selon Milad Doueihi la culture numérique est « faite de modes de communication et d’échange d’informations qui déplacent, redéfinissent et remodèlent le savoir dans des formes et des formats nouveaux, et de méthodes pour l’acquérir et le transmettre ».[^2] (p.37)

Selon Bruno Bachimont[^1], le numérique pourrait être considéré comme :

  • objet d’étude en tant que tel ;
  • outil : « ensemble de solutions techniques » utilisées pour faire face à différentes difficultés ;
  • milieu : « ce à travers quoi on se rapporte à notre environnement ».

Aussi, le numérique serait constitué de deux éléments :

  • codification : ensemble d’éléments pouvant être distingués et dont les unités n’ont pas de sens propre, pas plus que l’ensemble qu’elle forment. Leur sens est arbitraire : il n’est pas dans leur essence et aurait pu être autre.
  • manipulation :

[[20200801210302]] espace numérique

[^1]: Bruno Bachimont, Rhétorique de l’intelligibilité, vers des humanités du numérique, 2020 [^2]: Milad Doueihi, La grande conversion numérique, 2008

Liens 1
  • espace numérique

numérisation

id :20201002212257
dernière édition :
type :processus
mots-clés :scienceinformation
mode focus :

[[20200905210104]] grammatisation

L’enregistrement numérique (« échantillonnage ») est discontinu : « on ne considère pas l’ensemble du son, mais seulement les changements qui se produisent à des intervalles déterminés »[^1]. C’est un concept mathématique : la discrétisation [[20210405121526]]. C’est ce processus d’échantillonnage qui permet de transformer le continu du réel en une série de chiffres. On va tenter de diminuer et cacher au mieux cette imperfection intrinsèque, mais bien nécessaire pour la manipulation calculatoire par une machine computationnelle.

Codification

[[20200906135907]] code source

Avec le binaire il est possible d’échantillonner un contenu analogique, de le retranscrire en binaire, sous forme de circuit électronique (ouvert, fermé), sur la surface d’un CD (creux, plat) etc.. Le même échantillonnage pourra être gravé sur différents supports. Il sera re-calculer pour chaque affichage.

[^1]: Michael E.S, Marcello V.R., Pratiques de l’édition numérique, 2014

Liens 3
  • grammatisation
  • discret / continu
  • code source
Rétroliens 1
  • opposition numérique/analogique

objet informatique

id :20210130110228
dernière édition :
type :inscription
mots-clés :informatique, code
mode focus :

[[20200522122316]] programmation orientée objet [[20200707113753]] instance informatique

Un objet est un conteneur possédant différents attributs dont il hérite. Il est modèle d’une réalité propre à un espace numérique [[20200801210302]] donné. Ainsi, sa nature est contrôlée et il peut changer d’état à volonté dans ce cadre.

[[20200923152146]] métadonnées

Liens 4
  • programmation orientée objet
  • instance informatique
  • espace numérique
  • métadonnées
Rétroliens 8
  • la donnée
  • feuille de style
  • organisation d’un système d’information
  • programmation orientée agent
  • programmation orientée objet
  • sérialisation des données
  • structures de contrôle
  • triplet RDF

ontologie

id :20200809102622
dernière édition :
type :architecture
mots-clés :scienceinformation
mode focus :

C’est à l’origine une pratique philosophique antique qui consiste à traiter les êtres dans leur généralité (« Qu'est-ce que l'être ? ») et « les chercheurs dans le domaine de l'intelligence artificielle se sont appropriés le terme pour désigner une organisation logique et formelle d'un domaine de connaissance pour permettre à une machine d’en manipuler les différents objets, leurs caractéristiques et leurs logiques »[^3]. Une ontologie définit le vocabulaire dans un domaine donné pour que les agents qu’il intègre puissent se comprendre.

C’est en vue d’une opérationnalisation[^2] que l’on va étudier un champ de connaissance et le structurer.

Représentation

Une ontologie est un « ensemble structuré des termes et concepts représentant le sens d’un champ d’informations »[^1]. Ce sont des constructions linguistiques ; les mots forment des nœuds et leur sémantique des liens.

Une ontologie permet de décrire :

  • des classes, types d'entité du domaine décrit ;
  • des propriétés, différents types de relations qui caractérisent une classe ;
  • une logique, c'est-à-dire des règles ou des comportements associés à une classe et/ou à une propriété ;
  • des instances, c'est-à-dire des unités héritant des propriétés de classes.

Une ontologie prend naturellement la forme de graphe hiérarchique, d’arborescence (« arbre »). Cette forme influe sur son interprétation, mais ne programme pas l’ontologie.

[[20200625172823]] théorie des graphes

Programmation

« Les langages formels possèdent donc la remarquable propriété de spécifier à la fois le comportement d’un dispositif et de prescrire une interprétation »[^2]

Les ontologies apparaissent par exemple dans les fichiers XML (et ses variantes) comme une « signature »[^2], d’une balise dont le contenu va alors prendre un sens. Ci-dessous, cette balise définis le titre du document tel que l’indique la balise dc:title tirée de l’ontologie interprétatives[^2] Dublin Core.

<dc:title>Dublin Core™ in XML</dc:title>

[^1]: Wikipédia, Ontologie (informatique) [^2]: Bruno Bachimont, Ingénierie des connaissances et des contenus, 2007 [^3]: Gautier Poupeau, Les technologies du Web sémantique, 2011