Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ La Programmation En Général _ Revisite du langage LISP,... en Pascal !

Écrit par : Jaypee 8 Jul 2021, 10:35

Il y a longtemps, dans une lointaine galaxie... Enfin, presque !
Vers la fin des années 80, bien avant que cela ne devienne une réalité économiquement abordable, des passionnés ont imaginé que les bidouilleurs pourraient fabriquer leur propres robots. Et à cette époque, une revue fut lancée sur cette thématique.
"Micros & Robots" a connu un succès limité, malgré un contenu très à la pointe, voire même un peu élitiste. Et seulement 16 numéros ont été publiés.
C'est à partir du numéro 15, l'avant-dernier que démarre une série de trois articles sur le langage LISP. Trois, 15, 16 et... ? C'est en effet la revue-mère du petit nouveau, l'institution Radio-Plan qui date des années 30, qui a publié le troisième volet.
Pourquoi s'intéresser à une telle antiquité ?
- Comme pour toute antiquité, la comprendre, et admirer le résultat en face de la pauvreté des moyens disponibles pour sa création.
- Pour comprendre comment on a construit ce langage, l'un des tout premiers, avec FORTRAN, autour de 1955.
- Noter de la version de l'article ne sait pas compter, j'ai donc décidé d'ajouter les 4 opérations arithmétiques, en lisant la littérature sur le sujet, le https://mitpress.mit.edu/sites/default/files/sicp/index.html, et j'ai été surpris que c'était plus facile que j'imaginais.

Ma reconstruction du programme en Pascal: https://github.com/jaypeeds/nanolisp

Petite capture d'écran du résultat:

Code
jaypee@MacMini2018JP nanolisp % ./NanoLisp
NANO-LISP - (C)JM HUSSON (1985), JPDS (2021)
     (LOAD 'Exemples/test-fact-rec.nlsp)
  FACT
      NIL
     T
     (FACT 10)
3628800
     (SETQ PI 3.1415926535)            
3.1415926535
     (DE perimetre-du-cercle(RAYON) (* 2 PI RAYON))
perimetre-du-cercle
     (perimetre-du-cercle 5.0)
  3.1415926535000001E+001
     (QUIT)
NIL

Le fichier chargé contient une définition de fonction factorielle récursive que j'appelle dans la console:

(DE FACT(N) (COND ((EQ N 0) 1) (T (* N (FACT (- N 1))))))

Ce n'est pas un outil industriel, il a plein de défaut, mais c'est juste cool et fun ! et c'est déjà beaucoup !
@+JP

Écrit par : PBell 8 Jul 2021, 18:38

Merci Jaypee pour ce retour aux 80's.

A l'époque les programmeurs en LISP se moquaient gentiment des paquets de parenthèses nécessaires à l'écriture du LISP.
En particulier, il fallait compter avec soin le nombre de parenthèses fermantes en fin de ligne car les compilateurs et interpréteurs de l'époque ne donnaient que des erreurs sibyllines lorsque l'expression n'était pas conforme.

Ce qui a fait dire à certains que LISP signifiait en fait "Lot of Insipide and Stupid Parenthesis" et non pas "LISt Processing". biggrin.gif

Merci encore Jaypee

Écrit par : Jaypee 5 Jun 2022, 08:54

Vu par hasard sur YouTube...

Casio, fin des années 80, a créé un micro de poche qui avait LISP comme langage de base !
https://www.youtube.com/watch?v=H-yuZ2pejGU

Avatar moderne, basé sur un micro-contrôleur actuel.
http://www.ulisp.com/show?2KZH

JP

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)