Le jour où notre planète s’est révoltée

Il n’y a rien de surnaturel dans cette pandémie de Covid-19. Au contraire, tout a été froidement calculé et préparé. Il ne s’agit pas d’une guerre qui a été déclarée contre l’espèce humaine, mais d’une contre-offensive qui s’inscrit dans un acte de légitime défense. Je ne crois ni en la théorie du virus échappé d’un laboratoire chinois ou américain, ni en la théorie du virus introduit par Dieu.

Lire la suite de « Le jour où notre planète s’est révoltée »

Die Gedanken sind frei

Aujourd’hui, j’ai envie de vous faire découvrir une très belle chanson en allemand, dont l’auteur et le compositeur sont inconnus. Elle mériterait de devenir l’hymne européen. C’est une ode à la liberté de pensée, un chant qui nous rappelle que notre conscience, quoiqu’il arrive, reste une forteresse imprenable. Je la partage avec celles et ceux qui refusent de se prosterner devant le sinistre drapeau noir de l’obscurantisme.

Lire la suite de « Die Gedanken sind frei »

La nature sous licence libre

Pour compléter mon premier article sur l’application de la licence libre au-delà du simple domaine des logiciels, je vous propose un petit voyage en Scandinavie. Partons, si vous le voulez bien, tout au Nord, dans ces contrées qui ont vu naître Linus Torvalds

Le créateur du noyau Linux est un ressortissant finlandais appartenant à la minorité suédophone. S’il eût été un finlandais finnois, il se fût appelé Liinu torvaaldinen, par exemple. Et tout comme ses ancêtres, il eût été batteur dans un groupe de gore-metal, ce qui n’est pas le cas.

Finlandais suédophone ou suédois de Finlande, peu importe. Intéressons-nous plutôt à un droit inscrit dans la coutume de tous les pays scandinaves. En Norvège, on l’appelle allemannsrett, en Suède allemansrätt, et en Finlande jokamiehenoikeus. C’est le droit d’accès à la nature. Cette loi ancestrale autorise quiconque à (je cite Wikipédia) profiter sous certaines conditions, de la nature et de ses fruits, indépendamment des droits de propriété qui peuvent y être attachés, et sans le consentement préalable du propriétaire. Le randonneur est libre de traverser la propriété d’autrui, d’y cueillir des baies et même d’y planter sa tente pour vingt-quatre heures , sans crainte de voir son sommeil brutalement interrompu par le débarquement de deux cars de CRS tout énervés.

Cela dit, vous vous imaginez bien que cette coutume est encadrée, et c’est très bien ainsi car ce sont les lois que l’on se donne qui garantissent nos libertés individuelles tout en protégeant les plus fragiles d’entre nous. L’absence de lois, c’est la loi du plus fort. Par conséquent, si vous randonnez en Suède, sachez:

  • qu’il est interdit de camper dans le champ visuel ou auditif du propriétaire des lieux. Son intimité doit être respectée.
  • Ne vous avisez pas d’abattre un arbre pour faire un barbecue! Contentez-vous de récolter du bois mort et des écorces de bouleau. 
  • Pas question non plus de débarquer en fourgon IVECO pour organiser une rave-party. La nature a horreur du bruit.
  • Après une bonne nuit et un bon petit-déjeûner, veillez à faire disparaître les traces de votre bivouac et à  remettre le lieu dans son état de propreté originel.

Moi, j’habite dans un pays, l’Allemagne, soit disant attentif aux questions environnementales, mais dont le rapport à la nature n’est pas sans contradiction. L’Allemansrätt n’existe pas. Si vous êtes un adepte du bushcraft et que vous voulez planter votre tente au beau milieu des bois, c’est streng verboten. Vous pouvez le faire mais il ne faut pas se faire piquer. Je suppose qu’en France, c’est également interdit. Mais la conception française de l’interdiction est sans doute moins rigide qu’en Allemagne.

Cela part peut-être d’un  bon sentiment, celui de protéger l’environnement à tout prix, mais cette sanctuarisation privative de la nature, coupe l’être humain de ses racines et ce n’est pas une bonne chose. De plus, qui nous dit que dans un avenir proche, seuls les riches hélicologistes auront accès à des oasis de nature préservée tandis que les vilains, les « gens qui ne sont rien », devront se confiner dans leur appartement exigu, bien loin de toute verdure.

