je ne sais pas si on s'éloigne pas des architectures RISC
C'est petit joueur l'instruction de swap, si tu veux du lourd, c'est l'instruction qui fait un CRC : http://byteworm.com/2010/10/13/crc32/. Ça c'est du CISC et du lourd.
Maintenant qu'on a toutes les applications dans le cloud, il suffit d'un browser. Ce n'est pas Linux qui est prêt pour le desktop, c'est le desktop qui est prêt pour Linux.
Le problème de ce principe, c'est qu'il oppose service et données : il faut effectivement penser "service", mais parfois ton service c'est d'exposer des données : DTO, Controller, DOM, Composants IHM, etc.
C'est pour ça que je parlais plutôt de la partie fonctionnelle du code, les classes dont l'objectif est de fournir des données ne rentrent pas dans ce cadre.
Si tu veux changer tes roues, tu as :
* une factory qui sait te fabriquer des roues
* une méthode changeWheels() de la voiture pour changer les roues
Ce que la loi t'incite à faire, c'est à raisonner en terme fonctionnel et à faire l'analyse des services fournis par ton objet. Et encore un fois, je ne parle pas ici des classes vraiment techniques (factory, parser, container, ...).
Pour reprendre l'exemple de The Paperboy, The Wallet, and The Law Of Demeter, Lorsque le garçon doit payer, on peut avoir :
* une classe Customer avec une méthode getWallet et la caissière prend le porte monnaie et enlève l'argent du porte monnaie
* ou alors une class Customer avec une méthode pour payer
Comme le dit la section "Why Is This Better?", la deuxième solution représente mieux le monde réel.
En gros, cela permet d'avoir une liaison moins forte entre la classe et son usage.
Mais c'est le principe de la POO d'avoir une liaison entre une classe et son usage. Rajouter un getter et un setter sur chacun de ses membres ce n'est pas de l'encapsulation, ça fait plaisir à ceux qui considèrent que tous les membres doivent être privés sans avoir trop à réfléchir. Je ne dit pas que la POO est la réponse à tous les problèmes, mais rajouter des get/set sans réflechir ce n'est pas de la POO.
En POO, on devrait réfléchir en terme de comportement et non de structure. Si je design une voiture en POO (l'exemple est un peu éculé, j'en suis désolé), ce qui m'intéresse c'est de la faire avancer, pas qu'elle ait 4 roues.
Par exemple, les getter et setter vont à l'encontre de la Loi_de_Déméter qui incite justement à programmer le comportement d'un objet et à moins s'attacher à sa composition (je cite l'article wikipédia : En particulier, un objet doit éviter d'invoquer des méthodes d'un membre objet retourné par une autre méthode).
Je ne parle bien sûr ici pas des objets "techniques" (un vecteur, un accès à une BDD, ...) mais de la partie fonctionnelle d'une application.
Ton commentaire est sans doute une touche d'humour (au vu du smiley), mais il sonne tout de même assez juste. En effet, au yeux de pas mal de programmeurs, la POO c'est mettre des classes et ajouter un set et un get à chaque membre. Et au final on n'a rien gagné et on ne raisonne pas du tout en objet ayant un comportement avec une telle méthode. Je me dois donc de plusser ton commentaire pour inciter les programmeurs à se poser la question du pourquoi ajouter un getter/setter à un membre.
Il me semble qu'en raison de la législation du travail c'est le cas. Quel est l’intérêt de passer par une SSII qui te fournie un développeur moyen grâce à un CV bidonné si tu peux embaucher toi-même et licencier quand tu as une baisse de charge ?
On peut très bien aussi jouer avec les ifdef et utiliser la fonctionnalité quand elle est disponible.
Ce n'est pas toujours aussi simple. Par exemple l'utilisation de signalfd et timerfd permet de ne pas se prendre la tête avec les signaux (voir par exemple chez l'excellent lwn.net Ghosts of Unix past, part 3: Unfixable designs), se passer de cela c'est réorganiser complètement la façon de recevoir traiter la réception des signaux. Ce n'est donc pas aussi simple que quelques ifdef.
Pour le portage de OpenSSH, entre openssh-5.8.tar.gz et openssh-5.8p2.tar.gz, un diffstat donne quand même
425 files changed, 88567 insertions(+), 798 deletions(-)
et si on ne garde que les fichiers .c et .h :
252 files changed, 28702 insertions(+), 454 deletions(-)
Et rien que sur les fichiers .c et .h on passe de 71846 à 100094 lignes (j'ai fait un bête wc -l). Ce qui abonde dans le sens de Lennart sur la plus grande simplicité de coder pour du mono-plateforme.
Disons que Mach est peut-être un noyau "pourrit" pour l'architecture du Hurd, qui n'est pas du tout la même que celle de MacOSX. Tu peux aller regarder par exemple les articles en:XNU ou en:Architecture_of_Mac_OS_X. XNU (le noyau qu'utilise MacOSX) étant un noyau hybride (un micro-noyau Mach + une couche BSD monolithique) alors que en:Hurd utilise un vrai micro-noyau avec de multiples serveurs.
Il semblerait que tu n'ai jamais utilisé de DVCS. Le principe du DVCS c'est que tu as ton arbre complet chez toi. Tant que tu n'as rien publié, tu peux organiser tes commits comme tu le veux.
Un bonne pratique comme le dit mackwic c'est de nettoyer son repository avant de le soumettre, pour transformer une longue série de petits commits en un seul commit cohérent. Ou bien inversement pour séparer un gros commit en plusieurs commits plus petits et plus faciles à relire. Une fois que tu as fait ça tu peux publier ton code. Voir par exemple dans le Git Book : http://book.git-scm.com/4_interactive_rebasing.html
Après publication, en revanche, tu ne dois plus modifier ton historique.
Dans la réponse de Général Zold à la question 5, le lien vers fedoraproject.org n'est pas bon non plus, à moins que linuxfr se soit lancé dans un grand chantier.
D'après wikipedia, la décision n'a pas encore été prise quant à l'inclusion ou pas dans le standard.
La décision a été prise de ne pas l'inclure lors de la réunion du WG21 de juillet 2009 (voir par exemple http://herbsutter.com/2009/07/21/trip-report/ pour des explications de Bjarne Stroustrup)
Je me souviens d'un temps où à chaque fois que la presse (autre que la presse Linux) faisait un article sur Linux (voir même lorsqu'une pub évoquait Linux) on avait le droit à une news sur "Da Linux French Page". Petit extrait :
Grâce à la news Pascal Negre, PDG d'universal music, j'ai également retrouvé cette magnifique citation de Pascal Negre (datée d'Octobre 2000) : «Et puis, dans cinq ans, nous parlerons du MP3 comme du 78 tours»
Je vous conseil de parcourir les news à partir de la fin, ça vaut le détour (au moins on avait des news cinéma).
[^] # Re: Autre méthode
Posté par Étienne . En réponse à la dépêche Dans les kiosques cet été 2011. Évalué à 2.
C'est petit joueur l'instruction de swap, si tu veux du lourd, c'est l'instruction qui fait un CRC : http://byteworm.com/2010/10/13/crc32/. Ça c'est du CISC et du lourd.
Étienne
[^] # Re: Pendant ce temps, en Python...
Posté par Étienne . En réponse à la dépêche Dans les kiosques cet été 2011. Évalué à 3.
En c++ :
me paraît plus explicite. C'est un comble que le C++ soit plus explicite que le python ;)
Étienne
[^] # Re: Il fallait y penser
Posté par Étienne . En réponse au journal Ma simple session avec Compiz et Cairo-dock. Évalué à 2.
Maintenant qu'on a toutes les applications dans le cloud, il suffit d'un browser. Ce n'est pas Linux qui est prêt pour le desktop, c'est le desktop qui est prêt pour Linux.
Étienne
[^] # Re: Chacun son style
Posté par Étienne . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 4.
C'est pour ça que je parlais plutôt de la partie fonctionnelle du code, les classes dont l'objectif est de fournir des données ne rentrent pas dans ce cadre.
Si tu veux changer tes roues, tu as :
* une factory qui sait te fabriquer des roues
* une méthode changeWheels() de la voiture pour changer les roues
Ce que la loi t'incite à faire, c'est à raisonner en terme fonctionnel et à faire l'analyse des services fournis par ton objet. Et encore un fois, je ne parle pas ici des classes vraiment techniques (factory, parser, container, ...).
Pour reprendre l'exemple de The Paperboy, The Wallet, and The Law Of Demeter, Lorsque le garçon doit payer, on peut avoir :
* une classe Customer avec une méthode getWallet et la caissière prend le porte monnaie et enlève l'argent du porte monnaie
* ou alors une class Customer avec une méthode pour payer
Comme le dit la section "Why Is This Better?", la deuxième solution représente mieux le monde réel.
Étienne
[^] # Re: Chacun son style
Posté par Étienne . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 3.
Mais c'est le principe de la POO d'avoir une liaison entre une classe et son usage. Rajouter un getter et un setter sur chacun de ses membres ce n'est pas de l'encapsulation, ça fait plaisir à ceux qui considèrent que tous les membres doivent être privés sans avoir trop à réfléchir. Je ne dit pas que la POO est la réponse à tous les problèmes, mais rajouter des get/set sans réflechir ce n'est pas de la POO.
En POO, on devrait réfléchir en terme de comportement et non de structure. Si je design une voiture en POO (l'exemple est un peu éculé, j'en suis désolé), ce qui m'intéresse c'est de la faire avancer, pas qu'elle ait 4 roues.
Par exemple, les getter et setter vont à l'encontre de la Loi_de_Déméter qui incite justement à programmer le comportement d'un objet et à moins s'attacher à sa composition (je cite l'article wikipédia : En particulier, un objet doit éviter d'invoquer des méthodes d'un membre objet retourné par une autre méthode).
Je ne parle bien sûr ici pas des objets "techniques" (un vecteur, un accès à une BDD, ...) mais de la partie fonctionnelle d'une application.
Étienne
[^] # Re: Chacun son style
Posté par Étienne . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 5.
Ton commentaire est sans doute une touche d'humour (au vu du smiley), mais il sonne tout de même assez juste. En effet, au yeux de pas mal de programmeurs, la POO c'est mettre des classes et ajouter un set et un get à chaque membre. Et au final on n'a rien gagné et on ne raisonne pas du tout en objet ayant un comportement avec une telle méthode. Je me dois donc de plusser ton commentaire pour inciter les programmeurs à se poser la question du pourquoi ajouter un getter/setter à un membre.
Étienne
[^] # Re: Popularité des langages
Posté par Étienne . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 9.
Il me semble qu'en raison de la législation du travail c'est le cas. Quel est l’intérêt de passer par une SSII qui te fournie un développeur moyen grâce à un CV bidonné si tu peux embaucher toi-même et licencier quand tu as une baisse de charge ?
Étienne
[^] # Re: Les développeurs Java
Posté par Étienne . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 2.
Pas en C++ (et ça fait un warning pas défaut avec GCC en C).
Étienne
[^] # Re: Ça fait peur
Posté par Étienne . En réponse à la dépêche Un entretien avec Lennart Poettering. Évalué à 5.
Ce n'est pas toujours aussi simple. Par exemple l'utilisation de signalfd et timerfd permet de ne pas se prendre la tête avec les signaux (voir par exemple chez l'excellent lwn.net Ghosts of Unix past, part 3: Unfixable designs), se passer de cela c'est réorganiser complètement la façon de recevoir traiter la réception des signaux. Ce n'est donc pas aussi simple que quelques ifdef.
Pour le portage de OpenSSH, entre openssh-5.8.tar.gz et openssh-5.8p2.tar.gz, un diffstat donne quand même
425 files changed, 88567 insertions(+), 798 deletions(-)
et si on ne garde que les fichiers .c et .h :
252 files changed, 28702 insertions(+), 454 deletions(-)
Et rien que sur les fichiers .c et .h on passe de 71846 à 100094 lignes (j'ai fait un bête wc -l). Ce qui abonde dans le sens de Lennart sur la plus grande simplicité de coder pour du mono-plateforme.
Étienne
[^] # Re: 1er avril?
Posté par Étienne . En réponse au journal Gel à date fixe pour Debian. Évalué à 3.
Disons que Mach est peut-être un noyau "pourrit" pour l'architecture du Hurd, qui n'est pas du tout la même que celle de MacOSX. Tu peux aller regarder par exemple les articles en:XNU ou en:Architecture_of_Mac_OS_X. XNU (le noyau qu'utilise MacOSX) étant un noyau hybride (un micro-noyau Mach + une couche BSD monolithique) alors que en:Hurd utilise un vrai micro-noyau avec de multiples serveurs.
Étienne
[^] # Re: Open data ?
Posté par Étienne . En réponse à la dépêche Déclaration sur l’open data en France. Évalué à 1.
Étant donné le déficit abyssal de l'état, ça me paraît surprenant mais je suis intéressé par tes sources.
Étienne
[^] # Re: Métadonnées
Posté par Étienne . En réponse à la dépêche Gitbuster II. Évalué à 5.
Il semblerait que tu n'ai jamais utilisé de DVCS. Le principe du DVCS c'est que tu as ton arbre complet chez toi. Tant que tu n'as rien publié, tu peux organiser tes commits comme tu le veux.
Un bonne pratique comme le dit mackwic c'est de nettoyer son repository avant de le soumettre, pour transformer une longue série de petits commits en un seul commit cohérent. Ou bien inversement pour séparer un gros commit en plusieurs commits plus petits et plus faciles à relire. Une fois que tu as fait ça tu peux publier ton code. Voir par exemple dans le Git Book : http://book.git-scm.com/4_interactive_rebasing.html
Après publication, en revanche, tu ne dois plus modifier ton historique.
Étienne
[^] # Re: Bravo à l'équipe !
Posté par Étienne . En réponse au journal haiku, l'espoir du desktop libre. Évalué à 6.
Mais pour pouvoir décoller il va falloir lâcher la route.
[^] # Re: 2 liens à corriger
Posté par Étienne . En réponse à la dépêche 13 ans de LinuxFr.org : entretiens avec les visiteurs (7). Évalué à 2.
Dans la réponse de Général Zold à la question 5, le lien vers fedoraproject.org n'est pas bon non plus, à moins que linuxfr se soit lancé dans un grand chantier.
[^] # Re: GNOME 3
Posté par Étienne . En réponse à la dépêche Sortie de Fedora 15 « Lovelock ». Évalué à 10.
Parce qu'il y en a 3 qui n'ont pas encore voté.
[^] # Re: et xterm?
Posté par Étienne . En réponse à la dépêche Sortie de ValaTerm 0.3. Évalué à 8.
Étienne
[^] # Re: et xterm?
Posté par Étienne . En réponse à la dépêche Sortie de ValaTerm 0.3. Évalué à 6.
Et moi je ne peux que recommander de le remplacer par tmux http://tmux.sourceforge.net/
Étienne
[^] # Re: Super
Posté par Étienne . En réponse au journal Linux dans votre navigateur web. Évalué à 6.
Surtout pouvoir jouer à la kmem russian roulette...
[^] # Re: c'est pas déjà le cas?
Posté par Étienne . En réponse au journal Sauve Skype peut..... Évalué à 9.
<hors sujet>
Un thread qui ressemble à ça :
C'est soit pasBill pasGates et Albert_ qui se répondent, soit tankey qui fait un thread tout seul ;)
</hors sujet>
[^] # Re: Torvalds vs Stallman
Posté par Étienne . En réponse à la dépêche Linus Torvalds : l’interview anniversaire des 20 ans du noyau. Évalué à 6.
Ça dépend si tu ne crois pas que Dieu existe ou si tu crois que Dieux n'existe pas ;)
# Sujet du commentaire
Posté par Étienne . En réponse au journal Programmation : la complexité c'est le mal. Évalué à 8.
[^] # Re: Ça rejoint les typeclass de haskell, template du C++, Go
Posté par Étienne . En réponse au journal Le problème de la POO pratiquée par des étudiants. Évalué à 4.
La décision a été prise de ne pas l'inclure lors de la réunion du WG21 de juillet 2009 (voir par exemple http://herbsutter.com/2009/07/21/trip-report/ pour des explications de Bjarne Stroustrup)
Etienne
[^] # Re: ca me rapelle un cauchemar
Posté par Étienne . En réponse au journal En rêve, je me suis logué en root. Évalué à 4.
C'était un rêve érotique, tu enfilais les Perl ?
# Les news ont bien évolué
Posté par Étienne . En réponse au journal Il reste des vieux ici ?. Évalué à 4.
Je me souviens d'un temps où à chaque fois que la presse (autre que la presse Linux) faisait un article sur Linux (voir même lorsqu'une pub évoquait Linux) on avait le droit à une news sur "Da Linux French Page". Petit extrait :
Grâce à la news Pascal Negre, PDG d'universal music, j'ai également retrouvé cette magnifique citation de Pascal Negre (datée d'Octobre 2000) : «Et puis, dans cinq ans, nous parlerons du MP3 comme du 78 tours»
Je vous conseil de parcourir les news à partir de la fin, ça vaut le détour (au moins on avait des news cinéma).
[^] # Re: Libre Office
Posté par Étienne . En réponse au journal Comparatif securite entre OOo et MS Office. Évalué à 5.
C'est beaucoup plus moins vrai.