[:fr]La parole est aux speakers : Aleth Gueguen (AFUP Day 2019 Rennes)[:]

[:fr]Jusqu’à l’AFUP Day 2019 Rennes, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Un-e professionel-le du numérique doit-il-elle avoir une éthique ?

Quand on écrit du code, est-ce qu'on a toujours conscience que cela peut avoir un impact sur la vie des gens ? Est-ce qu'on s'assure toujours de ne pas faire de mal (même si on veut sauver le monde) ? Un algorithme dit-il toujours la vérité ou est-ce que c'est seulement l'expression de notre opinion ? Je pense qu'il est important qu'on commence à se poser ces questions. Dans ce talk, je vous montrerai des exemples et des outils –comme le “Privacy" by Design Framework– pour nous aider à identifier les situations à risque et y répondre.

La Fabrique
17/05/2019
16:20-17:00

Dans certains pays (par exemple au Québec), il existe un code d’éthique pour les ingénieurs. Est-ce que ça te semble un exemple à suivre ?

Il y a effectivement au Québec une charte, liée à l’Ordre des Ingénieurs du Québec. Il est obligatoire de faire partie de cet ordre pour pouvoir exercer… Sauf pour les ingénieurs en informatique.
Pour remettre les choses en contexte, le corps des ingénieurs a été créé à l’origine pour construire des ponts, des barrages, des centrales nucléaires, des avions de guerre… toutes constructions complexes qui demandent une infrastructure énorme et sont faites dans des cadres très réglementés. Ainsi, l’éthique existe plus ou moins à travers la réglementation.
En France, on n’a pas cette notion du Corps des Ingénieurs qui devrait respecter une éthique, comme l’Ordre des médecins ou celui des avocats. C’est assez lié à l’Histoire, le corps des ingénieurs ayant été créé notamment pour être le bras « armé » du gouvernement (sans que cela les empêche de construire des ponts et des barrages, bien sûr).
De toute façon, on se rend bien compte que les constructions complexes ne peuvent pas se faire seul. Ce travail en équipe, ainsi que les besoins d’infrastructure évoqués précédemment, posent une « barrière » de protection éthique à l’entrée. Cette barrière n’existe pas dans l’informatique : pour écrire du software, il n’y a besoin que d’un PC (et à la limite d’une table et une chaise). Aujourd’hui, on se rend compte que le software peut avoir une influence terrible sur la vie des gens, avec Facebook par exemple.
Donc : est-ce qu’il faudrait instaurer un code d’éthique ? En France, le réflexe est souvent qu’il faut légiférer.
Bien qu’il ne soit plus possible aujourd’hui de créer un ordre (comme l’ordre des médecins ou des avocats), on commence tous à prendre conscience qu’il faut une éthique. Mais faut-il que ce soit réglementé ? C’est une autre question.
L’exemple du Québec n’est donc pas applicable à la France, et ce n’est pas forcément un exemple à suivre.

(suite…)

[:fr]La parole est aux speakers : Yvonnick Frin et Benjamin Cavy (AFUP Day 2019 Rennes)[:]

[:fr]Jusqu’à l’AFUP Day 2019 Rennes, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Laravel et Vue : une stack simple et efficace pour le WEB

Un développeur heureux produit du meilleur code. Laravel et Vue ont bien compris ce concept et nous proposent des APIs élégantes, expressives et faciles à prendre en main. Elles nous permettent de construire des applications web en un rien de temps.

Laravel est un framework implanté depuis 5 ans dans l’écosystème PHP, façonné de manière à pouvoir construire des APIs REST rapidement. Il embarque aussi tout un ensemble d’outils pour faciliter les tâches quotidiennes du développeur.

Vue js est un framework léger et performant, orienté composant qui gagne rapidement en popularité dans l’écosystème Javascript. Les nombreuses fonctionnalités présentes “out of the box” dans le framework permettent de se concentrer sur ce que l’on veut réaliser plutôt que sur la manière de le réaliser.

Au travers du live coding d’une petite application permettant d’enregistrer vos gifs favoris, nous allons vous présenter la synergie qui existe entre ces deux frameworks.

La Fabrique
17/05/2019
14:00-14:40

Malgré toutes les louanges qu’on entend sur Laravel et Vue, on a l’impression qu’ils sont peu utilisés en France. Comment l’expliquez-vous ?

