IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Revisite du langage LISP,... en Pascal !, Le retrocomputing, c'est aussi le code !
Options
Jaypee
posté 8 Jul 2021, 10:35
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 463
Inscrit : 29 Aug 2002
Membre no 3 340



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 SICP, 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
[email protected] 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

Ce message a été modifié par Jaypee - 8 Jul 2021, 10:36.
Go to the top of the page
 
+Quote Post
PBell
posté 8 Jul 2021, 18:38
Message #2


Adepte de Macbidouille
*

Groupe : Membres
Messages : 215
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



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


--------------------
iMac 27 i7 2,8GHz 8Go/1To 10.6.8 /10.10 / 10.11
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 30th July 2021 - 14:08