<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>Denis Dollfus' Blog</title>
    <link rel="alternate" type="text/html" href="http://www.ergotinfo.fr/architecture/" />
    <link rel="service.post" type="application/x.atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=295713" title="Denis Dollfus' Blog" />
    <id>tag:typepad.com,2003:weblog-295713</id>
    <updated>2012-11-11T16:17:05Z</updated>
    <subtitle>Commentaires sur le software. On y glose, on y ergote...</subtitle>

    <generator uri="http://www.typepad.com/">TypePad</generator>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/typepad/DenisDollfus/EcosystemInfo" /><feedburner:info uri="typepad/denisdollfus/ecosysteminfo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
        <title>Conversion C# vers JavaScript, l'embarras du choix</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/DenisDollfus/EcosystemInfo/~3/r9en5RjYyPU/conversion-c-vers-javascript-lembarras-du-choix.html" />
        <link rel="service.edit" type="application/x.atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=295713/entry_id=6a00d8341c871f53ef017d3d84abf9970c" title="Conversion C# vers JavaScript, l'embarras du choix" />
        <id>tag:typepad.com,2003:post-6a00d8341c871f53ef017d3d84abf9970c</id>
        <published>2012-11-11T17:17:05+01:00</published>
        <updated>2012-11-11T16:17:05Z</updated>
        <summary>"L'art du langage JavaScript", lit-on sur ce bouquin qui n'a presque rien à voir. Dans l'élan de l'ouverture open-source de Reactive Extensions, Microsoft a aussi ouvert le convertisseur IL2JS du feu projet Volta. Ce qui nous laisse côté .NET avec...</summary>
        <author>
            <name>DenisDollfus</name>
        </author>
        <category term=".Net" />
        <category term="GWT" />
        <category term="JavaScript" />
        <category term="Microsoft" />
        <category term="Script#" />

    <content type="xhtml" xml:lang="fr-FR" xml:base="http://www.ergotinfo.fr/architecture/"><div xmlns="http://www.w3.org/1999/xhtml"><p> </p>
