LeProgrammeur.net

Blogue Professionnel de Louis Turmel

Design Patterns: Elements of Reusable Object-Oriented Software

Je regardais quelques livres dans ma bibliothèque de mon appartement de Paris, je dois en avoir qu'une dizaine et les autres sont à la maison de mes parents au Québec. Certains de ces livres, traine dans mon appartement de Paris, depuis 18 mois, et je ne les ai pas lu... Pourtant, ce n'est pas l'intéret sur un sujet comme le SOA (Services Oriented Architecture) qui manque en moi... faute de temps... ou mauvaises gestions des prioritées ? Les deux !

En revanche, s'il y à un livre que je garde toujours près de moi, c'est bien "Design Patterns: Elements of Reusable Object-Oriented Software". Première parution de ce livre le 31 Octobre 1994 chez Addison-Wesley par la "Gang of Four", souvent appelé par l'acronyme "GoF". Ce sont les auteurs de leurs vrais nom: Erich Gamma, Richard Helm, Ralph Johnson et John M. Vlissides.

 

Encore après plus de 14 ans, ce livre est toujours d'actualités, sorte de bible du développeur moderne.

Le 9 Août 2006, Scott Meyers, émettait comme opinion que ce livre, faisait partie des cinq livres les plus important.

"Addison-Wesley, 1995. This isn’t a C++ book per se, but it had a profound influence on the thinking about good design in C++, as well as every other object-oriented programming language. It initiated the patterns movement among professional software developers, and it introduced a set of patterns that remains to this day the core of the common patterns vocabulary. 2 If you’re familiar with the Command, Visitor, Decorator, or Singleton patterns—or with the idea of design patterns at all, you ultimately have this book to thank for it.

The patterns in the book continue to spur active discussion amongst the C++ cognoscenti. For example, Herb Sutter wrote about a new approach to Observer in his September 2003 C/C++ Users Journal column, and Andrei Alexandrescu considered the same pattern in his April and June 2005 C/C++ Users Journal columns"

Dans tout les cas, j'ai pu constater un nombre considérable de développeurs ne connaissant pas ce livre, ce qui est pour moi plutôt inquiétant. En fait ce n'est pas le fait de ne pas connaitre le livre, mais les concepts qui s'y rattachent. Sans doute que provenant d'un monde .Net, dans lequel le 80% des développeurs ne savent que faire du VB6.0 en compilant sous le Framework .Net et en faisant pas de différence entre un Module et une Classe est l'une des sources du problème. Je ne m'étendrai pas plus sur mon opinion... puisque ce n'est pas le but de mon présent post.

Pour les intéressés, le livre est disponible à l'adresse suivante: http://www.informit.com/store/product.aspx?isbn=0201633612

Personnellement, ce livre est un "MUST"

Posted: nov. 28 2008, 13:19 by lturmel | Commentaires (2) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Livres | Conception

Common Intermediate Language (CLI ou MSIL) Pourquoi ?

Pourquoi développer une fonctionnalités en Common Language Intermediate, soit du CLI, anciennement nommé Microsoft Intermediate Language ?

C'est un peu la question que j'avais, lorsqu'un collègue m'avait proposer lorsque nous avions évalué notre Assembly. Je connaissais la signification de MSIL, soit le langage Natif .Net. Language qui est interprété par le runtime .Net, mais j'en avais jamais fais auparavant.

La problématique, étant de concevoir un lanceur d'appel de méthode X tout en étant en mesure de pouvoir avoir un "feedback" au début et à la fin de l'appel de la méthode X. Par réflection, le système était devenue tout simplement lourd et non maintenable... mais le besoin était toujours présent, celui d'être dynamique.

La solution ? Développer notre Assembly pour notre besoin en code natif, en CLI.

Schéma du CLI

 
Le meilleur résumé sur la signification du code CLI (MSIL) ce retrouve MSDN: http://msdn.microsoft.com/fr-fr/library/c5tkafs1(VS.80).aspx 
 