Vous allez me rétorquer que les scandinaves peuvent bien se permettre de placer la nature sous licence libre, vu qu’ils sont deux vikings et trois blondines à se partager des centaines de milliers de kilomètres carré. Oui, c’est vrai qu’on ne peut pas comparer leur situation avec celle des Pays-Bas, où les gens vivent les uns sur les autres, mais en France, il y a suffisamment d’espace pour ne pas sanctuariser la nature. Durant le confinement, l’interdiction radicale de profiter des plaisirs d’une balade en forêt ou sur la plage, était parfaitement injustifiée et ne présage rien de bon pour l’avenir. 

Si on ne place pas la nature sous la protection d’une licence libre strictement définie, qui permette qu’elle devienne notre bien commun à tou(te)s, alors elle deviendra le privilège de celles et ceux qui auront suffisamment d’argent pour y accéder. Elle deviendra non pas privée mais privative. Il n’est pas exagéré d’imaginer des oasis de nature enceintées et interdites aux édenté(e)s. Lorsque le Président de la République et Madame profitaient d’un jardin de deux hectares, au coeur du huitième arrondissement, et que les riches Parisiens prenaient courageusement le chemin de l’exode en direction de leur résidence secondaire sur l’île de Noirmoutier, d’autres Français(es), privées de verdure, pétaient une durite dans leur appartement insalubre.

Rien ne justifiait cette interdiction d’accès à la nature si ce n’est la volonté, peut-être subconsciente, de tester la résilience et la naïveté de tout un peuple en vue du nouveau monde que les puissants lui réserve… Un monde privatif, où la nature, sanctuarisée à outrance, sera protégée par des milices privées et cotée en bourse.

D’aucuns vont me faire remarquer que malgré le droit à la nature, la politique suédoise de non-confinement a été un désastre. Oui, c’est vrai, mais ce désastre sanitaire a été provoqué non pas par l’allemansrätt mais par le fait que les suédois, avec une certaine arrogance de peuple à qui tout réussit, ont continué à fréquenter les terrasses de café et les magasins IKEA en se disant que de toute façon, leurs gènes de vikings les protégeraient. Ils avaient Thor, si je peux me permettre ce lamentable jeu de mots.

En Allemagne, il n’était pas interdit de profiter d’une promenade en forêt sans limitation de temps, pourvu que l’on fût en binôme et que l’on respectât une distance de sécurité d’un mètre cinquante. Et croyez-moi, pour l’équilibre mental (en tout cas pour le mien), cette approche souple et pragmatique était pleine de bon sens. L’interdiction d’accès à la nature n’a absolument pas réduit le nombre d’infecté(e)s en France. On ne rapporte aucun cas d’arbres ou de fougères contaminés au COVID-19 et potentiellement dangereux pour le promeneur. Aucun… Par conséquent, vous ne prenez pas de risque en caressant une écorce. Cette interdiction absurde était le fruit d’une volonté politique visant à préparer les esprits au fait que la destruction de l’environnement va transformer chaque arbre en une denrée précieuse. 

Ce que je dis est profondément politique, j’en suis conscient, mais le concept de licence libre également. C’est une vision du monde qui s’oppose à une autre vision du monde. C’est en tout cas comme ça que je vois les choses. Le droit d’une famille de nantis à traverser l’atlantique sur un voilier en polyester dont la fabrication et le recyclage n’ont rien de durable, devrait être tout simplement interdit et remplacer par le droit de tout écolier français de pouvoir un jour faire une sortie en mer encadrée. Dès l’école, il faudrait une vraie politique de découverte de tous les aspects de la nature et des quatre éléments qui la constituent:

  • la mer pour l’eau,
  • la montagne pour l’air pur,
  • la campagne pour la terre,
  • les volcans pour le feu.

Oui, je suis pour le rétablissement du service national! Mais un Service National de Protection de la Nature. Chaque ville devrait se noyer dans la verdure et se doter de jardins municipaux qui seraient le bien commun de tous ses habitants. Lorsque je parle de jardins municipaux, je veux parler bien sûr de jardins potagers. Rien de ce qui est placé sous licence libre ne sombre dans l’anarchie, bien au contraire! Sur ce point, Wikipédia en est un parfait exemple. Cette encyclopédie accessible à tou(te)s, est devenue une référence. C’est une immense source de connaisances protégée par une communauté d’administrateurs qui ne sont pas des miliciens mais des médiateurs. Wikipédia NOUS appartient. Elle fait partie du patrimoine de l’humanité.