<div class="asset-img-link" style="float: right; width: 246px; margin: 3px;"><img alt="The_Art_Of_Javascript_Language" border="0" class="asset  asset-image at-xid-6a00d8341c871f53ef017ee4fa5f4b970d" src="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef017ee4fa5f4b970d-800wi" style="margin: 0px 0px 5px 5px;" title="The_Art_Of_Javascript_Language" />
<br />"L'art du langage JavaScript", lit-on sur ce bouquin qui n'a presque rien à voir.</div>
<p>
Dans l'élan de l'ouverture open-source <a href="http://blogs.msdn.com/b/interoperability/archive/2012/11/06/ms-open-tech-open-sources-rx-reactive-extensions-a-cure-for-asynchronous-data-streams-in-cloud-programming.aspx" target="_self">de Reactive Extensions</a>, Microsoft a aussi ouvert le <a href="https://github.com/Reactive-Extensions/IL2JS" target="_self">convertisseur IL2JS</a> du <a href="http://www.ergotinfo.fr/architecture/2009/09/hommage-comm%C3%A9moration-du-premier-anniversaire-de-la-disparition-de-volta.html" target="_self">feu projet Volta</a>. </p>
<p>Ce qui nous laisse côté .NET avec un large choix d'outils destinés à permettre le développement en C# de ce qui tournera en JavaScript. Ces outils s'appuient sur l'idée que JavaScript est le langage assembleur du Web -- omniprésent mais difficile à maitriser -- et qu'il vaut mieux travailler avec des outils plus simples et plus productifs, à l'image des services rendus par C et C++.</p>
<p> </p>
<ul>
<li><strong><a href="http://www.typescriptlang.org/" target="_self">TypeScript</a>.</strong> La voie officielle soutenue par MS, dévoilée <a href="http://blogs.msdn.com/b/somasegar/archive/2012/10/01/typescript-javascript-development-at-application-scale.aspx" target="_self">début octobre</a>. C'est un nouveau langage qui étend JavaScript et lui donne les qualités des langages typés. Revers de la médaille, il ne permet pas d'exploiter du code C# existant. Open-source, <a href="https://typescript.codeplex.com/" target="_self">sur CodePlex</a>.</li>
</ul>
<br />
<ul>
<li><strong><a href="http://scriptsharp.com/" target="_self">Script#</a>.</strong> Le plus ancien, couvre beaucoup de libs Javascript, et bénéficie de contributions telles que <a href="https://github.com/igochkov/ScriptSharpJQueryUI" target="_self">jQuery UI</a> ou <a href="http://extsharp.codeplex.com/" target="_self">Ext JS</a>. Open-source <a href="https://github.com/nikhilk/scriptsharp" target="_self">sur GitHub</a>. Je l'ai mis en oeuvre plusieurs fois avec succès, notament pour <a href="http://www.ergotinfo.fr/architecture/2007/10/silverlight-10-.html" target="_self">gagner en productivité</a> sur la première version de Silverlight qui ne supportait que JavaScript.</li>
</ul>
<br />
<ul>
<li><strong><a href="http://sharpkit.net/" target="_self">SharpKit</a></strong>. Offre commerciale assez complète. Supporte un nombre impressionnant de librairies JavaScript (Ext JS, Rx, jQuery, SensaTouch) ainsi que le debugging dans les sources C# grâce au <a href="http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/?redirect_from_locale=fr" target="_self">"source mapping"</a> de Chrome, tout comme TypeScript.</li>
</ul>
<br />
<ul>
<li><strong><a href="https://github.com/Reactive-Extensions/IL2JS" target="_self">IL2JS</a>.</strong> Rescapé de MS Volta, permet de faire tourner le même code (C# ou autre, puisque l'input est en MSIL) dans la machine virtuelle .NET ou dans le browser.</li>
</ul>
<br />
<ul>
<li><strong><a href="http://jsil.org/" target="_self">JSIL</a></strong>, que je découvre en écrivant ce post, assez proche de IL2JS dans son principe. Propose quelques démos en ligne qui démontrent sa puissance, dont les jeux <a href="http://www.playescapegoat.com/" target="_self">Escape Goat</a> et <a href="http://hildr.luminance.org/RPG/RPG.html" target="_self">XNA 4 RPG Starter Kit</a>.</li>
</ul>
<br />
<ul>
<li><strong><a href="https://github.com/vannatech/blade" target="_self">Blade</a></strong>, découvert aussi pour l'occasion. Sans doute un des plus récents de cette famille d'outils, c'est un addon Visual Studio qui convertit le code C# en (tenez-vous bien) JavaScript.</li>
</ul>
<p>Et plus éloigné de l'écosystème .NET, on trouve bien sûr Dart, GWT et CoffeeScript pour les plus célèbres. </p>
<p>Mais cette petite liste n'est rien comparée aux plus de deux cents outils de génération JavaScript recensés <a href="https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS" target="_self">sur cette page</a> !</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/typepad/DenisDollfus/EcosystemInfo/~4/r9en5RjYyPU" height="1" width="1" /></div></content>



    <feedburner:origLink>http://www.ergotinfo.fr/architecture/2012/11/conversion-c-vers-javascript-lembarras-du-choix.html</feedburner:origLink></entry>
    <entry>
        <title>La Fable Du Scrumier</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/DenisDollfus/EcosystemInfo/~3/pZ9LLgR1obc/la-fable-du-scrumier.html" />
        <link rel="service.edit" type="application/x.atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=295713/entry_id=6a00d8341c871f53ef015391ff17bb970b" title="La Fable Du Scrumier" />
        <id>tag:typepad.com,2003:post-6a00d8341c871f53ef015391ff17bb970b</id>
        <published>2011-10-01T17:27:49+02:00</published>
        <updated>2011-10-01T15:26:35Z</updated>
        <summary>Adpatation françoise de Flaccid Scrum. (Connoisseurs et amateurs de poésie, passez votre chemin...) O -- o -- o -- O Maître Saint-Gueuleton, artisan logicier, Contemplait rayonnant sa troupe d’apprentis : Depuis qu’au mode Scrum il avait consenti, Sa fabrique de...</summary>
        <author>
            <name>DenisDollfus</name>
        </author>
        <category term="Agile" />
        <category term="Scrum" />

    <content type="xhtml" xml:lang="fr-FR" xml:base="http://www.ergotinfo.fr/architecture/"><div xmlns="http://www.w3.org/1999/xhtml"><div>Adpatation françoise de <a href="http://martinfowler.com/bliki/FlaccidScrum.html" target="_self">Flaccid Scrum</a>.</div>
<div>(Connoisseurs et amateurs de poésie, passez votre chemin...)</div>
<div>  <a href="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef014e8bf33225970d-pi" style="float: right;"><img alt="Pig" border="0" class="asset  asset-image at-xid-6a00d8341c871f53ef014e8bf33225970d" src="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef014e8bf33225970d-800wi" style="margin: 0px 0px 5px 5px;" title="Pig" /></a></div>
<div>                     O -- o -- o -- O</div>
<div> </div>
<div>Maître Saint-Gueuleton, artisan logicier, <br />Contemplait rayonnant sa troupe d’apprentis :<br />Depuis qu’au mode Scrum il avait consenti, <br />Sa fabrique de code lui semblait s'apprécier.<br /><br />“Fini l’odieux brouillard, supprimé le tunnel,<br />Ce long chemin qui part d’un monceau fonctionnel.<br />Les Stories validées par notre clientèle,<br />Apaisent l’acheteur redevenu fidèle.<br />Les causeries du jour et les courses sans fin<br />Assurent le labeur des techos au parfum.<br />Enfin qu’il est plaisant de voir ces rastaquouères<br />Accablés dans l’effort a forger du softouère!”<br /><br />Savourant son plaisir, jaugeant les retombées,<br />Notre ami satisfait soudain fut bouche bée.<br /><br />D’une grande pagaille au fond de l’atelier<br />S'éleva l’expression d’un intense courroux :<br />“Par Chuck ! Il suffit, céans je file au Pérou !<br />Le fouillis a gagné, je rends mon tablier !”<br /><br />Le scrumier, très surpris, de précisions s’enquit :<br />“L’ouvrage est fragile et le code... quel foutoir !<br />Comment oeuvrer serein dans ce vrai champ de foire<br />Qui s'accroît en dépit des rites du Wiki ?<br /><br />L’addition cadencée de fonctionnalités<br />Provoque malgré nous régressions et naufrages<br />Si bien que nos efforts se vouent au colmatage<br />Hélas, point au concours de valeur ajoutée.”<br /><br />Le scrumier assommé compris alors que Scrum<br />Pouvait fort bien rimer avec capharnaüm.<br />Il se dit que fini, on ne l’y prendrait plus,<br />Le code vermoulu était bien révolu.</div>
<div>
<p dir="ltr">                              -- o --</p>
</div>
<div>A petits pas agiles dans de jolis souliers,<br />On peut bien trébucher dans la mare aux cochons.<br />Gare aux seules manières : adoptons aussi l’art<br />De nouer les lacets, ficelles du métier.<br /><br />Le point de tout software si on le veut pérenne,<br />Repose sur sa substance, ses forces souterraines.<br />Cachée des managers, la qualité du code<br />Fournit l’alliée majeure de toutes les méthodes.</div>
<div> </div>
<div>                      O -- o -- o -- O</div>
<div> </div>
<p> Alexandrins de rigueur dans les commentaires ;)</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/typepad/DenisDollfus/EcosystemInfo/~4/pZ9LLgR1obc" height="1" width="1" /></div></content>



    <feedburner:origLink>http://www.ergotinfo.fr/architecture/2011/10/la-fable-du-scrumier.html</feedburner:origLink></entry>
    <entry>
        <title>Le pair programming, est-ce pour vous ?</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/DenisDollfus/EcosystemInfo/~3/6bV7uWwK_oE/pair-programming-pour-vous.html" />
        <link rel="service.edit" type="application/x.atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=295713/entry_id=6a00d8341c871f53ef0133ecc48cc9970b" title="Le pair programming, est-ce pour vous ?" />
        <id>tag:typepad.com,2003:post-6a00d8341c871f53ef0133ecc48cc9970b</id>
        <published>2010-04-18T15:29:35+02:00</published>
        <updated>2011-09-25T18:26:22Z</updated>
        <summary>Parmi les pratiques d'une des méthodes agiles les plus répandues, eXtreme Programming (XP), la programmation en binôme est sans doute l'une des plus contestée : les managers voient à coup sûr ce qu'ils y perdent (de l'argent), plus difficilement ce...</summary>
        <author>
            <name>DenisDollfus</name>
        </author>
        <category term="Agile" />

    <content type="xhtml" xml:lang="fr-FR" xml:base="http://www.ergotinfo.fr/architecture/"><div xmlns="http://www.w3.org/1999/xhtml"><p>Parmi les pratiques d'une des méthodes agiles les plus répandues, eXtreme Programming (XP), la programmation en binôme est sans doute l'une des plus contestée : les managers voient à coup sûr ce qu'ils y perdent (de l'argent), plus difficilement ce qu'ils y gagnent.</p>
