Jour 1 à Vancouver : très ‘cool’
Je marche environ deux kilomètres par jour, seulement pour aller et revenir de la convention. Ça me donne le temps de découvrir la ville. Premières impressions du centre-ville de Vancouver : c’est propre, tranquille et ‘relax’. Les passants sont polis et disciplinés. Le tout me fait penser à Ottawa, ma ville natale, à un détail près : les trolleybus, voitures et cyclistes partagent la même route. La rue Howe, celle que j’emprunte, est bordée de jeunes arbres, Ces derniers détournent mon attention des caténaires suspendues au dessus de la rue. De plus, Il y a un service de trains de banlieue tout neuf, pour les J.O. de 2010, que je me promets d’essayer avant mon retour. Montréal devrait s’en inspirer en ce qui concerne l’aménagement des transports publics.
Donc, matin et soir, je passe près des lieux suivants :
- Le palais de justice provincial (bof);
- La cinémathèque;
- L’université de la Colombie Britannique (UBC);
- La galerie d’art.
En somme, une belle promenade qui compense les belles heures de la journée perdues à rester enfermé dans une salle de réunion.
Voilà pour le tourisme : passons aux choses sérieuses…
La journée a commencé par l’obligatoire discours de bienvenue. Ce dernier portait sur l’arrivée prochaine du Visual Studio 2010. Dieu merci (et merci également au conférencier), nous n’avons pas eu droit aux matériel de promotion de Microsoft, mais plutôt à des démonstrations très ‘cool’ sur l’interopérabilité entre « Surface » et Windows 7. Dans un exercice de « scrapbooking » collectif, on y voyait des gens manipuler et s’échanger divers documents comme s’ils s’agissaient d’objets physiques : textes, photos, vidéos, etc. Théoriquement, le tout est faisable sans avoir à utiliser autres choses que la plateforme .Net. Si les interfaces homme-machine sont votre dada, alors considérez l’apprentissage de la Windows Presentation Fondation (WPF) et de Windows Communication Fondation (WCF). Je crois que ce sera une technologie fascinante à explorer et que l’on peut s’attendre à une évolution aussi marquante que le passage de la ligne de commande à la métaphore du bureau et matérialisée par le concept d’interface icône-fenêtre-souris-pointeur (WIMP).
Des bâtisseurs de châteaux de sable.
Étant donné mon expérience limité en développement .Net, je favorise les ateliers portant sur les aspects plus abstraits du développement logiciel. C’est pourquoi j’ai choisi de passer la matinée en compagnie d’architectes logiciels expérimentés (les conférenciers) et d’aspirants (le public). Les discussions ont été fort animées et je vous en fais un résumé :
Définition populaire d’un architecte logiciel : fonction attribuée à un concepteur logiciel dont les compétences techniques sont obsolètes au point de ne plus pouvoir coder productivement et muté à un rôle de supervision et d’administration (traduction libre de l’auteur). En réalité, c’est un métier difficile à définir car la comparaison avec un architecte en bâtiments atteint rapidement ses limites: en effet, l’architecte en bâtiments profite d’un héritage des meilleures pratiques connues depuis l’Antiquité. De son côté, l’architecte logiciel travaille avec l’intangible, des comportements non linéaires, des facteurs humains et des pratiques expérimentales, en mutations constantes et de moins d’un demi-siècle d’existence. De même, une architecture élégante et tout aussi difficile à définir : on ne s’en rend compte qu’une fois l’ouvrage terminé. Finalement, peu d’immeubles se transforment en masse informe (traduction de Ball of Mud)[Foote: 1997] en moins d’une décennie. Il paraît que les logiciels ont cette propriété étonnante et qui n’a rien à voir avec le polymorphisme.
En pratique, l’architecte évalue, explore et guide toutes les activités de développement, sans égard aux technologies et pratiques utilisées. Concrètement, l’architecte doit jongler avec les aspects techniques et administratifs à la fois. Il doit être à la fois au courant des dernières nouveautés et de la pratique de la gestion de projets et des ressources humaines. Finalement, l’architecte est un visionnaire, capable de prédire l’état d’un système à moyen et long terme.
C’est un poste difficile, finalement mais il y a une consolation : le public ne pardonne pas l’écroulement d’un immeuble. Par contre, les usagers tolèrent les pannes informatiques, mais pour combien de temps?
Brian Foote and Joseph Yoder, Big Ball of Mud Fourth Conference on Patterns Languages of Programs (PLoP '97/EuroPLoP '97) Monticello, Illinois, September 1997
F#, variation sur un air connu
Le temps fort de l’après-midi a été l’introduction à F#, un langage dit « fonctionnel ». Quels sont les motifs pour justifier l’introduction d’un autre langage (à part le facteur ‘cool’)? En clair :
- Exploiter à fond la puissance de traitement des ordinateurs parallèles actuels et à venir : en effet le compilateur peut optimiser le code à sa guise, allant jusqu’à déplacer l’ordre d’exécution des instructions. En contrepartie, le programmeur ne se concentre plus sur l’ordre d’exécution des instructions, mais sur les liens logiques. Le compilateur s’occupe du reste!; Un exemple simple : l’échange de données entre deux variable implique l’usage d’une variable temporaire swap(a,b) {a=temp; a=b; b=temp;}. En notation fonctionne, on écrirait simplement :swap(a, b) {a b = b a;} et ça marche (je l’ai essayé).
- Offrir un niveau d’abstraction supplémentaire car, selon un principe informatique, tout problème possède une solution, à condition d’avoir le niveau d’abstraction nécessaire;
- Tirer profit de la plateforme .Net pour qu’un programme F# puisse s’arrimer aux composants .Net existants et pour que les programmeurs restent dans un univers connu.
Alors, que permet un langage fonctionnel? Entre autres choses :
- Il permet la programmation orientée-objet;
- Il permet la récursivité;
- Il considère l’absence de données comme une donnée valide;
- Et finalement, il considère les fonctions comme des variables à part entière.
Ces caractéristiques sont celles que j’ai retenues de la conférence.
Des exemples de langages fonctionnels contemporains : F#, bien sur, mais aussi Erlang et Haskell.
Mais est-ce révolutionnaire? Pas vraiment : vous avez peut-être expérimenté avec l’un au l’autres de des concepts fonctionnel à l’aide des langages suivant :
- Logo : pour la récursivité et les listes, plus que pour les graphiques (non, ce n’était pas juste pour les enfants);
- Lisp : pour les listes;
- Lua : un langage interprété qui existe depuis… des lunes (jeu de mot facile et irrésistible);
- APL, Matematica…
- … et même Excel : avez-vous à imposer une séquence de calculs dans vos formules?
La liste est loin d’être exhaustive. Si F# vous intéresse, sachez qu’il existe une version beta pour Visual Studio 2008. Bonnes expérimentations!
La journée s’est terminée par une marche ponctuée d’arrêts photos. Après m’être délesté de mon ordi et de mes autres gadgets technos, je me suis rendu au pub le plus près pour souper et relaxer devant un « Fish’n Chips » et une pinte de bière irlandaise. Si ce n’était du fait qu’il y avait du hockey à la télé au lieu du soccer (ou du criquet), je me serais crû en Angleterre plutôt qu’à Vancouver, tant par l’ambiance que l’excellence du repas.
Pour les amateurs de sports, c’était Pittsburg contre Detroit et les Pingouins ont gagné 2 à 1 et sont à égalité (3 à 3) dans la série finale.