đŸ’» Decker

 

 

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.

 

 

Decker

 

 

 Présentation

 

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.

 

copie d'Ă©cran

 

 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.

 

Manuel de référence de Decker

Manuel de référence de Lil

 

 

#blog

#informatique

 

↩ Index Gemlog

🏠 Index Accueil