<p>Quel est donc le surcoût d'un travail en binôme, et qu'y gagne-t-on ?</p>
<p>Il existe pour y répondre des études quantitatives conduites méthodiquement, avec comparaison de tâches identiques menées soit en paire soit en solo. Je n'étudie ici qu'un petit sous-ensemble de ces articles, dans le but de comparer leurs conclusions avec ma propre expérience de ce mode de travail.</p>
<p>Synthèse à la fin du billet si vous êtes pressé...</p>
<p><strong>Laurie Williams, 2000</strong></p>
<p>La thèse de doctorat de Laurie Williams est inévitablement citée sur ce sujet de la productivité du pair programming. Son "Ph. D", <a href="http://collaboration.csc.ncsu.edu/laurie/Papers/dissertation.pdf" target="_blank">Collaborative Software Process</a>, présente et analyse les mesures de temps et de qualité pour des tâches de développement menées par 38 paires et 38 développeurs solos.</p>
<p>Laurie Williams montre ainsi que, passée une phase d'accommodation au travail en binôme ("team jelling"), le temps total consommé par un binôme n'est que 15% supérieure au temps passé par un développeur solo, au lieu du 100% attendu dans le cas ou une paire se comporte comme "un qui bosse, l'autre qui glande".</p>
<p>Mais en face de ce surcoût de 15%, le gain en qualité rapporté par l'auteur est de 15%. Pour le mesurer Laurie Williams a compté le nombre de tests réussis et constaté une nette différence entre programmes développés en paire et en solo.</p>
<p><a href="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef0134804a9ab6970c-pi" style="display: inline;"><img alt="These_Laurie_William_test_cases" border="0" class="asset asset-image at-xid-6a00d8341c871f53ef0134804a9ab6970c " src="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef0134804a9ab6970c-800wi" title="These_Laurie_William_test_cases" /></a> <br /> <small>Nombre de tests réussis sur quatre programmes développés soit en solo ("individuals"), soit en binôme ("collaborators"). Reproduction de <a href="http://collaboration.csc.ncsu.edu/laurie/Papers/dissertation.pdf" style="color: blue !important; text-decoration: underline !important; cursor: text !important;" target="_blank">Collaborative Software Process</a>, p. 61. En moyenne, une paire produit deux fois moins de bugs qu'un développeur solo.</small></p>
<p>C'est un résultat qui a marqué son époque (mais pas en France ?). Il est d'ailleurs cité dans un article de 2001 de The Economist (<a href="http://www.economist.com/displayStory.cfm?Story_ID=779429" target="_blank">Agility counts</a>) qui fait le point sur cette méthode de travail : </p>
<blockquote>"Laurie Williams de l'Université de L'Utah à Salt Lake City a montré que les développeurs en binômes sont seulement 15% plus lent que deux développeurs isolés, mais produisent 15% de bugs en moins. Comme les tests et le deboggage coûtent souvent beaucoup plus cher que le développement initial, ces résultats sont impressionnants."</blockquote>
<p>Mais n'en déplaise à The Economist, la formulation choisie par le journaliste est maladroite voire fausse. Il ne s'agit pas de "15% de bugs en moins" (formulation répétée de citations en citations sur le Web, <a href="http://en.wikipedia.org/wiki/Pair_programming" target="_self">Wikipedia inclus</a>), mais de 15% de tests qui passent en plus. Cette confusion est dommageable parce qu'elle occulte une formulation bien plus frappante : en comparant maintenant le nombre de bugs produits dans les deux modes de travail, il s'avère que <strong>les binômes produisent deux fois moins de bugs en moyenne !</strong></p>
<p>Juste en passant, on trouve dans le même article de The Economist cette petite phrase : </p>
<blockquote>
<p>"D'une certaine façon, le monde du logiciel est en retard pour adopter l'idée d'une innovation réactive et souple qui repose sur l'équipe."</p>
</blockquote>
<p>C'était il y dix ans...</p>
<p><strong>Lui et Chan, 2006</strong></p>
<p>Plus récemment, Lui et Chan ont cherché à comprendre l'effet de l'expérience des développeurs sur la productivité des paires. Leur publication, <a href="http://userweb.cs.utexas.edu/users/mckinley/305j/pair-hcs-2006.pdf" target="_blank">Pair programming productivity: novice-novice vs. expert-expert</a>, montre que le travail en paire est d'autant plus intéressant en regard de la productivité et de la qualité produite que l'objet du programme est nouveau et représente un défi pour les développeurs :</p>
<blockquote>"Une paire est beaucoup plus efficace que deux individus en termes de temps de livraison et peut concevoir une solution supérieure en termes de qualité et de maintenance quand le problème à résoudre est nouveau et que le design, les algorithmes et le codage demandent plus d'efforts."</blockquote>
<p>Plus loin, le corollaire est encore plus clair :</p>
<blockquote>"L'efficacité de la programmation en binôme chute quand les développeurs ont déjà travaillé sur un problème similaire et n'ont pas encore oublié cette expérience."</blockquote>
<p>Les chiffres : Lui et Chan montrent que plus les tâches sont faciles et routinières aux yeux des développeurs, et plus le coût de la paire tend vers deux fois le coût du développeur solo. Inversement, une tâche nouvelle, c'est-à-dire pour laquelle les développeurs qui s'y collent sont novices, ne coûte en paire que 29% plus cher qu'en solo. </p>
<p>En termes de délais de réalisation, les paires novices sont 1.5 fois plus rapides que les solos novices, alors que la différence de délai entre paires expertes et solo expert est insignifiante.</p>
<p>En somme Lui et Chan ont montré que le binômage n'apporte rien au travail de routine, dépourvu d'imprévu et de création, proche du travail à la chaine, pour lesquels la valeur créée croît linéairement avec l'effort consenti. A l'inverse, les tâches plus innovantes, qui surprennent par des difficultés inattendues, plus proches du bureau d'étude que de l'usine logicielle, bénéficieront des échanges entre binômes, et plus généralement du travail en équipe.</p>
<p><img alt="Combine_Harvesters__366842a" border="0" class="asset asset-image at-xid-6a00d8341c871f53ef01347ff64912970c " src="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef01347ff64912970c-800wi" title="Combine_Harvesters__366842a" /><br /><span style="font-size: 11px;">Ceci n'est pas de l'ingéniérie logicielle.</span></p>
 
