💻 Lisp

 

Lisp est un des premiers langages de programmation, apparu en 1958.

 

Il est toujours d'actualité, mais actuellement moins connu et répandu que le C ou Java. Il a servi pour créer le langage ZIL (Zork Implementation Language), qui a été utilisé pour la programmation des premiers jeux d'aventures textuels chez Infocom.

 

Comme pour Forth, il a ses adeptes, et un développement qui se poursuit jusqu'à maintenant, au travers de plusieurs dialectes : Common Lisp, Scheme, Racket...

 

Les diverses implémentations de Common Lisp ont le même défaut que quantité d'autres projets, à savoir la difficulté à interfacer facilement du son et du graphisme, les divers efforts dans ce sens se trouvant dans des projets externes et pas toujours bien maintenus.

 

Aussi, je me suis plutôt dirigé vers Racket, qui malgré son nom qui pourrait faire penser qu'il vient de chez Apple ou Microsoft, n'est pas une nouvelle tentative d'extorsion des GAFAM. Il contient un IDE performant (DrRacket) ainsi que des bibliothèques standard permettant de réaliser des images.

 

 

Liens

 

Racket

 

How to Design Programs

Beautiful Racket: an introduction to language-oriented programming using Racket

https://learnxinyminutes.com/docs/racket/

 

Scheme

 

Apprendre Guile

Tutoriel Scheme

Chicken Scheme (produit du C)

 

 

Exemples

 

Racket

 

#lang slideshow
(define circ01 (circle 120))
(define circ02 (circle 110))
(pin-over  circ01 5 5 circ02)

 

 

#lang racket
(require racket/draw)
(require racket/gui)

(define target (make-bitmap 50 50)) ; A 30x30 bitmap
(define dc (new bitmap-dc% [bitmap target]))
(make-object image-snip% target)

(send dc set-brush "green" 'solid)
(send dc set-pen "blue" 1 'solid)
(send dc draw-rectangle 0 10 30 10)
(send dc set-pen "red" 3 'solid)
(send dc draw-line 0 0 30 30)
(send dc draw-line 0 30 30 0)

 

#lang racket
(require racket/draw)
(require racket/gui)

(define target (make-bitmap 400 300)) ; A 400x300 bitmap
(define dc (new bitmap-dc% [bitmap target]))
(make-object image-snip% target)

(send dc set-brush "green" 'solid)
(send dc set-pen "blue" 1 'solid)
(send dc draw-line 313 267 380 200)
(send dc draw-line 380 200 343 136)
(send dc draw-line 343 136 331 61)
(send dc draw-line 331 61 270 90)
(send dc draw-line 270 90 232 49)
(send dc draw-line 232 49 223 89)
(send dc draw-line 223 89 301 105)
(send dc draw-line 301 105 223 89)
(send dc draw-line 223 89 200 93)
(send dc draw-line 200 93 193 99)
(send dc draw-line 193 99 249 106)
(send dc draw-line 249 106 301 105)
(send dc draw-line 193 99 187 113)
(send dc draw-line 187 113 228 122)
(send dc draw-line 187 113 138 117)
(send dc draw-line 138 117 228 122)
(send dc draw-line 138 117 128 147)
(send dc draw-line 128 147 210 198)
(send dc draw-line 128 147 175 188)
(send dc draw-line 175 188 138 192)
(send dc draw-line 175 188 210 198)
(send dc draw-line 138 192 210 198)
(send dc draw-line 138 192 133 199)
(send dc draw-line 133 199 145 216)
(send dc draw-line 145 216 215 220)
(send dc draw-line 215 220 237 249)
(send dc draw-line 237 249 313 267)
(send dc draw-line 215 220 267 225)
(send dc draw-line 267 225 313 267)

 

#informatique

 

 

 

index.gmi