Y: Cela peut s’expliquer par le fait que Symfony était déjà présent bien avant Laravel et a su s’améliorer au fur et à mesure pour garder leurs utilisateurs. De plus Symfony a été réalisé par un français et nous sommes chauvins c’est bien connu !

B: En ce qui concerne Vue.js il est arrivé un peu après les autres (angular et react) donc beaucoup de choix techniques avaient sans doute déjà été faits, et je pense qu’en France on aime bien la “stack unique” dans une entreprise.

(suite…)

[:fr]La parole est aux speakers : Kévin Dunglas (AFUP Day 2019 Lille)[:]

[:fr]Jusqu’à l’AFUP Day 2019 Lyon, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Symfony Panther : tester vos applis web avec de vrais navigateurs n’a jamais été aussi simple

Que ce soit quelques lignes de jQuery ou des Progressive Web Apps React/Vue.js/Angular complètes, toutes les applications web modernes contiennent du JavaScript. L’écosystème PHP et les frameworks tels que Symfony ou Zend proposent des outils pour réaliser des tests fonctionnels et de bout en bout (E2E), malheureusement ils se contentent d’effectuer des requêtes HTTP (Guzzle, Symfony WebTestCase, Zend Test PHPUnit) et des assertions sur le HTML généré côté serveur (BrowserKit). Ils ne sont pas capables d’exécuter le code JavaScript, de générer du HTML côté client, de tester si un élément est visible ou non, si une boîte de dialogue (alert, prompt) est bien affichée au clic… De plus, ces outils de test ne permettent pas de détecter les éventuels bugs touchant des navigateurs spécifiques.

Panther est une toute nouvelle bibliothèque qui permet - grâce au standard WebDriver du W3C - de piloter tous les navigateurs modernes (Chrome, Firefox, Safari, Edge…) directement en PHP pour réaliser des tests fonctionnels et E2E, ou du web scraping. Panther implémente la très pratique API publique du composant BrowserKit de Symfony, ce qui lui permet d’exécuter les tests écrits avec le composant de test fonctionnel de Symfony et les scripts utilisant la bibliothèque de web scraping Goutte sans avoir à les modifier ! De plus, il implémente l’API de PHP WebDriver, et donne accès à toutes les fonctionnalités avancées du protocole du même nom, parmi lesquelles la possibilité d’effectuer des captures d’écran ou exécuter des scripts JavaScript personnalisés dans le contexte d’exécution de la page.

Panther s’installe à l’aide d’un simple « composer require » et tout ce dont il a besoin pour fonctionner c’est un navigateur (pas de Selenium ou autre). Il détecte la structure de l’application, lance un serveur web pour la servir, trouve l’installation locale de Chrome ou de Firefox et les démarre en mode « headless » sans qu’aucune configuration ne soit nécessaire ! Il s’intègre également avec les solutions d’intégration continues populaires tel que Travis et fonctionne avec Docker. Encore mieux, il est compatible avec les services SauceLabs et BrowserStack pour tester votre application sur toutes les plateformes mobiles et bureaux possibles et imaginables.

Lors de cette présentation, vous découvrirez l’ensemble des capacités du félin et son fonctionnement interne !

Auberge Stéphane Hessel
17/05/2019
15:30-16:10

Tu as créé Symfony Panther pour tester les applications web et tu nous en parleras lors de l’AFUP Day 2019 Lille : quelle est la spécificité de ce composant vis-à-vis d’autres outils de testing ?

Panther est un outil de test de bout en bout (end-2-end) dont les deux objectifs principaux le différencient fortement des autres outils dédiés à l’écriture de ce type de tests :

– il s’intègre parfaitement avec les outils de tests unitaires et fonctionnels déjà fournis avec Symfony
– il est très facile à mettre en oeuvre : pas besoin d’installer Selenium, de configurer un serveur web, de préparer une base de données de test… tout est automatique.

Concrètement, Panther implémente l’API publique de BrowserKit. C’est aussi celle que respectent l’outil de test fonctionnel de Symfony (WebTestCase) et Goutte, la bibliothèque de web scraping. Il est donc très facile de porter des tests existants utilisant l’un de ces outils : il n’y a qu’une seule API à apprendre pour les maîtriser tous, là où d’autres outils de tests E2E vous demandent d’apprendre une nouvelle API (CodeCeption, Dusk) voire un autre langage de programmation (Nightwatch, Cypress, …).

