Approche du SICP à Clojure au lieu de Scheme

11

Je suis un étudiant en troisième année de baccalauréat dans un programme de génie logiciel, et j'ai soulevé l'idée de lire SICP à un conseiller pour acquérir une compréhension plus profonde et plus fondamentale des principes derrière tous ces logiciels que nous concevons.

Il a suggéré de ne pas apprendre Scheme pour terminer le livre (car ce n'est pas aussi courant que les dialectes modernes de Lisp) mais de faire les exercices en Clojure à la place.

C'est un livre déjà difficile, si je tente les exercices du livre dans le Clojure plus moderne, comment cela fonctionnerait-il? Par exemple, je ne trouve aucune solution réelle, la syntaxe qu'ils enseignent pour Scheme est différente, etc.

ironie
la source

Réponses:

14

Au cours de ma première année à l'université, le premier cours de programmation que j'ai suivi utilisait le SICP (c'était en 1988). Cependant, j'ai eu un problème similaire comme vous: pour mon propre ordinateur (en fait un Commodore Amiga), il n'y avait pas d'implémentation de Scheme disponible à l'époque, seulement un dialecte Lisp différent (je ne me souviens pas de son nom).

Cependant, étant donné la flexibilité de Lisp, il était assez simple «d'émuler» la syntaxe de Scheme simplement en ajoutant les macros et fonctions lisp manquantes dans quelques scripts. Cela était en fait suffisant pour implémenter tous les exercices du chapitre 1 à 3 requis pendant le cours (notez que SICP ne nécessite pas la pile complète de Scheme, un petit sous-ensemble est tout ce dont vous avez besoin).

Donc, comme Clojure est AFAIK un dialecte Lisp moderne, je suppose que vous pourriez simplement faire quelque chose de similaire, ce qui vous donne le choix entièrement libre d'écrire des choses soit dans Scheme ou Clojure ou un mélange des deux.

Bien sûr, la résolution des exercices directement dans Clojure sera également possible, les deux langues sont très similaires. Plus important encore, SICP ne concerne pas la syntaxe du langage de programmation , il s'agit de la bonne utilisation des abstractions dans la programmation (par exemple, avec des fonctions, des données et des objets). Alors ne pensez pas trop aux problèmes de syntaxe possibles, ceux-ci ne sont pas au centre de ce livre et très probablement de préoccupation mineure.

Doc Brown
la source
6
Le seul problème que je prévois est que clojure manque 1. TCO ( recurne gère que la récursivité de la queue , pas les appels généraux) et 2. dont le manque call-with-current-continuationest nécessaire pour le chapitre 4.
Daniel Gratzer
2
@jozefg: Je pense que si l'OP réussit à traverser les chapitres 1-3, il arrivera probablement au point où il ne se plaindra plus des différences syntaxiques entre Clojure et Scheme ;-)
Doc Brown
@DocBrown envisage de modifier la clarification des chapitres 1-3 dans votre commentaire ci-dessus dans la réponse (et d'expliquer éventuellement les problèmes avec le chapitre 4, si vous êtes d'accord avec un commentaire en discutant )
gnat
@gnat: le commentaire est sûrement correct, mais à mon humble avis un peu vilain. La partie importante de ma réponse est le dernier paragraphe.
Doc Brown
0

J'ai trouvé votre question juste après avoir trouvé ce site qui ressemble à celui qui vous convient (même si vous l'avez peut-être trouvé ou une alternative dans les mois qui ont suivi ): SICP à Clojure

Paul Bissex
la source