Obsidian a écrit 5303 commentaires

  • [^] # Re: Tri comptage

    Posté par  . En réponse au journal Une autre excuse pour ne pas bosser…. Évalué à 2.

    Oui mais, comme indiqué dans le fil juste au-dessus, ce n'est pas inhérent à l'algorithme lui-même. Tu peux très bien ranger n réveils sur ton étagère en les programmant en fonction de leur numéro, et ce sans avoir à recourir à un système d'exploitation ni même allumer un ordinateur.

  • [^] # Re: complexité algorithmique

    Posté par  . En réponse au journal Une autre excuse pour ne pas bosser…. Évalué à 2.

    Même pas, parce que pour que cela vaille le coup, il faudrait que l'intervalle entre les timers soit égal à l'overhead nécessaire à leur traitement, qui de toutes façons couvrirait un temps suffisant pour comparer entre eux des dizaines d'éléments. C'est efficace, mais ça reste lent.

    L'intérêt de la chose n'est pas là. D'une part, il suffit que ce soit vrai une fois pour valider l'algorithme. Ensuite, c'est la première fois, à ma connaissance, qu'on exploite la dimension temporelle de manière active pour parvenir à ses fins.

    Et ce qui est vraiment notable, c'est que cet algo, comme ses frères, est complètement transposable dans le monde réel, même si tu éteins ton PC. Il ne repose pas sur un « sous-algorithme ».

    T'en connais beaucoup des algos de tri qui, à la fois, fonctionnent sans comparer les éléments entre eux, ont une complexité en O(n) et sont stables par dessus le marché ?

  • [^] # Re: complexité algorithmique

    Posté par  . En réponse au journal Une autre excuse pour ne pas bosser…. Évalué à 5.

    Ah mais justement, tout est là : l'algo utilisé pour trier les timers sur le système d'exploitation ne peut pas être considéré comme étant sous-jacent au sleep sort.

    Si j'éteins mon ordinateur et si je prends dix minuteurs (pour cuire les œufs, par exemple), que je leur colle tous un numéro et que je veux trier ces minuteurs sur mon étagère, je peux tous les programmer à une durée correspondant à leur numéro respectif (donc en seule fois : complexité linéaire), et prendre chaque minuteur qui sonne pour le ranger à la suite des autres sur mon étagère, ou les mettre les uns sur les autres dans une boîte, ce qui revient à les empiler (donc, exit toute nécessité de conditions d'accès particulières).

    Certes, j'utilise la propriété qu'ont ces minuteurs de pouvoir se signaler eux-même, mais il est de fait que je me retrouve ainsi avec mes dix minuteurs triés, alors qu'à aucun moment, je ne les ai comparés entre eux !

    Et ça, c'est assez remarquable !

  • [^] # Re: Apprentissage

    Posté par  . En réponse à la dépêche Science et éducation : EZ-Draw 1.0 est sorti. Évalué à 1.

    Y a beaucoup de dinos qui disent que tout découle réellement, en pratique, de ALGOL 60. Je n'ai jamais eu l'occasion de vérifier si c'est vrai.

  • [^] # Re: Forcement...

    Posté par  . En réponse au journal Comment refuser la fibre optique. Évalué à 6.

    Ou sinon, t'as la solution plus polie : "désolé, M. Machin est décédé avant-hier. Je dois vous laisser : on nous attend à la morgue". AMHA, ça doit jeter un froid tel qu'ils vont pas rappeler de suite...

    Tu parles ! Ça ne les arrête pas ! Le démarchage par téléphone, c'est exactement la même chose que le spam. Il est établi à la base que c'est dérangeant pour la plupart des gens ciblés, mais il reste l'espoir que les quelques pigeons qui tomberont dedans compenseront la gêne occasionnée. Ceci posé, quand on s'est fait raccrocher au nez cent fois de suite, on considère que les suivants ont toujours l'option de faire la même chose et que, s'ils restent en ligne, c'est qu'ils le souhaitent.

    J'ai perdu mon père il y a trois ans et repris la ligne de téléphone, qui est donc resté un moment à son nom. La ligne n'était pas sur liste orange à ce moment et cela devenait insupportable (jusqu'à cinq appels par jour). Au bout d'un moment je me suis servi du fait que la personne qu'ils appelaient était décédée pour couper court aux conversations. J4ai effectivement eu quelques condoléances mais globalement, c'était :

    « — Bonjour, je suis xxx de la société yyyy…
    — Vous souhaitez parler à M. xxxx ?
    — Oui…
    — Je suis désolé, il est décédé.
    — Ah ? Bien. Puis-je parler au chef de famille, alors ? ».

    Raccrochage immédiat, bien sûr.

    Après deux ou trois conversations du même acabit, j'ai repris les choses en main. Liste orange immédiate qui a eu pour effet d'éliminer 80 % des appels (quand même). Lorsque l'interlocuteur est aimable (et parle français), j'explique poliment mon cas en demandant explicitement à être retiré de leur liste et en m'assurant que ma requête a bien été comprise.

    Après m'être battu contre les vendeurs de fenêtres, et autres… l'une des rares grandes compagnies à me démarcher encore est… SFR.

  • # IGNobel

    Posté par  . En réponse au journal Une autre excuse pour ne pas bosser…. Évalué à 10.

    Je pense que ça mérite au moins au moins le prix Ig nobel, si l'on considère son plus récent objectif, soit récompenser les initiatives qui ont faire rire d'abord puis réfléchir juste après.

    Qu'en pensez-vous ? (On pourrait même dire « Quand pensez-vous ? », ce serait approprié ici).

  • [^] # Re: Bon sens...

    Posté par  . En réponse au journal Énergie nucléaire et bon sens. Évalué à 4.

    Je voulais juste montré comment, avec les tournures adaptées, on peut changer la signification des choses.

    C'est clair. C'est comme ça que certains ont essayé de nous faire croire que le monoxyde de dihydrogène était bon pour la santé… :-)

  • [^] # Re: Allemagne

    Posté par  . En réponse au journal Énergie nucléaire et bon sens. Évalué à 3.

    « Who needs oil ? I ride the bus ! »

  • [^] # Re: Énergie nucléaire et bon sens

    Posté par  . En réponse au journal Énergie nucléaire et bon sens. Évalué à 10.

    Je m'en fous ségolènement de la manière utilisé pour produire notre électricité chérie, mais d'une force dont tu ne peux imaginer la puissance phénoménale

    Ah ben c'est intéressant, ça : penses-tu que l'on puisse utiliser cette force pour produire de l'électricité ? :-)

  • [^] # Re: Salut à toi..

    Posté par  . En réponse à la dépêche Salut à Toi (GNU/)LinuxFr.org !. Évalué à 6.

    L'avantage, c'est que ça se factorise assez facilement…

  • [^] # Re: Real Programmers use Fortran

    Posté par  . En réponse au journal Le problème de la POO pratiquée par des étudiants. Évalué à 2.

  • [^] # Re: Les Fonctions Génériques

    Posté par  . En réponse au journal Le problème de la POO pratiquée par des étudiants. Évalué à 3.

    Je pense que le terme « méthode » ne doit pas avoir la même signification dans les deux langages (de toutes façons, en C++, ce sont des « fonctions membres »).

    Sinon, l'intérêt du template est justement de ne pas avoir à réécrire le code correspondant. Les types génériques dans le code sont remplacés par celui que tu spécifies et, seulement alors, la fonction est compilée dans cette version, ce qui, généralement, produit du code machine complètement différent selon l'objet manipulé alors que l'algorithme reste rigoureusement identique.

    Ensuite, le programmeur peut ensuite écrire lui-même certaines versions de la fonction template pour certains types explicitement. C'est utile, par exemple, si tu fais un container à objet. La plupart du temps, tu stockeras des pointeurs ou des références vers tes (gros) objets. Mais si ce sont des caractères individuels que tu comptes stocker, alors il vaut mieux les enregistrer directement puisque les pointeurs qui les référencent seront entre 4 et 8 fois plus gros que les caractères eux-mêmes.

    Mais les templates ne sont pas liés en eux-mêmes à la surcharge des opérateurs, ni à celle des fonctions membres, d'ailleurs.

  • [^] # Re: Duck typing

    Posté par  . En réponse au journal Le problème de la POO pratiquée par des étudiants. Évalué à 6.

    Ça, c'est l'implémentation du destructeur, en particulier.

  • [^] # Re: Quelqu'un dans l'assemblée saurait "vendre" le concept de POO ?

    Posté par  . En réponse au journal Le problème de la POO pratiquée par des étudiants. Évalué à 3.

    Je n'ai pas dit le contraire.

    J'ai dit que, d'une part, la programmation orientée objet était avant tout une histoire de conception avant d'utiliser un langage lui-même orienté objet et que, d'autre part, quand on commençait à utiliser les structures pour réunir sous une même égide les différents attributs d'une entité donnée (ex : complexe), c'était un embryon de programmation orientée objet.

    C'est bien ça que l'on a dit dès le départ.

  • [^] # Re: Quelques explications

    Posté par  . En réponse au journal Impossible de commenter un contenu vieux de plus de 3 mois. Évalué à 9.

    Je pense que ça peut être intéressant de donner d'ores et déjà la possibilité de le faire aux utilisateurs dépassant un certain niveau de karma. Étant donné le nombre de journaux concernés et les utilisateurs en question, ça ne devrait pas être ingérable…

  • [^] # Re: lftp

    Posté par  . En réponse au message Quel client FTP pour synchroniser un site web ?. Évalué à 2.

    Formidable, c'est exactement ce que je cherche ! Ça a l'air de fonctionner.
    Du coup, je vais peut-être moi-même ajouter des Makefile, également.

    Un grand merci !

  • [^] # Re: lftp

    Posté par  . En réponse au message Quel client FTP pour synchroniser un site web ?. Évalué à 2.

    Effectivement, merci (voir commentaire ci-dessous).

  • [^] # Re: rsync --exclude ...

    Posté par  . En réponse au message Quel client FTP pour synchroniser un site web ?. Évalué à 1.

    Bonsoir,

    Pour le man ncftp, je n'ai rien trouvé. C'est pour cela que je demande ici.
    Pour rsync, j'y avais pensé, mais je n'ai qu'un accès ftp.

    Merci à tous les deux.

  • [^] # Re: Quelqu'un dans l'assemblée saurait "vendre" le concept de POO ?

    Posté par  . En réponse au journal Le problème de la POO pratiquée par des étudiants. Évalué à 3.

    ah bon????? C'est pourtant à ça que serve les cast (ahhh les joies du void* ); ce qui est quand même pratique car s'il le compilo râlait dès qu'on faisait un malloc, y aurait un bon paquet de truc inutile à chaque compile ^^

    C'est bien ce que je dis : tu es obligé de faire un cast explicite pour convertir un type dans un autre avant de le passer à ta fonction. Dans ce cas, tu ne pourras pas dire que le compilateur ne t'as pas prévenu. C'est bien toi qui lui dit alors « Non, mais c'est bon, je sais ce que je fais ». Et encore, ça passe quand tu fais un cast sur un pointeur de structure. Si tu passes la structure elle-même, tu ne peux pas la transtyper directement vers une autre, et ça ne compilera pas du tout.

    A contrario, tu peux caster de la même façon les instances de variables d'un langage orienté objet. Donc l'argument ne tient pas, ici.

    Mon petit doigt me dit que union vient foutre la merde dans ce souhait pieux :D

    Absolument pas.

    « union » permet de passer une instance de quelque chose dont le type est l'un de ceux énumérés par « union ». Un exemple assez parlant de combinaison struct/union sont les XEvent de X-Window. XEvent est une union de structures plus spécialisées comme XKeyEvent, XButtonEvent, XMotionEvent, XExposeEvent, etc. et qui partagent toutes un membre commun initial en début de déclaration , «int type », qui en plus est lui-même inclus par l'union. Et comme le C garantit que les adresses des membres d'une structure progressent dans l'ordre où ils ont été déclarés et que le padding ne peut se trouver qu'après un membre (C99 6.7.2.1§13), alors on est sûr que ce membre sera bien commun à XEvent et toutes les autres structures unies en dessous, quel que soit le compilateur.

    À ce stade,

    — la totalité de l'objet est donc transmis lorsque X-Window émet un événement ;
    — il contient la totalité des informations qui le décrivent (comprendre : ce n'est pas un message qui invite le programme à aller se renseigner) ;
    — « XEvent » contiendra toujours l'événement en entier même si la norme évolue (il faudra recompiler le programme mais pas le réécrire) ;
    — même s'il faut consulter « type », le programme peut savoir de façon déterministe quel objet il a reçu ;
    — Une fonction faite pour traiter un événement en particulier aura besoin que tu lui passes, non pas XEvent, mais l'un de ses membres explicitement, qui lui a le type qui correspond à la signature de la fonction. Donc, tout le contrôle peut être fait à la compilation, et il n'y aucun magic cast qui entre en jeu pour faire fonctionner le modèle.

    À lire un autre de tes commentaires, il semblerait que, pour toi, un objet est une classe qui dérive de Object, par opposition, donc, aux types natifs. Si c'est bien le cas et que c'est là, pour toi, le dogme central de la programmation orientée objet, alors il faudrait au moins que tu pratiques d'autres langages de manière sérieuse pour te faire une idée objective… (sans mauvais jeu de mot).

  • [^] # Re: Quelqu'un dans l'assemblée saurait "vendre" le concept de POO ?

    Posté par  . En réponse au journal Le problème de la POO pratiquée par des étudiants. Évalué à 5.

    Et ça change quoi ?

    Les types en C existent et sont reconnus par le compilateur, qui se plaint s'ils ne correspondent pas. Le fait que tu puisses explicitement demander à écrire dans une zone mémoire ne regarde que toi, ensuite. Le compilo et le langage qu'il traite n'ont rien à voir dans l'affaire…

  • [^] # Re: Quelqu'un dans l'assemblée saurait "vendre" le concept de POO ?

    Posté par  . En réponse au journal Le problème de la POO pratiquée par des étudiants. Évalué à 4.

    les structures sont juste une structure de donnée qui permet, à l’instar d’un tableau, de regrouper plusieurs variables de types différents (contrairement à un tableau).les structures sont juste une structure de donnée qui permet, à l’instar d’un tableau, de regrouper plusieurs variables de types différents (contrairement à un tableau).

    Non, ce n'est pas tout-à-fait exact. Ça, ce serait plutôt le « array » du PHP.

    Mais elles n’ont rien à voir avec la programmation objet : pas de lien particulier entre code et structure de donnée, …

    Eh si, justement : le type. En C, en tout cas. Une structure définie en C correspond à un nouveau nom de type, et le compilateur ne te laissera pas passer un autre type de donnée ou une structure différente sans se plaindre. Ceci garantit à la fonction qui utilise l'instance de cette structure que toutes les variables sous-jacentes sont disponibles (après, qu'elles aient été initialisées correctement, c'est une autre histoire).

    pas de restriction d’accès aux membres de la structures, encore moins tout ce qui peut faire la force de la programmation objet…

    Oui, mais justement : la « programmation orientée objet », c'est le fait d'orienter la conception de son code et l'organisation de ses données autour d'une notion. Et toutes les facilités dont tu parles ont émergées d'elles-mêmes une fois les choses présentées de cette façon.

  • [^] # Re: Quelqu'un dans l'assemblée saurait "vendre" le concept de POO ?

    Posté par  . En réponse au journal Le problème de la POO pratiquée par des étudiants. Évalué à 9.

    À l'usage, je pense qu'il n'y a pas de « meilleur style de programmation » et qu'en fait, le paradigme à adopter est celui qui se rapproche le plus des données que tu souhaites manipuler.

    Bof, c'est juste une organisation différente du code. Je vous fait la même chose sans objets"

    Ah, mais tout est là : la programmation orientée objet est avant tout une histoire de conception et même si un langage orienté objet en lui-même est quand même préférable au quotidien, un modèle bien conçu peut virtuellement être implémenté ensuite dans n'importe quel langage. C'est ce que tente GTK, par exemple, même si ses casts incessants finissent par devenir lourdingues à force. Tu es donc peut-être le M. Jourdain de la POO.

    Pour le reste, tu peux essayer le raisonnement par l'absurde. Je ne sais pas quels langages tu utilises, mais essaie par exemple de programmer en C sans jamais recourir aux structures, par exemple. On se rend compte alors que ces structures sont en fait un embryon de programmation orientée objet, dans le sens où l'on réunit sous une même entité tous les attributs d'une chose identifiée et délimitée.

    L'exemple par lequel on commence souvent sont les nombres complexes. On peut passer sur le fait que tu ne puisses pas directement, en C, utiliser les opérateurs habituels -,+,*,/ dont tu fais un usage quotidien sur les nombres ordinaires. Mais même en définissant une bête fonction AddComplex (a_real,a_imag,b_real,b_imag), comment fais-tu pour renvoyer à la fois la partie réelle et la partie imaginaire ? Tu te retrouves à devoir ajouter deux pointeurs de variables dans tes arguments pour stocker le résultat.
    Imagine un programme scientifique entier écrit de cette façon, toujours sans structure. C'est faisable, mais c'est très lourd, et cela nécessite une grande rigueur en amont, à cause d'une raison simple : le langage en lui-même n'étant pas adapté, la conception se fait en amont en suivant une méthode qui s'y substitue.

  • [^] # Re: dans les definitions

    Posté par  . En réponse au message Cette licence me plombe-t-elle la possibilité de créer une alternative ?. Évalué à 3.

    On peut regarder le code de la propriété intellectuelle ici : - http://www.celog.fr/cpi - http://www.celog.fr/cpi/lv1_tt1.htm - http://www.celog.fr/cpi/livre2.htm - http://www.celog.fr/cpi/lv3_tt3.htm

    Et spécialement ces articles : - http://www.celog.fr/cpi/lv3_tt3.htm#331-5 - http://www.celog.fr/cpi/lv3_tt3.htm#335-3-1 - http://www.celog.fr/cpi/lv3_tt3.htm#335-3-2

    À chaque fois, l'exception pour fins de recherche et d'interopérabilité est maintenue.

    Maintenant, c'est devenu très flou. Que ceux qui, comme moi, avaient parcouru ce texte jadis et ont des difficultés à retrouver le paragraphe exact se rassurent : il a subi les affres de la loi DADVSI qui a rendu le truc beaucoup plus obscur qu'il ne l'était.

  • [^] # Re: On en a gros !!!

    Posté par  . En réponse au journal L'adulescence, quelle plaie !. Évalué à 2.

    Mort à lui. :-)

  • [^] # Re: On en a gros !!!

    Posté par  . En réponse au journal L'adulescence, quelle plaie !. Évalué à 2.

    Tu préfères le lapin Quicky ?