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

: Ocsigen 1.0.0 : une nouvelle approche de la programmation Web

Posté par Vincent Balat (). Modéré le 09 avril 2008.
Ocsigen est un projet de recherche visant à développer de nouvelles techniques de programmation Web. Il a abouti après plus de trois ans de travail à l'implémentation d'un serveur Web complet et extensible, et d'un module pour programmer des sites dynamiques en utilisant des concepts de haut niveau. Parmi les fonctionnalités-clés, notons :
  • la garantie que les pages générées sont en xhtml valide ;
  • le typage des formulaires et des paramètres ;
  • une gestion simplifiée de l'interaction Web à l'aide de concepts dédiés (continuations, etc.).
Ceci est rendu possible par le choix du langage Objective Caml, pour son expressivité et son système de types. Cette version 1 clôt une première phase de développement. Le projet cherche maintenant des contributeurs et développeurs de sites.

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

Vous avez demandé le commentaire #921032.

Interessant mais...

Posté par pasBill pasGates () le 09/04/2008 à 07:06. (lien). Évalué à 6.

C'est un concept effectivement assez original, mais je me demandes un peu comment vous ce systeme va etre "vendu" aux gens qui font aujourd'hui du dev. web.

Le gars qui programme en PHP/ASP/JSP/... qui ne connait rien a OCaml, qui utilise Apache/IIS, qui utilise un validateur XHTML pour tester ses pages, il a quoi comme raison d'investir un temps non negligeable a changer de serveur web, apprendre un nouveau langage et potentiellement refaire son site ouaib ?

