Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

: Seaside 2.7

Posté par Damien Cassou (). Modéré le 02 avril 2007.
Une nouvelle version de Seaside vient de sortir. Seaside est un serveur d'applications web libre pour Smalltalk : il fonctionne notamment avec Squeak. Seaside utilise une architecture à base de composants qui permet de construire une page comme une hiérarchie de composants plus simples. La principale originalité de Seaside est d'utiliser les continuations pour modéliser des flots multiples d'interactions entre différents composants.

Cette version 2.7 apporte un lot important de changements parmi lesquels :
  • Une nouvelle technique de rendu par défaut,
  • Une bibliothèque pour gérer facilement les fichiers (FileLibrary),
  • Une API de dépréciation (deprecated),
  • La possibilité de cliquer dans le code HTML généré afin d'ouvrir un debuggueur automatiquement au bon endroit,
  • De nombreux bugs corrigés.

Une version 2.8 est déjà en développement afin d'améliorer les performances de Seaside. Le site web CMSbox l'utilise déjà. Des présentations, vidéos et de la documentation peuvent être trouvées sur le site de Lukas Renggli, un des deux développeurs de Seaside les plus actifs. On trouvera plusieurs tutoriels sur le blog Inching Forward.

> Lire la dépêche (49 commentaires, moyenne: 2,4).  

Vous avez demandé le commentaire #818319.

comparaison Rails vs Seaside

Posté par Gniarf () le 02/04/2007 à 12:34. (lien). Évalué à 5.

cette page d'un blog décrit vite fait le code pour réaliser la même page bien classique (liste de recettes, liens pour en rajouter ou éditer une), d'abord en RoR puis en Seaside

http://onsmalltalk.com/programming/smalltalk/rails-vs-seasid(...)

suivant vos penchants naturels, l'une des deux vous fera dire "beurk". après, pour savoir laquelle...