"Compilation en MSIL
Lors d'une compilation destinée à produire un code managé, le compilateur convertit le code source en langage MSIL (Microsoft Intermediate Language), un jeu d'instructions indépendant du processeur qui est converti efficacement en code natif. MSIL inclut des instructions pour le chargement, le stockage, l'initialisation et l'appel de méthodes sur des objets, ainsi que des instructions pour la réalisation d'opérations arithmétiques et logiques, le flux de contrôle, l'accès direct à la mémoire, la gestion des exceptions et d'autres opérations. Avant d'exécuter du code, vous devez d'abord convertir le langage MSIL en code spécifique du processeur, généralement à l'aide d'un compilateur JIT (Just-In-Time). Dans la mesure où le Common Language Runtime fournit un ou plusieurs compilateurs JIT pour chaque architecture d'ordinateur qu'il prend en charge, le même jeu de MSIL peut être traité par un compilateur JIT et exécuté sur toute architecture prise en charge.
Lorsqu'un compilateur produit un code MSIL, il génère aussi des métadonnées. Les métadonnées décrivent les types contenus dans votre code, y compris la définition de chaque type, les signatures des membres de chaque type, les membres référencés par votre code, et d'autres données que le runtime utilise au moment de l'exécution. Le code MSIL et les métadonnées sont stockés dans un fichier exécutable portable (PE) qui est basé sur le fichier Microsoft PE publié qu'il prolonge et sur le format COFF (Common Object File Format) utilisé traditionnellement pour le contenu exécutable. Ce format de fichier, qui accepte le code MSIL ou le code natif ainsi que les métadonnées, permet au système d'exploitation de reconnaître les images du Common Language Runtime. La présence de métadonnées dans le fichier en même temps que le jeu d'instructions MSIL permet à votre code de se décrire lui-même, ce qui signifie que les bibliothèques de types et IDL (Interface Definition Language) ne sont pas nécessaires. Le runtime recherche les métadonnées dans le fichier et les extrait selon les besoins, au moment de l'exécution."
 
Source: http://msdn.microsoft.com/fr-fr/library/c5tkafs1(VS.80).aspx
 

Fort malheureusement, les resources fiable sur Internet sur le développement CLI (MSIL) sont très limités. En voici une qui m'aura été très utile: http://www.thefreakparade.com/2008/06/baby-stepping-into-msil-creating-an-event-recorder-using-a-dynamicmethod-and-reflectionemit

Posted: nov. 27 2008, 13:38 by lturmel | Commentaires (0) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Le savoir, un besoin a partager

Dans un cadre professionnel, je me cherchais une façon de pouvoir aider des gens, de partager, confronter des idées. Internet est une source, un outil de travail, discussion depuis fort longtemps très utile à tous pour rapprocher les gens et faire évoluer les communautés professionnel. Au delà des cultures et des idéaux religieux, Internet sait nous rassembler, nous les professionnels de divers milieux.
 
En quête de nouveaux défis dans ma jeune (encore) carrière, je me suis donné comme objectif de participer, de façon journalière à un forum en ligne sur les Technologies .Net, via le site www.asp.net. Forum destiné a répondre aux questions et problématiques de professionnel travaillant sous les technologies satellite Microsoft .Net.
 
Répondre à des questions, aider des gens recherchant des solutions à leurs problèmes, me permet de sans doute mieux prendre conscience de mon expérience Professionnel, d'être pro-actif plutôt que réactif à un domaine qui est en constante évolution.
 
Je m'intéresse grandement à mon domaine, mon travail est l'une de mes passions, me permettre de partager sur ce domaine avec d'autres expert, c'est une façon de rester éveillé. Je me vois mal ne pas vouloir rester éveillé aux nouvelles technologies, avec lesquelles je travaillerai et aussi... voir surtout aux technologies des concurents, puisque celle-ci permettre de prendre un recul et de savoir remettre en question les concepts actuel. 
 
Combien de fois, ai-je entendu des gens dire: "Je me fou de Java, moi je fais du .Net". Je crois que c'est là une mauvaise attitude, il faut savoir rester ouvert aux autres techno. Puisque comme je le disait, c'est la seul façon de pouvoir élargir son propre champs de vision sur son propre travail. 
 
Est-ce qu'il y aurait trop de réfractaire aux changements dans ce domaine en évolution ?
 
Personnellement, je crois que oui, là tout est une question d'attitude !
Posted: nov. 17 2008, 15:01 by lturmel | Commentaires (3) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Séparation entre Personnel et Professionnel

Dans le but de faire une coupure entre, ma vie professionnel et mes histoires de vie personnel, je viens de mettre en ligne un nouveau blogue qui sera destiné strictement à ma vie professionnel.

Je suis actuellement en plein changement de cadre professionnel, et les prochaines années s'avèront très mouvementé. Les technologies et types de problématique auxquels je serai confronté seront plus grande, et j'ai bien l'intention d'en faire part, afin de partager d'avantage sur le sujet.

C'est pourquoi, je met définitivement en ligne mon blogue professionnel sur "www.leprogrammeur.net"... Depuis le temps que j'en parle... et que j'y pensais...

En espérant être un peu plus instructif sur le sujet que mon blogue personnel.

Bonne journée,

Louis Turmel

Posted: nov. 16 2008, 03:08 by lturmel | Commentaires (0) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: General