đŸ Archived View for gem.ortie.org âș gemlog âș 2023-05-08.gmi captured on 2024-05-10 at 10:46:58. Gemini links have been rewritten to link to archived content
âŹ ïž Previous capture (2023-07-22)
-=-=-=-=-=-=-
Dans les petits projets informatiques qui viennent rapidement s'imposer comme ayant un réel potentiel utile, artistique et intellectuel, nous avons déjà évoqué UXN.
Dans un style encore plus retro, mais aussi plus abordable, Decker semble présenter une sorte de raffinement et d'aboutissement qui ne peuvent pas laisser indifférent. Inspiré du logiciel HyperCard de la préhistoire d'Apple, il est bien plus que cela : c'est un terrain de jeu, un systÚme de présentation, un outil de programmation interactif et visuel.
Une certaine quantitĂ© d'Ă©lĂ©ments peuvent ĂȘtre dĂ©veloppĂ©s visuellement, tandis qu'un language de script original, inspirĂ© de Lua et Q, permet de rajouter de l'interactivitĂ©.
Ă rebours de la tendance actuelle qui empile les technologies jusqu'Ă rendre les outils indigestes (comme par exemple tout ce qui tourne toujours de javascript), l'auteur de Decker a prĂ©fĂ©rĂ© ne pas rĂ©utiliser Lua, notamment parce que ce dernier, malgrĂ© ses avantages et sa compacticitĂ©, reste environ 3 fois plus gros que tout le code de Decker + Lil. De plus, certaines caractĂ©ristiques de Lil sont uniques et non prĂ©sentes dans Lua (notamment un langage de requĂȘtes proche de SQL).
L'apparence de Decker est originale pour notre époque, et atemporelle : inspiré de System-6 sur MacOS, il détonne mais reste cohérent avec sa volonté de décroissance de l'informatique actuelle, et en cela s'inscrit dans un schéma de permacomputing qui aura ses adeptes.
Exemple de code Ă rajouter sur un canevas pour afficher une image vectorielle :
Créer un nouveau "Deck". Cliquer sur "Tool>Widgets". Cliquer sur "Widgets>New Canvas". L'agrandir sur toute la page. Cliquer sur "Widgets>Script". Effacer le modÚle, et remplacer par le code plus bas. Cliquer sur "File>Close script", puis "Tool>Interact". Cliquer sur le cadre du canvas, et cela fera apparaßtre l'image interactive.
tip1.x:10 tip1.y:20 tip2: pointer.pos-(20,30) tip3: pointer.pos-(20,30)-(99,12) on click pos do #?canvas1.clear[] end on wolf do canvas1.clear[] canvas1.line[(313,267) (380,200)] canvas1.line[(380,200) (343,136)] canvas1.line[(343,136) tip3] canvas1.line[tip3 (270,90)] canvas1.line[(270,90) tip2] canvas1.line[tip2 (223,89)] canvas1.line[(223,89) (301,105)] canvas1.line[(301,105) (223,89)] canvas1.line[(223,89) (200,93)] canvas1.line[(200,93) (193,99)] canvas1.line[(193,99) (249,106)] canvas1.line[(249,106) (301,105)] canvas1.line[(193,99) (187,113)] canvas1.line[(187,113) (228,122)] canvas1.line[(187,113) (138,117)] canvas1.line[(138,117) (228,122)] canvas1.line[(138,117) (128,147)] canvas1.line[(128,147) (210,198)] canvas1.line[(128,147) (175,188)] canvas1.line[(175,188) (138,192)] canvas1.line[(175,188) (210,198)] canvas1.line[(138,192) (210,198)] canvas1.line[(138,192) (133,199)] canvas1.line[(133,199) (145,216)] canvas1.line[(145,216) (215,220)] canvas1.line[(215,220) (237,249)] canvas1.line[(237,249) (313,267)] canvas1.line[(215,220) (267,225)] canvas1.line[(267,225) (313,267)] canvas1.pattern:5 canvas1.fill[(300,200)-canvas1.pos] end on drag pos do tip1.x:10 tip1.y:20 tip2: pointer.pos-(20,30) tip3: pointer.pos-(20,30)-(99,12) wolf[] end on release pos do end
Enfin, une puissante ligne de commande intégrée dans Decker, en mode REPL, permettra d'offrir débogage et amusement aux plus audacieux.
Lil a plusieurs paradigmes de programmation : impĂ©rative et fonctionnelle notamment, le guide d'utilisation les dĂ©taille, mais on peut Ă©galement l'utiliser comme langage de requĂȘtes, façon SQL, et cela devient assez puissant pour gĂ©nĂ©rer des tableaux. Par exemple :
animaux.nom: "Chien", "Chat", "Loup", "Tigre", "Lion", "Canari", "Migale", "Coccinelle" animaux.type: "Canin", "Felin", "Canin", "Felin", "Felin", "Oiseau", "Araignee", "Insecte" animaux.pattes: 4, 4, 4, 4, 4, 2, 8, 6 animaux: table animaux
Pour afficher le tableau il suffit de taper :
select from animaux
+--------------+------------+--------+ | nom | type | pattes | +--------------+------------+--------+ | "Chien" | "Canin" | 4 | | "Chat" | "Felin" | 4 | | "Loup" | "Canin" | 4 | | "Tigre" | "Felin" | 4 | | "Lion" | "Felin" | 4 | | "Canari" | "Oiseau" | 2 | | "Migale" | "Araignee" | 8 | | "Coccinelle" | "Insecte" | 6 | +--------------+------------+--------+
Pour afficher un tableau filtré :
select nom pattes orderby pattes asc from animaux
+--------------+--------+ | nom | pattes | +--------------+--------+ | "Canari" | 2 | | "Chien" | 4 | | "Chat" | 4 | | "Loup" | 4 | | "Tigre" | 4 | | "Lion" | 4 | | "Coccinelle" | 6 | | "Migale" | 8 | +--------------+--------+
Pour afficher un résultat sur une ligne :
extract nom pattes orderby pattes asc from animaux
("Canari","Chien","Chat","Loup","Tigre","Lion","Coccinelle","Migale")
extract count nom from animaux
8
extract nom[4] orderby pattes asc from animaux
"Tigre"
Au-dela de son aspect expĂ©rimental, Decker est un beau projet dĂ©veloppĂ© par un passionnĂ© (John Earnest), qui l'a livrĂ© avec des manuels d'utilisation extrĂȘmement clairs et prĂ©cis.
Il existe comme application indépendante pour la plupart des OS (Linux, MacOS, Windows), ainsi qu'en mode web, dans le navigateur.