URL: https://linuxfr.org/users/zurvan-0/journaux/decker-boite-a-outil-retro-inspiree-d-hypercard Title: Decker : boîte à outil retro inspirée d'HyperCard Authors: zurvan Date: 2023年07月19日T15:11:08+02:00 License: CC By-SA Tags: frugalité, decker et rétro-informatique Score: 21 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](https://linuxfr.org/users/zurvan-0/journaux/uxn-un-langage-assembleur-axe-sur-la-frugalite) 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

AltStyle によって変換されたページ (->オリジナル) /