Journalisme et code : 10 grands principes de programmation expliqués

Now Reading
Journalisme et code : 10 grands principes de programmation expliqués

/ Ce billet est une traduction autorisée par Paul Bradshaw de son billet « Coding for journalists: 10 programming concepts it helps to understand« .
Ce travail fait suite à un commentaire de Béatrice sur ce post de Pierre Tran dans la communauté des journalistes.
Vous pouvez remercier François Jacques pour la traduction des 2 premiers tiers, et Ingrid Pigueron pour le reste de l’article, la seconde passe de corrections et la relecture. À noter que le boulot d’Ingrid étant la traduction et le secrétariat de rédaction, c’est une chance de l’avoir dans la communauté pour ce type de post (et d’autres trucs aussi hein ^^).

Voilou, c’est fini pour l’introduction, bonne lecture, et n’hésitez pas à utiliser clearly pour l’imprimer ou le conserver propre, c’est le genre de billets sur lequel on revient 🙂


Si vous envisagez de vous mettre à la programmation, il y a de fortes chances que vous butiez sur une série de termes techniques, un jargon qui peut être particulièrement rébarbatif, notamment dans les tutoriels, dont les auteurs ont tendance à oublier que vous êtes inexpérimentés en programmation.
Les sections qui suivent décrivent et indiquent dix concepts que vous êtes susceptible de – non, que vous allez – rencontrer.

1. Variables

Les variables s’apparentent à des boîtes, qui peuvent contenir plusieurs éléments à différents moments. Photo : Wolfgang Lonien

Les variables s’apparentent à des boîtes qui contiennent un élément que l’on peut sortir (= afficher) à différents moments. Photo : Wolfgang Lonien

La variable est l’un des éléments fondamentaux de la programmation. En quelques mots, une variable permet de faire référence à un élément afin de pouvoir l’utiliser dans une ligne de code. Voici quelques exemples :

  • Vous pouvez créer une variable pour stocker l’âge d’une personne et l’appeler « âge ».
  • Vous pouvez créer une variable pour stocker le nom d’un utilisateur et l’appeler « utilisateur ».
  • Vous pouvez créer une variable pour compter des événements et l’appeler « compteur ».
  • Vous pouvez créer une variable pour stocker la position d’un élément et l’appeler « index ».

Les variables peuvent être modifiées, c’est là que réside leur vraie puissance.
Un nom d’utilisateur peut être différent chaque fois qu’un fragment de code est exécuté.
L’âge peut être ajouté à un moment spécifique de l’année.
La valeur d’un compteur peut être incrémentée d’une unité à chaque nouvel événement. Il est possible d’ajouter ou de supprimer des éléments à une liste d’éléments.

Les variables peuvent également être combinées : un âge (une variable) peut être calculé en fonction d’une date de naissance (une autre variable).

2. Chaînes, entiers et autre jargon pour décrire les types de données

Dans l’univers du code, une chaîne est une série de caractères. Image by Kate Ter Haar.

Dans l’univers du code, une chaîne est une série de caractères. Image by Kate Ter Haar.

Il existe différents types de variable qui impactent ce que vous pouvez en faire. Les types de variable les plus fréquents sont les suivants :

  • Nombres : entiers ou flottants (avec des décimales)
  • Texte : généralement appelé chaînes (« string » dans le code) et indiqué entre des guillemets droits, par exemple : « 17 août ».
  • Listes ou séries (voir l’explication ci-après) : normalement indiquées entre des crochets avec les valeurs séparées par des virgules, par exemple : [« Paris », « Bruxelles », « Montréal »]
  • Dictionnaires (ou « dict ») (voir l’explication ci-dessous) : normalement indiqués par des parenthèses, deux-points et des virgules, par exemple : {« Age »: 23, « Nom »: « Jeanne »}

C’est important, car des problèmes peuvent survenir lorsque le code détecte des informations dans un format incorrect. Par exemple, vous ne pouvez pas effectuer de calcul avec des chaînes (logique, une chaine est du texte) ou, parfois, combiner du texte avec des chiffres.
En pareils cas, la programmation implique souvent d’indiquer au code de considérer « 7 » comme un nombre et non comme une chaîne, voire de convertir « sept » dans son équivalent numérique. Les ordinateurs excellent pour effectuer des tâches de façon répétitive, mais ils ont besoin d’instructions explicites.

3. Classes, identificateurs et sélecteurs

