Nicolas Boulay a écrit 15823 commentaires

  • [^] # Re: relativité étendue

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 2.

    Je vois. Je déteste ce genre de code. Le genre de pile de patchs locals sans architecture global. Le truc qui casse à chaque modification.

    "La première sécurité est la liberté"

  • [^] # Re: mouais

    Posté par  (site web personnel) . En réponse au journal [BOOKMARK] Google Ara, smartphones modulaires. Évalué à 1.

    ça te coûte moins cher que de racheter un téléphone (avec tous ses autres composants).

    Oui c'est vrai, mais pas tellement moins.

    "La première sécurité est la liberté"

  • [^] # Re: relativité étendue

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 2.

    Il ne dois pas décrire ce qu'on fait mais pourquoi on le fait.

    100% d'accord

    Les commentaires me servent pour décrire certains aspects qui ne sont pas facile à faire ressortir dans un code.

    Si le code est moche, il vaut mieux le changer, il y a de grande chance que malgré le commentaire, il pose problème plus tard.

    "La première sécurité est la liberté"

  • [^] # Re: relativité étendue

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 2.

    Les commentaires..

    Je préfère 10x un nom parlant à des commentaires. Je connais 2 sortes de commentaires : ceux qui noient le code et le rende illisible (genre une ligne sur 2 est un commentaire), au lieu de tout sortir des fonctions, ce qui empêche de voir la fonction en entier sur un écran, et ceux qui sont obsolètes.

    "La première sécurité est la liberté"

  • [^] # Re: mouais

    Posté par  (site web personnel) . En réponse au journal [BOOKMARK] Google Ara, smartphones modulaires. Évalué à 2.

    pourquoi racheter un téléphone quand c'est juste passer à la 4G qui t'intéresse ?

    Car la 4G représente 1cm² de silicium dans ton soC de téléphone, si il est externe, il faut ajouter un pcb, de la RAM, des IO, et un connecteur. Le surcout est forcément 10x plus important. Mais c'est vrai que l'on a la même chose pour les Pc de bureau : carte pci lors de la sortie de l'usb, puis intégration dans le pc.

    idem pour l'appareil photo : certains aimeraient pouvoir mettre plus d'argent et avoir un appareil photo décent, d'autres s'en fichent éperdument.

    Mouais. Les smartphones se vendent en dizaine de millions d'exemplaire. C'est facile d'avoir plusieurs gammes et c'est bien moins couteux.

    passer de 8Go de flash interne à 64Go de flash interne pour quelques dizaines d'€,

    Genre en utilisant une carte µSD ?

    Moi j'aime bien dans l'idée d'avoir le connecteur Apple "on stéroïde". Soit pour avoir une bonne interface à un APN, soit pour avoir un GPS à jour sur sa voiture de 5 ans.

    "La première sécurité est la liberté"

  • # mouais

    Posté par  (site web personnel) . En réponse au journal [BOOKMARK] Google Ara, smartphones modulaires. Évalué à 3.

    Si le display et le CPU este ensemble pour des raisons évidentes de connectiques complexes. Il ne reste pas grand chose à sortir. Le module 3G ? le GPS ? Mais c'est bien moins chère de l'inclure avec le reste.

    J'imagine que cela pourrait fonctionner comme le bus pci, pour faire des extensions. J'imagine bien un smartphone se connectant sur un appareil photo, une chaine hifi, ou une voiture pour servir d'écran.

    "La première sécurité est la liberté"

  • # "Aucune préparation/réflexion dans cette transition numérique de l'école."

    Posté par  (site web personnel) . En réponse au journal Prof 2.0 sur Arte Radio. Évalué à 3.

    un peu quand même.

    C'est surtout un problème d'ergonomie et de perte de temps que je note (pas de SSO, interface mal pensé, etc…).

    Je me demande bien quand une blacklist saute, comment une page porno peut se trouver involontairement projeter devant une classe.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 3.

    C'est le genre de personne qui a écrit exactement ça dans le post auquel tu réponds, non?

    Je pensais même à du code local.

    "a+b+c+d" sera un code plus court que "(a+b)+(c+d)" qui utilise plus de variable intermédiaires, mais le deuxième code sera 30% plus rapide, dans le meilleur des cas.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 2.

    De mémoire, j'aurais dis 16. J'imagine que c'est plus une histoire de taille du cœur de la boucle.

    L'idéal est d'utiliser tous les registres (on déroule plus), pour ensuite mélanger les instructions qui sont indépendantes ce qui permet de bien utiliser le pipeline, mais il ne faut jamais devoir utiliser la mémoire (on déroule moins) qui deviendrait un goulet d'étranglement.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 4.

    J'ai encore l'impression de parler avec un universitaire qui fait des compilos mais qui n'a absolument aucunes idées précises de comment fonctionne un cpu, ni comment les compilo comme gcc optimisent à bas niveau.

    C'est le genre de personne qui s'étonne quand on leur dit qu'un code plus verbeux peut être bien plus rapide qu'un code plus court (moins de dépendance read after write).

    Le compilo gère évidement l'alignement qui ne sera jamais cassé. De plus, les prefetchers font en sorte qu'il n'y a jamais de ruptures sur les enchainements de lignes de cache. Ils sont très efficace concernant le code, bien plus que pour les données.

    Le point clef est l'alignement plutôt que la taille. Changer le code en déroulant change l'alignement de façon non maîtrisée, on peut donc se retrouver dans des situations où le code non déroulé est mieux aligné que le code déroulé ce qui le rend plus rapide.

    Si jamais tu tombes sur le compilo suffisamment crétin pour ne pas faire d'alignement, il faut aussi que la perte de performance d'alignement ne soit pas compensé par la réduction du nombre de teste de boucle, et par la recombinaison des instructions.

    Cela change l'alignement.

    Non. C'est géré.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 3.

    si tu veux un meta langage qui fasse autre chose, utilise un autre langage et voila !

    C'était le sujet du thread, un tel langage n'existe pas.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 2. Dernière modification le 01 octobre 2014 à 16:07.

    Si tu veux créer des classes à la volée à la compilation, ce dont tu as besoin c'est un outil de génération de code,

    Et donc tu utilises 2 outils et 2 langages pour faire quelques choses de très proche, avec tous les problèmes imaginables à l'interface.

    ça ne m'avance pas, quel est ton problème à résoudre ?

    J'ai déjà donné des exemples : inclure un binaire sans outils externe, pas de générateur de code externe, mais un générateur en library.

    Et puis, c'est même pire que ça. Je parle de lire un fichier pour générer des API, et tu me parles "générateur de code", tu imagines la différence de difficulté entre une bonne propagation de constante et un compilateur ?

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 3.

    Pas forcément, il vaut mieux avoir un boucle for non déroulée qui tient dans le cache L1 qu'une boucle déroulée qui n'y tient pas.

    Je veux dire sur du vrai code de la vrai vie. Tu te rend compte de la taille de code qui rentre dans un cache L1 ? On parle de boucle interne, pour remplir les 16/32/64 Ko de cache L1, il faut sans doute, l'équivalent d'un millier de lignes de code.

    C'est une chose qu'on contrôle très mal à l'échelle d'un programme, parceque passer d'un modèle à l'autre (folded/unfolded) change de façon imprévisible la façon dont le code est saucissonné en morceaux de pages de cache.

    Oui et sur un code moyen, cela ne change rien. Par contre localement, la différence de performance est énorme. En -O3, gcc a tendance a dérouler les petites boucles 16 fois. J'estime que dérouler 4x fois ne peut jamais faire perdre de performance.

    Le comportement normal du compilateur est l'optimisation pour la taille, mais on peut le configurer pour qu'il fasse autre chose.

    Tu parles de Ocaml, car tous les compilateurs C optimisent pour la vitesse. Le "-Os" de gcc évitent seulement les optimisations connues pour faire enfler le code.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 6.

    je mets des guillemets sur “vitesse” parceque l'inlining et l'unfolding ne sont que spéculativement des optimisation en vitesse,

    C'est souvent un argument mis en avant contre l'inlining, qui s'avère faux chaque fois que j'en fais l'essaie. Et contrairement, a ce que crois les personnes qui pensent cela, faire de l'inlining réduit le code la plus part du temps, car la propagation de constante/l'élimination de code mort, jouent ensuite leur rôle.

    L'optimisation en taille est en revanche faite face à un critère complètement objectif.

    Oui, mais dont on se fout un peu sur nos machines de bureau tant que le binaire n'a pas fait x10 ou x100.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 2.

    il y à la directive #include pour cela.

    oulala… Tu inclus un fichier binaire (jpg) dans un programme avec #include ? Tu réussi à parser un fichier xmi uml ou DTD pour créer des class à la volé avec #include ?

    dans quel cas on voudrait avoir un résultat statique d'une lecture d'un io ?

    Quand sa forme se rapproche plus du métier ou du besoin que le code source. C'est la raison d'être des DSL : s'éloigner du code pour s'approcher du problème à résoudre ; cela facilite la relecture, les vérifications, les règles génériques, l'automatisation, etc…

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 3.

    C'est un langage de recherche. Pendant un moment, il y avait 5 ou 6 personnes sur le nouveau système de typage (GADT), mais une demi pour gérer la correction de bugs. Ocaml pro va peut être changer cela.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 3.

    Oui, cela va vite, mais sans se fouler.

    Le système de typage permet d'éviter tout un tas de programmation défensive. Globalement le modèle haut niveau est très bon, et donc ils n'ont pas jugé utile d'aller plus loin.

    Mais cela veut surtout dire que doubler les performances de certain code doit être possible.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 3.

    Haskell fait de la deforestation, qui évite la création d'arbre inutile dans un traitement (genre empilement de map).

    ocaml fait le minimum. Il fait quelques optimisation haut niveau comme le tail recursif, mais c'est tout : presque pas de propagation de constante, pas d'inlining, pas de spécialisation de fonction, pas de déroulage de boucle.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 2.

    Oui, c'est de la propagation de constante. Sauf qu'en général, dés qu'un conteneur rentre dans la boucle, cela stop (string, list, etc…). Impossible de compiler une regexp par exemple.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 1.

    pas mal.

    Mais ça c'est vraiment très con :

    "It can call only other constexpr functions"

    Cela veut dire pas de lib standard, pas de lecture de fichier, pas d'io, etc…

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 3.

    ocaml avec ocamlp4 mais la syntaxe était incompréhensible. On dirait que le nom était bien choisi en rapport avec les reformé du même nom.

    Ils ont créé un nouveau truc, les points d'extension qui ressemble à des annotations java, histoire de créer des filtres code vers code, comme lisp, mais les exemples sont incomplets. C'est comme si il montrait les appels de fonctions, sans montrer les définitions de fonctions.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 2.

    C'est un peu l'idée documenté exactement ce que l'on veut faire, au lieu de mettre le résultat de pré-calcul en dure. Cela permet aussi de relire les pré-calcul.

    Cela me fait mal de lire que l'exemple que tu donnes, est dans le truc directement concurrent avec ma boite (qui édite SCADE suite), c'est le karma :)

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 4.

    Le type qui me propose ça dans ma boite, je lui interdit le droit de commit à lui et sa famille sur 42 générations…

    Tu sais que tu parles de John Carmack, un des meilleurs codeurs de tous les temps ? https://fr.wikipedia.org/wiki/John_Carmack

    Les génies sont incompris…

    "La première sécurité est la liberté"

  • [^] # Re: Asimov...

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 3.

    L'acier était aussi trop fragile, ce qui a augmenté la taille de la déchirure. Le bateau aurait du couler plus lentement ou pas du tout.

    "La première sécurité est la liberté"

  • [^] # Re: Plutôt beauté du design

    Posté par  (site web personnel) . En réponse au journal "beauté du code". Évalué à 2.

    Moi j'attends d'avoir enfin un langage qui permet d'exprimer la fonction sous forme d'une approximation utilisant un tour de newton rafson, sans montrer un paquet de constant, ou un paquet ignoble de template ou de macro.

    Le vrai problème est là : avoir un langage suffisamment expressif pour le codeur qui arrive ensuite, et pour générer exactement ce que l'on veut.

    C'est souvent fait avec des templates C++, qui devient un langage dans le langage, ou avec des générateurs de code.

    Souvent, on veut simplement de la "propagation de constante balèze" avec gestion des conteneurs (liste, tableau, string). Par exemple, compiler une expression régulière décrite sous forme de string à la compilation, décrire une forme de code plus rapide (fftw), générer des structures de donnés d'après un modèle (EMF d'Eclipse gère la structure de modèle objet, et la sérialisation XML depuis une DTD ou un modèle UML)…

    "La première sécurité est la liberté"