La différence avec WebTestCase et Goutte, c’est que Panther va lancer un vrai navigateur web pour exécuter les scénarios de navigation. Panther va exécuter le code JavaScript et effectuer le rendu CSS. Il devient donc possible de tester le code front, et donc de s’assurer que la page sera totalement fonctionnelle lorsque l’utilisateur s’y rendra (pas d’erreur JS bloquante, pas d’éléments HTML importants masqués en CSS…).

Si vous utilisez React, Vue.js ou même jQuery pour réaliser la couche de présentation de votre projet, Panther vous permet désormais de la tester aussi naturellement que si vous aviez utilisé Twig. Si vous utilisez les fonctionnalités temps réel apportées par Mercure (qui dépendent de JavaScript côté client), Panther vous permet également de les tester.

De plus, Panther fournit des fonctionnalités supplémentaires telles que la possibilité de simuler des clics de souris sur des éléments précis (pratique pour tester des applications utilisant canvas ou WebGL), de prendre des captures d’écran, ou d’exécuter du code JS dans le contexte d’exécution du navigateur.

Panther s’appuie sur le protocole WebDriver, standardisé par le W3C, et sur la bibliothèque PHP WebDriver de Facebook (à laquelle j’ai beaucoup contribué au cours du développement de ce nouvel outil). Il peut donc manipuler n’importe quel navigateur moderne (Chrome par défaut, mais aussi Firefox, Edge…), est compatible avec Selenium et avec les services de “browser testing” en SaaS (SauceLabs, BrowserStack…).

Durant ma présentation, je vous présenterai en détail comment ça marche ! Notez d’ailleurs que – bien qu’il fasse partie de ce projet – Panther n’a aucune dépendance à Symfony, il peut fonctionner avec n’importe quel projet PHP (et même non-PHP).
(suite…)

[:fr]La parole est aux speakers : Sarah Haïm-Lubczanski (AFUP Day 2019 Rennes)[:]

[:fr]Jusqu’à l’AFUP Day 2019 Rennes, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

No Doc, No Feature v2

La nouvelle fonctionnalité est prête, toute l'entreprise se réjouit. Les utilisateur·ices vont-ils savoir s’en servir ? Si vous pensez que le changelog et la PHPDoc suffisent, je voudrais vous demander : pourquoi priver vos utilisateur·ices des meilleures parties de votre logiciel ? Je vous propose de définir la qualité minimale attendue pour une documentation aujourd'hui, et d’examiner l’effort à fournir pour l’atteindre. Nous parlerons des process de documentation et de comment on fait pour documenter avec les moyens et les compétences disponibles au sein de l'équipe.

La Fabrique
17/05/2019
11:15-11:55

Cela sera ta deuxième conférence sur le sujet de la documentation à un événement AFUP. La documentation peut parfois être vue comme rebutante à écrire : comment motiver l’équipe à la rédiger ?

La documentation est vue comme rebutante à écrire par les développeur·euse·s car cela demande un vrai travail de formulation et de concrétisation de concepts abstraits et d’idées pour les partager. Ces idées peuvent être claires dans votre tête et il faut alors les transcrire. En fait, la documentation requiert des compétences de communication.
Lors de ma précédente conférence sur la documentation durant le PHP Tour 2018 à Montpellier, j’insistais sur le fait que les développeur·euse·s apprécient une documentation de qualité, et pourtant ne sont pas toujours prêt·e·s à investir du temps dans la production d’une documentation qui valorisera leur travail.

(suite…)

[:fr]La parole est aux speakers : Maxime Huran (AFUP Day 2019 Lille)[:]

[:fr]Jusqu’à l’AFUP Day 2019 Lyon, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Développer sous Sylius en 40 minutes chrono

Sylius est un framework e-commerce sous Symfony très simple à prendre en main. Ça tombe bien j'ai décidé de vendre ma collection de jeux vidéos, nous allons donc en profiter pour voir le temps d'un talk comment l'utiliser et le personnaliser. Après une brève présentation des fonctionnalités, nous entrerons dans le vif du sujet pour ajouter nos propres développements !

Auberge Stéphane Hessel
17/05/2019
17:05-17:45

Lors du Forum PHP 2018, tu as donné une conférence à propos de Sylius, en binôme avec Jacques Bodin-Hullin. En quoi ce talk sera t-il différent ?