<p><strong>Vanhanen &amp; Lassenius, 2005</strong></p>
<p>Dans leur étude "<a href="http://www.soberit.hut.fi/jvanhane/pubs/licthesis_vanhanen.pdf" target="_blank">Effect of pair programming at the development team level: an experiment</a>", Jari Vanhanen et Casper Lassenius montrent, à partir d'un (trop) petit ensemble d'étudiants en informatique travaillant soit en binômes soit en solo sur des tâches de développement identiques, que :</p>
<ul>
<li>La productivité des paires est inférieure de 29% à la productivité des solos tant que le système à développer n'est pas maîtrisé. Elle devient supérieure de 5% après cette étape d'apprentissage.</li>
<li>Une paire produit moins de bugs que des développeurs solos.</li>
<li>Le pair programming amène à l'équipe un meilleure transfert de connaissance, chaque développeur d'une équipe en mode binôme maîtrisant plus de packages Java que les développeurs des équipes solo.</li>
</ul>
<p><strong>Erik Arisholm et al., 2007</strong></p>
<p>Le papier de Erik Arisholm et al., <a href="http://simula.no/research/se/publications/Arisholm.2006.2/simula_pdf_file" target="_blank">Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise</a>, est souvent cité comme argument contre la programmation en paire. De fait les mesures rapportées dans cette étude et les conclusions qui ont découlent ont de quoi secouer les plus convaincus :</p>
<blockquote>Les résultats de cette expérience ne confortent pas les hypothèses suivant lesquelles la programmation en binôme en général réduit le temps requis pour finir correctement les tâches ou augmente la proportion de solutions correctes. Au contraire, finir correctement une tâche requiert 84% de travail en plus.</blockquote>
<p>Dans les faits, Erik et son équipe ont étudié des tâches pour lesquelles le pair programming est coûteux. Il s'agit de tâches de maintenance (et non de développement), menées dans des conditions très différentes de la réalité du développement en paires : les quelques 300 développeurs découvrent en même temps le système à faire évoluer et le travail en binômes.</p>
<p>Mon interprétation :</p>
<ul>
<li>"Atterrir" sur un projet existant et y mener une tâche de maintenance (c'est le scénario de l'étude) est très différent du travail d'implémentation d'une nouvelle fonctionnalité sur un projet familier. La différence est qu'il y a une étape préalable de compréhension et d'apprentissage du nouveau système. Avant même de comprendre la tâche de maintenance qui nous est demandée, il nous faut explorer, parcourir les fichiers, comprendre l'organisation, cliquer sur un type et rechercher sa définition... Autant d'actions exploratoires propres à celui qui apprend, difficile à concilier avec une souris pour deux... Erik Arisholm et son équipe ont finalement retrouvé sur ce point de l'apprentissage les conclusions de Vanhanen &amp; Lassenius.</li>
<li>On n'est pas immédiatement opérationnel en programmation en binôme. Tous les développeurs qui ont l'habitude de travailler seul, ils sont nombreux, ont besoin d'une période d'adaptation allant de deux heures à plusieurs jours avant d'être efficace en paire. Il n'est pas évident, pour un travail qu'on pensait solitaire de devoir soudain se faire comprendre, écouter, débattre et argumenter sur des sujets aussi abstraits que ceux de la programmation. Il y a un temps d'adaptation (le "pair jelling" de la thèse de Laurie William) nécessaire au moins pour converger vers un vocabulaire commun qui n'est pas considéré dans cette étude.</li>
</ul>
<ol> </ol>
<p>Les conditions très précises de cette publication ont en tout cas permis d'identifier des situations où le pair programming est à déconseiller : pour des tâches de maintenance à mener à bien sur un logiciel inconnu, avec des développeurs habitué au travail en solo, les résultats ne seront pas bons. C'est une étape à dépasser pour récolter les bénéfices du travail en équipe.</p>
<p>Les auteurs montrent par ailleurs que pour des développeurs juniors, le travail en paire booste la qualité de 149% comparé au travail en solo, ce qui n'est pas le cas pour les développeurs confirmés ou seniors.</p>
<p><strong>Tentative de synthèse</strong></p>
<p>Il y aurait beaucoup d'autres études à analyser, mais il se dégage déjà de ces quelques articles des tendances qui me paraissent claires, confortées par ma propre expérience du travail en binôme.</p>
<ol>
<li>Le pair programming est très avantageux quand dans le compromis qualité/délais/coût, on recherche d'abord la qualité -- moitié moins de bugs d'après la thèse de Williams.</li>
<li>La pertinence du pair programming dépend de la complexité <span style="text-decoration: underline;">ressentie </span>des tâches : développements simples pour des juniors, complexes pour des seniors.</li>
<li>Les phases exploratoires, pendant lesquelles les ingénieurs découvrent un nouveau système, se prêtent mal au binômage. A moins d'une paire exceptionnellement fusionnelle, les méthodes de chacun pour aborder et comprendre un nouveau système sont rarement compatibles.</li>
</ol>
<p>A ces points j'ajoute une vertu certaine du pair programming, généralement reconnue par ceux qui l'ont pratiqué (Cf. <a href="http://research.microsoft.com/pubs/75108/esem-begel-2008.pdf" target="_self">cette étude</a>): le binômage favorise le partage des connaissances quelles qu'elles soient, depuis les raccourcis clavier jusqu'aux subtilités du programme développé, en passant par les patterns et anti-patterns, astuces diverses et bonnes pratiques professionnelles. En somme, le genre de partage de compétences qui existent dans tous les métiers du monde sauf en ingéniérie logicielle...</p>
<ol> </ol>
<p><strong> </strong></p>
<p>Et <em>a contrario</em>, le binômage perd de son intérêt quand :</p>
<p><strong> </strong></p>
<ul>
<strong>
<li><span style="font-weight: normal;">Les tâches sont répétitives, évidentes, ou simplement familières aux développeurs.</span></li>
<li><span style="font-weight: normal;">Les développeurs sont en phase d'exploration et de compréhension de l'existant.</span></li>
<li><span style="font-weight: normal;">Par manque de moyens, quand le financement du 15-30% de jour-homme supplémentaire est tout simplement impossible.</span></li>
<li><span style="font-weight: normal;">Quand la qualité du logiciel produit importe peu, par exemple parce qu'il s'agit d'un site Web évènementiel sans évolution attendue, ou parce que les maintenances évolutives et correctives seront facturées au client -- il y a des commerciaux particulièrement habiles.</span></li>
<li><span style="font-weight: normal;">Le management est satisfait de l'absence de management technique imposé aux ingénieurs, dont le mode de travail tend vers un equilibre naturel, le <a href="http://cowboyprogramming.com/2007/01/11/delving-into-cowboy-programming/" target="_self">Cowboy programming</a>, cararactérisé par une prime a la rétention d'information, une forte compétition interne et un encouragement a l'héroïsme qui donnent de bons resultats à court terme.</span></li>
</strong> 
</ul>
<p><strong> </strong></p>
<p> </p>
<p> </p>
<ul>
</ul>
<ul>
</ul><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/typepad/DenisDollfus/EcosystemInfo/~4/6bV7uWwK_oE" height="1" width="1" /></div></content>



    <feedburner:origLink>http://www.ergotinfo.fr/architecture/2010/04/pair-programming-pour-vous.html</feedburner:origLink></entry>
    <entry>
        <title>Silverlight franchit la barre des 50%</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/DenisDollfus/EcosystemInfo/~3/QKYINMF8W7s/silverlight-franchit-la-barre-des-50.html" />
        <link rel="service.edit" type="application/x.atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=295713/entry_id=6a00d8341c871f53ef0120a8a27a45970b" title="Silverlight franchit la barre des 50%" />
        <id>tag:typepad.com,2003:post-6a00d8341c871f53ef0120a8a27a45970b</id>
        <published>2010-02-16T16:52:00+01:00</published>
        <updated>2010-02-16T15:52:00Z</updated>
        <summary>D'après RIAStats, la part de navigateurs qui disposent de Silverlight dépasse très légèrement les 50%. Pour mémoire à cette époque l'année dernière le taux de pénétration de Silverlight approchait les 20%. Une grosse progression donc, mais rien qui soit en...</summary>
        <author>
            <name>DenisDollfus</name>
        </author>
        <category term="Silverlight" />

    <content type="xhtml" xml:lang="fr-FR" xml:base="http://www.ergotinfo.fr/architecture/"><div xmlns="http://www.w3.org/1999/xhtml"><p />D'après <a href="http://riastats.com/#" target="_blank">RIAStats</a>, la part de navigateurs qui disposent de Silverlight dépasse très légèrement les 50%. Pour mémoire à cette époque l'année dernière le taux de pénétration de Silverlight <a href="http://www.ergotinfo.fr/architecture/2009/02/silverlight-taux-de-p%C3%A9n%C3%A9tration.html">approchait les 20%</a>. <p />

<p /><center><img alt="Silverlight_2010_02" border="0" class="asset asset-image at-xid-6a00d8341c871f53ef0120a8a26ac0970b " src="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef0120a8a26ac0970b-800wi" style="margin: 0px 0px 5px 5px;" title="Silverlight_2010_02" /></center><p />

<p>Une grosse progression donc, mais rien qui soit en mesure de faire de l'ombre aux 97% de plugins Flash...</p>

<br />

<br />

<br />

