Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

Forum de l’article

Pourquoi Scheme ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par les responsables.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.
Attention ! Si votre message contient un lien, il devra être validé par le webmestre. Inutile de le poster à nouveau ;-)

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rappel de la discussion
Pourquoi Scheme ?
Frédéric LOYER - le 19 février 2024

Je suis étonné de la citation suivante dans le contexte d’un article "Pourquoi Scheme ?" : "Aujourd’hui on n’entend plus parler que de Python, dont Gérard Berry, toujours au congrès de la SIF, soulignait l’appartenance, avec ses cousins Perl, PHP et Javascript, à une famille de langages qui avaient jeté par-dessus bord les acquis de 50 ans de recherche en théorie et pratique des langages de programmation, par exemple par l’abandon de techniques de typage des données propres à éviter de nombreux bugs."

En effet, Scheme et Python partagent le principe d’un typage fort (l’usage de type inappropriés génèrent une erreur explicite et non un comportement aberrant), mais dynamique (détection à l’exécution et non à la compilation). Je situe ces deux langages dans la même catégorie à ce sujet. Des variantes certes (associative lists vs. dictionaries), mais rien de fondamentalement différent.

La principale lacune de Python comparée à Scheme concerne surtout les affectations/déclarations. Scheme est pointilleux à ce sujet. Ainsi, une déclaration et une affectation s’écrivent différemment : (set ! a 42) provoquera une erreur si la variable n’est pas déclarée préalablement... et la déclaration permet de définir une portée. Côté Python, c’est "perfectible" (deux niveaux de portée : toute la fonction ou globale, et dont une implicite... donc pas de détection d’erreur si on oublie un la fameuse déclaration "global" !).

Pour un niveau de programmation intermédiaire, on peut avoir aussi des différences. Ainsi, (map f l) retourne une liste en Scheme... alors que Python retourne un objet "map". C’est facile à convertir en liste, mais fait une idée de plus à enseigner. Avec du recul, l’idée de Python n’est pas bête... évaluation paresseuse comme sur Haskell mais inutile pédagogiquement.

Côté syntaxe, on a un modèle homogène côté Scheme, mais côté Python, même si la logique du langage est différente de la composition des structures de données, on a un modèle homogène (une ligne qui se termine par " :" est suivi d’un bloc indenté) qui ne devrait pas poser de problème d’apprentissage. Obliger l’élève à indenter est peut-être d’ailleurs bien vu pédagogiquement (et le professeur a la garantie d’avoir des devoirs identés !). Par ailleurs, autant, le côté "le programme est une structure de données" est important pour les auteurs de macros, je ne perçois pas l’intérêt pour un débutant qui sera à 10 lieux d’en créer.

Derniers commentaires

À la Commission de développement de l’informatique du Ministère des Finances
Bonjour, Sur Noël Aucagne, je vous recommande ceci : https://www.afsp.info/archives/congres/congres

Premiers programmes en Rust
Bonjour, Si vous saviez comme vos messages me font plaisir !! J’ai enseigné et pratiqué (…)

Une sacrée envie de foutre le bordel
D’accord avec le commentaire précédent... très élogieux comme portrait, qui passe un peu vite (…)

Programmation de droite à gauche et vice-versa
Bonsoir, Plongé dans ma biblio de l’histoire des méthodes, je suis allé faire un tour à la bib (…)

Prospérité, puissance et pauvreté : pourquoi certains pays réussissent mieux que d’autres
Bonjour Frédéric, merci de ce message. Alors, Acemoğlu et Robinson ne disent pas explicitement (…)