J’étais ravi de pouvoir faire ce premier talk avec Jacques, c’était vraiment rassurant pour moi de ne pas être seul.
Une fois ce premier talk fini, je pensais déjà à en faire un autre, comme un nouveau challenge personnel.
Ce talk sera donc différent dans la façon de le présenter car étant donné que je le présente en solo, il n’y aura pas les interactions que l’on peut avoir quand on est en binôme.
Il le sera aussi par le contenu car nous avions présenté notre retour d’expérience avec Sylius dans notre dernière présentation. Cette fois-ci, il sera question de technique et de comment développer sous Sylius. Le nombre de choses à voir est juste énorme, le timing assez serré, mais l’idée est vraiment de vous apporter les fondamentaux pour vous convaincre à basculer sur cette solution pour vos e-commerce, et de vous montrer en quoi Sylius est vraiment une plateforme chouette pour développer.
(suite…)

[:fr]La parole est aux speakers : Gaël Crispyn (AFUP Day 2019 Lille)[:]

[:fr]Jusqu’à l’AFUP Day 2019 Lyon, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Composer : un ami que l'on connait si peu

Tout le monde (ou presque) connait Composer. Tout le monde (ou presque) l'a utilisé pour gérer ses projets. Mais connait-on vraiment ses capacités? Une fois install et update utilisés, que peut-il nous apporter?

Passage en revue d'un ami qui nous veut du bien !!

Auberge Stéphane Hessel
17/05/2019
11:40-12:20

L’AFUP Day 2019 Lille sera ta première conférence nationale. Qu’est-ce qui t’a poussé à te lancer ?

J’ai tout de suite vu cela comme une sorte de défi personnel. Il y a quelques années, j’ai énormément perdu confiance en moi suite à des déboires professionnels et une personne de mon entourage m’a poussé à faire ma première conférence locale en me disant : « Tu as forcément quelque chose à transmettre ! Et au pire si ça ne fonctionne pas, tu te seras trompé, mais ce n’est pas grave ! Tu tenteras autre chose la prochaine fois ». J’ai sorti la tête de l’eau grâce à cette phrase. Et c’est cet esprit qui m’incite à participer : essayer de transmettre.
(suite…)

[:fr]La parole est aux speakers : Benoit Jacquemont (AFUP Day 2019 Rennes)[:]

[:fr]Jusqu’à l’AFUP Day 2019 Rennes, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

PHP 8 et Just In Time Compilation

PHP 7 a apporté des gains de performance importants. Mais saviez-vous que ces gains sont principalement issus du travail préparatoire pour la mise en place du JIT?

La compilation Just In Time est un moyen de transformer l'opcode PHP directement en langage machine compris par le processeur, toujours pour obtenir des performances supplémentaires.

Et c'est aussi un des composants principaux de la future version majeure de PHP.

Ce talk sera l'occasion de plonger dans le fonctionnement de la technologie JIT choisie par l'équipe de développement du moteur Zend, ainsi que de présenter quelques premiers benchmarks.

La Fabrique
17/05/2019
10:05-10:45

Tu es un speaker régulier des événements AFUP. Comment trouves-tu l’inspiration pour nous soumettre toujours de nouveaux sujets ?

L’inspiration provient en général de 2 sources : mon travail quotidien (par exemple « Hunting memory leaks with PHP Meminfo », « OpCode », « strace ») et l’actualité (« HTTP/3 », « PHP 8 and JIT »), avec toujours en toile de fond l’envie de creuser un sujet qui sort un peu de l’ordinaire, mais qui est finalement très proche des développeurs.

Par exemple HTTP, c’est le protocole du web, c’est la base du travail de tout développeur Web. Mais comme c’est en même temps assez bas niveau, les développeurs Web n’ont pas forcément l’occasion de rentrer dedans. D’où le talk sur HTTP/3.

Pareil pour les talks « Opcode » ou « JIT sur PHP »: c’est à priori des sujets dont les développeurs PHP ne devraient pas trop s’inquiéter, mais en même temps je pense que ça peut être utile de comprendre comment tout cela fonctionne. Ça rend les choses moins opaques !
De plus, dans certains cas, l’utilité peut être immédiate, comme pour strace où la démystification de l’outil abaisse la barrière d’entrée à l’utilisation.

