Johands a écrit 87 commentaires

  • # "Worse" is /not/ C++

    Posté par  . En réponse au journal C++ a été créé pour augmenter le salaire des programmeurs. Évalué à 5.

    > On peut aussi noter que C++ est [une] application bizarre du Worse is Better.

    C'est curieux, j'avais lu l'article original[0] de Richard P. Gabriel décrivant le principe et C++ ne me semble pas du tout rentrer dans la catégorie "Worse is better". Explications: R.P. Gabriel était un lisper et se gargarisait d'utiliser des interpréteurs/systèmes d'exploitation en Lisp aux fonctionnalités top-moumoutes alors que les développeurs d'Unix se contentaient juste de faire fonctionner la machine, sans porter grande attention aux cas extrêmes (comment mon programme va réagir si un interrupt intervient en plein milieu d'une communication avec un périphérique externe et chamboule par là-même tous mes registres ?).

    D'où l'expression "le pire est meilleur" : Unix ne gérait certes pas correctement les interrupts et avait donc moins de fonctionnalités mais il était plus simple à comprendre / coder et était utilisable là, de suite.

    Du coup, C ou Java, qui simplifient certains principes à l'extrême (genre pas de tail-call-optimisation et obligation de construire soi-même son trampoline, gestion de la mémoire incompréhensible "pour votre bien", etc. ) correspondent bien mieux à la définition du "worse is better".

    C++, bien qu'imparfait, s'efforce quand même de codifier et de fournir des outils pour gérer milles et un cas d'utilisations ésotériques (multiples smart-pointers, un pour chaque jour du mois, multiples possibilités niveaux héritages, un bon gros paquet de conteneurs et des opportunités de migraines infinies via les templates).

    Non, non, si quelqu'un cherche un langage a accroché au fronton du hall "worse is better", qu'il commence avec PHP ou bash, mais pas avec C++.

    [0] pour ceux qui auraient raté leur culture "wanabee-hacker", ça ce passe là-bas : [http://dreamsongs.com/WIB.html].
  • [^] # Re: Mais sinon, pourquoi je devrais m'intéresser à ce énième langage

    Posté par  . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 3.

    Ahem, tu oublie "juste" le typage statique..

    Arf oui, j'ai un peu forcé le trait :o

    D'ailleurs il existe bien d'autres différences entre ces deux langages. Mais les concepts ré-empruntés par Go font plaisir à voir (enfin des fermetures !).
  • [^] # Re: Mais sinon, pourquoi je devrais m'intéresser à ce énième langage

    Posté par  . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 5.

    même si ce langage met ensemble des concepts intéressant, ça reste quand même un n-ème spinoff des langages qu'on connait.
    Au départ je me suis dit la même chose : encore un langage qui ré-invente lisp. Mais Go comble une niche : un langage système type C avec plus de flexibilité (interfaces, fermetures, etc.) et un solide support des threads. Et dans ce domaine, j'ai vraiment du mal à lui trouver un concurrent.

    Ils ont éventuellement innové avec leur interfaces, mais perso je trouve ça super nul, ça aide pas du tout à bien structurer son code, et c'est super pas utile en terme d’interopérabilité …
    Petite nuance sur ce point : je préfère personnellement l'approche suivie par Go, qui est la même qu'en Common Lisp avec ses fonctions génériques ou en Haskell avec ses type-classes.

    L'idée est d'abordée l'écriture d'un programme de façon analogue à un théorème en mathématiques. Par exemple, "étant donné x réel et n un entier, on définit x à la puissance n par …" se traduit simplement en Go/CLisp/Haskell par "étant donné deux objets, le premier ayant une interface type Real et le second type Integer, alors on peut écrire notre fonction power ainsi ...".

    On se concentre sur les propriétés des objets, et non sur leur identité.

    C'est aussi plus facile d'étendre ces propriétés, il suffit juste d'écrire les méthodes requises par l'interface, plus la peine de perdre son temps à hériter, surcharger ceci et protéger cela.

    Non, le truc qui me chagrine, c'est le côté "implicite" des interfaces dans Go.

    Quant à Scala, c'est une autre histoire qui m'est malheureusement inconnue.
  • [^] # Re: Mais sinon, pourquoi je devrais m'intéresser à ce énième langage

    Posté par  . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 2.

    il n'y a pas de coroutines en Go, mais des Goroutines.
    Arf bien vu. Même si pour ma défense, et comme lasher le fait remarquer, il y a possibilité de simuler partiellement l'un à l'aide du second, et vice-versa.

    mais il me semblait qu'il n'y avait rien dans Common Lisp pour gérer la programmation concurrente.

    D'après le peu que j'ai lu sur Common Lisp, c'est effectivement son gros défaut. Je ne trouve aucune référence à cette question dans les hyperspecs et il semblerait que chaque interpréteur (sbcl, clisp) ait décidé de créer sa propre API. Si quelqu'un de mieux informé pouvait développer.
  • # Mais sinon, pourquoi je devrais m'intéresser à ce énième langage ?

    Posté par  . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 10.

    Bahh ! Je viens de lire rapidement la présentation de Rob Pike et le tout m'a laisser un drôle d'arrière goût :

    Pourquoi Go ?
    Pour obtenir un langage à la fois simple et performant. Arguments de poids pour toute personne ayant tenté d'utiliser du C++ ou de faire du calcul numérique sous Python.

    Structures, Méthodes et Interfaces
    Pour faire bref, l'équipe de Go a redécouvert le principe de simplicité des langages fonctionnels : définir des données simples et concentrer la complexité dans un ensemble de fonctions servant à modifier ces briques d'octets.

    Visibilité (public/privé)
    Aïe, différencier les membres publiques des privés par leur casse ! Ça pique aux yeux mais l'idée se tient. Après les goûts et les couleurs …

    Je m'étonne juste de l'argument "il est facile de repérer la présence ou non d'une majuscule, donc le code est plus simple à comprendre" après 3 diapos nous expliquant qu'en fait les interfaces on ne les déclare pas explicitement, si le développeur veut savoir quel type d'argument est accepté par ce bout de fonction, il n'a qu'à parcourir lui-même le code et vérifier que son objet implémente les-dites méthodes. Sur le coup, j'ai du mal à digérer l'argument de simplicité.

    Coroutines, fermetures, spaghettis stacks et autres joies de la programmation concurrente
    En fait Go n'est qu'une ré-écriture de Common Lisp maquillée avec une syntaxe à-la Algol, reprenant les concepts phares de CLOS, le tout agrémenté de pointeurs et muni d'une solide gestion des threads !

    … intéressant tout cela, intéressant … je m'en vais finir la lecture de Practical Common Lisp pour l'occasion ,-)
  • [^] # Re: RTFM

    Posté par  . En réponse au message Rsync: préserver les permissions des fichiers cible. Évalué à 3.

    Moi, je souhaite converser les permission de la CIBLE.

    Arf c'est pas faux :o

    Je viens de re-regarder le manuel, et --inplace pourrait convenir, bien que le tout me semble un peu "solution système D".
  • # RTFM

    Posté par  . En réponse au message Rsync: préserver les permissions des fichiers cible. Évalué à 4.

    rsync -o/--owner
    rsync -g/--group

    Ces deux options nécessitent évidemment des droits root.

    À noter pour les gros fainéants, comme moi, il y a l'option -a/--archive.
  • # Hors sujet

    Posté par  . En réponse au message Comment classer ses idées efficacement?. Évalué à 2.

    Mais après avoir classé ses idées, rien de tel qu'un bon [http://twogoalsapp.appspot.com/] pour les réaliser ,-)

    sinon j'utilise le bête plug-in xfce "notes" mais vu le message initial, je doute que l'auteur se contente de simples post-it® pour ses problèmes.
  • [^] # Re: customisation openbox/lxpanel/conky

    Posté par  . En réponse au message WM sans bureau et sans barre de tâche. Évalué à 1.

    qu'est-ce qui manque à celle d'awesome pour être "fonctionnel" ?
    Réponse : démarrer par défaut en mode "floating" (noob-friendly) et non "tiling" ou proposer un menu graphique "de secours" au cas où on aurait appuyé sur la mauvaise touche.

    Mais oki, ça fait un an que j'ai abandonné awesome et je suis probablement de mauvaise foi car aux dernières nouvelles la configuration par défaut évite justement de stresser les néophytes en leur imposant dès le début le mode tiling.
  • [^] # Re: customisation openbox/lxpanel/conky

    Posté par  . En réponse au message WM sans bureau et sans barre de tâche. Évalué à 2.

    J'ai beaucoup d'attirance pour awesome... mais cmake est interdit sur ma machine car C++. De plus je crois que LUA est obligatoire …

    Tiens c'est la première fois que je vois une machine sur laquelle C++ est interdit, pourquoi donc ?

    Sinon pour le LUA, désolé mais c'est obligatoire. L'auteur a d'ailleurs créé awesome par faute d'avoir assez de patience pour a) gérer des patchs en C pour dwm b) apprendre Haskell et pouvoir configurer Xmonad.
  • [^] # Re: customisation openbox/lxpanel/conky

    Posté par  . En réponse au message WM sans bureau et sans barre de tâche. Évalué à 2.

    Je n'ai jamais vraiment utilisé openbox, j'étais plus porté sur son grand frère fluxbox, mais je pense que c'est la bonne solution au problème posté initialement.

    Les *box sont des gestionnaires de fenêtres classiques (ie pas de tiling donc simple à prendre en main), extrêmement rapides et extrêmement configurables. Et même si le message précédent ne l'a pas assez bien affirmé, openbox est livré d'origine avec un initrc fonctionnel (/pas/ comme awesome, dvtm ou xmonad qui mettent l'accent sur le côté "kit de construction : grep les sources - hack - recompile - enjoy !").
  • [^] # Re: En lisant les options de strace...

    Posté par  . En réponse au message Ça marchait, ça marche plus ? strace est ton ami.. Évalué à 7.

    Mais oui continuez à poster de telles astuces pour l'ignorant curieux que je suis !

    Concernant le ton de la réponse, pas la peine de s'en offusquer : 1) ça arrive à tout le monde de survoler une manpage et d'y rater une option; 2) osef, du moment qu'on finit par apprendre quelque chose de nouveau et potentiellement d'utile.
  • [^] # Re: compromis entre mobilité et patate

    Posté par  . En réponse au message Quel laptop puissant et autonome sous GNU/Linux ?. Évalué à 3.

    Ça me rappelle un prof. d'informatique tout content car il avait réussi à reprogrammer son MacBook pour émuler le bruit d'un sabre laser lorsque l'accéléromètre du disque dur détectait un mouvement.

    Donc bon, si le système de sécurité n'est effectivement pas géré par le firmware, on peut toujours trouver un moyen d'en profiter ,-)
  • [^] # Re: Je ne suis pas M. Toutlemonde

    Posté par  . En réponse au journal Sozi c'est bien. Latex c'est bien aussi. Les deux ensemble c'est pas mal.. Évalué à 2.

    la solution miracle, qui permette facilement d'avoir des formule mathématiques très violentes

    Pour les formules de mathématiques, S5 + [http://www1.chapman.edu/~jipsen/mathml/asciimath.html] fonctionnaient bien pour moi (à noter qu'un projet similaire LaTeX -> MathML existe). Reste que je n'ai jamais eu à l'utiliser sur des formules violentes.

    Après, c'est sûr qu'au final on en revient au même point qu'avec Beamer : il faut maîtriser (x)HTML + CSS + JavaScript (+Latex dans LaTeXMathMl) pour réussir à plier la présentation à ses moindres désirs.

    .... quant à tout faire en un seul clic de souris, c'est une autre histoire ...
  • [^] # Re: Petite question

    Posté par  . En réponse au journal LDLC vend des portables sans OS !. Évalué à 3.

    Et ?

    Désolé mais j'ai pas suivi l'évolution des processeurs ces deniers temps. Il y a marqué "Celeron double-cœur", c'est donc un multi-processor en x64. Qu'est-ce que j'y perds par rapport à un i3-* ou i5-* ? Des instructions SSE{3,4} en moins ?
  • [^] # Re: Un feedback....

    Posté par  . En réponse au message GTK. Distinguer simple et double clic sur drawing area.. Évalué à 2.

    Merci pour le retour. C'est triste de voir qu'on en revient au traditionnel "débrouille toi tout seul et code ton [gestionnaire d'évènements]" :(

    Ah et sinon, pour ne pas frustrer une minorité de visiteurs qui pensent que ce site est un repaire de gens aigris : "MSçapue y'a même pas d'exemple en F#" !
  • [^] # Re: C'est parce que tu ne cherches pas au bon endroit !

    Posté par  . En réponse au message GTK. Distinguer simple et double clic sur drawing area.. Évalué à 2.

    Nan ! moinsser moi. J'ai comme l'impression d'avoir répondu à côté de la plaque.

    Désolé, bonne chance quand même pour ton problème.
  • # C'est parce que tu ne cherches pas au bon endroit !

    Posté par  . En réponse au message GTK. Distinguer simple et double clic sur drawing area.. Évalué à 2.

  • [^] # Re: Peut-être....

    Posté par  . En réponse au journal Un Vendredi sans IDE.. Évalué à 2.

    Hum rien à voir mais avec ce que j'entends récemment à propos des conflits internes entre grévistes et non-grévistes, j'avais peur que la situation "t'es pas d'accord avec moi donc je crève tes pneus de voiture" ne se soit généralisée à toutes les entreprises.

    Heureusement non, on est juste en fin de semaine sur trollfr. :)
  • [^] # Re: Peut-être....

    Posté par  . En réponse au journal Un Vendredi sans IDE.. Évalué à 4.

    le développeur est un loup pour le développeur

    Y'a qu'en France qu'on se met des battons dans les roues où à l'étranger aussi on passe son temps "de travail" à sapper le travail du voisin ?
  • [^] # Re: Peut-être....

    Posté par  . En réponse au journal Un Vendredi sans IDE.. Évalué à 5.

    Ton éditeur de texte te dit quand une variable a été déclarée mais n'est pas utilisée ?
    Ton éditeur de texte te dit quand un variable risque d'être nulle et qu'il faudrait tester sa non-nullité ?
    Ton éditeur de texte te dit quand tu as initialisée une variable pour rien vu que tu en as ensuite écrasé le contenu ?

    Non mais en tapant ':make' mon compilateur GCC/GHC avertira VIM de l'erreur et de son emplacement.

    Ton éditeur de texte te dit quand tu pourrais simplifier ton code ?
    Oui ':hlint %' fonctionne très bien. (d'ailleurs je ne retrouve plus l'équivalent en C, c'est grave ?)

    Ton éditeur de texte te dit quand tu ne respecte pas la norme de codage ?
    Qui s'en préoccupe de l'esthétique du code ? ,-)

    Ton éditeur de texte te dit quand tu as de la duplication de code ?
    Ton éditeur de texte te dit quand tu as déclaré une variable JavaScript de façon globale avec les risques inhérents ?

    De 1), je ré-écris rarement 10 fois la même chose, et lorsque lorsque ça m'arrive je m'en rappelle. De 2) c'est pas ma faute si le développeur précédent est un gros cochon.
    Autrement, je trouve aussi révoltant que mon éditeur m'oblige toujours à réfléchir lors de la conception de mes macros et templates !

    Ton éditeur de texte vérifie ton HTML vis-à-vis de la DTD ?
    ":%!xmllint --dtdvalid foobar.dtd --valid '-'"

    Et mon éditeur ne dévore pas la moitié de mon écran avec des boutons ce qui me laisse assez d'espace pour afficher côte à côte deux fichiers.

    Et mon éditeur permet de rapidement définir et utiliser des macros /ed/ ('qq' et '@q') pour modifier de larges portions de code semblables (certes ça ne fonctionne que sur un fichier à la fois et si la situation arrive c'est une preuve flagrante que le code se répète trop.)

    Et mon éditeur fonctionne parfaitement couplé avec tmux/screen/dvtm ce qui me permet d'attacher/de détacher à volonté ou d'organiser l'affichage en mosaïque facilement pour jouer avec grep/sed/awk juste à côté.

    ... voila tout ça pour dire que si tu trouves difficile le fait de "remonter les dépendances et comprendre le code", tu n'a qu'à aller discuter avec les responsables du projet et leur expliquer l'importance de la communication et de la documentation dans tout bon projet d'ingénierie (informatique y-compris). On a toujours pas inventer un logiciel pour remplacer une discussion entre deux être humains ^^
  • [^] # Re: ahah

    Posté par  . En réponse au message fuite mémoire. Évalué à 4.

    Ce qui m'énerve le plus dans C#, c'est qu'il ne soit ni libre ni utilisable sur mon GNU/Linux.

    comment ça je m'écarte du sujet ?
  • [^] # Re: ahah

    Posté par  . En réponse au message fuite mémoire. Évalué à 3.

    Bon ce sera une dose de biactol* pour moi aussi alors !

    Mais sinon, outre le fait que poser une question C# sur linuxfr.org reste un énorme troll, en lisant les 7 lignes de codes ala Allman avec mes lunettes de wanabee dev C++, je vois:
    * une liste "lADobject" qui semble remplie et vidée correctement
    * un puits magique où les éléments "ado" disparaissent avec "insertADObject"
    * un élément source "ad" d'où proviennent les objets mais _qu'on ne vide jamais_.

    Voilà donc t'aurais pas oublier de faire un pseudo remove "ado" from "ad"; ?

    sinon tu peux utiliser Haskell, c'est aussi développé par trois barbus de MS Research mais ils ont au moins le bon goût de fournir des outils de profiling pour ce genre de soucis :p
  • [^] # Re: man ulimit

    Posté par  . En réponse au message Limité l'utilisation du processeur lors d'une compilation. Évalué à 3.

    ulimit pour contrôler la mémoire, oki. Mais pour l'utilisation CPU du fait comment ?

    Il y a bien -t The maximum amount of cpu time in seconds, mais je ne pense pas que ça réponde au problème.
  • # Cpuspeed / Fréquence processeur

    Posté par  . En réponse au message Limité l'utilisation du processeur lors d'une compilation. Évalué à 2.

    Réponse de 3 heures du mat' à prendre avec des pincettes :

    -> Pourquoi ne pas utiliser cpuspeed (ou tout autre dæmon contrôlant les fréquences des processeurs) ? Si j'ai bonne mémoire, ils ont une option pour soit forcer les fréquences à leur minimum, soit automatiquement le faire en cas de dépassement d'une température CPU pré-définie par l'utilisateur.

    Autrement, tu as essayé d'utiliser cpulimit sur le processus père des cc1plus, cc1 et consorts ? (`ps -eH | less -pmake`)