Je conchie les iostream

Je profite d'avoir un blog pour cracher un peu de bile: je hais les iostream du c++, ce truc est la honte des flux d'IO (enfin pas tout a fait, il faudrait aussi aborder le cas du Fortran). En bref les iostream c'est:

  1. lourd: rien que les cout << "plop" << std::setw(10) << std::hex << i << "\n" ça me donne déjà envie de casser mon clavier, et pourtant je n'ai même pas essayé de formatter un nombre en virgule flottante.
  2. lent (plus lent que les io du C)
  3. pas integré avec la stl. Ok la stl est venue bien après, mais quand même... un std::fstream qui accepte les noms de fichier en std::string ça serait pas mal..
  4. imbitable et pas du tout extensible: c'est un comble ! comment on fait un flux qui lit depuis la mémoire ? qui dézippe à la volée ? qui crypte à la volée ? C'est affreusement compliqué, ça oblige à se plonger dans les streambuf qui sont un chef d'oeuvre d'obfuscation avec leurs fonctions aux noms evocateurs "xsgetn", "gbump", "setg". Pour faire un iostream qui dezippe il faut surcharger une dizaine de ces fonctions merdiques et c'est hyper compliqué. Résultat: chaque toolkit, chaque petite lib, construit sa propre classe de flux from scratch parce que c'est impossible de repartir des iostream. Bravo Stroustrup ! (en fait je crois que ce n'est pas lui qui a commit les iostream)
  5. autiste: y'a pas de diagnostique des erreurs ! pourtant en C, "strerror" c'est bien sympa pour savoir si on n'a pas pu lire toto.txt parce qu'il n'existe pas , ou bien parce qu'il y a un probleme de permissions. Avec les iostream on sait juste que c'est "fail", après demerde toi.

Alors oui, si il y a un truc que je conchie dans le c++, c'est bien ses iostreams.

Diffmerge

Le mois de décembre démarre en trompette, alors aujourd'hui je vais parler un d'outil que j'ai découvert y'a pas longtemps et arrache définitivement les poils: diffmerge. Autant le dire tout de suite: il n'est pas libre. Par contre, c'est le pied pour faire des 3-way merge, et j'ai l'impression qu'il est assez fort pour faire des diffs de qualité. Je l'ai ajouté comme outil de merge pour Mercurial, et franchement il est bien meilleur que le diff graphique d'Apple, et très simple à utiliser.

Et puisque on me demande d'être plus en phase avec l'actualité, je me permets d'addresser mes chaleureuses et sincères félicitations à Miss Chine qui a brillament remporté le concours Miss Monde 2007.