{"id":711,"date":"2024-08-27T15:56:19","date_gmt":"2024-08-27T13:56:19","guid":{"rendered":"https:\/\/www.ecologik-it.com\/site\/?p=711"},"modified":"2024-08-27T16:08:39","modified_gmt":"2024-08-27T14:08:39","slug":"27-08-2024-paradigme-entite-composant-systeme","status":"publish","type":"post","link":"https:\/\/www.ecologik-it.com\/site\/27-08-2024-paradigme-entite-composant-systeme\/","title":{"rendered":"27\/08\/2024 &#8211; Paradigme Entit\u00e9-Composant-Syst\u00e8me"},"content":{"rendered":"\n<p>Issu du monde des jeux vid\u00e9os, ce paradigme est malgr\u00e9 tout int\u00e9ressant dans de nombreux domaines et peut rendre bien des services dans l&rsquo;industrie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C&rsquo;est quoi au juste ?<\/h2>\n\n\n\n<p>Comme vous le savez les jeux vid\u00e9os modernes &#8211; et m\u00eames certains plus anciens &#8211; comportent de nombreuses animations simultan\u00e9es, qui m\u00eame avec les cartes graphiques et GPU actuels largement optimis\u00e9s consomment \u00e9norm\u00e9ment de ressources CPU et peuvent parfois induire des latences qui frustrent le joueur. L&rsquo;id\u00e9e de base derri\u00e8re le paradigme ECS c&rsquo;est d&rsquo;utiliser au mieux le cache processeur en ne manipulant que des tableaux d&rsquo;entiers.<\/p>\n\n\n\n<p>Pour faire l&rsquo;analogie avec la programmation orient\u00e9e objet, les entit\u00e9s sont des classes, les composants repr\u00e9senteraient les propri\u00e9t\u00e9s des classes et les syst\u00e8mes sont des ensembles des fonctionnalit\u00e9s m\u00e9tiers qui r\u00e9gissent le tout.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>An Entity Component System is a programming paradigm that take composition-over-inheritance to the extreme. <\/em><\/p>\n\n\n\n<p><em>(Erik van Bilsen, d\u00e9veloppeur)<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>Contrairement \u00e0 la programmation objet o\u00f9 une classe est d\u00e9finie par ce qu&rsquo;elle est et par ce qu&rsquo;elle h\u00e9rite, l&rsquo;entit\u00e9 est d\u00e9finie uniquement par les composants qu&rsquo;elle poss\u00e8de. Les composants et l&rsquo;entit\u00e9 ne sont, de plus, que des entiers. L&rsquo;entier est par nature facilement manipulable par un micro-processeur, beaucoup plus que des valeurs flottantes par exemple et n\u2019exige qu&rsquo;une tr\u00e8s faible charge de travail pour ce dernier.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment \u00e7a marche ?<\/h2>\n\n\n\n<p>Les processeurs actuels disposent d&rsquo;un cache m\u00e9moire (en fait m\u00eame plusieurs, de 2 \u00e0 3 selon le type de processeur), le but de ce cache est de stocker les valeurs, les objets, les codes, fr\u00e9quemment acc\u00e9d\u00e9s afin de moins solliciter d&rsquo;\u00e9changes avec la m\u00e9moire et ainsi d&rsquo;optimiser la performance. L&rsquo;id\u00e9e derri\u00e8re la programmation ECS est d&rsquo;optimiser encore l&rsquo;utilisation du cache par le processeur. En effet les caches processeurs actuels dispose de plusieurs m\u00e9ga-octets de cache, l&rsquo;on peut donc y stocker plusieurs milliers d&rsquo;entiers sans probl\u00e8me. <\/p>\n\n\n\n<p>Il est alors facile de comprendre qu&rsquo;en stockant nos entit\u00e9s et nos composants dans des tableaux d&rsquo;entier contigus, l&rsquo;ensemble pourra facilement \u00eatre charg\u00e9 en totalit\u00e9 dans le cache processeur. La suite est logique, les syst\u00e8mes peuvent acc\u00e9der \u00e0 des milliers d&rsquo;entit\u00e9s et de composants sans que le cache du processeur n&rsquo;ai jamais besoin d&rsquo;\u00eatre recharg\u00e9 et cela va bien sur nous permettre de sauvegarder du temps processeurs pour d&rsquo;autres traitements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Son utilit\u00e9 ?<\/h2>\n\n\n\n<p>Ce paradigme est utile d\u00e8s qu&rsquo;il s&rsquo;agit de manipuler de nombreux objets simultan\u00e9ment, par exemple dans le monde industriel, un ensemble important de capteurs et d&rsquo;actionneurs sur une ou plusieurs machines devant fonctionner de fa\u00e7on tr\u00e8s rapide sans latence.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Aller plus loin <\/h2>\n\n\n\n<p>Si cela vous int\u00e9resse, et si vous souhaitez vous lancer, vous pouvez regarder les explications et la d\u00e9monstration d&rsquo;Erik van Bilsen.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"480\" style=\"aspect-ratio: 854 \/ 480;\" width=\"854\" controls src=\"https:\/\/www.ecologik-it.com\/site\/wp-content\/uploads\/2024\/08\/entity-component-systems-a-different-approach-to-coding-with-erik-van-bilsen_video_480p.mp4\"><\/video><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Issu du monde des jeux vid\u00e9os, ce paradigme est malgr\u00e9 tout int\u00e9ressant dans de nombreux domaines et peut rendre bien des services dans l&rsquo;industrie. C&rsquo;est quoi au juste ? Comme vous le savez les jeux vid\u00e9os modernes &#8211; et m\u00eames certains plus anciens &#8211; comportent de nombreuses animations simultan\u00e9es, qui m\u00eame avec les cartes graphiques [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":725,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[11,16,10,12,13],"tags":[],"class_list":["post-711","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-delphi","category-industrie-4-0","category-programmation","category-systemes","category-technologie"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.ecologik-it.com\/site\/wp-json\/wp\/v2\/posts\/711","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ecologik-it.com\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ecologik-it.com\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ecologik-it.com\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ecologik-it.com\/site\/wp-json\/wp\/v2\/comments?post=711"}],"version-history":[{"count":12,"href":"https:\/\/www.ecologik-it.com\/site\/wp-json\/wp\/v2\/posts\/711\/revisions"}],"predecessor-version":[{"id":726,"href":"https:\/\/www.ecologik-it.com\/site\/wp-json\/wp\/v2\/posts\/711\/revisions\/726"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ecologik-it.com\/site\/wp-json\/wp\/v2\/media\/725"}],"wp:attachment":[{"href":"https:\/\/www.ecologik-it.com\/site\/wp-json\/wp\/v2\/media?parent=711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ecologik-it.com\/site\/wp-json\/wp\/v2\/categories?post=711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ecologik-it.com\/site\/wp-json\/wp\/v2\/tags?post=711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}