Et puis j’aime bien le challenge de prendre un sujet assez pointu et de le rendre compréhensible. Ca me permet de valider que je l’ai bien compris aussi 😉

(suite…)

[:fr]La parole est aux speakers : Rodrigue Villetard (AFUP Day 2019 Lille)[:]

[:fr]Jusqu’à l’AFUP Day 2019 Lille, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Une application sans framework en 2019

Développer une application sans framework en 2019 ? Hérésie ?

Derrière ce titre provocateur, nous verrons comment replacer notre code applicatif au cœur du processus de développement. L’objectif : reprendre le contrôle de notre code pour atteindre une maintenabilité sur plusieurs années.

Loin de rejeter les propositions des solutions cadricielles du marché, nous verrons au contraire comment les bonnes solutions peuvent déployer leur valeur tout en permettant à notre code métier de respirer

Auberge Stéphane Hessel
17/05/2019
16:40-17:00

Le titre de ta conférence est « une application sans framework » : avec sa version 4, pour toi Symfony reste t-il un framework ?

Si la question vous est posée lors d’un entretien d’embauche, la bonne réponse est de répondre : « Non, Symfony est un ensemble de composants de haute qualité qui peuvent être utilisés individuellement ». Si techniquement cela n’est pas faux, Symfony propose également une documentation, une architecture, une organisation de fichiers et un ensemble de bonnes pratiques qui – mis bout à bout – ressemblent finalement assez fidèlement à un framework si on le souhaite.

Paradoxalement, je crois que c’est cette deuxième définition qui est davantage consciemment utilisée. Et c’est plutôt bien comme ça. J’admire d’ailleurs la gouvernance du projet Symfony et la maturité de sa communauté d’arriver à concilier les deux approches avec succès.

(suite…)

[:fr]La parole est aux speakers : Frédéric Hardy (AFUP Day 2019 Lyon)[:]

[:fr]Jusqu’à l’AFUP Day 2019 Lyon, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Quel est le rapport entre TCP, UDP et la programmation orientée objet ?

La programmation orientée objet doit permettre la conception de programmes fiables, évolutifs, facilement et rapidement, à l’aide de briques de code réutilisables. Pourtant, il est rare de pouvoir réutiliser du code orienté objet dans un contexte différent de celui pour lequel il a été conçu. De plus, parvenir à faire collaborer des objets qui ne sont pas issus du même écosystème n’est pas forcément trivial. Les programmes ont pris de l’embonpoint en termes de quantité de code et de complexité, et ils sont donc dans la plupart des cas très gourmands en ressources intellectuelles et techniques pour leur conception et leur mise en œuvre. De plus, ils deviennent souvent rapidement difficiles à faire évoluer, et leur fiabilité est incertaine et délicate à maintenir sur la durée, si tant est qu’elle soit suffisante dès leur première mise en production. Le constat est donc cruel : la programmation orientée n’a pas tenu ses promesses ! Quoique… l’Homme a une tendance naturelle à accuser l’outil plutôt que la façon dont il l’utilise. Et si nous laissions le bénéfice du doute à la programmation orientée objet durant cette conférence et que nous en profitions pour remettre en cause la façon dont nous l’appréhendons?? En réalisant un parallèle entre les protocoles de communication UDP et TCP à la base d’Internet et la façon dont nous écrivons du code orienté objet actuellement, j’espère vous faire douter de vous-même et à nouveau vous faire croire aux promesses d’Alan Kay !

SupInfo
17/05/2019
09:20-10:00

Ces dernières années on a souvent parlé de DDD, microservices ou d’architecture hexagonales. Tu vas nous parler de POO, TCP, UDP : des principes qui ont des dizaines d’années d’existence. Penses-tu que ce retour à la base est le meilleur moyen de garantir la simplicité ?

