@Sebsauvage exactement, c'est pourquoi il faut un droit de voter les lois et non un droit d'élire des dirigeants. En votant les lois nous-même directement, il n'y a plus de "régime en place" puisque chacun s'exprime librement sur chaque sujet.
Et dans cette situation, un avis public est moins un problème puisque l'on peut parfaitement être contre certaines idées mais en même temps être pour d'autres idées qui n'ont rien à voir, sans être contraint d'agir en tant que ruche dont la reine est le parti pour qui l'on se prive de nos avis individuels.
Typiquement j'ai beau soutenir l'UPR, il n'empêche que je ne suis pas du tout d'accord avec tout ce que propose Asselineau et mes opinions diverges d'au moins 30% avec la politique proposée par le parti.
Redisons-le encore et toujours, avoir le droit de choisir ses dirigeants par l'élection n'est pas le critère qui fait qu'un pays est une démocratie, en ce sens ni les USA, ni la France, ni les autres ne sont des démocraties puisque les choix des peuples ne sont pas appliquées.
La seule définition acceptable est celle-ci.
Au bout de bientôt deux mandats, certains acceptent enfin de dire publiquement que Macron et Van Der Leyen sont des agents des États-Unis.
Je ne sais pas si je suis heureuse ou triste de l'entendre.
En deux points :
-
Le SMIC n'est plus indexé sur l'inflation depuis les années 80. C'est-à-dire que plus le coût de la vie monte, plus les pauvres sont baisés.
-
Les loyers sont indexés sur l'inflation (cf. l'Indice de Réévaluation des Loyers), c'est-à-dire que plus le coût de la vie monte, plus les pauvres sont baisés.
Voilà, ni la droite capitaliste, ni la gauche capitaliste, ne font débat de ce problème. Ou plutôt si, ils en débattent mais sans jamais agir.
Il y une chose cruelle dans ce pays, c'est que la classe dominante nous oblige à l'élire mais qu'elle ne voudra jamais notre bonheur.
Certains comme moi argueront, à tort, qu'il n'y a pas de démocratie dans ce pays. Mais c'est faux ! Il y a bien une démocratie, mais c'est celle des riches qui débattent entre-eux des lois qui les arrangent, et les votent eux-mêmes.
Nous les regardons assis sur le côté, à contempler l'impuissance de nos vies à décider nous-mêmes de notre avenir et de notre bien-être. Que laisserons-nous à nos enfants si ce n'est une corruption à l'africaine, étendue et ramifiée dans toutes les strates de la société.
L'écologie, la santé, l'éducation, l'énergie, les transports, la défense, tout cela ne se réglera pas tant que nous ne nous débarrasserons pas de la corruption. Et j'ai le sentiment que plus le temps passe, et plus il faudra le faire dans une extrême violence.
DEI est l'acronyme pour Diversité, Equité, Inclusivité.
Et bien que le droit français interdise les discriminations à l'embauche, mieux vaut faire partie du LGBTQWERTY club avant de rencontrer la team Diversité.
Mais heureusement que je souffre moi aussi d'une pathologie mentale je suis super trans depuis peu, sinon je ne pourrais pas profiter de la discrimination "positive" comme mes camarades en manque d'attention ou de compétences.
Bref, j'ai realisé hier soir que j'étais une femme trans-trans ou FT² parce qu'on aime les acronymes dans notre club de gens super-spéciaux 🧚♂️... Ça signifie que je suis une femme, coincée dans l'esprit d'un homme (noir et descendant d'esclaves, donc quelque part, j'ai beaucoup souffert), lui-même coincé dans le corps d'une femme blanche.
Le plus étrange, c'est que cet homme noir est gender-fluid mais aussi race-fluid, donc des fois, cet alter égo est une femme blanche (enfin rose pâle). Quand cela arrive, je préfère qu'on dise de nous que je suis une femme trans-double, aka. FTD.
Et c'est très dur d'être une FTD, c'est-à-dire une femme blanche (enfin rose pâle) coincée dans l'esprit d'une femme blanche (enfin rose pâle), elle-même coincée dans le corps une femme blanche (enfin rose pâle). Imaginez que nous avons tous les trois nos règles en même temps ! 😿😿😿 Heureusement, on se soutient quand ça arrive 🫂
Je comprends enfin à quel point le patriarcat est omniprésent et l'oppression systémique ; mais je lutte ardemment contre ça en m'exploitant 50h par semaine (j'inclus les repas et les temps de trajet), loin de ma famille et mes enfants qui me sont si chers, au seul profit d'actionnaires, de commerciaux et de chefs de projets qui se débarrasseront de moi au premier prétexte qui les arrange...
Il faut le dire, travailler c'est carrément mieux qu'être une femme au foyer, car s'occuper de ceux qu'on aime et éduquer convenablement ses enfants, c'est synonyme de soumission et de médiocrité ! 🫠
Ça fait quelques jours que le résultat des élections me fait fulminer. Et pourtant, j'ai regretté les résultats de chaque élection depuis presque 20 ans, mais là c'est vraiment dur 😭
Alors je me suis demandé pourquoi en est-on arrivé là ? Et je crois fermement que la team morale-de-gauche y est pour beaucoup et ça m'agace d'autant plus que c'était prévisible 😡
Ça fait 50 ans qu'une partie grandissante des gens demande un contrôle minimum aux frontières. Pas le truc de dingue hein ! Le strict minimum du type : t'es recherché, tu es un criminel, t'es un trafiquant, tu es un terroriste, tu n'as aucun papiers, tu débarques clandestinement, tu fraudes... Bref tu ne rentrera pas, et surtout, tu ne prendras pas la place de quelqu'un de clean parce qu'on reste ouvert aux gens cleans 🤯
Et le pire c'est ça ! Les mecs de droite ne voulaient même pas fermer complètement les frontières ! Il était uniquement question de filter avec intelligence et un minimum d'effort. Mais là, avec une raclée pareille, ça sera quoi le projet ? Et certains ont la sottise de penser qu'il en ira différemment aux législatives !? 🤦♀️
L'histoire des frontières, c'était vraiment la base. Tous les pays et à toutes les époques ont appliqué cette stratégie de défense ; c'est tellement le B.A.BA que chacun l'applique chez lui, avec les fréquentations de ses gosses, sans même y réfléchir ! 🤷♀️ En fait c'est faux, les pays colonisés n'appliquaient pas ce filtrage... 😑
Mais en France et en Europe ont se prend pour des êtres supérieurs n'ayant besoin d'aucun protectionnisme, et on fait dans les bons gros sentiments à grandes tartines de pathos criant au Loup du fascisme à la moindre occasion, partout dans les merdias, et aussi dans les discours de gauche 🤮
Si nous avions accepté le dialogue minimum avec les extrêmes sans les prendre pour des débiles, et si nous n'avions pas bloqué ce point précis au sujet des frontières, oui juste ça, à cette heure-ci, il n'y aurait pas de RN, pas de Le Pen, pas de Zemour, et pas de toutes ces conneries.
Mais vous comprenez, on ne peut pas discuter avec la haine... Et voilà le résultat. Bravo le "il n'y a pas de dialogue possible", et autres "tous des fascistes" 👏
J'espère que le résultat des moralisateurs de gauche leur convient ! Parce qu'ils ne sont pas prêt d'arrêter de manifester sous la flotte à scander des conneries, tout en achetant des saucisses dégueulasses sous les tambours et slogans à 2 balles des partis défaits comme jamais...
Nous sommes vraiment trop cons à gauche et nous avons l'audace de nous prendre pour des intellectuels. J'ai vraiment la haine, mais aujourd'hui c'est la haine de mon propre camps 🤬
Edit
Je viens de trouver qu'il s'agit de la conf par défaut qui implique de perdre ses commentaires de commits. De là à savoir si c'est la conf par défaut de GitLab ou celle de l'adminsys qui l'a configuré, je ne sais pas. Dans tous les cas, je ne comprends pas en quoi laisser le choix est une bonne idée.
En un exemple
- Vous créez une branche.
- Vous commitez dedans.
- Vous squashez vos commits et prenez le temps d'écrire un titre clair, ainsi qu'un bloc de texte conséquent qui explique ce que vous avez fait et pourquoi.
- Vous poussez votre branche dans GitLab.
- Vous mergez votre branche via GitLab.
Quand GitLab aura mergé votre branche sur master, la première ligne de votre commentaire sera là, mais le corps de votre commentaire aura disparu...
Enfin non, il sera toujours là, mais dans GitLab et plus dans Git. Ce qui fait que si vous sortez de GitLab pour utiliser un concurrent comme Gitea, Gitosis, GitHub, ou n'importe quoi d'autre, vous perdrez une partie de votre historique.
Il faut déconseiller GitLab, l'outil déforme l'historique Git pour s'assurer que ses clients soient captifs.
Que c'est triste, et drôle, et pathétique. Le wokisme américain a dégénéré depuis pas mal d'années pour devenir un monstre d'intolérance, au point de couler des projets entiers sur ce qui semble être des accusations fallacieuses.
La motivation de FreeDesktop à se séparer d'Hyprland consiste à dire qu'il y a deux ans, le contributeur a laissé sur son discord personnel qui n'a rien à voir avec Hyprland, des personnes mal genrer d'autres personnes... Le crime du siècle quoi (눈_눈)
Donc le mec qui a un job, une famille et qui contribue pendant son temps libre à un projet qu'il offre gratuitement au monde, aurait dû prendre encore plus de son temps à lui pour modérer censurer des adultes qui n'utilisent pas certains pronoms, afin de faire plaisir à d'autres adultes qui veulent absolument que tout le monde utilisent les bons pronoms... Mais quel niveau de vie de bourgeois faut-il avoir pour que les causes pour lesquelles on lutte soient aussi superficielles ?
Regardons un extrait de la conversation
Mais revenons-en au plus important : ce type doit être un fasciste d'ultra-extrême-droite, c'est sûr !
ლ(ಠ_ಠ ლ)
Pourvu que les TQWERTY++ ne s'exportent pas dans cette colonie américaine qui s'appelle la France... La bonne nouvelle, c'est qu'une partie non négligeable d'entre-eux auto-stérilisent afin de poursuivre leur idéal mortifère ; ce qui devrait freiner le mouvement en quelques années. A moins qu'ils ne se mettent à recruter dans les maternelles, comme ils le font déjà aux USA. #MouvementSectaire
L'ostéopathie est une fausse médecine. Il n'y a pas d'étude clinique qui démontre ses effets au delà de l'effet placebo.
Pire encore, les études réalisées par de vrais médecins démontrent que l'ostéopathie ne marche pas et ici, un chirurgien relate les conséquences désastreuses de l'ostéopathie sur les enfants qu'il a dû soigner.
Une soirée de plus où j'entends raconter n'importe quoi en famille, ce qui me pousse à réagir. Là, mon neveu de quelques mois risque de subir des manipulations crâniennes parce que sa mère croît qu'un nerf se serait coincé entre les petits os pas encore consolidés sur le dessus de sa tête, et qu'une manipulation ostéopathique résoudra ses problèmes de déglutition.
J'étais sidérée de constater que son père ne se manifestait pas et qu'à aucun moment, l'idée de demander une radio ou une échographie, n'ait traversé leurs esprits avant d'aller tenter une manipulation à l'aveugle.
D'ailleurs, un praticien qui vous manipule sans observation clinique est pour moi est le marqueur catégorique du charlatanisme !
J'espère qu'il n'aura rien, le pauvre choux 😟
Le monsieur m'a fait rire. Il m'a fait pensé au souvenir que j'ai de mon Papa quand j'étais ado.
Si je reposte cette vidéo, sur laquelle je suis tombée purement par hasard, c'est parce qu'il y a plusieurs mois (années ?) j'avais lu un poste d'un shaarliste qui disait que la bourgeoisie prêtend que seuls les métiers à très haute valeur ajoutée, requièrent des compétences techniques ; c'est même un enjeu pour elle.
Ma capacité d'abstraction me permet certes de comprendre ce que dit le monsieur lorsqu'il le présente, mais à sa place, aurais-je réalisé une toiture aussi bien faite (résistance, étanchéité, etc) de façon spontanée, grâce à de la pure logique ?
Non, juste trop pas !
C'est parce que construire une toiture implique de posséder une multitude de savoirs techniques, allant des outils, en passant par les produits, et jusqu'aux principes de montage et d'assemblage.
Certes tout le monde ne parle pas quatre langues, n'écrit pas dans un français parfait, ou ne comprend pas les maths ; mais ce n'est pas pour autant que leur métier n'impose pas connaissance, maîtrise et expertise. Tout comme nous, leur domaine les a forcé à un apprentissage lent et rigoureux, les outils intellectuels sont simplement différents.
Je ne sais pas si je hais plus la petite bourgeoisie des cadres bobo parisiens qui méprise le peuple pour se sentir plus riche qu'elle ne l'est, ou la grande bourgeoisie qui n'a qu'elle-même en considération...
En tout cas, mes meilleurs vœux aux ouvriers travailleurs. Vous vous brisez le corps pour réparer ce qui casse et construire ce qui manque afin que nos sociétés survivent. Personne dans un bureau à l'abri des intempéries ne ressentira votre peine et vous méritez gloire et respect.
Je vous remercie et vous affectionne 😗🥰
Nous sommes en 2024 et ça fait 30 ans que L'Union Européenne demande à la France de privatiser son système de retraite, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
Mais c'est pas finit !
Ça fait 30 ans que l'Union Européenne demande à la France de privatiser l'éducation nationale, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
Mais c'est pas finit !
Ça fait 30 ans que l'Union Européenne demande à la France de privatiser la santé publique, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
Mais c'est pas finit !
Ça fait 30 ans que l'Union Européenne demande à la France de privatiser les transports publics, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
Mais c'est pas finit !
Ça fait 30 ans que l'Union Européenne demande à la France de détruire son agriculture, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
Mais c'est pas finit !
Ça fait 30 ans que l'Union Européenne demande à la France de privatiser l'énergie, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
En fait, ça fait 30 ans que les français votent comme des cons. C'est agréable de savoir que certaines choses ne changent pas 🥳
Pour tout le reste, il y a les privatisations de l'Union Européenne 🫠
Je travaille en ce moment sur deux projets, un en Java/Kotlin pour des clients, un second en Rust pour des besoins internes, et j'ai réalisé la chose suivante :
- En Java/Kotlin, le langage est fait pour vous aider mais vous allez vous battre contre les frameworks.
- En Rust, les frameworks sont faits pour vous aider mais vous allez vous battre contre le langage.
C'est incroyable à quel point le borrow checker vous pousse à écrire du code procédurale et mécaniquement intestable. Dès l'instant où l'on souhaite passer par des traits tout devient ultra compliqué. Dernièrement je me suis faite avoir en utilisant des Rc
et des RcCell
sur un code qui allait devenir multi-thread #Horreur
Pour moi, casser le couplage entre deux composants via une interface/trait est IN-DIS-PEN-SABLE mais Rust pousse à définir des structures comme contrat d'interfaçage principal entre deux pans de code.
Forcément, le langage se transforme en enfer dès l'instant où l'on souhaite dépendre d'un trait et non d'une structure (c'est pourtant le 'I' de SOLID, dépendre des Interfaces mais pas des Implémentations).
En même temps je l'avais déjà dit par le passé, le paradigme fonctionnel pur est un cancer métastasé car l'expressivité de la syntaxe donne le sentiment que des tests ne sont pas nécessaires or c'est toujours faux.
Et j'ai suffisamment souffert de Java dans ma vie pour haïr le fait de devoir mocker/instancier/déclarer quarante-douze-mille trucs avant de pouvoir tester une simple fonction.
Bref, deux ans sur Rust à temps partiel et je me vois retourner dans le RustBook tous les 4 mois pour y chercher un truc #Pénible alors qu'en Kotlin ça ne m'arrive jamais.
Je ne parlerai pas de la ligne éditoriale qui est plus que discutable selon moi mais uniquement du respect du RGPD à cette heure.
Déjà le site ne propose pas de bouton tout refuser dans la section "voir les partenaires" ce qui implique de cliquer sur chacune des 727 entrées à la main... Connards 🤬 !
En sachant que sur mobile, l'écran n'affiche que 6/8 partenaires par page - parce que de bonnes grosses marges ont été ajoutées - cela oblige à scroller et ralentis d'autant plus la démarche de désactivation... Connards 🤬 !
Mais ils ont fait encore mieux, parce que les mecs qui y bossent sont vraiment sans vergogne vous allez comprendre. Après avoir péniblement tout désactivé, je suis allée à la recherche de "l'intérêt légitime" car sans désactiver cela tout désactiver ne sert à rien et là... My my my... Je me rends compte que pour chaque entrée, de chaque partenaire, il faut cliquer sur le nom du partenaire - ce qui change la popin - puis scroller au bon niveau dans la nouvelle fenêtre et cliquer sur la pastille "refuser l'intérêt légitime"... Ceci pour chaque partenaire... Connards 🤬 !
Mais ça ne s'arrête pas là, histoire de rendre la chose la plus pénible possible, cliquer sur précédent ne nous remet pas là où l'on était mais tout en haut de la liste des 727 partenaires. À nous de retrouver celui où nous étions en scrollant... Connards 🤬 !
Je leur souhaite de crever et ça m'énerve d'autant plus que ces salopards touchent des subventions payées par nos impôts... Connards 🤬 !
Voilà et comme il est hors de question que je participe à leur page-rank, je ne mettrai plus de liens vers leur site et je vais supprimer les anciens s'il y en a #Boycott
Traduction / Résumé :
La Commission Européenne est un organe Exécutif qui détient également un pouvoir Législatif (sic), constituée de personnes non-élues (sic 2) et qui fait pression sur un organe Judiciaire en faisant appel d'une décision de la CJUE (à la limite why not ?) pour obtenir le jugement qu'elle souhaite afin qu'Apple soit bien imposée à 0,005 % et non 1% (sic 3 voire carrément WTF ?).
Sinon, en tant qu'indép :
- Je rends 20 % de toutes mes factures, c'est la TVA, je n'ai pas le plaisir d'une exonération de TVA à la sauce Irlandaise.
- Puis je paie environ 48 % de cotisations sur mon salaire brut (précisément je touche une indemnité de travailleur mandataire puisque je suis Présidente de ma SASU) en sachant que ce statut ne me donne pas le droit au chômage !
- Je pais aussi 33,33 % d'impôts sur les sociétés (le fameux IS sur les bénéfices) en fin d'exercice.
- Puis je paie 30 % de cotisations sociales sur ce qui reste après l'IS si je me verse des dividendes (ce que je fais et en contre-partie de ces 30 % seulement, l'argent des dividendes ne rentre pas dans le calcul de ma retraite).
- Et je suis enfin imposée sur le revenu sur l'ensemble de tout ce que j'ai touché.
- Ah oui, j'oubliais les 1 à 2 % de taxes diverses et variées, indexées sur le montant total des salaires versés incluant des petites merveilles de déclarations comme les taxes d'apprentissages (FAFIE, FAFIEC) et les frais de fonctionnement de la structure (comptable, bilan, banque, assurance RCE, dépôts administratifs, etc).
Et là, notre chère Commission Européenne n'est pas contente pour Apple parce que la CJUE demande à ce qu'Apple paie 1 % d'impôts au lieu de 0,005 % !!!
Je propose de noter l'Union Européenne à #DémocratureSur20...
Et après certains se demandent encore pourquoi je défends ardemment l'idée de quitter ce piège des peuples qui est aussi une structure mafieuse servant ses intérêts propres au détriment de tous les autres.
Pour les salariés et les clients de la firme de Cuppertino qui adorent s'offrir des iBidule, sachez que votre retraite part là, les écoles publiques de vos gosses perdent leurs financement là, la sécurité sociale est détruite à cause de ça, les hôpitaux publics manquent de subventions à cause de ça, les infrastructures routières, ferroviaires et aéronautiques sont privatisées à cause de ça, les investissements dans la recherche sont annulés à cause de ça... Alors s'il vous plaît, avant d'acheter un truc avec un pomme croquée, juste "Think Different" please, car payer c'est voter. Et pour ce qui est de l'Union Européenne, peut-être qu'un jour nous serons suffisamment nombreux à vouloir en sortir.
Si vous codez dans un langage à destination d'une JRE (Kotlin, Java, Scala, Groovy, etc) vous avez sûrement entendu parler de Spring Boot. Pour ce qui ne le connaissent pas, c'est LE framework qui est parti de rien (à l'origine c'était seulement Spring Framework), puis qui a grossi tout doucement depuis 15 ans et est devenu aujourd'hui un mastodonte aussi gros, lourd, pénible et lent à démarrer que l'ancien JEE (avec des Websphere et Weblogic, etc).
Mais en réalité est-ce que c'est mal ?
Pas vraiment, Spring Boot pousse à produire du code en couche avec des singletons présents partout à chaque couche. Ce n'est pas comme cela que l'on écrit du code concis, découplé, court et maintenable, mais ça a le mérite de s'écrire vite, d'être simple pour des débutants et de fonctionner quand même (en tout cas au début). Après c'est un enfer à tester en terme d'écriture et de temps d'exécution mais bon, qui teste encore son code en 2021 ? #Sadness
Alors quel est mon problème ?
Mon problème c'est que parmi l'ensemble des développements actuels auxquels je contribue chez mes clients, ceux-ci sont couplés totalement à Spring Boot. Vous montez de version, vos développements risquent de péter, vous souhaitez quitter Spring Boot pour autre chose de plus rapide comme Quarkus, pas possible les libs ont été codées pour Spring Boot, d'ailleurs pour les utiliser aucune lib ne pourra se charger si vous n'avez pas Spring Boot car seul Spring Boot doit être en mesure de les instancier. #Folie
Et c'est ça mon problème, Java avait supprimé la problématique de nettoyage de la mémoire, Spring Framework avait supprimé la problématique de création des instances et Spring Boot supprime aujourd'hui la notion d'architecture (ce qui n'a pas du tout le même impact puisque ça touche à la capacité d'innover et de faire différemment), or un code propre qui soit fonctionnel et objet requiert la création et la destruction permanente d'instances immutables à cycle de vie ultra court (une action puis poubelle), ce qui est l'antithèse même des singletons omniprésents, paramétrés par AOP (ndr. Aspect Oriented Programming) et poussés par Spring...
En synthèse :
Pour toutes ces raisons, Spring Boot va à mon sens à contre courant des meilleures pratiques de développement connues et reconnues à cette heure parce qu'il préserve les façons de coder d'il y a plus de 20 ans et venant de langages ni objets ni fonctionnels comme le C, pire encore les "développeurs Spring Boot" sont tellement à fond dans Spring Boot qu'ils n'arrivent même plus à penser leurs libs comme des éléments qui puissent s'utiliser en dehors de Spring Boot et c'est ce qui me fait dire que Spring Boot est un contre-choix et une fausse-bonne idée.
Je me souviens que je disais en 2010 à @Roger quelque chose du type :
La programmation fonctionnelle est un cancer.
Heureusement, dix ans plus tard j'ai quand même un peu changé d'avis sur la question, je dirais aujourd'hui :
La programmation fonctionnelle "pure" est un cancer.
La différence étant que je suis en mesure d'argumenter le ressenti inconscient que j'avais à l'époque. Depuis le bouquin sur les design-patterns du Gang of Four, nous avons eu une pléthore d'autres auteurs qui nous ont expliqué pourquoi il faut toujours dépendre des interfaces et jamais des implémentations. Le problème avec ça, c'est qu'une grande partie des développeurs ne comprennent pas bien ce que sont les implémentations et surtout pourquoi il ne faut pas dépendre d'elles.
En réalité, une implémentation embarque avec elle des attributs (et si un objet n'a pas d'attribut c'est que le développeur a codé en procédurale "pure", il n'a rien encapsulé, ça n'est pas objet du tout mais je m'égare). Le problème avec les implémentations ce sont justement les attributs qui deviennent visibles. Dit autrement nous commençons à devenir dépendant de la structure de données qui nous arrive et non plus d'un ensemble de fonctions (ie. méthodes) que nous pouvons exécuter. D'ailleurs nous sommes tellement dépendant des attributs que même s'ils sont privés, nous allons alors ajouter des getters/setters pour y accéder quand même.
Remonter à l'interface c'est casser ce lien explicite avec la structure de données embarquée dans une classe et alors un changement de structure ou de structure de la structure n'impactera pas le code utilisateur.
Mais alors quel est le problème avec la programmation fonctionnelle "pure" ?
C'est justement qu'elle pousse tous les morceaux de code à dépendre des mêmes structures. Changez la structure à un endroit et vous êtes partis pour changer toutes les fonctions qui s'appuient sur cette structure. Cela engendre fondamentalement un maillage global de tous les pans de code d'une application avec un couplage fort autour de cette ou de ces structures.
La seule condition pour y remédier c'est d'avoir "la bonne structure du premier coup"... lol quoi... Comment prévoir quelles données (et de quels types) nous arriveront demain ?
À l'inverse, retourner des implémentations d'interface autoboxé dans le type de cette interface (c-à-d. les fameux "messages" de la POO) garanti non seulement que les changements de structures n'auront pas d'impact, mais que les changements d'algorithmes non plus (ici "pas d'impact" est à prendre au sens où le contrat d'interfaçage n'est pas rompu et donc que le code continu de compiler).
Pourquoi est-ce que je vous parle de tout ça ?
À cause Rust et de mes quatre semaines d'immersion intense.
Soyons clair, je trouve que les concepts derrière le langage sont incroyables et ses performances merveilleuses (en tant que dev Java j'ai toujours détesté la JVM rien que pour ce sujet). Par contre le fait que Rust se soit tourné exclusivement vers le fonctionnel et la programmation en "structure-first" à la place de celle en "contract-first" car la majorité des devs ne parviennent pas à penser en objets avec l'encapsulation, cela fait de Rust un langage aussi immaintenable que C mais un peu plus fiable grâce à son meilleur compilateur.
L'API de Rust est digne de celle du C. Par exemple, prenons la méthodes HashMap::keys()
de la stdlib de Rust. Celle-ci aurait pu retourner l'implémentation d'un trait Iterator
mais non, elle retourne une structure Key
qui contient une structureIter
qui contient une autre structure base::Iter
.
Changez un morceau de la chaîne et préparez-vous à gérer les impacts partout.
En résumé, et après être passée dans l'ordre par Java, OCaml, PHP, C, ASM, Bash, CSH, Python, JavaScript (ES5 à ES7), Anubis, Haskell, Ruby, Groovy, TypeScript, Scala, Go, Kotlin et enfin Rust (ndr. je bidouillais en Rust depuis quelques années), je peux vous assurer que :
- Rust est techniquement un super langage avec l'un des meilleurs compilateur du marché.
- Rust a une API aussi pourrie que celle de C, encourageant le couplage et augmentant l'immaintenabilité. Je crois qu'il doit exister un moyen d'outre-passer cela, mais je ne sais pas encore comment faire et ça me fruste pas mal.
Enfin, je sais que certains dev vont être fâchés de lire ce que j'écris alors permettez-moi de vous proposer un test car j'ai le sentiment que si c'est le cas, c'est que vous n'avez jamais pensé en OOP - et donc que vous ne pouvez pas encore comprendre ce que je dis. Il s'agit d'un exercice que @Kysofer a imaginé pour ses entretiens d'embauche afin de savoir si un candidat "expert Java" savait penser et programmer en orienté objet.
Prenez ces deux classes :
class Person {
private final String name;
private final String firstName;
private final int age;
public Person(String name, String firstName, int age) {
this.name = name;
this.firstName = firstName;
this.age = age;
}
}
class Car {
private final String brand;
private final String name;
public Car(String brand, String name) {
this.brand = brand;
this.name = name;
}
}
Objectifs :
- Sans violer l'encapsulation, c'est-à-dire sans jamais accéder aux attributs des deux classes depuis l'extérieur de ces deux classes.
- Sans ajouter des getter ou des setter.
- Sans mettre les attributs en public, package ou protected.
- Sans implémenter les algorithmes de conversion à l'intérieur des deux classes elles-mêmes.
=> Écrivez une architecture qui soit capable de convertir en JSON ou en XML ces deux objets.
Indice : Quand on pense en objet, c'est évident, très facile même. Quand on ne pense qu'en procédurale ou son évolution en fonctionnel, cela paraît impossible.
Et dans tout ça je ne compte pas arrêter Rust pour autant mais je fais appel à mes amis pour qu'ils m'aident à trouver une façon "clean" de coder dans ce langage.