De ce que je vois(mais je peux me tromper, le dev web c'est pas mon truc, et OCaml encore moins), le truc principal qu'il gagne c'est le test de liens automatique, le reste existe deja a peu pres meme si ce n'est pas un tout unifie.

J'ai peut-etre rate un truc, mais il me semble que ca tient plus de l'exercice de style que du soft pouvant reellement changer les choses du point de vue dev. web.

  • [^]Re: Interessant mais...

    Posté par let antibarbie = xp <- xp - 1 (page perso, ) le 09/04/2008 à 08:04. (lien). Évalué à 4.

    Interessant mais.... si si c'est pas si mal de pouvoir faire du développement web avec une approche plus fortement typée, et d'avoir un langage fonctionnel aussi puissant sous la main c'est un atout indéniable. Peut être pas pour tout de suite en production sur des gros sites... mais sait-on jamais. Il leur faudra d'abord améliorer la connectivité SGBD (c'est un des points de développement).

    Et aussi... enfin un bon gros projet qui met en avant la puissance d'OCAML !

    C'est un peu comme de nos jours (attention je m'auto-flagelle, mais je vais dire du bien d'un produit M$) le developpement web avec C# c'est pas si mal que ça, car c'est un langage de "haut niveau" loin des atrocités d'un développement ASP. Là ils proposent de mettre la barre encore plus haut (même s'ils en sont encore loin).... Mais microsoft va-t-il sortir un jour ASP.NET for F#, pour concurrencer ocsigen ??

    Je pense qu'Ocsigen mérite d'être creusé un peu plus, mais leur site web n'est pas pas assez vendeur AMHA.

    signé,
    Un adepte du Ocaml, qui malheureusement développe en C++/C#/Delphi et autres co..... pour être payé à la fin du mois.

    • [^]Re: Interessant mais...

      Posté par TImaniac (page perso, ) le 09/04/2008 à 10:41. (lien). Évalué à 1.

      Mais microsoft va-t-il sortir un jour ASP.NET for F#, pour concurrencer ocsigen ??
      Ben c'est déjà possible :)
      http://tomasp.net/articles/aspnet-fsharp-intro.aspx
      C'est quand même le but de .NET de pouvoir partager le même framework (web ou autre) entre plusieurs langages...
      Et puis bon avec C# 3 on peut déjà faire pas mal de fonctionnel ;)

    [^]Re: Interessant mais...

    Posté par kaouete (page perso, ) le 09/04/2008 à 08:07. (lien). Évalué à 4.


    De ce que je vois(mais je peux me tromper, le dev web c'est pas mon truc, et OCaml encore moins), le truc principal qu'il gagne c'est le test de liens automatique, le reste existe deja a peu pres meme si ce n'est pas un tout unifie.


    Je pense que ça va plus loin que ça, ce ne sont pas juste les liens, mais les pages qui sont valides xhtml, tout comme ton compilateur C# te certifie qu'il n'y aura pas d'erreur avec les affectations de variable grâce au typage statique.

    Et justement, en plus, ça apporte un typage statique qui evite beaucoup d'erreur de programmation. Surtout que le typage de OCaml est un typage à inférence, donc pas besoin de déclarer *tout* les types pour chaque variable :)
    (enfin j'm'y connais pas super bien en OCaml non plus, c'est peut-être pas exactement ça :)


    J'ai peut-etre rate un truc, mais il me semble que ca tient plus de l'exercice de style que du soft pouvant reellement changer les choses du point de vue dev. web.

    Au contraire, je pense que ça prépare des changements possibles. Si personne ne recherche de nouvelles idées pour la programmation web, alors on avancera jamais. Peut-être que celle-ci ne percera pas, mais il y en aura peut-être une autre qui s'appuiera dessus.

    Bien sur personne en entreprise n'utilise vraiment tout les vieux et nouveaux langages de recherche, mais ça n'empêche pas que même C# va y récupérer des trucs (exemple : delegates et le lambda calcul).

    À mes yeux ce concept est super, et j'espère qu'il va intéresser des contributeurs :)

    [^]Re: Interessant mais...

    Posté par desfrenes () le 09/04/2008 à 08:09. (lien). Évalué à 3.

    C'est vrai que le gain ne saute pas aux yeux, il faut sans doute creuser plus.

    # la garantie que les pages générées sont en xhtml valide ;

    Une garantie de quel genre ? Du genre qui corrige les erreurs toute seule ou du genre qui ne laisse pas passer le code non valide ? En tout cas la documentation est moins catégorique que ça:

    "Eliom uses an advanced type system that guarantees that your web site will be valid (or very close)."

    Very close ?

    # le typage des formulaires et des paramètres ;

    La différence avec une classe de validation de formulaire ? (Formol, Zend_Form, etc)

    # une gestion simplifiée de l'interaction Web à l'aide de concepts dédiés (continuations, etc.).

    Il y aurait besoin d'explication sur ce concept de "Continuation-based Web programming".

    "Today, most web sites are written using old technologies, such as CGI scripts or (untyped) scripting languages embedded in html."

    J'ose espérer que ça appartient déjà au passé... à part les indécrottables...

    "Eliom considers each URL as a function taking arguments and producing a web page."

    Tout comme la majorité des frameworks web. (http://monsite/monModule/monController/methode/arg1/arg2)

    à quel type d'ORM Ocsipersist appartient ?

    • [^]Re: Interessant mais...

      Posté par kaouete (page perso, ) le 09/04/2008 à 08:33. (lien). Évalué à 3.

      Un élément de réponse :

      # le typage des formulaires et des paramètres ;
      La différence avec une classe de validation de formulaire ? (Formol, Zend_Form, etc)

      La différence c'est que la validation de formulaire c'est usine à gaz, avec OCaml c'est fait à la compilation par le compilateur.

      [^]Re: Interessant mais...

      Posté par Vivi (page perso, ) le 09/04/2008 à 09:17. (lien). Évalué à 3.

      Il y aurait besoin d'explication sur ce concept de "Continuation-based Web programming".

      cf. http://en.wikipedia.org/wiki/Continuation#Continuations_in_W(...)

      • [^]Re: Interessant mais...

        Posté par desfrenes () le 09/04/2008 à 09:26. (lien). Évalué à 0.

        Merci ! :-)

      [^]Re: Interessant mais...

      Posté par smc () le 09/04/2008 à 11:24. (lien). Évalué à 1.

      # la garantie que les pages générées sont en xhtml valide ;

      Une garantie de quel genre ? Du genre qui corrige les erreurs toute seule ou du genre qui ne laisse pas passer le code non valide ?


      Ben le typage valide XHTML/XML est garanti parce qu'il utilise le système de types d'OCaml qui est prouvé mathématiquement. Qui dit typage XML valide dit document XML bien formé (dans ce cas, c'est XHTML). Qu'est-ce que tu crois que ça veut dire "garantir"?

      Une page générée par une application utilisant Eliom ne peut pas être non conforme au schéma de XHTML, et c'est une propriété prouvée et statique quand tu compiles ton application. C'est quelque chose de plus dont le développeur n'a pas à se soucier... tout comme en OCaml le programmeur n'a pas à se soucier de segfaults, alors qu'en C, il peut les éviter mais ce n'est pas une propriété du langage (ou d'un subset utilisable dans 99% des programmes).

      • [^]Re: Interessant mais...

        Posté par benja () le 09/04/2008 à 13:02. (lien). Évalué à 3.

        Eliom (en fait le module XHTML.M) ne permet pas de faire un "typage XML" à propremment parler, mais il utilise les types polyvariants d'ocaml qui permettent de construire une représentation d'une structure hierarchique "à la xml", tout en empêchant l'imbrication d'éléments incompatibles. Donc il est impossible de construire des documents non valides (sans tricher). Mais est-ce qu'il est possible de constuire tous les documents valides ou la structure de XHTML.M est plus rigide que la norme xhtml ? (Vincent ?).

        Par contre, si l'on désire un "vrai" typage xml, ocsigen (ou plutot Eliom) permet de s'interfacer avec ocamlduce* qui permet alors de tirer parti d'un typage xml. Il devient alors super facile de générer, lire ou transformer n'importe quel type de document xml, avec la sûreté d'un typage statique à la compilation ! Ce point est peu mis en avant mais c'est un "must" à mon sens.

        *: ocamlduce est une fusion du compilateur ocaml avec CDuce qui est une implémentation du langage XDuce en ocaml. Cela augmente le language ocaml "d'expressions XML" tout en restant pleinement compatible avec ocaml. cf. http://www.cduce.org/ocaml.html

        • [^]Re: Interessant mais...

          Posté par Vincent Balat () le 09/04/2008 à 13:41. (lien). Évalué à 3.

          Mais est-ce qu'il est possible de constuire tous les documents valides ou la structure de XHTML.M est plus rigide que la norme xhtml ? (Vincent ?).

          XHTML.M permet de construire n'importe quel document xhtml valide. Il vérifie l'imbrication des balises (pas possible de mettre un <p> dans un <head> par exemple). Il impose la présence des balise obligatoires (<head> doit contenir un <title> par exemple, ou encore : une table doit contenir au moins une ligne). En revanche certaines petites choses ne sont pas vérifiées (par exemple on peut mettre deux fois le même attribut, ou bien un lien peut contenir un texte qui contient un autre lien). En général ce typage est très largement suffisant.

          Eliom laisse le choix du module de sortie, et on peut aussi utiliser aussi OcamlDuce, qui comme tu le dis, est la solution propre. Cela permet d'utiliser d'autres formats de sortie XML, et en plus de la vérification du xml généré, il permet de faire du filtrage (pattern matching) sur des documents xml entrants (résultats d'une requête faite par le serveur à un autre serveur par ex). Défauts : la syntaxe est un peu plus lourde et il faut s'habituer au système de type (mais ça vient vite).

          Parmi les utilisateurs d'Eliom, certains utilisent XHTML.M, d'autres OCamlDuce (à peu près à égalité). Je n'ai jamais vu personne utiliser la sortie texte non typée.

        [^]Re: Interessant mais...

        Posté par desfrenes () le 09/04/2008 à 14:59. (lien). Évalué à 1.

        fort bien... mais alors pourquoi seulement "very close" ?

        • [^]Re: Interessant mais...

          Posté par smc () le 09/04/2008 à 15:17. (lien). Évalué à 2.

          Vincent Balat a répondu juste à côté...

    [^]Re: Interessant mais...

    Posté par FantastIX () le 09/04/2008 à 12:25. (lien). Évalué à 2.

    Je suis rassuré de voir bien des efforts consacrés à la validité des pages car c'est un point qui m'a toujours agacé profondément, par exemple, lorsque je vois des sites avec un logo [X]HTML et que le code est particulièrement médiocre (pour rester poli). La pierre ne doit pas forcément être jetée au développeur ou à l'outil mais j'ai déjà abordé plusieurs produits et aucun [de ceux que j'ai évalués] ne permet [d'emblée] de renforcer ni de mettre l'accent sur la conformité.

    En général on fait ce qu'on veut dans le code et les modèles, ce qui ouvre la porte à toutes les dérives. Le code généré n'est pas nécessairement nettoyé et c'est au développeur ou au rédacteur de prendre lui-même les dispositions adéquates. Et si le développeur n'est pas au courant qu'il doit nettoyer ses pages et améliorer la conformité... D'autant que bien des outils sont faits pour que n'importe qui puisse concevoir ou modifier du contenu en deux temps/trois mouvements, sans qu'aucune connaissance ne soit nécessaire.

    Vite fait... mal fait bien souvent.

    On ne peut décemment exiger de chaque intervenant sur un site Internet qu'il connaisse parfaitement les contraintes à respecter. On ne peut demander à tous les rédacteurs ou à tous ceux qui pourraient intervenir dans la gestion de contenu d'une entreprise, par exemple, de connaître toutes ces choses-là.

    Ici, c'est le soft qui garantit la conformité. On ne pouvait rêver mieux.