L’objectif derrière le fait de mettre en relation ces concepts est d’apporter un éclairage différent sur la POO par rapport aux pratiques actuelles.
En tant que développeurs, nous avons tous pour objectif de produire facilement et rapidement du code qui répond aux besoins des clients ou des utilisateurs et qui soit simple à maintenir et à faire évoluer.
Et pour y parvenir, nous avons à notre disposition tout un tas de recettes de cuisine ou d’outils qui s’appellent TDD, DDD, architecture hexagonale, design pattern, « if less programming », « object calisthenics », SOLID, et il y en a beaucoup d’autres.
Pourtant, malgré cette pléthore de bonnes pratiques et de recommandations, dans les faits, la plupart du temps, cet objectif n’est que partiellement atteint.
Un jour ou l’autre, nous sommes dans l’impossibilité de faire évoluer le code simplement, et nous sommes alors obligés de produire de la dette technique qu’il faudra rembourser à plus ou moins long terme.
Et comme la dette appelle la dette, elle va donc rendre plus compliquée la maintenance du code et rendre plus complexe son évolution.
Or, la POO a été conçue justement pour répondre à cette problématique, et non pour la provoquer.
C’est en cherchant à comprendre l’origine de ce paradoxe et en revenant à ces origines que je me suis aperçu que nous faisons de la POO, mais que nous ne la comprenons pas réellement.
Nous utilisons la POO pour développer des programmes qui sont une suite d’appel de fonction, alors qu’elle est censée permettre la conception d’un protocole de communication et de l’implémenter.
C’est pour illustrer cela que j’utilise TCP et UDP dans cette conférence, mais je n’en dirais pas plus maintenant.
Si vous voulez savoir exactement ce que j’entends par là et si ce « retour à la base » permet effectivement de « garantir la simplicité », il faudra venir à ma conférence 😉
(suite…)

[:fr]La parole est aux speakers : Lætitia Avrot (AFUP Day 2019 Lyon)[:]

[:fr]Jusqu’à l’AFUP Day 2019 Lyon, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Les merveilles méconnues du SQL

Le SQL est un langage très puissant. Si vous avez suivi les évolutions de la
norme SQL, vous devriez savoir ce qu'est une CTE (y compris une CTE recursive),
les aggrégations avancées (window function, cube, rollup...) et les différents
types de jointures (même les jointures latérales). Mais les avez-vous essayées ?

Cette conférence se focalisera sur ces nouvelles fonctionnalités, comment elles
sont décrites dans la norme et comment elles sont implémentées dans PostgreSQL
avec des exemples concrets.

À la fin de cette conférence, vous devriez être capable d'utiliser toutes ces
merveilles du SQL et de les expliquer à vos collègues pour que leurs yeux à eux
aussi se mettent à briller!

SupInfo
17/05/2019
15:40-16:20

De nombreuses développeuses et développeurs font peu de SQL et accèdent à leur base via des ORM. Quels sont les avantages à bien connaitre le SQL ?

Aujourd’hui, on voit de plus en plus de retours d’expériences de développeurs séniors expliquant que la ressource la plus utile qu’ils ont négligée dans leur apprentissage était le langage SQL. Ce qu’il faut bien comprendre, c’est que le langage SQL que 95% des développeurs connaissent est un sous-ensemble de ce que le SQL peut faire. En gros, les développeurs savent faire ce qu’on appelle des CRUD (Create, Read, Update, Delete) dans leurs expressions les plus simples. En n’utilisant pas toute la puissance du langage SQL (et du moteur du SGBDR), c’est-à-dire en n’utilisant le SQL uniquement pour récupérer des données sans les traiter, on laisse cette charge au programme dont ce n’est pas le travail. Au final, les performances ne sont pas au rendez-vous et personne n’est satisfait.
Ma vision des ORM est biaisée : on m’appelle quand ça ne marche pas… Je n’ai donc jamais vu un ORM utilisé correctement… Par contre, je peux dire une chose: mapper des objets sur des tables d’une base de données ne peut pas fonctionner. Les structures d’un programme sont créées pour gérer les données et les afficher. Le stockage en SGBDR est fait pour éviter au maximum la duplication des données. Ces buts différents font que les structures sont différentes. Ce qui a du sens, c’est de mapper des objets sur des relations, qui peuvent être un résultat de requête.
Un autre problème du SQL, c’est la généralisation du langage. Effectivement, il existe une norme SQL, mais comme toute norme, chaque moteur a développé sa propre manière de faire. Du coup, les ORM se reposent souvent sur un sous-ensemble du SQL qui fonctionne avec la majorité des SGBDR et là encore, on perd beaucoup à ne pas utiliser les spécificités du SGBDR choisi et on se retrouve, à nouveau, avec des problèmes de performances. Imaginez un développeur web qui décide de ne pas utiliser un seul hook dans son css pour avoir un code qui fonctionne sur tous les navigateurs ! C’est exactement le même problème.

(suite…)