Le droit d’accès à la nature est une sorte de licence libre qui permet aux scandinaves de ne pas se couper de leur environnement, car aucun être vivant ne peut s’épanouir s’il ignore où plongent ses racines. Nous serions bien avisé(e)s d’adopter le plus vite possible cette coutume, avant qu’un gouvernement, soumis aux puissances de l’argent, ne décide de placer des péages à l’entrée des forêts ou des plages. Le plus grand danger qui nous guette, c’est que même la nature devienne privative.

Assembler son propre ordinateur

Il y a presque dix ans, en traînant sur internet, j’ai découvert à ma grande surprise qu’il était tout à fait possible d’assembler son ordinateur soi-même et qu’il n’y avait pas besoin pour cela, d’être un petit génie de l’informatique. Je décidai donc de me lancer dans l’aventure et je commandai les composants nécessaires chez Matériel.net. C’est ainsi qu’est né Volgor, mon fidèle serviteur.

Lire la suite de « Assembler son propre ordinateur »

L’inexorable accélération du temps au cours de la vie sur Terre

J’ai quarante-sept ans. Je suis né très précisément en 87076800 du temps Unix. Je me dirige allègrement vers mes quarante-huit ans et à mon dernier anniversaire, je me suis fait la remarque que le temps passait bien vite, beaucoup trop vite à mon goût. J’ai d’abord attribué cela à mon refus de vieillir car chaque nouveau jour qui se lève me rapproche de la tombe et cette sombre perspective ne me réjouit pas spécialement. Et puis, je me suis mis à réfléchir

Lire la suite de « L’inexorable accélération du temps au cours de la vie sur Terre »

Chapitre 11 – La compréhension de liste

La compréhension de liste est une expression qui permet de construire une liste à partir de tout autre type itérable (liste, tuple, chaîne de caractères…). Le résultat obtenu est toujours une liste.

1. Une compréhension de liste toute simple

Un exemple valant mieux qu’un long discours, nous allons créer une liste de nombres entiers :

liste_initiale = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

À l’aide d’une boucle for et de la méthode append(), nous allons ajouter à une nouvelle liste baptisée liste_2, chaque élément de liste_initiale multiplié par deux.

liste_initiale = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
liste_2 = []
for n in liste_initiale:
    liste_2.append(n*2)
print(liste_2)

Résultat: [0, 2, 4, 6, 8, 10 ,12, 14, 16, 18, 20, 22, 24, 26, 28, 30]

J’ai donc utilisé une boucle for pour écrire ce petit bout de code de cinq lignes. Mais j’aurais tout aussi bien pu utiliser une compréhension de liste pour obtenir le même résultat. Voici la syntaxe de cette dernière :

liste_initiale = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
liste_2 = [n*2 for n in liste_initiale]
print(liste_2)

Résultat: [0, 2, 4, 6, 8, 10 ,12, 14, 16, 18, 20, 22, 24, 26, 28, 30]

Que remarque-t-on? Le code est plus concis puisqu’il tient sur trois lignes au lieu de cinq. Vous allez me dire que la différence est minime et dans cet exemple tout simple, je dois reconnaître que vous avez raison! Mais attendez de voir la suite…

2. Une compréhension de liste avec une condition

Je souhaite  créer une nouvelle liste de nombres pairs multipliés par 2 à partir de liste_initiale qui contient, je vous le rappelle des nombres pairs et impairs. Il va donc falloir que j’introduise une condition pour ignorer les nombres impairs. Comparons une nouvelle fois le code écrit avec une boucle for et celui écrit avec une compréhension de liste.

Avec une boucle for
liste_initiale = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
liste_pair = []
for n in liste_initiale:
    if n % 2 == 0:
        liste_pair.append(n*2)
print(liste_pair)

Résultat: [0, 4, 8,  12, 16, 20, 24, 28]

Avec une compréhension de liste

J’introduis la condition à la fin de la compréhension de liste. Au lieu d’avoir six lignes de code, je n’en ai plus que trois.

liste_initiale = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
liste_pair = [n*2 for n in liste_initiale if n % 2 == 0]
print(liste_pair)

Résultat: [0, 4, 8,  12, 16, 20, 24, 28]

3. Une compréhension de liste avec une expression conditionnelle

Encore plus fort, je souhaite créer une nouvelle liste avec les éléments de liste_initiale. Les chiffres pairs seront multipliés par deux, les chiffres impairs par trois. Il va donc falloir que j’introduise une condition if… else.

