• [^] # Re: Le zéro-pouce ?

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche L'art non contextuel. Évalué à 2 (+0/-0).

    C’est un peu la syntaxe qui m’y a fait penser. :-)
    Ainsi, si je reprends le premier exemple...

    La première ligne, startsharpe FORME se traduirait juste par FORME (ou montre FORME s’il s’agit d’un résultat de calcul et non d’un dessin) ;
    puis la définition qui suit :

    shape FORME {
    CIRCLE []
    CIRCLE [x 1 brightness 0.5]
    }

    ...se traduirait en logo francisé, mais défini préalablement à l’appel, par

    pour FORME
     CIRCLE
     CIRCLE 1 0.5
    fin
    

    Par contre, il faut avoir créé les formes de base, ce qui se fait aisément (et j’imagine que le TRIANGLE ici est équilatéral ?).

    L'autre truc qui m’a fait penser à ce langage, ce sont les crochets et les modifications :

    cfdg logo
    x ? av ? (tortue regardant vers la droite)
    x -? re ? (tortue regardant vers la droite)
    y ? av ? ou avance ? (tortue regardant vers le haut)
    y -? re ? ou recule ? (tortue regardant vers le haut)
    rotate ? td ? ou droite ? (tortue orientée à 0°)
    rotate -? tg ? ou gauche ? (tortue orientée à 0°)
    size ? (je sèche pour celui-ci)

    ...les modifications dans une certaine limite (comme indiqué entre parenthèses) et puis la couleur, si je ne me rappelle bien était géré avec une palette numéroté, et non pas spécifiée sous forme HSB/TSL
    L’exemple de récursion donné en exemple :

    shape MAFORME {
    SQUARE [brightness 1 sat 1]
    MAFORME [x 1.1 rotate 20 size 0.99 hue 10]
    }

    ...ressemblerait en logo à quelque chose comme :

    pour MAFORME :taille :couleur
     fcc :couleur
     SQUARE :taille
     avance 1.1
     droite 20
     repete 1 [
     MAFORME [retourne produit :taille 0.99]
     [retourne somme :couleur + 1]
     ]
    fin
    

    Logo reprend les aspects fonctionnel et orienté object réflexif de Lisp ;-) mais laisse les parenthèses (je me souviens avoir même lu que c’est un « Lisp sans parenthèse » et de me dire « mais ils ont mis des crochets » haha)... et a une récursion toujours terminale. Puis il va influencer à son tour (en tout cas j’y retrouve des clins d’œil) : Smalltalk (plus Lisp directement et Simula), Scratch (qui à son tour va, avec Scheme, influencer BYOB/Snap!), Rebol (influencé aussi par Forth et Self), etc.

    Mais bon, on retrouve nombre des aspects de CFDG dans divers langages textuels de dessin non contextuel ; mais il y a un petit plus par rapport à ceux que je connais : les rules natifs...! (ou alors ça ne m’avait pas marqué ?)

    "It is seldom that liberty of any kind is lost all at once." ― David Hume