<br /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/typepad/DenisDollfus/EcosystemInfo/~4/QKYINMF8W7s" height="1" width="1" /></div></content>



    <feedburner:origLink>http://www.ergotinfo.fr/architecture/2010/02/silverlight-franchit-la-barre-des-50.html</feedburner:origLink></entry>
    <entry>
        <title>Visual Studio 2010 et .Net 4 disponibles en version "candidate"</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/DenisDollfus/EcosystemInfo/~3/ERSRa9_r3xs/visual-studio-2010-et-net-4-disponibles-en-version-candidate.html" />
        <link rel="service.edit" type="application/x.atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=295713/entry_id=6a00d8341c871f53ef0128777d4330970c" title="Visual Studio 2010 et .Net 4 disponibles en version &quot;candidate&quot;" />
        <id>tag:typepad.com,2003:post-6a00d8341c871f53ef0128777d4330970c</id>
        <published>2010-02-09T14:12:31+01:00</published>
        <updated>2010-02-09T13:13:25Z</updated>
        <summary>C'est demain, le 10 février, que les versions pressenties pour être définitives de Visual Studio 2010 et de .Net 4 seront téléchargeables par tous. Dès aujourd'hui les bénéficiaires de souscriptions MSDN peuvent en bénéficier. Entre autres nouveautés, Visual Studio 2010...</summary>
        <author>
            <name>DenisDollfus</name>
        </author>
        <category term=".Net 4.0" />
        <category term="Actualité" />
        <category term="Azure" />
        <category term="F#" />
        <category term="Programmation fonctionnelle" />
        <category term="Visual Studio 2010" />

    <content type="xhtml" xml:lang="fr-FR" xml:base="http://www.ergotinfo.fr/architecture/"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef0120a87ac389970b-pi" style="float: right;"><img alt="VS2010" border="0" class="asset asset-image at-xid-6a00d8341c871f53ef0120a87ac389970b " src="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef0120a87ac389970b-800wi" style="margin: 0px 0px 5px 5px;" title="VS2010" /></a>  C'est demain, le 10 février, que les versions pressenties pour être définitives de Visual Studio 2010 et de .Net 4 seront téléchargeables par tous. Dès aujourd'hui les bénéficiaires de souscriptions MSDN peuvent <a href="https://msdn.microsoft.com/en-us/subscriptions/securedownloads/default.aspx" target="_blank">en bénéficier</a>.</p>

<p>Entre autres nouveautés, Visual Studio 2010 va apporter :</p><p /><ul>
<li>un peu de RAD en WPF via du databinding en mode drag &amp; drop;</li>
<li>F#, langage fonctionnel finalement baptisé Visual F#;</li>
<li>des aides intégrées au TDD;</li>
<li>des outils, notamment de débuggage, dédiés à la programmation parallèle</li>
<li>tout le nécessaire pour développer sur le nuage de Microsoft. </li>
</ul>
<p />

<p>Quant à .Net 4, les nouveautés sont légions, autant aller voir directement <a href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx" target="_blank">sur le blog de Scott</a> <a href="http://www.microsoft.com/presspass/exec/guthrie/" /><a href="http://www.microsoft.com/presspass/exec/guthrie/" target="_blank">Guthrie</a>, ou ce <a href="http://www.ergotinfo.fr/architecture/net_40/" target="_blank">petit résumé en français</a>.</p><p /><p /><ul>
<li>L'annonce de Scott : <a href="http://weblogs.asp.net/scottgu/archive/2010/02/08/vs-2010-net-4-release-candidate.aspx">http://weblogs.asp.net/scottgu/archive/2010/02/08/vs-2010-net-4-release-candidate.aspx</a></li>
<li>Point de départ pour les téléchargements : <a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx">http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx</a></li>
</ul>
<p />

<p />

<p />

<p />

<p /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/typepad/DenisDollfus/EcosystemInfo/~4/ERSRa9_r3xs" height="1" width="1" /></div></content>



    <feedburner:origLink>http://www.ergotinfo.fr/architecture/2010/02/visual-studio-2010-et-net-4-disponibles-en-version-candidate.html</feedburner:origLink></entry>
    <entry>
        <title>Emit Mapper copie plus vite qu'Automapper</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/DenisDollfus/EcosystemInfo/~3/5d2Ec1qfdDk/emit-mapper-copie-plus-vite-qu-automapper.html" />
        <link rel="service.edit" type="application/x.atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=295713/entry_id=6a00d8341c871f53ef012876b12dfd970c" title="Emit Mapper copie plus vite qu'Automapper" />
        <id>tag:typepad.com,2003:post-6a00d8341c871f53ef012876b12dfd970c</id>
        <published>2010-01-07T13:27:00+01:00</published>
        <updated>2010-01-07T22:11:53Z</updated>
        <summary>On a souvent besoin de copier les propriétés d'un objet en mémoire vers un autre, y compris entre des objets de types différents. (Si cette première phrase vous semble être en Na'vi, la suite confortera cette impression). En mode "quick...</summary>
        <author>
            <name>DenisDollfus</name>
        </author>
        <category term=".Net" />
        <category term="Actualité" />
        <category term="Open Source" />

    <content type="xhtml" xml:lang="fr-FR" xml:base="http://www.ergotinfo.fr/architecture/"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef012876b2da8b970c-pi" style="float: right;"><img alt="Codeplex-logo_3" border="0" class="asset asset-image at-xid-6a00d8341c871f53ef012876b2da8b970c " src="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef012876b2da8b970c-800wi" style="margin: 0px 0px 5px 5px;" title="Codeplex-logo_3" /></a>  On a souvent besoin de copier les propriétés d'un objet en mémoire vers un autre, y compris entre des objets de types différents. (Si cette première phrase vous semble être en Na'vi, la suite confortera cette impression). En mode "quick win", un petit bout de code qui recopie une par une les propriétés fonctionne très bien. </p><p>Oui, ça marche, mais, las, le résultat est fragile : vous le savez très bien, un jour quelqu'un, peut-être vous un vendredi soir à 21h (ah non pas vous), va ajouter une propriété sur ces objets et oublier d'ajouter aussi une ligne dans cette méthode de recopie. S'en suivra peu à peu la faillite du système : une corruption de la base de données, des transactions financières aberrantes, votre nom dans les journaux et un milliard d'Euros à rembourser de votre poche. La loi de Murphy n'aide pas, mais si vous aidez la loi de Murphy... Et encore je ne parle même pas d'une mise en production le <a href="http://fr.wikipedia.org/wiki/Fin_du_monde_en_2012" target="_blank">21 décembre 2012</a>... </p><p>Bref dans le cas présent le quick win est un big loss pour qui intègre le futur dans sa vision du monde.</p><p>Vous allez me dire que vous travaillez en mode Agile (pas Agile à la <a href="http://fr.wikipedia.org/wiki/M%C3%A9thode_Cou%C3%A9" target="_blank">sauce Coué</a>, mais le vrai mode Agile, celui qui se donne <a href="http://www.ergotinfo.fr/architecture/2009/01/d%C3%A9veloppeurs-d%C3%A9terminez-votre-niveau-dagilit%C3%A9.html" target="_blank">des moyens</a>) et que vos tests unitaires vous protègent. C'est tant mieux, mais si la vérification de la copie des objets est elle aussi manuelle, la nouvelle propriété ne sera probablement pas testée -- on a oublié de modifier la méthode, pourquoi penserait-on au test unitaire associé ? Et si jamais votre test est solide parce que vous avez eu la bonne idée d'utiliser les APIs de reflection pour l'implémenter, il est probable que vous allez employer la même ruse pour implémenter la méthode de recopie...</p><p>Bref, simplifiez-vous la vie, réinventez d'abord la roue parce que c'est amusant et formateur, puis choisissez un outil spécialisé qui marche mieux que le vôtre (désolé). </p><p>Emit Mapper est un de ces outils, et les premiers tests le présentent <strong><a href="http://emitmapper.codeplex.com/wikipage?title=Benchmark:%20EmitMapper%20vs%20Handwritten%20code%20vs%20AutoMapper&amp;referringTitle=Home" target="_blank">comme 400 fois plus rapide</a> (mais voir § ci-dessous) </strong>que son concurrent Automapper parce qu'il s'appuie sur la librairie Emit (code de recopie généré une seule fois) plutôt que sur les API de Reflection (chaque copie va déclencher les mêmes appels aux méthodes de reflection, quoiqu'il y a <a href="http://msdn.microsoft.com/en-us/magazine/cc163759.aspx" target="_blank">des astuces à connaitre</a>).</p><p><strong>Attention </strong>: comme l'a fait remarquer Romain dans les commentaires, Automapper utilise aussi Emit (depuis aout 2009). Peut-être que le benchmark date un peu, peut-être que l'auteur est optimiste <strong>(mais cf. ci-dessous)</strong>. Le chiffre 400 est donc à prendre avec le doute et le recul d'un scientifique qui lit une boîte de Chocapic. Si l'un de vous a le courage de comparer...</p><p><strong>Deuxième mise à jour</strong> : Vladimir Romanko, l'auteur d'Emit Mapper, vient d'expliquer dans les commentaires les raisons de cette différence impressionnante de performance. Il précise aussi que les benchmarks ont été écrits de façon impartiale, et que les mesures sont faciles à reproduire puisque les benchmarks font partie des sources.</p><p>Emit mapper fonctionne sous .Net, Mono et Silverlight. Il <a href="http://emitmapper.codeplex.com/" target="_blank">vient de sortir en version 1.0 sur Codeplex</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/typepad/DenisDollfus/EcosystemInfo/~4/5d2Ec1qfdDk" height="1" width="1" /></div></content>



    <feedburner:origLink>http://www.ergotinfo.fr/architecture/2010/01/emit-mapper-copie-plus-vite-qu-automapper.html</feedburner:origLink></entry>
    <entry>
        <title>Silverlight pour Linux - Moonlight - en version 2</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/DenisDollfus/EcosystemInfo/~3/Gvg9G0o_OGo/silverlight-pour-linux-moonlight-en-version-2.html" />
        <link rel="service.edit" type="application/x.atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=295713/entry_id=6a00d8341c871f53ef0128766356b6970c" title="Silverlight pour Linux - Moonlight - en version 2" />
        <id>tag:typepad.com,2003:post-6a00d8341c871f53ef0128766356b6970c</id>
        <published>2009-12-18T07:07:00+01:00</published>
        <updated>2009-12-18T06:07:00Z</updated>
        <summary>Moonlight 2 vient de sortir, annoncé par l'équipe Silverlight : "Moonlight 2 est compatible avec Microsoft Silverlight 2 et inclut quelques fonctionnalités de Silverlight 3, notamment le support des APIs Bitmap, les boites de dialogue de gestion de fichiers, les...</summary>
        <author>
            <name>DenisDollfus</name>
        </author>
        <category term=".Net" />
        <category term="Mono" />
        <category term="Moonlight" />
        <category term="Open Source" />
        <category term="Silverlight" />

    <content type="xhtml" xml:lang="fr-FR" xml:base="http://www.ergotinfo.fr/architecture/"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef012876631575970c-pi" style="float: right;"><img alt="Moonlight" border="0" class="asset asset-image at-xid-6a00d8341c871f53ef012876631575970c " src="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef012876631575970c-800wi" style="margin: 0px 0px 5px 5px;" title="Moonlight" /></a>  Moonlight 2 vient de sortir, annoncé par l'équipe Silverlight :</p><p />
