Amber 0.11 est sorti. Amber est une implémentation du langage Smalltalk (langage objet à classes) pour le web qui se compile vers du Javascript efficace. Amber fournit un environnement de développement avec un navigateur de classes, un espace de travail (pour évaluer n'importe quelle expression n'importe quand) et un inspecteur d'objets. Tout cet environnement de développement est écrit en Amber et est donc accessible depuis le navigateur web.
Vous pouvez essayer Amber dès maintenant en allant sur le site web du project et en cliquant sur le gros bouton 'Try Amber in your Browser!'.
Trois mois ont passé depuis l'annonce de la version précédente.
Les changements
La version 0.11.0 en chiffres : 433 commits par 13 personnes, ce qui amène le nombre de contributeurs au projet à 25. Il y a 50 nouveaux tests unitaires pour un total de 313 depuis le début du projet. 60 tickets ont été fermés, pour un total de 499.
Cette nouvelle version inclut beaucoup de corrections de bugs, des améliorations de l'interface en ligne de commande, et une avant-première du futur environnement de développement (voir plus bas). Le compilateur (entièrement ré-implémenté dans la version 0.10.0) a aussi reçu quelques améliorations, notamment des optimisations d'envois de message et d'appels à super
.
Quelques changements dans l'API ont eu lieu, voir l'annonce pour les détails.
Instances d'Amber
Amber est déjà utilisée par quelques applications dont certaines sont publiquement accessibles :
- Smalltalkhub est une plateforme d'hébergement de code source. L'interface de Smalltalkhub est entièrement implémentée côté client en Amber, le serveur n'étant utilisé qu'au travers de requêtes REST pour récupérer et stocker les informations sur les projets.
- Easnoth est un jeu de stratégie au tour par tour entièrement implémenté en Amber.
Essayer le futur environnement de développement (nom de code Helios)
L'environnement de développement a été complètement récrit. Il est bien plus simple à utiliser, plus beau et tout est accessible par le clavier (le développeur principal d'Amber est un fan d'Emacs). Pour l'essayer :
Depuis votre navigateur favori :
- visitez le site web du project
- ouvrez une console javascript sur cette page (dans le menu Outils pour Firefox et Chrome)
- tapez
amber.loadHelios()
dans la console et validez — Helios s'ouvre après quelques secondes - fermez la console javascript
Quand Helios est chargé, tapez ctrl+espace
pour afficher une liste d'actions dans une barre en bas de la fenêtre. Chaque action est précédée d'une lettre qui indique la touche à taper pour activer l'action (vous pouvez aussi utiliser la souris). Le raccourcis ctrl+espace
affiche des actions différentes en fonction de ce que vous êtes en train de faire, n'hésitez pas à vous en servir.
Un débuggueur est en cours de préparation : vous pourrez bientôt exécuter vos applications Amber ligne à ligne et étudier la valeur des variables à chaque étape !
Installer Amber depuis NPM
Il n'est pas nécessaire d'installer Amber pour l'utiliser, mais si vous souhaitez faire une application avec, vous pouvez utiliser npm
(le gestionnaire de paquets de node.js):
npm install amber
Communauté
Nous espérons que vous nous rejoindrez pour développer Amber et vous éclater ! Vous pouvez cloner le projet (déjà 100 clones recensés sur GitHub) et venir discuter avec nous sur IRC (#amber-lang
sur freenode) et la liste de diffusion.
Aller plus loin
- Amber Smalltalk (225 clics)
- Un jeu écrit en Amber (218 clics)
- Smalltalkhub, une plateforme d'hébergement écrite en Amber (44 clics)
- Annonce d'Amber 0.11 (41 clics)
- Intégration continue du projet (19 clics)
- Documentation générée du code et de l'API d'Amber (21 clics)
# Cool
Posté par Victor . Évalué à 4.
J'ai testé le tutoriel interactif, c'est bien cool, mais on peut pas scroll down, donc quand ya trop de trucs écrit on voit pas la fin du texte :)
(Firefox 22.0)
[^] # Re: Cool
Posté par bastien (site web personnel) . Évalué à 2.
J'ai le même problème ici.
C'est bien smalltalk, j'ai eu l'occasion d'en faire à la fac et j'avais vraiment apprécié. Cette news me donne envie d'essayer sur des petits projets personnels (même si je sens que l'adaptation à la syntaxe ne va pas être simple).
Du coup, quel, ou quels sont les outils correspondant côté serveur ? Un rapide recherche m'indique Seaside ? Quelque chose permettant de proposer du JSON par exemple, que je lirais côté client avec amber.
[^] # Re: Cool
Posté par Damien Cassou . Évalué à 3.
La syntaxe s'apprend vraiment vite car il n'y a quasiment rien à savoir. Toute la syntaxe (+ des infos sur l'environnement de développement Pharo) tient sur un flyer.
Côté serveur, n'importe quoi qui fait du REST convient. Pharo par exemple avec Zinc ou Seaside. JSON est parfaitement supporté côté client et côté serveur. Voir par exemple la documentation de Zinc .
[^] # Re: Cool
Posté par Damien Cassou . Évalué à 1.
Le bug est connu. Il paraît que ça marche avec d'autres navigateurs, mais je n'ai pas essayé.
# semble sympa.
Posté par maboiteaspam . Évalué à 2. Dernière modification le 11 juillet 2013 à 13:43.
Mais j'ai un petit doute sur la mise en pratique parce qu'il faut jongler entre deux environnements en permanence pour réaliser le même livrable.
1 premier environnement pour développer le balisage et la charte
2ieme environnement dédié à javascript
Du coup, j'ai des doutes sur l'expérience utilisateur du développeur au final.
Sinon, n'étant pas versé dans les langages tels que smalltalk, dans cet exemple,
begin
"Makes me say hello to the user."
Sexy au demeurant. Je me demande quand même si le code reste aussi pur avec des exemples plus avancés. Les tutoriaux sont un peu léger, et j'avoue que j'ai la flemme d'inspecter les classes présentées par l'ide, trop abstraites à mon égard pour que j'y comprenne grand chose rapidement amha.
[^] # Re: semble sympa.
Posté par Damien Cassou . Évalué à 2.
Pour la première question sur les 2 environnements, je ne sais pas trop. Avec Amber, toute la partie graphique du site est rendue dynamiquement et il n'y a donc pas un fichier HTML qui représente la charte. Je pense que c'est la problème avec beaucoup de technologie web modernes (comme JQuery) qui manipulent le DOM HTML.
En ce qui concerne la qualité du code, je vais être beaucoup plus affirmatif : oui, le code peut rester propre même pour les très grosses applications, il suffit juste que ça soit un des objectifs des développeurs. Regarde par exemple le code d'Helios ou celui du compilateur.
[^] # Re: semble sympa.
Posté par maboiteaspam . Évalué à 2. Dernière modification le 14 juillet 2013 à 03:56.
Écoutes, je suis aller voir. J'ai plus de questions que de réponses.
Oui le code est assez pure quand je plisse mes yeux, mais quand je regarde plus près, c'est pire que du chinois… du coup se sera ptet mon troisième langage de l'année.
Ceci dit je parle bien de pureté, pas de qualité. Le code qui exprime le plus clairement possible l'intention.
Mais ceci dit oui le rendu que j'ai pu expérimenter sur
le debuggerl'ide était extrêmement qualitatif.[^] # Re: semble sympa.
Posté par Damien Cassou . Évalué à 2.
Tu as des exemples de code à montrer ? As-tu regardé le flyer ?
[^] # Re: semble sympa.
Posté par maboiteaspam . Évalué à 2.
Faut que j'apprenne le langage.
Là je butes sur des trucs comme ça :
Aucune idée de ce à quoi cela sert.
Déclare un model, hérité de aModel ? Mais après, aModel est assigné à model ? model.model est un constructeur ? Une instance ? et qu'est que ce second aModel ? Un type , une instance ?
Des subtilités que j'apprendrais en temps et en heure.
Ou celui ci,
Je n'ai qu'une vague idée de ce que cela fait.
Surtout à cause de ce truc
^ self
Le PDF est sympa parce que syntétyque. Mais je croît j'ai besoin de sortir du lourd, du beaucoup plus lourd ; )
a+
[^] # Re: semble sympa.
Posté par Damien Cassou . Évalué à 5.
La première ligne permet de définir la méthode. Le nom de la méthode est
model:
. Cette méthode possède un paramètre dont le nom estaModel
. On ne connaît pas le type du paramètre ni le type de retour de la méthode. La deuxième ligne affecte la valeur de l'argumentaModel
à la variable d'instancemodel
. Cette méthode est donc tout simplement un setter.définition d'une nouvelle méthode dont le nom est
onClassMoved:
et qui prend un paramètre nomméanAnnouncement
.déclaration de 2 nouvelles variables temporaires. En Smalltalk on doit déclarer toutes les variables que l'on utilise.
assignation à la variable temporaire
class
de la valeur résultante de l'envoie du messagetheClass
(sans argument) à l'objetanAnnouncement
.même chose.
expression qui retourne un booléen. L'expression est un OR entre 2 égalités.
ifFalse:
est un message envoyé au booléen (de la ligne précédente) qui prend un block en paramètre. Le block n'est évalué que si le booléen vautfalse
. L'accent circonflexe^
signifie "return". Ici, on retourne l'objet courant (self
=this
en Java). C'est donc pareil quereturn this
en Java. En Smalltalk, toutes les méthodes retournent un objet, etself
est retourné par défaut. Donc, si la condition est fausse, on quitte la méthode.La première ligne définie une condition. Si la condition est vraie, on envoie 2 messages à
self
(=this
). Le premier message estselectedItem:
avec un argument ànil
(=null
). Le deuxième message estselectItem:
avec un argument ànil
. Il faut noter l'utilisation du;
qui permet d'envoyer plusieurs messages à un même objet.Ici on envoie 2 messages à
self
, aucun ne prenant d'argument. On aurait pu utiliser un;
ici aussi.[^] # Re: semble sympa.
Posté par maboiteaspam . Évalué à 2.
Merci !
C'est pas souvent qu'on prend par la main ainsi, en fait jamais, c'est appréciable : )
Pour le reste yapluka.
a+
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.