Avec une boucle for
liste_initiale = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
nouvelle_liste = []
for n in liste_initiale:
    if n % 2 == 0:
        nouvelle_liste.append(n*2)
    else:
        nouvelle_liste.append(n*3)
print(nouvelle_liste)

Résultat : [0, 3, 4, 9, 8, 15, 12, 21, 16, 27, 20, 33, 24, 39, 28, 45]

Avec une compréhension de liste

Ça se complique un peu car il faut utiliser une expression conditionnelle qui évalue si la condition est vraie (True) ou fausse (False). Mais le résultat est au rendez-vous puisqu’au lieu d’avoir huit lignes de code, je n’en ai que trois!

liste_initiale = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
nouvelle_liste = [n*2 if n % 2 == 0 else n*3 for n in liste_initiale]
print(nouvelle_liste)
 4. Une compréhension de liste avec une liste de listes

Il est possible de faire une compréhension de liste avec une liste de listes. Pour s’y retrouver dans l’imbrication des instructions, le plus simple est de comparer la syntaxe d’une boucle for avec celle d’une compréhension de liste.

Avec une boucle for
liste_initiale = [[0, 'a'], [2, 'b'], [3, 'c']]
nouvelle_liste = []
for sous_liste in liste_initiale :
    for n in sous_liste :
        nouvelle_liste.append(n*2)
print(nouvelle_liste)

Résultat: [0, ‘aa’, 4, ‘bb’, 6, ‘cc’]

Avec une compréhension de liste
liste_initiale = [[0, 'a'], [2, 'b'], [3, 'c']]
nouvelle_liste = [n*2 for sous_liste in liste_initiale for n in sous_liste]
print(nouvelle_liste)

Résultat: [0, ‘aa’, 4, ‘bb’, 6, ‘cc’]

Avec une expression conditionnelle

Par exemple, je veux multiplier les nombres entiers par deux et les strings par trois.

liste_initiale = [[0, 'a'], [2, 'b'], [3, 'c']]
nouvelle_liste = [n*2 if type(n) == int else n*3 for sous_liste in liste_initiale for n in sous_liste]
print(nouvelle_liste)

Résultat: [0, ‘aaa’, 4, ‘bbb’, 6, ‘ccc’]

Dans ce dernier exemple, si j’avais fait usage d’une boucle for, j’aurais écrit neuf lignes de code au lieu de trois!

liste_initiale = [[0, 'a'], [2, 'b'], [3, 'c']]
nouvelle_liste = []
for sous_liste in liste_initiale:
    for n in sous_liste:
        if type(n) == int:
            nouvelle_liste.append(n*2)
        else:
            nouvelle_liste.append(n*3)
print(nouvelle_liste)

Cela dit, ce n’est pas non plus le concours de celui qui écrira le plus d’instructions sur la même ligne de code. Il faut que ça reste déchiffrable.

5. Les compréhensions de liste avec les autres types itérables

Comme je le disais en introduction, les compréhensions de liste fonctionnent avec les autres types itérables mais le résultat obtenu est toujours une liste. Par exemple, avec une chaîne de caractères :

prenom = "Gustave"
liste_lettres = [lettre for lettre in prenom]
print(liste_lettres)

Résultat: [‘G’, ‘u’, ‘s’, ‘t’, ‘a’, ‘v’, ‘e’]

Conclusion

La compréhension de liste est une méthode puissante qui a remplacé les anciennes fonctions map() et filter() dont l’usage est aujourd’hui déconseillé. Bien utilisée, la compréhension de liste rend le code plus concis, plus élégant et plus facile à comprendre. Voici la page consacrée aux compréhensions de liste dans la documentation officielle du langage Python.

Il existe également une compréhension de dictionnaire et d’ensemble que nous aborderons dans le chapitre consacré à ces deux structures de données.

Chapitre 10 – Les références partagées et le module copy

D’aucuns pensent que la manière la plus simple de copier une liste est de déclarer une variable et de lui affecter ladite liste comme dans l’exemple ci-dessous:

liste_initiale = [1, 6.3, ['Alphonse', 'Solange']]
copie_liste = liste_initiale
print(copie_liste)

Résultat : [1, 6.3, [‘Alphonse’, ‘Solange’]]

Mais en faisant cela, nous avons simplement créé un alias, c’est-à-dire que nous avons instancié un nouvel objet qui partage la même référence que la liste copiée! Pour nous en convaincre, visualisons le code avec Python Tutor.

capture_1
Lire la suite de « Chapitre 10 – Les références partagées et le module copy »