<blockquote>"Moonlight 2 est compatible avec Microsoft Silverlight 2 et inclut quelques fonctionnalités de Silverlight 3, notamment le support des APIs Bitmap, les boites de dialogue de gestion de fichiers, les fonctions de transition (easing functions), la chaîne de traitement multimedia et les codecs personnalisés. Moonlight offre de meilleurs débits multimedia grâce à la prise en compte de la qualité de la connexion de l'utilisateur. De surcroit, cette version comprend des fonctionnalités du runtime Mono, ce qui permet aux applications RIA d'être développées pour Linux avec C#, Ruby, Python et Javascript."</blockquote><blockquote><br /></blockquote>
<p>Pour mémoire, Moonlight fait partie du projet Mono porté par Novell en collaboration avec Microsoft, et Mono, vous le savez, c'est .Net pour Linux, Mac OS X, iPhone OS, Sun Solaris, BSD, Windows, Nintendo WII et Sony Playstation 3.</p><p /><p>Moonlight : <a href="http://go-mono.com/moonlight/" target="_blank">http://go-mono.com/moonlight/</a></p><p>Mono : <a href="http://mono-project.com/Main_Page" target="_blank">http://mono-project.com/Main_Page</a></p><p>L'annonce de Moonlight 2.0 : <a href="http://team.silverlight.net/announcement/moonlight-2-is-now-available/" target="_blank">http://team.silverlight.net/announcement/moonlight-2-is-now-available/</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/typepad/DenisDollfus/EcosystemInfo/~4/Gvg9G0o_OGo" height="1" width="1" /></div></content>



    <feedburner:origLink>http://www.ergotinfo.fr/architecture/2009/12/silverlight-pour-linux-moonlight-en-version-2.html</feedburner:origLink></entry>
    <entry>
        <title>Vedea, nouveau langage des arts numériques</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/DenisDollfus/EcosystemInfo/~3/uTaHbtcXyMM/vedea-nouveau-langage-des-arts-num%C3%A9riques.html" />
        <link rel="service.edit" type="application/x.atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=295713/entry_id=6a00d8341c871f53ef01287632bb84970c" title="Vedea, nouveau langage des arts numériques" />
        <id>tag:typepad.com,2003:post-6a00d8341c871f53ef01287632bb84970c</id>
        <published>2009-12-09T10:12:00+01:00</published>
        <updated>2009-12-08T23:01:40Z</updated>
        <summary>Tous ceux qui touchent de près ou de loin aux arts numériques, et pas seulement les algoristes, connaissent bien Processing, langage open-source dédié à la manipulation d'éléments graphiques. Processing jouit en effet d'un quasi monopole pour toute sortes de travaux...</summary>
        <author>
            <name>DenisDollfus</name>
        </author>
        <category term=".Net" />
        <category term="art" />
        <category term="Math" />
        <category term="Microsoft" />
        <category term="Visualisation de données" />

    <content type="xhtml" xml:lang="fr-FR" xml:base="http://www.ergotinfo.fr/architecture/"><div xmlns="http://www.w3.org/1999/xhtml"><p>Tous ceux qui touchent de près ou de loin aux arts numériques, et pas seulement les <a href="http://www.ergotinfo.fr/architecture/2008/07/roman-verostko.html" target="_blank">algoristes</a>,  connaissent bien <a href="http://processing.org/" target="_blank">Processing</a>, langage open-source dédié à la manipulation d'éléments graphiques. </p>

<p style="text-align: left;">Processing jouit en effet d'un quasi monopole pour toute sortes de travaux autour de la visualisation, qu'il s'agisse de prototypes de visualisation de données scientifiques, d'ébauches artistiques abstraites, d'animations interactives (quoique dans le domaine de l'interactif Flash semble bien plus populaire) ou de tout ça en même temps. </p>

