Mot-clé - conception

Fil des billets - Fil des commentaires

20 juin 2012

Valeurs et entités : les deux grandes classes d'objets

Mise à jour : les commentaires de ce billet ont mis en évidence un problème plus que certain dans la relation illogique que j'ai établi entre sémantique de mouvement (notamment telle qu'elle est implémentée en C++11) et entité. Du coup, ce billet a été corrigé. Je le publie de nouveau en tête de page afin de permettre aux personnes l'ayant lu au moment de sa sortie de voir ces corrections.

En programmation objet, on manipule différents types d'objets. Certains obtiennent naturellement un constructeur par copie, d'autres non. Certains sont utilisés via des pointeurs, tandis que d'autres sont simplement copiés ici et là au gré des besoins. En bref, et même si vous ne vous en êtes pas encore rendu compte, certains de vos objets ont une sémantique de valeur, tandis que d'autres ont une sémantique d'entité.

Le but de cette article n'est pas de vous apprendre aujourd'hui à différencier une valeur d'une entité, mais de vous faire toucher du doigt ces deux grandes classes d'objets que tout oppose.

Lire la suite...

18 août 2011

De la gestion des gestionnaires

On conçoit aisément qu'il est très difficile de bien concevoir une application ou une libraire : cela demande des connaissances pointues en design ainsi qu'une imagination débordante. Par contre, il est très facile de mal faire : il suffit de se laisser appeler par les sirènes des différents pièges qui, nonchalamment, s'installent sur notre route.

Ce billet traite de l'un de ces pièges : l'omniprésent gestionnaire, qu'on retrouve à peu prêt partout, et dont on sait peu de choses.

Lire la suite...

08 fév. 2011

Code source de jeux vidéo

Non, ce n'est pas un post qui va vous dire de télécharger tel ou tel jeu sous un prétexte quelconque - et surtout pas sous couvert d'une idéologie ou le libertarisme serait imposé ; chacun fait ce qu'il veut, après tout - c'est ça la liberté. Ce post a pour mission de recenser quelques jeux dont le code source est libre, parce que je suis en train d'en étudier certains afin d'en extraire ce qu'on nomme avec un amour révérencieux du cliché la substantifique moelle.

Nottez quand même que la plupart de ces jeux ne proposent que leur code - pour pouvoir jouer à ces jeux, il faudra quand même l'acheter afin de pouvoir installer les données du jeu. C'est normal : bien souvent, la réalisation de modèles 3D, des textures, des sprites et autres musique a nécessité plus de temps que le développement du code lui même. Il serait injuste de proffiter de tout ce temps sans en remercier d'une manière ou d'une autre les développeurs (il n'y a qu'à voir ce qui se passe actuellement avec Lugaru HD pour voir que tous ne partagent pas ma vision).

Mise à jour: ajout d'Alien Swarm (merci Dri) et Allegiance (merci Hydroxid Acid).

Lire la suite...

31 janv. 2011

[Code source] preview de ekogen 0.5

Non, [ekogen 0.5] n'est pas encore sorti - ça ne saurait tarder ceci-dit. Mais puisque j'ai écrit deux posts sur le sujet sur gamedev.net, il me semblait logique de faire profiter mes lecteurs francophones de mes réflexions sur le sujet. Voici donc une version réécrite des deux posts de GD.net - en français, avec des explications en plus.

Lire la suite...

10 janv. 2011

Une librairie de chiffrement/déchiffrement avec OpenSSL

De temps en temps, des idées de design appliqués à un problème particulier me traversent l'esprit. De temps en temps, je les implémente, histoire de voir ce que ça donne. De temps en temps, je suis content de ce que j'obtiens, parce le résultat me parait clair, simple à utiliser et suffisamment efficace pour pouvoir être utilisé dans le cadre d'un projet commercial. Le code que je vais vous présenter aujourd'hui atteint au moins la moitié de ce troisième état - comprendre : j'en suis assez content, mais il est perfectible. Du coup, je vous en présente ici les grandes lignes.

Aujourd'hui : une encapsulation des moteurs de chiffrement Blowfish et RSA de la librairie open source OpenSSL.

Le code lié à cet article a déjà été publié sur developez.com, donc si vous êtes un fidèle de ce forum, vous avez peut être déjà jeté un coup d'oeil dessus. Je vais continuer à maintenir les deux repository (ici et sur DVP), mais les annonces de nouvelles version se feront principalement sur DVP (pour des raisons évidentes : ce blog n'est pas un système de news). Vous pouvez aussi vous abonner à la toute nouvelle newsletter AL&D, et je promet de vous tenir au courant par ce biais des évolutions dans ce code.

Lire la suite...

20 août 2010

Les problèmes du Dr. Decay

Point d'interrogationCette série d'articles a beau être toute nouvelle, elle se base sur un principe vieux comme le monde : je pose une problème de conception ou d'architecture logicielle, vous me proposez des solutions, puis je vous propose ma solution. C'est un challenge - il n'y a rien à gagner, sauf peut être mon respect (mais puisque vous lisez ces lignes, je vous respecte déjà.

Lire la suite...

11 août 2010

Proposition de mise à jour du standard UML

Bien évidemment, une telle proposition est principalement destinée à mes lecteurs, car il et peu probable qu'un membre du comité de normalisation passe par là et se l'approprie (sait-on jamais).

UML est un bon langage de modélisation. Il a toutefois un défaut : l'approche purement objet qu'il utilise rends complexe la modélisation de code dans des langages autres que Java ou C#. On peut modéliser une partie d'un projet écrit en C++, mais il est impossible d'en modéliser la totalité. Cette limitation vient du fait que UML ne permet pas de modéliser une fonction qui n'est pas attachée à une classe. Hors une telle fonction peut avoir une importance capitale dans la conception - la librairie <algorithm> du C++ ne serait que modérément utile si elle n'était pas composée que de fonctions libres ; en fait on peut argumenter que toute autre approche aurait été une erreur de conception.

Cette proposition élimine cette limitation.

Lire la suite...

30 juil. 2010

Les ORM sont-ils une bonne chose ?

Axiom Database LogoCes dernières années, avec l'explosion du web dynamique et les avancées liées à la programmation objet, on a vu se développer des systèmes permettant de faire des liens plus ou moins directs entre le monde objet et le monde relationnel. Ces ORM (pour Object/Relational Mapping) proposent de créer une couche entre votre application et les données sous-jacente. En somme, ils gèrent ce qu'on appelle la persistance des données, en tentant de répondre à une question toute simple : comment faire pour les utiliser simplement tout en gardant une architecture claire, concise et efficace ?

Bien évidemment, ils échouent à apporter la bonne réponse à cette question.

Lire la suite...

16 juil. 2010

Architecte ou designer ?

Sur ce blog, j'ai beaucoup utilisé les termes "architecture" et "design" (ou son pendant français, "conception") sans me douter un instant que vous pourriez penser que ces deux termes sont complètement interchangeables - alors que, formellement, ce n'est pas tout à fait le cas. Et parce que j'aime l'histoire, je vais tenter d'expliquer les différences qui peuvent exister entre le métier d'architecte logiciel et celui de concepteur logiciel.

Lire la suite...