Michaël a écrit 2935 commentaires

  • [^] # Re: Mon grain de sel

    Posté par  (site web personnel) . En réponse au journal Lycée et informatique : spécialité ISN en terminale S. Évalué à 2.

    La première norme ISO du C++ date de 98 et non de 79, quant à la première version publique de CFront c'est 82-83.

    Merci pour cette correction. Ça rouvre la question C ou C++ pour écrire un noyau Linux? Je continue de pencher pour C.

  • [^] # Re: Mon grain de sel

    Posté par  (site web personnel) . En réponse au journal Lycée et informatique : spécialité ISN en terminale S. Évalué à 10. Dernière modification le 24 mars 2013 à 14:05.

    En C il y a beaucoup de magie

    Il n'y a rien de magique en fait.

    Bon et bien je sors mon Hello world alors:

    #include <stdio.h>
    
    int
    main(void)
    {
       printf("Hello, world!\n");
       return EXIT_SUCCESS;
    }
    
    

    Du point de vue du débutant la seule ligne qui a clairement à voir avec le problème posé (écrire un programme qui écrit Hello, World!) est celle du printf et tout le reste, c'est du vaudou.

    Le préprocesseur n'a rien de magique

    Merci, mais si on se place du point de vue du débutant, soit tu présentes le '#include' comme une directive magique, soit tu te lances dans un tas d'explications qui ne vont pas servir à grand chose jusqu'au jour où le débutant va écrire son premier programme assez long pour être séparé en plusieurs unités.

    Un langage avec un précprocesseur est forcément plus compliqué qu'un langage sans préprocesseur, non?

    Bof, l'édition des liens en C n'est pas si contraignant

    Le sujet n'est pas C est impossible à apprendre le sujet est C est plus compliqué à apprendre que beaucoup d'autres langages. Or il y a plus d'un langage de programmation où on n'a pas besoin de se préoccuper d'édition de liens.

    Cependant c'est aussi une grande qualité pour les systèmes emparqués ou temps réels où un ramasse-miette n'est vraiment pas le bienvenue par son caractère aléatoire (et le temps CPU nécessaire à son fonctionnement). Cela allège aussi considérablement l'implémentation du langage sur une architecture donnée.

    Le sujet n'est pas C est un langage bien adapté à la programmation des systèmes emabarqués mais c'est C est plus compliqué à apprendre que beaucoup d'autres langages et il y a des langages où la mémoire est gérée automatiquement. Est-ce que tu penses que c'est plus facile lorsqu'il ya plus de travail?

    Les concepts de base très certainement

    Qu'est-ce que tu veux apprendre à des débutants?

    mais tu ne maitriseras probablement pas toutes leurs possibilités

    Ce genre d'exploit est difficile dans tous les langages, et ce n'est certainement pas le sujet ici.

    ni toute la bibliothèque standard qu'on te fournit tellement que c'est volumineux alors que pour le C c'est possible.

    Après 10h de Scheme tu peux lire tous les programmes du monde sans jamais rencontrer une règle de grammaire que tu ne connais pas. Ce n'est pas le cas de C, il me semble.

  • [^] # Re: Mon grain de sel

    Posté par  (site web personnel) . En réponse au journal Lycée et informatique : spécialité ISN en terminale S. Évalué à 5. Dernière modification le 24 mars 2013 à 13:16.

    je pense que tu mélanges deux choses :

    Non non pas du tout!

    Apprendre un langage ce n'est pas seulement apprendre à écrire mais aussi à lire dans ce langage.

    Le fait est que si tu donnes un programme C modérément complexes à un débutant en C et que tu réponds à toutes ses questions, tu te retrouves vite à faire un petit cours d'architecture.

    Si tu prends un langage rééllement simple comme le Scheme (ou peut-être le Pascal, mais mes souvenirs datent un peu), il suffit à un débutant de beaucoup moins de 40h pour être capable de lire tous les programmes jamais écrits dans ce langage — oui il existe des programmes écrits en Pascal :-) j'en ai vu — les questions éventuelles du débutant porteront alors sur l'utilisation du langage (tournures de phrases, bibliothèque standard, etc.) et pas sur le langage lui-même. En C les découvertes qui portent sur le langage (ah tiens, on neput pas déclarer de variable de type void — void est un type?) continuent d'arriver bien au delà des 40h fatidiques.

    Ce n'est pas parce que C est compliqué qu'il est interdit de s'en servir ou qu'il est impossible de le maîtriser: mon point de vue est juste que croire que le C est un langage «facile» est une grosse erreur.

  • [^] # Re: Mon grain de sel

    Posté par  (site web personnel) . En réponse au journal Lycée et informatique : spécialité ISN en terminale S. Évalué à 2.

    En gros,

    en très gros :-)

    le C++ est un langage qui a tous les avantages de performance et tout aussi proche de la machine que C,

    La surcharge des opérateurs, les conversions implicites et les constructeurs de recopie empêchent d'évaluer à l'œil nu la complexité d'un code — l'existence de ces fonctionnalités viole le principe d'encapsulation.

    mais est cependant un langage de plus haut niveau qui permet de se préoccuper plus du sur le programme en lui même que sur des éléments de bas niveau.

    Comme par exemple, la gestion de la mémoire? L'écriture des destructeurs, des constructeurs de copie, de l'opération d'affectation, … dès que tu écris le mot class tu dois te payer trois pages de saisie pour définir les magic three de ta classe. Cela n'incite pas vraiment à introduire des classes autant qu'il n'en faut.

    De plus, seuls les programmeurs les plus expérimentés sont capables d'utiliser à bon escient la programmation objet, les autres suivent leur intuition et utilisent toutes les mauvaises abstractions possibles et imaginables.

  • [^] # Re: Mon grain de sel

    Posté par  (site web personnel) . En réponse au journal Lycée et informatique : spécialité ISN en terminale S. Évalué à 2.

    Le c++ permet de programmer de manière plus rapide sur beaucoup de points

    C'est assez faux: en C++ tu as trente-six façons de gérer chaque problème, et donc à moins d'avoir des recommendations de programmation (coding rules) de 120 pages, tu passes ton temps à te demander que choisir, et à écrire du code interface pour travailler avec les solutions des autres.

    et rendre les choses plus lisibles pour le prochain développeur.

    La seule façon de rendre quoique ce soit lisible au prochain développeur est d'écrire de la documentation.

    Autre question, si on devait faire linux maintenant, le ferions nous en c, en c++ ou autre chose ?

    La première norme iso du C++ date de 1979 et le premier noyau Linux est sorti au début des années 90. La réponse est donc: le C.

  • [^] # Re: Mon grain de sel

    Posté par  (site web personnel) . En réponse au journal Lycée et informatique : spécialité ISN en terminale S. Évalué à 4.

    Le C est piégeur, c'est vrai mais cela ne rend pas le C plus complexe que les autres.

    Dis papa, c'est quoi ce include? C'est quoi ce static? C'est quoi l'édition de liens? Pourquoi il n'y a pas de valeurs de type void? C'est quoi cette fonction main? Pourquoi il y a un '0' à la fin de mon texte? Comment j'initialise une structure? C'est quoi un prototype de fonction? Franchement, je ne pense pas que le C soit simple.

    Donc oui le C est piégeur et nécessite des années pour être un « expert » mais là encore en comparaison avec les autres langages c'est quelque chose de bien plus atteignable.

    Outre les pièges, il y a beaucoup d'éléments complètement arbitraires (include, static, etc.) qu'on ne peut vraiment comprendre qu'en ayant des connaissances dans le monde de l'édition des liens… bref en connaissant un peu de langage machine en somme.

  • [^] # Re: Mon grain de sel

    Posté par  (site web personnel) . En réponse au journal Lycée et informatique : spécialité ISN en terminale S. Évalué à 6.

    Honnêtement, je ne trouve pas, ou alors il faut définir ce qu'est la "complexité" d'un langage.

    En C il y a beaucoup de magie (la fonction main, le préprocesseur, les directives include). Ensuite le C te demande de connaître l'édition de liens (mot-clef static), te demande de gérer manuellement la mémoire, éxécution en environnement non supervisé (non managed environment: il y a des undefined behaviour)… franchement, je ne sais pas ce qu'il te faut!

    Le C++ est encore pire, je suis bien d'accord avec toi.

    Un langage comme Scheme ou Caml (light) voire Python ou Perl est infiniment plus simple à apprendre que le C.

  • [^] # Re: Mon grain de sel

    Posté par  (site web personnel) . En réponse au journal Lycée et informatique : spécialité ISN en terminale S. Évalué à 3.

    C'est une réelle question et non un troll mais est ce que le c à un avenir honnêtement ?

    Il a un avenir parcequ'il est très utilisé. Beaucoup de logiciels libres sont écrits en C. Et le C en tant «que langage machine portable» reste incontournable pour la programmation système.

    Je veux bien que pour commencer à apprendre ce soit très bien,

    C'est plutôt très mauvais, le C étant un langage très compliqué. (On reconnaît les gens qui ne savent pas ou peu programmer en C à ce qu'ils croient encore que c'est simple.)

    par contre ça a tendance à être obsolète,

    Vieux oui, obsolète certainement pas. Avec quoi étaies-tu ton point de vue? Quel langage permet de faire tout ce que fait le C en mieux? Si le C est parfois choisi comme premier langage, c'est justement parcequ'il a un avenir, certainement pas parcequ'il est simple.

    rien que face au c++.

    Probablement pas un très bon choix pour la programmation système, par exemple! À mon avis, le C++ est largement plus obsolète que le C++, je ne vois aucune bonne raison de commencer un nouveau projet en C++. (Je suis programmeur C++ professionel, soit-dit en passant…)

  • [^] # Re: Sur l'extension des genres grammaticaux en français

    Posté par  (site web personnel) . En réponse au journal [Attention, journal bookmark ET féministe] Tiens, prends ça, tu le mérites !. Évalué à 1.

    Sur l'extension des genres grammaticaux en français.

    À quoi sert d'étendre les genres grammaticaux puisqu'ils sont, pour la quasi-totalité des mots, déconnectés de tout genre sexuel. J'ai souvent reluqué sous les tabourets et les abats-jours sans jamais y voir les attributs du sujet! :-)

  • [^] # Re: Sauf la nimage... :-(

    Posté par  (site web personnel) . En réponse au journal Blagues et sexisme. Évalué à 4.

    Comme ça, pas de jaloux(se).

    Tu sous-estimes beaucoup la diversité des mœurs sexuelles! :-)

  • [^] # Re: Sinon il y a ça

    Posté par  (site web personnel) . En réponse au journal Moyens de paiement : j'ai peur de l'avenir. Évalué à 5.

    Tant qu'ils ne se font pas élire, tu peux t'estimer heureux!

  • [^] # Re: Pas de support C++

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de TinyCC 0.9.26. Évalué à 4.

    Peu de C++ courant fait un usage intensif des template.

    Dans STL¹ let T est pourtant pour template… Il n'y a pas de métaprogramme calculant la suite de Fibonacci dans la STL — pas que je sache, du moins :-) — mais comme le C++ est un langage relou où il n'y pas moins de 6 façons² de passer un argument à une fonction ou de récupérer son résultat et bien il y a tout un système de templates dans la STL qui sert à dire quoi utiliser quand dans quelles circonstances… C'est tellement important que chaque grosse bibliothèque fournit sa propre version — Boost et libG++ par exemple — pour être portable et stable bien comme il faut. Ce type d'information est notamment utilisé dans les systèmes de slots (l'équivalent d'une fermeture en C++ mais ici aussi il y a plus de 6 sortes de fonctions différentes!).

    Je ne suis pas spécialiste du langage, mais je pense qu'à chaque fois qu'un template est instantié, l'analyse syntaxique (sinon le mot-clef typename ne servirait à rien) est refaite. De plus les templates sont instantiés beaucoup plus souvent qu'on ne le croit à cause de la surcharge des opérateurs.

    La surcharge des opérateurs couplée aux conversions automatiques sont probablement aussi une pénalité pour la vitesse de compilation. Si j'ai 800 classes qui définissent une srucharge de l'opérateur << (pas le décalage de bits mais le stream output) et bien à chaque fois que j'écris s << a pour une classe a qui ne définit pas de surcharge de l'opérateur << et bien le compilateur va essayer de convertir automatiquement a dans l'une des 800 classes en question…

    ¹ La bibliothèque standard du C++ pour les profanes.
    ² Par copie ou par valeur immédiate (ce qui fait une façon), par référence, par référence constante, par pointeur, par pointeur constant, par pointeur void (cas «détypé»).

  • [^] # Re: Pas de support C++

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de TinyCC 0.9.26. Évalué à 5.

    C'est bien dommage, car du fait de la lenteur de gcc dans ce domaine, avoir un compilo super rapide serait extrêmement pratique

    Il y a mille raisons pour lesquelles compiler le C++ est lent, beaucoup plus lent que C. Une raison sont les templates, une autre, la dépendance au contexte du code.

    http://yosefk.com/c++fqa/picture.html#fqa-6.4

  • [^] # Re: Rêves ...

    Posté par  (site web personnel) . En réponse au journal Onirisme ++. Évalué à 2.

    Ça vous arrive souvent de faire des rêves « utiles » (au sens où ça vous permet de résoudre un problème qui vous tracassait) ?

    Cela ne m'arrive pas très souvent.

    Cela m'est arrivé plusieurs fois pendant ma thèse de maths, mais je rêveais que je résolvais le problème plus que je ne le résolvais. Il y avait bien une solution mais elle devenait intangible lorsque je me réveillais!

    Cela m'est arrivé tout juste la semaine dernière, mais le problème en question est d'ordre psychanalytique. Par contre le problème est complètement résolu. Dans ce cas particulier, c'est une expérience presque analogue à une quête astrale — pour les rolistes amateurs de SRII.

  • # Samsara blues experiment

    Posté par  (site web personnel) . En réponse au journal Black Lion Genocide : Break your arm. Évalué à 2.

    Je ne suis pas très métal, mais à choisir au lieu d'écouter Scorpion ou Sepultura, je préfère Samsara Blues Experiment:

    http://www.youtube.com/watch?v=k1kPpxmnZco

    En plus la pochette, avec son joli dessin à la Guido Crepax, change agréablement de ce qu'on trouve habituellement associé à ce genre de musique.

  • [^] # Re: Poisson

    Posté par  (site web personnel) . En réponse au journal Variations sur un thème culinaire. Évalué à 4.

    Et comment tu fais pour rester motivé à cuisiner, entre le temps de préparation et de lavage des ustensiles ?

    Moi j'invite des gens que j'aime à partager le fruit de mon travail et à boire du vin à ma table, des fois je les invite même à faire la cuisine avec moi, c'est amusant aussi!

  • [^] # Re: Bof les exemples

    Posté par  (site web personnel) . En réponse au journal Les vieux cons et le progrès…. Évalué à 7.

    Mauvais client, changer de client.

    J'aurais plutôt dit: mauvaise foi, changer de foi!

  • [^] # Re: communisme

    Posté par  (site web personnel) . En réponse au journal Témoignage d'une survivante d'un camps de travail Nord-Coréen. Évalué à 2.

    Ça fait rêver le communisme.

    L'idéologie concurrente dominante — le capitalisme prétendu libéral — peut, au contraire du communisme, se vanter d'une histoire irréprochable. C'est bien connu.

  • [^] # Re: Classement par age

    Posté par  (site web personnel) . En réponse au journal [Marc le Bouc] Le contrôle parental ne marche pas :( tristitude snif snif. Évalué à 10.

    Ça peut ptet attendre encore un peu…

    Effectivement, un enfant d deux ans n'a aucun besoin de regarder la téloche.

  • # Bonjour et bienvenue

    Posté par  (site web personnel) . En réponse au message Pc-Bsd. Évalué à 2.

    Bonjour et bienvenue!

    Bonjour, voila je me suis lancé pour apprendre Unix sur le site du zéro

    Apprendre UNIX veut dire beaucoup de choses… UNIX est un outil de travail: quelles tâches souhaite tu accomplir? Bien-sûr on peut aussi s'amuser avec UNIX mais il faut que tu saches ce qui t'attire pour jouer.

    Le souci c'est que je suis bloqué avec "portjail init"

    Ce n'est pas un souci pour un débutant. Ports Jails est une fonctionnalité avancée dont tu n'as pas besoin pour apprendre. Si jamais tu veux persister:

    http://wiki.pcbsd.org/index.php/PC-BSD_FAQ#How_do_I_install_software_on_my_PC-BSD_system.3F

    Mais attenetion, le texte dit

    Advanced users familiar with the FreeBSD ports and packages collection can use Ports Jail to safely manage their FreeBSD applications.

    Vu ce que tu dis, cela n'a pas trop l'air de te correspondre.

    Apprendre à travailler avec UNIX est une superbe idée, il faut que tu te trouves des petits projets à faire et apprennes à programmer le shell. Comme lecture je recommande «UNIX Shell Programming» (Lowell Jay Arthur).

    Pour en savoir un poil plus: https://linuxfr.org/users/chat_de_sorciere/journaux/tu-souhaites-apprendre-a-programmer-en-shell

  • # DU ne sert pas à examiner la taille d'un fichier

    Posté par  (site web personnel) . En réponse au message Taille fichier différente entre ls et du. Évalué à 1. Dernière modification le 13 février 2013 à 13:50.

    DU ne sert pas à examiner la taille d'un fichier mais le nombre de blocs effectivement utilisés par le fichier sur le disque. du(1):

    Summarize disk usage of each FILE, recursively for directories.

    Pour ton problème de place dans /var le nombre pertinent est effectivement celui renvoyé par DU. Pour trouver les fauteurs de trouble, tu peux faire

    du | sort -n
    
    
  • [^] # Re: sed

    Posté par  (site web personnel) . En réponse au message Format adresse mac . Évalué à 0.

    Une version SED sans branchement:

    s/^/:/
    s/$/:/
    s/:\(.\):/:0\1:/g
    s/^://
    s/:$//
    
    

    On peut aussi s'amuser à tout écrire sur une seule ligne.

    Ou bien avec GNU AWK

    BEGIN {
        FS=":"
    }
    {
        for(i = 1; i <= 6; ++i)
        {
        if(i == 6)
        {
            sep="\n";
        } else
        {
            sep=":";
        }
        printf("%02x%s", strtonum("0x" $(i)), sep);
        }
    }
    
    
  • # Bien-sûr que je joue!

    Posté par  (site web personnel) . En réponse au journal Ce soir, je joue, tu joues, nous jouons !. Évalué à 2.

    donc toi cher Nal, est-ce que tu joues ? Et as-tu des bons plans pour organiser tes parties ?

    Les deux jeux que j'aime bien sont effectivement l'appel de Ctulhu et Shadowrun II — j'ai aussi eu bien envie d'essayer quelques autres comme Nephilim, Vampire ou Mage par exemple.

    Certains jeux poussent à des gamesplays assez différents. C'est le cas notamment de Call of Ctulhu (Coc, j'en ai marre de faire des fautes d'orthographe) et de Shadowrun II.

    CoC te suggère de plutôt bosser le scénario et la narration…

    Pour l'organisation des parties je ne me suis jamais trop cassé la tête: lumières basses, quelques bières et puis zou. La partie doit commencer de façon assez innocente, jusqu'au moment où vers 11 heures du soir les joueurs réalisent que leurs personnages vont devoir passer la nuit seuls dans cette maison (ou dans cette caverne, ou dans ce bateau, ou…) Un scénario relativement simple, avec un ou deux rebondissements sympathiques suffit largement à passer une soirée CoC très réussie! Un petit bonus pour les conditions naturelles comme un orage ou une pleine Lune, cependant!

  • [^] # Re: Opinion d'un développeur d'exploit pour Wii

    Posté par  (site web personnel) . En réponse au journal Nintendo, hackers and sourcecode. Évalué à 3.

    Il y a toujours de "bonnes" raisons pour tout contrôler.
    Mais attend…

    Pour une fois je suis assez déçu… le commentaire auquel tu réponds contient des explications utiles, toi tu les remplace par le mot «bonne» pour ensuite faire glisser le débat sur le plan moral — ce qui n'est pas du tout le ton original.

  • [^] # Re: Switcher à python comme shell

    Posté par  (site web personnel) . En réponse à la dépêche pyxshell : piper des flux de texte en pur Python. Évalué à 2.

    C'est très souvent des algo réellement jetables, je ne m'en resert jamais.

    Pour un traitement complexe, meme si je ne m'en sers qu'une fois, j'utilise un fichier. Cela évite de faire des erreurs, et rend l'édition plus facile.

    Toute fois je suis d'accord pour dire que c'est moin agréable d'éditer ça de manière interactive. bash possède pour ça une parade Ctrl+x Ctrl+e pour ouvrir la commande courante dans un éditeur ($EDITOR).

    Comme j'utilise TCSH, je ne réfléchis pas. S'il y a un risque de boucle for, j'utilise l'éditeur. Ne pas réfléchir, cela fait gagner du temps. :) (Dans ce cas là bien-sûr!)

    Je ne cherche pas à en faire une position de principe: chacun fait au final comme il veut. Pendant longtemps je jouais au Samouraï de la ligne de commande, j'avoue que j'en tirais parfois une petite fierté. Mais un jour sur la ML de FreeBSD j'ai lu le témoignage de quelqu'un présentant le point de vue que je défends aujourd'hui. L'argument que TCSH est une horreur à programmer et que c'est exactement la raison qui en fait le meilleur SHELL intéractif m'a paru saugrenu. Cependant, j'ai essayé et je ne suis jamais revenu en arrière. L'intérêt principal étant d'éviter de se poser la question «éditeur ou pas?».