--
Windows has no users. It has hostages.
  • [^]Re: comparaison Rails vs Seaside

    Posté par reno () le 02/04/2007 à 22:15. (lien). Évalué à 4.

    Difficile de dire beurk a l'un, les deux sont différents, c'est tout.

    Ceci dit la syntaxe de Smalltalk est quand même un poil difficile a avaler quand on est habitué a la famille des langages C..
    Je me suis souvent demandé si un Smalltalk avec une syntaxe qui ressemblerait plus a celle du C ({} pour les blocs de code, ';' pour les fins de lignes mais en gardant les bonnes idée de Smalltalk: appels par mots-clef, espace comme séparateur pour les listes) n'aurait pas eu plus de succès..

    • [^]Re: comparaison Rails vs Seaside

      Posté par Sylvain Sauvage () le 02/04/2007 à 22:31. (lien). Évalué à 3.

      La syntaxe Ruby n’est pas franchement C non plus, elle me semble pourtant plus facile à avaler par tout un chacun.

      [^]Re: comparaison Rails vs Seaside

      Posté par Aris Adamantiadis (page perso, ) le 02/04/2007 à 23:00. (lien). Évalué à 5.

      j'ai du apprendre smalltalk dans le cadre d'un projet de génie logiciel (avec seaside, en utilisant visualworks.)

      Il y a une notion qui est très utile et qui marche pas trop mal, c'est que *tout code est objet*. C'est à dire qu'il existe des "blocs" comme tu dis:
      [moncode.]
      L'interet, c'est qu'on peut passer du code en parametre, et faire ainsi des callbacks très reactifs. Par ex je me souviens qu'en seaside on pouvait incrémenter un compteur à partir d'un lien de cette manière:

      html add: Link new onClicked:[compteur = compteur+1.].
      (pour ceux qui sont novices, l'équivalent du . ou -> du C++ est l'espace, tout se lit de gauche à droite, les appels de methode sont des :, l'allocation d'un nouvel objet est l'appel de la methode new sur sa classe (qui est aussi un objet) et les instructions se terminent par un .)

      le langage a des particularités très interessantes, mais c'est dommage que les environnements ne soient pas plus attractifs (les 2 premières semaines avec visualworks n'ont pas été très facile).

      • [^]Re: comparaison Rails vs Seaside

        Posté par Sylvain Sauvage () le 03/04/2007 à 18:28. (lien). Évalué à 2.

        Ruby aussi permet de passer des blocs (entre accolades) qui peuvent utiliser des paramètres.
        Je préfère les vraies lambda mais c’est en cours et les blocs sont aussi une bonne idée.

        • [^]Re: comparaison Rails vs Seaside

          Posté par Damien (page perso, ) le 03/04/2007 à 20:21. (lien). Évalué à 1.

          Sauf qu'en Ruby c'est pas pratique de passer plusieurs blocs à une méthode, il faut les convertir en Proc pour je ne sais quelle raison...

          Quelle différence tu fais entre une "vraie lambda" et les blocs Smalltalk ? la curryfication ?

          • [^]Re: comparaison Rails vs Seaside

            Posté par Sylvain Sauvage () le 04/04/2007 à 19:06. (lien). Évalué à 2.

            Je parlais de Ruby et justement du fait que le bloc doit devenir un Proc (par Proc.new ou lambda) et donc qu’un bloc n’est pas une vraie lambda (les Proc le sont) et qu’il y avait une intention de réorganiser cela pour la 2.0 (je ne suis pas ça de très près).

            Pour ce qui de Smalltalk, je ne le connais pas assez. Un bloc ne peut pas avoir de paramètre ? C’est triste…

        [^]Re: comparaison Rails vs Seaside

        Posté par Serge Stinckwich (page perso, ) le 04/04/2007 à 05:52. (lien). Évalué à 1.

        A quoi pense tu quand tu dis environnements plus attractifs ? Eclipse ?

      [^]Re: comparaison Rails vs Seaside

      Posté par benoar (Jabber id, ) le 03/04/2007 à 02:41. (lien). Évalué à 4.

      Je ne pense pas que la syntaxe aurait beaucoup changé son sort.

      Elle est parfois étrange, mais parfois très utile : rien que pour les fonctions qui prennent beaucoup de paramètres, ou alors des paramètres qui se "ressemblent" (par exemple foo(width,height) qui serait appelé comme ça : foo(5,8)), on sait tout de suite quel paramètre correspond à quoi : fooWithWidth: 5 andHeight: 8 (mon expérience vient de l'Objective C, d'où le nommage bizarre, mais la syntaxe est assez similaire à Smalltalk). Bon, c'est vrai que quand on a les paramètres "nommés" comme en Python, ça devient aussi pratique (même plus, puisqu'il n'y a pas d'ordre précis).

      • [^]Re: comparaison Rails vs Seaside

        Posté par Damien (page perso, ) le 03/04/2007 à 08:06. (lien). Évalué à 3.

        Si, il y a un ordre précis. Il faut définir plusieurs méthodes si tu veux avoir le choix: Par exemple Boolean implémente les deux #ifTrue:ifFalse: et #ifFalse:ifTrue:

      [^]Re: comparaison Rails vs Seaside

      Posté par Damien (page perso, ) le 03/04/2007 à 08:09. (lien). Évalué à 5.

      Ceci dit la syntaxe de Smalltalk est quand même un poil difficile a avaler quand on est habitué a la famille des langages C.

      Oui c'est sur, c'est vraiment insurmontable d'apprendre une syntaxe concise. Et puis C est tellement limpide pour manipuler des tableaux de pointeurs de fonctions...

      • [^]Re: comparaison Rails vs Seaside

        Posté par reno () le 03/04/2007 à 13:19. (lien). Évalué à 2.

        Pas insurmontable bien sur, mais je pense que tu sous-estime l'impact de la syntaxe, surtout quand on n'as pas beaucoup d'expérience..

        Je me souviens d'une introduction a Smalltalk quand j'étais étudiant, la syntaxe m'avait beaucoup géné, maintenant beaucoup moins..

        Mais n'utilisant pas Smalltalk quand je vois un extrait de code [] a la place de {}, ça me gêne du point de vue lisibilité, certes on doit s'y habituer rapidement mais cela ne permet pas de comparer deux extraits de codes facilement..

        • [^]Re: comparaison Rails vs Seaside

          Posté par Damien (page perso, ) le 03/04/2007 à 20:18. (lien). Évalué à 3.

          Je me souviens d'une introduction a Smalltalk quand j'étais étudiant, la syntaxe m'avait beaucoup géné, maintenant beaucoup moins..

          Oui, pense à la première fois ou tu as vu du Java ou du C... est-ce qu'on met un ; après une classe, un typedef ? Dans un typedef, celui qu'on définit c'est le premier ou le dernier ? Dans int* i,j,k; pourquoi j et k ne sont pas des pointeurs, etc etc

          En Smalltalk tu apprends une fois pour toutes les 3 types de messages, les blocs, et les différents littéraux et c'est fini.

      [^]Re: comparaison Rails vs Seaside

      Posté par Serge Stinckwich (page perso, ) le 04/04/2007 à 05:48. (lien). Évalué à 1.

      Je pense que ce n'est pas difficile de faire une syntaxe C/Java pour Smalltalk. Il y a tout ce qu'il faut pour le faire en terme de parseur notamment. Après je vois pas trop l'intérêt ... Tu vas écrire {} au lieu de [] pour représenter des blocs ? Mais tu peux envoyer des messages aux blocs Smalltalk, comment vas tu écrire cela ?

      Essayons :

      [3+4. Date today] value.

      devient :

      {3+4; Date.today();}.value();

      Tu pense que c'est plus clair ?

      • [^]Re: comparaison Rails vs Seaside

        Posté par reno () le 04/04/2007 à 07:57. (lien). Évalué à 2.

        > [3+4. Date today] value.
        vs
        > {3+4; Date.today();}.value();

        Il me semble que ça devrait être:
        [3+4. ^Date today] value.
        {3+4; ^Date.today();}.value();
        Enfin je pense, je ne m'y connais pas beaucoup en Smalltalk..

        Mais oui, pour moi habitué au C/C++, c'est vraiment beaucoup plus simple de lire la deuxième version que la première..

        • [^]Re: comparaison Rails vs Seaside

          Posté par Serge Stinckwich (page perso, ) le 04/04/2007 à 08:58. (lien). Évalué à 2.

          Le ^ n'est pas nécessaire dans ce cas la.
          Je suis d'accord avec toi que l'on n'aime pas changer ses habitudes ... cela veut dire que tous les langages que nous allons utiliser dans le futur devront tous avoir une syntaxe proche de celle de C ... c'est un peu triste comme perspectives ...

          C'est comme les étudiants d'informatique d'aujourd'hui, ils ne connaissent plus qu'une syntaxe (C), qu'un langage de programmation (Java) ... exit Ocaml, Prolog, Lisp, Haskell, Smalltalk, ADA, etc ... c'est la mono-culture, donc forcemment cela appauvrit les esprits.

          [^]Re: comparaison Rails vs Seaside

          Posté par Serge Stinckwich (page perso, ) le 04/04/2007 à 09:31. (lien). Évalué à 3.

          En ce qui concerne la différence entre la syntaxe de Smalltalk vs celle de C, vous pouvez lire avec intérêt le billet suivant : http://onsmalltalk.com/programming/smalltalk/why-smalltalk/

          En fait, ce qui est important dans Smalltalk ce n'est pas la syntaxe, c'est l'environnement. Il faut le pratiquer pour le comprendre et pas uniquement lire des bouts de code sur du papier.

          L'exemple qu'il prend est le suivant :

          - avec une syntaxe C :

          Window window = new Window(0, 0, 800, 600);

          - avec une syntaxe Smalltalk :

          window := Window top: 0 left: 0 width: 800 height: 600.

          C'est beaucoup plus expressif en Smalltalk qu'en C. On comprend en ST que les 4 paramètres sont la position de la fenêtre, sa largeur et sa longueur. C'est impossible avec la syntaxe C/Java, il faut aller voir le code du constructeur pour connaiître la signification des paramètres.

          • [^]Re: comparaison Rails vs Seaside

            Posté par reno () le 04/04/2007 à 12:26. (lien). Évalué à 3.

            Je ne dis pas que la syntaxe du C est meilleure que celle de Smalltalk juste que malgrès sa "clarté" pour toi, la syntaxe Smalltalk n'est pas si évidente..
            Une syntaxe hybride serait bien plus lisible pour les gens habitués au C que du pur Smalltalk, par exemple:

            window := Window.new(top:0 left:0 width:800 height:600);

            • [^]Re: comparaison Rails vs Seaside

              Posté par Serge Stinckwich (page perso, ) le 04/04/2007 à 12:43. (lien). Évalué à 3.

              Oui, je suis conscient que c'est pas facile de sortir de ce que l'on connait. Il est difficile de se mettre dans la peau d'un débutant Smalltalk. Mais pour un débutant en informatique, la syntaxe C ne devrait pas sembler plus difficile que celle de Smalltalk.

              C'est clair que c'est pas difficile de communiquer :
              - les Smalltalkiens ne comprennent pas pourquoi il faudrait compliquer leur syntaxe pour se faire comprendre des Cistes,
              - les Cistes ne comprennent pas pourquoi il leur faudrait apprendre une autre syntaxe que celle du C.

              [^]Re: comparaison Rails vs Seaside

              Posté par Fernandes Hilaire (page perso, ) le 04/04/2007 à 12:53. (lien). Évalué à 4.

              L'être humain est ainsi fait qu'il résiste naturellement aux changements, c'est sans doute lié à l'esprit de survie, c'est somme toute salutaire, et cela s'applique à chacun de nous.

              L'approche d'un nouveau langage passe donc par les mêmes mécanismes : c'est différent de ce que je connais, cela implique donc un coût d'apprentissage d'initial. Il s'agit donc d'évaluer le ratio coût/bénéfice.

              Avant de m'essayer à Smalltalk, j'ai pratiqué du C/C++ pendant des années (cf. le logiciel libre de géométrie Dr.Geo). Ce que j'ai pu constater en pratiquant Smalltalk c'est qu'il y a un changement de plan conceptuel sur la façon d'aborder le processus de développement. Cela ne veut pas dire que c'est plus compliqué, au contraire tout est globalement plus simple, accessible et compréhensible avec Smalltalk, il y a simplement un changement de plan conceptuel. D'un point de vu qualitatif, cela m'a permis d'apprendre beaucoup et beaucoup plus facilement/vite.

              A propos de l'intelligence augmentée avec des dispositifs informatiques, Doug Engelbart -- l'inventeur de la souris -- fait une comparaison intéressante: il est très facile de faire du vélo avec un tricycle, en revanche avec une bicyclette c'est plus difficile au départ, mais une fois maîtrisée la bicyclette permet d'aller plus vite et plus loin. C'est la même chose avec Smalltalk.

              • [^]Re: comparaison Rails vs Seaside

                Posté par Damien (page perso, ) le 04/04/2007 à 13:57. (lien). Évalué à 1.

                Oui et c'est plus facile d'apprendre avec un outil simple et minimaliste même s'il semble contre-intuitif au premier abord, qu'avec l'outil final plus de l'assistance.

                Pour reprendre la métaphore de l'apprentissage du vélo, ce qui est dur c'est de prendre assez de vitesse pour avoir le temps de mettre les pieds sur les pédales et ensuite essayer de garder l'équilibre. Donc en général on ajoute des roulettes... mais du coup l'enfant apprend à pédaler mais pas à tenir l'équilibre.

                Si au contraire on prend un vélo sans roulettes, et qu'on enlève les pédales (une draisienne), c'est très facile de courir et de se laisser rouler ou de profiter des descentes. L'apprentissage est plus progressif, plus drôle, et une fois l'équilibre acquis c'est immédiat de gérer les pédales.

                roulettes -> IDE, typage, public static void synchronized {}; etc
                draisienne -> syntaxe minimaliste, modèle objet avec l'essentiel et pas de bruit (et on remet les pédales en abordant le test unitaire, les refactorings et la métaprogrammation :-)