Après la partie desktop de .Net, et au moment où l'adoption grand public de Silverlight devient bien visible dans les stats, c'est au tour de Silverlight 4 d'être livré par Microsoft.
Les nouveautés de Silverlight 4 sont nombreuses, et certaines probablement décisives pour l'adoption en entreprise :
Gestion de l'impression;
Nouveaux contrôles dont textboxes avec masque de saisie, datagrid avec colonnes redimensionnables et repositionnables;
La CLR autorise une même dll à tourner en mode desktop et en mode Silverlight sans recompilation
Amélioration de l'internationalisation -- écriture bidirectionelle, nouveaux langages tels qu'arabe et hébreux (plus 31 autres) -- entre nous, déjà géré par WPF 3.5 SP1;
Enrichissement des outils "point & click" avec Visual Studio 2010;
WCF RIA service inclus dans le package Silverlight;
Prise en charge des webcams et microphones;
Interopérabilité COM;
Support de la vidéo au format H 264
... et pas mal d'autres nouveautés intéressantes dont la plupart sont listées sur cette page que je vais arrêter de traduire -- évidement ça donne un net avantage à ceux qui lisent l'anglais, et une opportunité de commencer à apprendre pour les autres, of course, it goes of itself.
Une autre page de référence concernant les nouveautés se trouve sur le blog de Tim Heuer, ainsi du reste que l'annonce de la disponibilité de Silverlight 4.
A l'heure de la mise à disposition par Microsoft de Visual Studio 2010 et .Net 4, Peter Brown vient de publier sur son blog une synthèse des nouveautés de WPF 4 : WPF 4 Release: A guide to the new features
Enfin au cas où vous chercheriez l'exhaustivité à propos des nouveauté de .Net 4, mieux vaut aller lire à la source : What's New in the .NET Framework 4 sur MSDN.
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 mesure de faire de l'ombre aux 97% de plugins Flash...
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 va apporter :
un peu de RAD en WPF via du databinding en mode drag & drop;
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.
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 21 décembre 2012...
Bref dans le cas présent le quick win est un big loss pour qui intègre le futur dans sa vision du monde.
Vous allez me dire que vous travaillez en mode Agile (pas Agile à la sauce Coué, mais le vrai mode Agile, celui qui se donne des moyens) 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...
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é).
Emit Mapper est un de ces outils, et les premiers tests le présentent comme 400 fois plus rapide (mais voir § ci-dessous) 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 des astuces à connaitre).
Attention : 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 (mais cf. ci-dessous). 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...
Deuxième mise à jour : 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.
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 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."
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.
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 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.
La preuve en image pendant un petit entracte Processing (cliquez pour trouver l'auteur) :
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 compteur de langages).
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 ? Ah non) de composer, de tester et d’expérimenter avec le moins d’efforts possible.
Deuxième entracte...
Comparé à Processing, Vedea possède quelques points forts.
Rendu en mode "retenu" (retained mode).
Alors que le mode dit immédiat (immediate mode) 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.
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.
Bon c'est le dernier hein :
Binding bi-dimensionnel trop fastoche
Vraiment bien. Voilà un binding mono-directionel, du slider vers la textbox :
textbox.Text := slider.Value;
Et en voilà un bi-directionnel qui fera donc bouger le slider quand la textbox sera éditée :
textbox.Text :=: slider.Value;
Joli non ?
Dernier de chez dernier :
Des données à portée de clavier
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" :
myData = DataSet(“mydata.csv”); currentYear := slider.Value + 1900; bubbles := from row in myData where row.Year :== currentYear select new Circle() { X = row.Latitude, Y = row.Longitude, Radius = row.Population * scalingFactor, Fill = BlackBodyPalette(1., 1., row.DeltaCarbon) }; Scene[“USMap”].Add(bubbles);
Pour résumer
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.
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.
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.
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 Freebase, et plus précisément d'après les 1182 langages répertoriés sur cette page.
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.
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 :
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 (Domain Specific Language) combiné à la reconnaissance des bienfaits de la "programmation polyglotte" nous préparent une nouvelle envolée.
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.
Un pas de plus vers l'open-source authentique, à l'image du mea culpa de Peter Galli, le monsieur open-source de Microsoft, pour une affaire de licence GPL bafouée ?
Je suis fasciné par le comportement des oiseaux qui volent en nuage. Je suis capable de contempler béatement ce genre de méta-créature pendant de longues minutes :
Du coup je me suis amusé à développer en Silverlight une simulation (stricto sensu, c'est plus une animation qu'une simulation -- il faut bien ergoter de temps en temps pour justifier 'ergotinfo') d'un nuage de 300 oiseaux et à l'ajouter à la bannière de ce blog. Si vous n'avez pas Silverlight, cette vidéo peut vous donner une idée de l'animation :
L'animation consomme goulument du processeur, j'ai donc ajouté un bouton marche/arrêt en bas à gauche de la bannière :
Ca marche bien sous Firefox, Internet Explorer et Opera. Chrome a un bug connu de gestion de la transparence qui pose quelques problèmes d'affichage (fond noir au démarrage, titre partiellement caché) mais bon ça passe.
La prochaine fois, je tente de simuler une autre merveille de la nature, un réseau de vers annelés qui se comporte comme un organisme doté de muscles, de nerfs, de capteurs de niveau d'eau, etc. La nature peut nous surprendre jusque dans les égouts. C'est juste un peu moins photogénique.
Les commentaires récents