<p>La preuve en image pendant un petit entracte Processing (cliquez pour trouver l'auteur) :</p>

<p style="text-align: center;"><a href="http://www.flickr.com/photos/solaas/3263400247/" title="Propagaciones 10 by Leonardo Solaas, on Flickr"><img alt="Propagaciones 10" height="256" src="http://farm1.static.flickr.com/191/3263400247_d2f2f342c3.jpg" width="500" /></a></p>

<p style="text-align: center;"><a href="http://www.flickr.com/photos/toxi/2828083718/" title="TA08/MXL_tiles06 by toxi, on Flickr"><img alt="TA08/MXL_tiles06" height="500" src="http://farm4.static.flickr.com/3238/2828083718_a3657fd841.jpg" width="326" /></a></p>

<p />

<p>La domination de Processing pourrait bien être prochainement challengée. Microsoft va en effet offrir une technologie concurrente à travers un nouveau langage, Vedea, tout juste sortie des labos (ce qui ira, comme prévu, incrémenter notre <a href="http://www.ergotinfo.fr/architecture/2009/11/nouveaux-langages-de-programmation-vers-une-accalmie-.html" target="_blank">compteur de langages</a>).</p>

<p />

<p>Processing et Vedea sont des langages dédiés à la définition, à l’animation et au contrôle d'éléments graphiques. En quelque sorte un DSL (Domain Specific Language) dont le domaine de pertinence est la visualisation. Le plus de Vedea c’est de permettre à l’artiste-développeur (mais tous les développeurs ne sont-ils pas des artistes ? <a href="http://argouml-stats.tigris.org/documentation/printablehtml/manual/images/reference/menu_design_goals.png" target="_blank">Ah non</a>) de composer, de tester et d’expérimenter avec le moins d’efforts possible.</p>

<p />

<p>Deuxième entracte...</p>

<p />
<p style="text-align: center;"><a href="http://www.flickr.com/photos/lennyjpg/394842798/" title="Untitled by lennyjpg, on Flickr"><img alt="" height="375" src="http://farm1.static.flickr.com/137/394842798_e068c74295.jpg" width="500" /></a></p>

<p style="text-align: center;"><a href="http://www.flickr.com/photos/eskimoblood/4077306005/" title="sunflow is back by eskimoblood, on Flickr"><img alt="sunflow is back" height="500" src="http://farm3.static.flickr.com/2734/4077306005_553462c637.jpg" width="500" /></a></p>

<p />

<p>Comparé à Processing, Vedea possède quelques points forts.</p>

<p><strong>Rendu en mode "retenu" (</strong><em><strong>retained mode</strong></em><strong>)</strong>. </p>

<p>Alors que le mode dit immédiat (<em>immediate mode</em>) de Processing impose de dessiner explicitement les éléments graphiques à chaque appel d'une méthode de type draw() -- comme avec le Canvas d'HTML 5, Vedea permet en plus de construire une scène et de confier le rendu au moteur -- comme avec WPF et Silverlight.</p>

<p>Ok, un entracte, mais tout petit alors :</p>

<p />

<p style="text-align: center;"><object height="302" width="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=615344&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed allowfullscreen="true" allowscriptaccess="always" height="302" src="http://vimeo.com/moogaloop.swf?clip_id=615344&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" width="400" /></object></p>

<p style="text-align: center;"><a href="http://vimeo.com/615344">Magnetic Ink, Process video</a> from <a href="http://vimeo.com/flight404">flight404</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p />

<p><strong>Hiérarchie d'objets</strong></p>

<p>Un objet peut être parenté à autre objet. Dans ce cas la modification de certains propriétés du parent affectera ses descendants (transformations, coordonnées, etc.). Un peu comme une hiérarchie de Canvas sous Silverlight en somme.</p>

<p>Bon c'est le dernier hein :</p>

<p style="text-align: center;"><a href="http://www.flickr.com/photos/junearch/3220667080/" title="kunstForm1 by mi ha, on Flickr"><img alt="kunstForm1" height="500" src="http://farm4.static.flickr.com/3460/3220667080_cd2bbf7acc.jpg" width="500" /></a></p>

<p><strong>Binding bi-dimensionnel trop fastoche</strong></p>

<p>Vraiment bien. Voilà un binding mono-directionel, du slider vers la textbox :</p>

<p><span style="font-family: 'Courier New'; line-height: normal; ">textbox.Text := slider.Value;</span></p>

<p>Et en voilà un bi-directionnel qui fera donc bouger le slider quand la textbox sera éditée :</p>

<p><span style="font-family: 'Courier New'; line-height: normal; ">textbox.Text :=: slider.Value;</span></p>

<p>Joli non ?</p>

<p />

<p>Dernier de chez dernier :</p>

<p />
<p style="text-align: center;"><a href="http://www.flickr.com/photos/lennyjpg/2594638884/" title="Untitled by lennyjpg, on Flickr"><img alt="" height="318" src="http://farm4.static.flickr.com/3091/2594638884_11d4b79ddc.jpg" width="500" /></a></p>
<p><strong>Des données à portée de clavier</strong></p>

<p>Beaucoup de formats d'import devraient être disponibles (csf, netCDF, HDF, SQL, Excel). La manipulation des données est annoncée comme facilitée par un mode "à la Linq" :</p>

<p><span style="font-family: 'Courier New'; line-height: 14px; ">myData = <span style="color: #4f81bd; ">DataSet</span>(“mydata.csv”); <br />currentYear := slider.Value + 1900; <br />bubbles := <span style="color: #4f81bd; ">from</span> row <span style="color: #4f81bd; ">in</span> myData  <br /><span style="color: #4f81bd; "><font color="#000000">  </font>where</span> row.Year :== currentYear  <br /><span>  </span><span style="color: #4f81bd; ">select</span> new Circle()  <br />    {  <br />      X = row.Latitude,  <br />      Y = row.Longitude,  <br />      Radius = row.Population * scalingFactor,  <br />      Fill = BlackBodyPalette(1., 1., row.DeltaCarbon)  <br />    }; <br />Scene[“USMap”].Add(bubbles);</span></p>

<p><span style="font-family: 'Courier New';"><span style="line-height: 14px;"><br /></span></span></p>

<p><strong>Pour résumer</strong></p><p>Vedea est prometteur, il y a de bonnes trouvailles. J'attends de voir les performances, c'est pour bientôt, Vedea devrait être disponible durant le début de l'année 2010.</p><p>Question runtime, Vedea  est dépendant de .Net 4 et du runtime dynamique (DLR), ce qui limitera sérieusement son utilisation en tant que plug-in de navigateur.</p><p>Vedea  n'étant pas annoncé comme open-source, je ne suis pas certains que ces trouvailles puissent à elles seules déclencher une révolution. Processing a de beaux jours devant lui.</p><p>Beaucoup plus d'infos sur Vedea : <a href="http://blogs.msdn.com/martinca/archive/2009/12/03/introducing-the-microsoft-visualization-language.aspx">http://blogs.msdn.com/martinca/archive/2009/12/03/introducing-the-microsoft-visualization-language.aspx</a></p><p>Plein d'images réalisées en Processing sur Flickr : <a href="http://www.flickr.com/search/groups/?q=processing&amp;m=pool&amp;w=13813978@N00&amp;s=int">http://www.flickr.com/search/groups/?q=processing&amp;m=pool&amp;w=13813978@N00&amp;s=int</a></p>

<p />

<p />

<p /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/typepad/DenisDollfus/EcosystemInfo/~4/uTaHbtcXyMM" height="1" width="1" /></div></content>



    <feedburner:origLink>http://www.ergotinfo.fr/architecture/2009/12/vedea-nouveau-langage-des-arts-num%C3%A9riques.html</feedburner:origLink></entry>
    <entry>
        <title>Nouveaux langages de programmation : vers une accalmie ?</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/DenisDollfus/EcosystemInfo/~3/EB7aMTmwXeM/nouveaux-langages-de-programmation-vers-une-accalmie-.html" />
        <link rel="service.edit" type="application/x.atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=295713/entry_id=6a00d8341c871f53ef012875c64161970c" title="Nouveaux langages de programmation : vers une accalmie ?" />
        <id>tag:typepad.com,2003:post-6a00d8341c871f53ef012875c64161970c</id>
        <published>2009-11-23T07:13:00+01:00</published>
        <updated>2009-11-22T19:14:40Z</updated>
        <summary>Ruby, Python, C#, F#, Scala, Groovy, Squirrel, Goo, Boo, Scratch, Inform, V, Cobra,... Sept nouveaux langages de programmation par an, c'est la moyenne de ces cinq dernières années. Le graphe ci-dessous illustre l'évolution de la création de langage d'après la...</summary>
        <author>
            <name>DenisDollfus</name>
        </author>
        <category term="Langages" />

    <content type="xhtml" xml:lang="fr-FR" xml:base="http://www.ergotinfo.fr/architecture/"><div xmlns="http://www.w3.org/1999/xhtml"><p style="text-align: left;">Ruby, Python, C#, F#, Scala, Groovy, Squirrel, Goo, Boo, Scratch, Inform, V, Cobra,... Sept nouveaux langages de programmation par an, c'est la moyenne de ces cinq dernières années. Le graphe ci-dessous illustre l'évolution de la création de langage d'après la base de faits <a href="http://www.ergotinfo.fr/architecture/2008/09/freebase-tout-s.html">Freebase</a>, et plus précisément d'après <a href="http://www.freebase.com/view/computer/programming_language" target="_blank">les 1182 langages répertoriés sur cette page</a>.</p>

<p style="text-align: center;"><a href="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef0120a6c48623970b-pi" style="display: inline;"><img alt="Programming_languages" border="0" class="asset asset-image at-xid-6a00d8341c871f53ef0120a6c48623970b image-full " src="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef0120a6c48623970b-800wi" title="Programming_languages" /></a> </p>

<p>Evidemment, n'apparaissent dans ce graphe que les langages qui ont dépassé le stade du laboratoire pour atteindre une adoption qui justifie au minimum un article dans Wikipedia. Il faut s'attendre à compléter au moins les années 2008 et 2009 par des langages qui ne sont pas encore célèbres. F# et Scala par exemple, deux langages en pleine gloire (médiatique, à défaut d'usage), ont été créés respectivement en 2002 et 2003.</p>

<p>Sous la partie émergée de l'iceberg, la grande masse des obscures langages de labo suit probablement une évolution similaire. Difficile d'en connaître l'évolution précise sans éplucher patiemment toutes les publications du domaine. En revanche, facile d'en avoir une idée générale à partir de Google Scholar, moteur de recherche de publications universitaires. En faisant le compte, année après année, des articles qui contiennent "new programming language", on obtient ça :</p>

<p style="text-align: center;"><a href="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef012875c658a9970c-pi" style="display: inline;"><img alt="New_programming_language" border="0" class="asset asset-image at-xid-6a00d8341c871f53ef012875c658a9970c image-full " src="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef012875c658a9970c-800wi" title="New_programming_language" /></a> </p>

<p>Même si l'année 2009 n'est pas encore complète, il semble que l'on ait dépassé un pic. Mais l'accalmie est sans doute passagère : il est probable que la maturation des outils de création de DSL (<a href="http://en.wikipedia.org/wiki/Domain-specific_language" target="_blank">Domain Specific Language</a>) combiné à la reconnaissance des bienfaits de la "<a href="http://www.infoq.com/articles/paradigm-based-polyglot-prog" target="_blank">programmation polyglotte</a>" nous préparent une nouvelle envolée. </p>

<p> </p>

<p><br /> </p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/typepad/DenisDollfus/EcosystemInfo/~4/EB7aMTmwXeM" height="1" width="1" /></div></content>



    <feedburner:origLink>http://www.ergotinfo.fr/architecture/2009/11/nouveaux-langages-de-programmation-vers-une-accalmie-.html</feedburner:origLink></entry>
    <entry>
        <title>Microsoft rend .Net open-source</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/DenisDollfus/EcosystemInfo/~3/PVS9vpZbkUU/microsoft-rend-net-opensource.html" />
        <link rel="service.edit" type="application/x.atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=295713/entry_id=6a00d8341c871f53ef012875ac805e970c" title="Microsoft rend .Net open-source" />
        <id>tag:typepad.com,2003:post-6a00d8341c871f53ef012875ac805e970c</id>
        <published>2009-11-17T14:16:05+01:00</published>
        <updated>2009-11-17T13:16:05Z</updated>
        <summary>Bon ok juste une petite partie puisqu'il s'agit de .Net Micro Framework, le sous ensemble dédié aux systèmes embarqués. Mais c'est loin d'être anodin puisque la licence choisie n'est pas une variante à la sauce Microsoft, mais une licence Apache...</summary>
        <author>
            <name>DenisDollfus</name>
        </author>
        <category term="Actualité" />
        <category term="Apache" />
        <category term="Microsoft" />
        <category term="Open Source" />

    <content type="xhtml" xml:lang="fr-FR" xml:base="http://www.ergotinfo.fr/architecture/"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef012875ac7f44970c-pi" style="float: right;"><img alt="Apache" border="0" class="asset asset-image at-xid-6a00d8341c871f53ef012875ac7f44970c " src="http://www.ergotinfo.fr/.a/6a00d8341c871f53ef012875ac7f44970c-800wi" style="margin: 0px 0px 5px 5px;" title="Apache" /></a> Bon ok juste une petite partie puisqu'il s'agit de .Net Micro Framework, le sous ensemble dédié aux systèmes embarqués. Mais c'est loin d'être anodin puisque la licence choisie n'est pas une variante à la sauce Microsoft, mais une licence Apache 2.0.</p><p>Un pas de plus vers l'open-source authentique, à l'image du mea culpa de Peter Galli, le monsieur open-source de Microsoft, <a href="http://www.framablog.org/index.php/post/2009/11/16/gpl-windows-7-microsoft-excuses" target="_blank">pour une affaire de licence GPL bafouée</a> ?</p><p>L'annonce sur port25 : <span style="line-height: normal; white-space: pre; "><a href="http://port25.technet.com/archive/2009/11/16/microsoft-to-open-source-the-net-micro-framework.aspx" target="_blank">http://port25.technet.com/archive/2009/11/16/microsoft-to-open-source-the-net-micro-framework.aspx</a></span></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/typepad/DenisDollfus/EcosystemInfo/~4/PVS9vpZbkUU" height="1" width="1" /></div></content>



    <feedburner:origLink>http://www.ergotinfo.fr/architecture/2009/11/microsoft-rend-net-opensource.html</feedburner:origLink></entry>

</feed><!-- ph=1 -->