Les sélecteurs comme .nav permettent de « capturer » ou de contrôler les éléments d’une page web. Photo : Peter Fletcher

Les sélecteurs comme .nav permettent de « capturer » ou de contrôler les éléments d’une page web. Photo : Peter Fletcher

Le code HTML utilise class= et id= pour identifier des types de contenus spécifiques et permettre de les manipuler avec un autre code. Par exemple, le code d’une page web peut se présenter comme suit :

<div class="article">
<ul class="nav">
<h2 class="subhead">
<div id="footer">

Il existe au moins trois façons de rendre ces classes et ces identificateurs utiles :

  • Leur style peut être défini grâce à un fichier CSS.
  • Ils peuvent être modifiés avec Javascript ou d’autres langages.
  • Ils peuvent être identifiés et récupérés (on parle alors de « scraping ») avec un langage comme Python, Ruby ou PHP.

Le plus souvent, ces possibilités reposent sur des sélecteurs. Ces sélecteurs indiquent une classe par un point et un identificateur par un hashtag, par exemple :

  • .article (pour class= »article »)
  • #footer (pour id= »footer »)
  • Si ces symboles s’affichent ou si vous lisez des documents sur les classes et les identificateurs (« id »), vous savez désormais de quoi il s’agit.

    4. Fonctions et méthodes

    Les fonctions et les méthodes sont comme des titres de recettes. Il suffit simplement d’ajouter les ingrédients. Photo : Melissa Wiese.

    Les fonctions et les méthodes sont comme des titres de recettes. Il suffit simplement d’ajouter les ingrédients. Photo : Melissa Wiese.


    En général, les fonctions et les méthodes sont des recettes comportant un seul mot et permettant d’exécuter des actions dont l’explication nécessiterait autrement de nombreuses lignes de code.

    Voici deux exemples :

    • len, dans certains langages, signifie « indiquer la longueur de l’élément spécifié » ;
    • split, dans certains langages, signifie « fractionner cet élément en un ou plusieurs éléments en fonction d’un critère spécifié ».

    À cet effet, la fonction a besoin d’un ingrédient appelé argument ou paramètre (voir l’explication ci-dessous), et la méthode est associée à un ingrédient appelé objet (voir, là aussi, l’explication ci-dessous).

    La distinction entre les méthodes et les fonctions est subtile et ne mérite pas qu’on s’y attarde ici car leur utilisation diffère d’un langage à l’autre.
    Cependant, elles se distinguent par un critère essentiel, la possibilité de définir vos propres fonctions dans votre code, ce qui s’avère utile pour les actions que vous souhaitez exécuter plusieurs fois.

    D’autres fonctions sont déjà utilisées initialement dans le langage de programmation. Voici, par exemple, une liste des fonctions intégrées de Python. JavaScript dispose également de ces fonctions et de celles-ci. Pour une introduction complète au javascript, rendez-vous sur udemy.

    Un troisième type de fonction ou de méthode n’est disponible que si vous utilisez la bibliothèque appropriée (voir ci-dessous).

    5. Arguments ou paramètres

    Les arguments sont les ingrédients de vos recettes. Photo : Anne.

    Les arguments sont les ingrédients de vos recettes. Photo : Anne.

    Les fonctions et les méthodes (voir l’explication ci-dessus) ont besoin d’ingrédients, appelés argument ou paramètre, pour fonctionner.
    Les arguments ou les paramètres s’affichent entre parenthèses, après le nom de la fonction, par exemple :
    len(« Paul »)
    len(myname)

    La fonction len, par exemple, indique la longueur d’un argument indiqué entre parenthèses.
    Dans le premier exemple, il s’agit d’une chaîne (indiquée par des guillemets) : « Paul ». Dans ce cas, le résultat serait 4 (4 caractères).

    En revanche, si la variable est une liste, le résultat correspondra au nombre d’éléments dans cette liste et non au nombre de caractères. Pour d’autres types de données, cela ne fonctionnera peut-être pas du tout, et un message d’erreur sera généré.

    La documentation d’une fonction ou d’une méthode devrait vous renseigner davantage sur leur action et sur les arguments nécessaires. En règle générale, ces arguments sont appelés paramètres, mais ces deux mots désignent la même réalité :

      l’un dans un sens général (« Cette fonction comporte un paramètre : un objet à mesurer »),
      l’autre dans un sens spécifique (« En utilisant l’argument « Paul » »).

    Certaines fonctions et méthodes utilisent plusieurs paramètres, séparés par une virgule. Certains paramètres sont facultatifs. Parfois, les parenthèses restent vides, par exemple : ready(). Là encore, ce point sera décrit en détail dans la documentation.

    Lorsque vous apprenez à programmer, il peut être utile de chercher les mots « documentation » et « fonction » ou « méthode » avec l’action que vous souhaitez effectuer ou le nom de la fonction/méthode qui vous pose problème.

    Voici un exemple de fonction utilisé dans le calendrier des événements autour du journalisme et des médias

    function generateCalendar (eventData) {
      monthNames = ["Jan", "Fev", "Mars", "Avril", "Mai", "Juin", "Juil", "Aout", "Sept", "Oct", "Nov", "Dec"]
      weekdays   = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"]
      today      = new Date()
      months = []
      generateAllTheMonths(eventData)
    
      $.each(eventData, function(i, event){
        appendEvent(event)
      })
    

    Comment on le traduit en langage courant ?
    . La fonction est destinée à créer le calendrier en allant chercher l’argument eventData
    . Les noms des mois seront affichés et écrits comme indiqués entre guillemets droits
    . Les noms des semaines seront affichés et écrits comme indiqués entre guillemets droits
    . Pour le jour qui correspond à aujourd’hui, on ira chercher l’argument contenu dans le paramètre Date (en l’occurrence ici, il s’agira d’afficher une feuille de style particulière – un petit rond bleu en fond)
    . on génère (=affiche ici) tous les mois qui ont des données correspondant à l’argument eventData. Cela explique le non affichage des mois pour lesquels nous n’avons pas renseigné d’événements.
    . pour chaque événement, on crée une boucle qui…
    . … va chercher les infos de l’argument event, argument qui est décrit plus bas dans le code.
    . et on termine toujours les fonctions par une accolade

    6. Bibliothèques

    Les bibliothèques s’apparentent à des livres de recettes. Différentes bibliothèques résolvent différents problèmes, tout comme vous possédez des livres avec des recettes de cocktails, de gâteaux, etc. Photo : Vintage Sailor

    Les bibliothèques s’apparentent à des livres de recettes. Différentes bibliothèques résolvent différents problèmes, tout comme vous possédez des livres avec des recettes de cocktails, de gâteaux, etc. Photo : Vintage Sailor

    Les bibliothèques sont des collections d’autres fonctions et méthodes, qui permettent d’aller plus loin qu’avec les bases du langage de programmation. En d’autres termes, elles permettent d’utiliser le code développé par d’autres personnes : c’est l’un des aspects les plus puissants de la programmation.

    Pensez à un problème que vous pourriez rencontrer. Il est probable que quelqu’un a créé une bibliothèque apportant une solution : dessin d’une carte, extraction d’informations à partir d’une série de pages web (« scraping »), conversion d’un document, représentation de données sous forme de graphique ou dans des tables interactives, création d’animations ou d’effets.

    Ainsi, il est également utile d’effectuer une recherche en indiquant votre problème, le langage que vous utilisez ou apprenez, ainsi que le mot « bibliothèque ». Par exemple : « cartographie javascript bibliothèque ».

    Ajout Cédric.
    github est le lieu magique pour trouver des bibliothèques. Sur github, la terminologie est un peu différente, mais vous pouvez considérez que ce qu’on appelle dans ce billet une bibliothèque sera un « repository » sur github. Pour récupérer ce repo, sans compte github vous pouvez télécharger le zip qui contient tous les fichiers. Avec un compte, vous pouvez « forker » le repo : les fichiers sont alors collés dans votre compte github. Ensuite, vous pouvez les « cloner » sur votre ordinateur afin de travailler dessus en local.
    Github mérite largement un autre post – un jour on s’y mettra 🙂

    7. Listes/séries et dictionnaires/dicts

    Les listes sont comme des files de personnes : vous pouvez accéder aux éléments en fonction de leur position. Photo : Sean Drellinger.

    Les listes sont comme des files de personnes : vous pouvez accéder aux éléments en fonction de leur position. Photo : Sean Drellinger.

    Les listes et les dictionnaires sont des types d’informations spécifiques, qui peuvent s’avérer extrêmement utiles en programmation, mais qui peuvent également être source de confusion pour ceux qui n’ont pas l’habitude de les utiliser.

    La terminologie varie : dans certains langages de programmation, les listes sont appelées séries et les dictionnaires, dicts. Cependant, je préfère « listes » et « dictionnaires », car ces termes sont plus compréhensibles.

    Très simplement, une liste ou une série, c’est une liste d’éléments, par exemple :
    [« Asie », « Afrique », « Europe »]
    Le contenu d’une liste peut correspondre à un ou plusieurs des types de données abordés précédemment.
    Les listes sont extrêmement utiles dans deux cas :
    1. stockage d’informations (par exemple, dans le « scraping » ou pour les réponses d’un utilisateur à un questionnaire) ;
    2. répétition d’actions (par exemple, pour représenter chaque nombre ou lieu d’une liste sur une courbe ou une carte). Reportez-vous à la section sur les boucles ci-dessous.

    Un dictionnaire contient des étiquettes (les entrées) et des valeurs (les définitions). Photo : Tanakawho

    Un dictionnaire contient des étiquettes (les entrées) et des valeurs (les définitions). Photo : Tanakawho

    Les dictionnaires sont similaires en ce sens qu’ils sont également structurés sous forme de liste, avec une différence essentielle : il existe une liste de paires.
    Chaque paire possède une étiquette (appelée clé) et une valeur, connectées par deux-points, par exemple :
    « Age »: 24
    Le mot « dictionnaire » a son importance. Envisagez-le comme une collection de mots auxquels sont associées des définitions. Vous pouvez également l’imaginer comme des titres de colonnes (âge, nom, lieu) et des valeurs (18, Sarah, Genève).

    Chaque paire est ensuite séparée par des virgules et le tout est placé dans une liste, délimitée par des accolades, par exemple :
    {« Age »: 23, « Nom »: « Jeanne »}
    Cela est particulièrement utile pour stocker des données possédant plusieurs étiquettes. Par exemple, vous pouvez stocker une liste d’âges sous forme de liste simple. Mais si vous souhaitez connecter chaque âge à un nom ou à un lieu, vous aurez besoin d’un dictionnaire.
    C’est précisément la logique sous-jacente du format de données JSON, utilisé par différentes API (voir ci-dessous).
    Lecture : Data for journalists: JSON for beginners

    Comme les listes, les dictionnaires peuvent contenir tous les types de données sous chaque clé, y compris des listes et des dictionnaires (c’est-à-dire un dictionnaire peut contenir un dictionnaire).

    8. Boucles : for, each, while

    giphy

    Comme indiqué précédemment, l’un des aspects appréciables concernant les listes est qu’elles permettent de répéter des actions de nombreuses fois, ce qui constitue l’une des principales utilisations de la programmation.
    À cet effet, vous utilisez normalement une boucle (« loop »). La boucle commence au premier élément d’une liste, lui applique une action, puis recommence de même pour le deuxième élément, et ainsi de suite, jusqu’au dernier élément.

    Voici quelques exemples :

    • Utilisation de chaque (boucle « each ») lieu d’une liste et positionnement sur une carte
    • Utilisation de chaque nombre d’une liste et adaptation de la taille des barres d’un graphique à barres afin qu’elles correspondent à ces nombres
    • Utilisation de chaque élément d’une liste (par exemple, des codes d’identification) et ajout à une URL partielle pour créer l’URL complète
    • Utilisation de chaque URL d’une liste et exécution de code pour en extraire des informations
    • Exécution d’une animation lorsque (boucle « while ») le score d’une personne est inférieur ou supérieur à une valeur donnée

    La façon dont une boucle crée simultanément une variable et le nombre de fois que la valeur de cette variable change lors de l’exécution de la boucle peuvent être source de confusion. Par exemple :
    numberlist = [1,2,3,4]
    for num in numberlist:
    print num

    Dans ce code, « num » est créé sous forme de nouvelle variable devant contenir une valeur lors de l’exécution de la liste. L’élément num prend successivement les valeurs 1, 2, 3 et 4 avant que la boucle se termine (toutes les valeurs de la liste sont utilisées).

    9. Objets

    Les briques Lego ne peuvent être combinées qu’avec d’autres briques Lego. Elles ne fonctionnent pas avec les briques Duplo. Vous saisissez ? Photo : Cross-stitch Ninja

    Les briques Lego ne peuvent être combinées qu’avec d’autres briques Lego. Elles ne fonctionnent pas avec les briques Duplo. Vous saisissez ? Photo : Cross-stitch Ninja

    Le mot « objet » (« object » dans le code) est employé régulièrement dans les tutoriels sans référence à ce qu’il signifie. Sans trop rentrer dans le détail, quand on parle d’« objet » en programmation, il s’agit généralement d’un élément qui peut être manipulé ou utilisé d’une certaine façon dans le code, comme une variable contenant un âge, un nom, une liste, etc.

    Lorsque le mot « objet » est suivi d’un autre mot, la frustration est à son comble. Par exemple, vous pouvez entendre parler d’un « objet jQuery » ou d’un « objet lxml ».
    Quand les objets sont décrits ainsi, il peuvent généralement être manipulés ou utilisés avec du code provenant de cette bibliothèque :
    Les méthodes jQuery peuvent alors être utilisées sur un « objet jQuery » et les méthodes lxml sur un « objet lxml ». Comment deviennent-ils des objets de ce type ? Dans le code, il y a normalement une variable qui les transforme, à un moment donné, en « objet jQuery », « objet lxml », etc. (pour vous faire une idée plus claire, effectuez des recherches sur ce sujet ou reportez-vous à des tutoriels ou aux commentaires associés à du code).

    10. API

    L’utilisation d’une API permet de poser de nombreuses questions et d’obtenir des données en retour. Photo : Maria Perongini

    L’utilisation d’une API permet de poser de nombreuses questions et d’obtenir des données en retour. Photo : Maria Perongini

    Une API est une interface de programmation d’application (d’après l’acronyme anglais Application Programming Interface). Il s’agit en fait d’une manière de poser des questions et d’obtenir des réponses.
    Les API sont particulièrement utiles en programmation, car elles permettent de poser un grand nombre de questions et d’obtenir tout autant de réponses (généralement sous forme de données structurées), souvent liées à des données directes, sans intermédiaire.

    La programmation se focalise souvent sur la présentation des informations qui en résultent : par exemple, sur une carte, un graphique ou une chronologie.
    Les API sont à la base d’un grand nombre d’applications. Les applications Twitter, par exemple, permettent d’obtenir des réponses à la question « Que tweetent les personnes que je suis ? » à partir de l’API Twitter. Les données qui en résultent sont présentées de différentes façons, selon les applications et leur code spécifique, mais les données sous-jacentes (les tweets) sont les mêmes.

    Les API généralement utiles d’un point de vue journalistique sont les suivantes :
    API « Médias sociaux » (sujets de conversation/contenus partagés par des personnes à un endroit précis/avec un terme particulier)
    API « Actualités » (contenu publié par un journaliste/dans une catégorie spécifique)
    API « Politique » (vote d’un homme politique en particulier, circonscription de cette personne)
    API « Lieux » (latitude et longitude d’un code postal, autorité locale)
    API « Crimes » (crimes commis à proximité d’un endroit à une date précise, issue de ces crimes)

    Si vous disposez d’une grande quantité de données, vous pouvez utiliser une API pour poser la même question à chaque donnée (avec des boucles, voir ci-dessus), par exemple, chaque code postal, homme politique ou mot recherché.
    Les API peuvent également être combinées : par exemple, vous pouvez utiliser les réponses d’une API comme base pour les questions d’une autre.

    Une question à une API prend normalement la forme d’une URL. Par exemple, l’URL pour interroger l’API « Police locale » sur les crimes survenus pendant un mois donné à une latitude et une longitude spécifiques est la suivante : http://data.police.uk/api/crimes-at-location?date=2012-02&lat=52.629729&lng=-1.131592
    Notez que la date, la latitude et la longitude figurent toutes dans l’URL, qui est créée en respectant les indications de cette documentation.

    Ai-je oublié un concept ? Faites-le-moi savoir et j’essaierai de compléter le document.

    Contributeurs à la traduction française
    François Jacques – twitter
    Ingrid Pigueron G+ & twitter

    What's your reaction?
    J'adore !
    0%
    C'est super nul !
    0%
    About The Author
    Cédric Motte
    Journaliste en charge d'accélérer la transformation de la rédaction et le développement de produits numériques au sein du Groupe Centre France. Journaliste web depuis un moment, intervient dans les médias (Centre France, France Television, Le Groupe Moniteur, Mondadori, Le Soir, Le Temps...) pour former les journalistes. Anime une communauté de 3 000 journalistes francophones qui tâtent des outils modernes.
    4 Comments
    Leave a response

    Leave a Response