Journal Decker : boîte à outil retro inspirée d'HyperCard

Posté par  . Licence CC By‑SA.
20
19
juil.
2023

Sommaire

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.

=> https://beyondloom.com/decker/ Decker

 Présentation de Decker

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 Decker

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.

Exemple de code Lil

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"

 Conclusion

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.

=> https://beyondloom.com/decker/decker.html Manuel de référence de Decker
=> https://beyondloom.com/decker/lil.html Manuel de référence de Lil

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.