“But exceptions are expensive!” Not really. Modern C++ implementations reduce the overhead of using exceptions to a few percent (say, 3%) and that’s compared to no error handling. Writing code with error-return codes and tests is not free either. As a rule of thumb, exception handling is extremely cheap when you don’t throw an exception. It costs nothing on some implementations. All the cost is incurred when you throw an exception: that is, “normal code” is faster than code using error-return codes and tests. You incur cost only when you have an error.
si c'est pas très loin, utiliser une exception ne sert à rien par rapport à un code de retour ou un booléen pour gérer un truc immédiat; si c'est très loin, alors tu ne peux rien faire de vraiment très sérieux à part quitter le programme.
Donc tu préfère ce genre de code ?
intc(){if(!some_failure)return-1;return123;}intb(){intresult_c;if((result_c=c())<0)returnresult_c;returnresult_c*456;}intmain(){intvalue=b();if(value<0)// code d'erreur, je suis obligé d'utiliser une seconde fonction pour récupérer une erreur "humaine"std::cout<<"code d'erreur: "<<value<<std::endl;elsestd::cout<<value<<std::endl;}
Ça, ça ne va pas changer, je déteste les exceptions en C++. Et je ne vois pas bien où je pourrais en mettre.
Bienvenue en 1989 :/
En interne, il y a quelques classes qui utilisent RAII. Maintenant, où est-ce que tu en verrais dans l'API publique ?
Je déteste vraiment avoir ce genre de code :
Musicm;if(!m.loadFromFile("foo")){// gestion de l'erreur }
Cela signifie que toutes tes fonctions membres vont devoir vérifier que l'état de l'objet Music est bien ouvert et fonctionnel. Alors qu'un constructeur qui throw rend tout simplement impossible d'utiliser l'objet. Certains vont dire que c'est une hérésie de lever une exception dans un constructeur, mais c'est tout simplement la bonne méthode.
Avec un constructeur qui throw je sais que mon objet sera valide tout au long de sa vie.
Musicm("foo.ogg");// Par buffer (vector, array), etcMusicm(buffer.begin(),buffer.end());// Stream?std::istreamcustomstreamMusicm(customstream);
J'ai regardé rapidement ton projet, pour le ResourcesManager, tu pourrais retourner des std::unique_ptr plutôt que des pointeurs bruts. Ça marquera complètement l'ownership et tu pourras toujours retourner un std::unique_ptr null si l'objet n'est pas trouvé :)
Le développeur utilise du C++ d'un autre âge, pas d'exception, pas de RAII, pas de C++11. Portabilité ? Non merci, C++11 a déjà 5 ans.
J'ai eu un souci de rendu sur FreeBSD (sur Windows ça fonctionnait), tout ce que l'auteur a su me répondre était "aucune idée".
Je suis l'auteur du support du joystick dans SFML, lorsque j'ai proposé le patch, j'ai bien précisé qu'il s'agissait de FreeBSD mais l'auteur a vraiment voulu merger le code avec Linux. Heureusement après plusieurs mails, il a finalement bien voulu ne pas mélanger le code FreeBSD et Linux.
Wine etait en licence MIT avant de subir l'abus d'une societe qui a forke et ferme le code, rendu payant le logiciel et fait pleins de correctifs (et le tout parfaitement legalement). Wine est finalement passe en GPL pour ces raisons (et aussi parce que beaucoup de contributeurs se rendaient compte qu'il travaillait presque directement pour l'autre entreprise qui cherry pickait tous les nouveaux fixes de Wine).
Effectivement pour le coup je pense que c'est bien pour Wine. Je n'ai rien contre la GPL lorsqu'il s'agit de frontends (exécutables finaux).
Cela protège largement le logiciel et c'est très bien comme ça.
C'est plutôt pour les bibliothèques, j'ai toujours pesté et fuis celles sous licence GPL. Je comprends pas l'intérêt de forcer un utilisateur de ta bibliothèque à faire du code open-source uniquement. C'est là que je trouve que la vision est vraiment orientée fanatique. Heureusement un bon nombre de personnes choisissent néanmoins la LGPL qui est bien mieux pour les bibliothèques.
Tiled (mapeditor.org) est bien fait pour ça. Son exécutable est sous GPL ce qui contraint tous les changements à être libre aussi et sa bibliothèque est sous LGPL. Au moins, normalement tout le monde est content :)
Lors d'une discussion autour de la licence BSD de Redox (OS écrit en langage Rust) un argument m'a semble convaincant. Il disait que ce qui est dommage avec les licences permissive c'est qu'elles n'incitent en rien les gens qui l'utilisent (PS3/PS4 et autres) a contribuer en upstream. Ce qui explique pourquoi FreeBSD est un projet quasi vide cote driver, parce qu'aucun inde ne souhaite contribuer (car son travail peut être réutilisé permissivement) et qu'aucune boite n'est pousse a le faire (car rien ne l'y oblige).
C'est une vision un poil extrémiste quand même.
Nvidia a bien fait un driver non libre pour Linux et aussi pour FreeBSD, je vois pas en quoi cet argument de licence permissive va fait fuir les entreprises.
De plus, rien ne t'empêche d'écrire un driver pour FreeBSD sous licence GPL. Personne ne t'interdira de faire cela.
FreeBSD a déjà reçu des contributions extérieures. Si le projet évolue plus lentement c'est pour bien d'autres raisons. Déjà parce que le projet s'est largement focalisé sur les serveurs. C'est venu après Linux et le modèle de développement est largement plus stricte. De plus les *BSD ont fait moins de communication.
Du coup je me demandais ce qu'en pensais les gens de FreeBSD car les arguments (la page n'est plus dispo) de la page Redox sur le choix de licence ne m'ont pas vraiment convaincu (ou bien je ne comprends pas).
En gros, c'est quoi l’intérêt de FreeBSD pour le libre ? :) C'est pas un troll, c'est une vraie question.
Si j'ai bien compris, pour toi c'est "use GPL or die" ? :)
Chez FreeBSD (et autres BSD même) on aime la liberté. Utiliser la GPL et contraindre les gens pour moi c'est une vision de fanatiques qui détestent les entreprises et voient le mal partout.
Je me souviens Theo de Raadt (OpenBSD) avoir dit quelque chose comme "Les gens font Linux parce qu'ils détestent Windows, nous faisons OpenBSD parce que nous aimons Unix".
Personnellement je fais que du libre (license ISC) et si on contribue à mes projets tant mieux, sinon c'est pas grave.
Enfin, depuis le temps qu'on attend ça. Je trouvais ça tellement ridicule. Je trouve que Debian n'est pas assez transparent et modifie beaucoup trop les paquets qui sont fournis.
Celui qui m'a donné envie de me lancer dans le BMX il y a plus de 10 ans. Quel chagrin de voir son décès aujourd'hui même s'il a arrêté le BMX depuis plusieurs années. Pour moi ça a toujours été le meilleur. Décidement cette année…
Le départ de Matt n'a aucun impact sur la popularité de Mercurial. Mercurial a toujours été largement moins répandu que Git déjà parce que Git a eu un succès populaire avec GitHub et parce que son système de branche est efficace. Qu'il soit fait par Linus Torvalds lui donne probablement une étiquette supplémentaire.
Je suis fan de Mercurial, je m'en sers depuis environ 2008 et je m'en sers toujours, c'est mon DVCS au quotidien. Mercurial a des défauts mais il a aussi tellement d'avantages.
TortoiseHg, le workbench, juste magnifique et exactement la même interface sur chaque plateforme !
La portabilité est importante,
Simplicité, les commandes sont courtes avec une documentation claire net et précise,
Mise en place d'un serveur de dépôts, avec hgweb.cgi environ 5 lignes de configuration,
Léger, le core fait la plupart des choses, les extensions fournies avec peuvent compléter,
KISS, hg revert | update | branch vs git checkout,
Un seul langage, Python. Git : bash, perl, C, …
hg incoming | outgoing,
hg serve,
hg heads,
hg summary.
Malgré tout, j'avoue que GitHub est particulièrement pratique pour collaborer.
Entre faire tourner un logiciel propriétaire local sur sa machine et utiliser un service web il y a une large différence. Sinon, on peut aussi enlever le support de l'imap/facebook/skype et autre conneries dans empathy et les compte en ligne.
De plus, si tu as pas de compte google, tu ne rajoute pas de compte en ligne et tu n'a aucune intégration. C'est pas parce que tu as le driver nvidia, le paquet flash player dans les dépôts de ta distribution que tu es obligé de les installer.
En mode panique, l'entreprise italienne vient de conseiller à ses clients d'arrêter d'utiliser ses produits (Galileo et autres) car ils contiennent une backdoor qui permettait à hacking team de garder le contrôle de ses produits. A lire ici en anglais
On ne le répètera jamais assez, les logiciels privateurs c'est le mal.
Personnellement, je ne lance aucun binaire sur ma machine. Toutes mes applications viennent des dépôts officiels ou au pire je les compile à la main (CMake, Qt 5.4 par exemple).
Un .jar, jamais de la vie je l'aurais lancé, encore moins en root !
Pareil pour les applications qui te mettent ce genre d'instructions pour l'installation :
J'ai commencé sur Mandrake Linux 10.0 en 2003 puis je suis resté sur Linux depuis :). J'ai beaucoup voyagé entre Fedora (une de mes préférées), Ubuntu, SuSE (à l'époque 9.1), Gentoo.
[^] # Re: Je n'aime pas la SFML
Posté par David Demelier (site web personnel) . En réponse à la dépêche SDL ou SFML ? Ne choisissez plus, prenez Gamedev Framework (gf). Évalué à 6.
Tu as des mesures réelles ?
AI is a mental disorder
[^] # Re: Je n'aime pas la SFML
Posté par David Demelier (site web personnel) . En réponse à la dépêche SDL ou SFML ? Ne choisissez plus, prenez Gamedev Framework (gf). Évalué à 9.
https://isocpp.org/wiki/faq/exceptions#why-exceptions
AI is a mental disorder
[^] # Re: Je n'aime pas la SFML
Posté par David Demelier (site web personnel) . En réponse à la dépêche SDL ou SFML ? Ne choisissez plus, prenez Gamedev Framework (gf). Évalué à 4.
assert
c'est pour des erreurs de développement. Pas des erreurs au runtime.AI is a mental disorder
[^] # Re: Je n'aime pas la SFML
Posté par David Demelier (site web personnel) . En réponse à la dépêche SDL ou SFML ? Ne choisissez plus, prenez Gamedev Framework (gf). Évalué à 1.
Donc tu préfère ce genre de code ?
Plutôt que :
AI is a mental disorder
[^] # Re: Je n'aime pas la SFML
Posté par David Demelier (site web personnel) . En réponse à la dépêche SDL ou SFML ? Ne choisissez plus, prenez Gamedev Framework (gf). Évalué à 9.
Bienvenue en 1989 :/
Je déteste vraiment avoir ce genre de code :
Cela signifie que toutes tes fonctions membres vont devoir vérifier que l'état de l'objet
Music
est bien ouvert et fonctionnel. Alors qu'un constructeur qui throw rend tout simplement impossible d'utiliser l'objet. Certains vont dire que c'est une hérésie de lever une exception dans un constructeur, mais c'est tout simplement la bonne méthode.Avec un constructeur qui throw je sais que mon objet sera valide tout au long de sa vie.
J'ai regardé rapidement ton projet, pour le ResourcesManager, tu pourrais retourner des
std::unique_ptr
plutôt que des pointeurs bruts. Ça marquera complètement l'ownership et tu pourras toujours retourner unstd::unique_ptr
null si l'objet n'est pas trouvé :)AI is a mental disorder
[^] # Re: Ça tombe bien, je n'étais convaincu ni par la SDL, ni par la SFML
Posté par David Demelier (site web personnel) . En réponse à la dépêche SDL ou SFML ? Ne choisissez plus, prenez Gamedev Framework (gf). Évalué à 4.
Moui, la SFML 2.0 est une grosse réecriture il me semble, autant tout casser et passer à du moderne :)
Son changelog était assez marrant d'ailleurs.
AI is a mental disorder
# Je n'aime pas la SFML
Posté par David Demelier (site web personnel) . En réponse à la dépêche SDL ou SFML ? Ne choisissez plus, prenez Gamedev Framework (gf). Évalué à 6.
Très bon choix pour SDL.
Je n'aime pas la SFML pour plusieurs raisons :
Le développeur utilise du C++ d'un autre âge, pas d'exception, pas de RAII, pas de C++11. Portabilité ? Non merci, C++11 a déjà 5 ans.
J'ai eu un souci de rendu sur FreeBSD (sur Windows ça fonctionnait), tout ce que l'auteur a su me répondre était "aucune idée".
Je suis l'auteur du support du joystick dans SFML, lorsque j'ai proposé le patch, j'ai bien précisé qu'il s'agissait de FreeBSD mais l'auteur a vraiment voulu merger le code avec Linux. Heureusement après plusieurs mails, il a finalement bien voulu ne pas mélanger le code FreeBSD et Linux.
Hâte de voir ton framework du coup :)
AI is a mental disorder
[^] # Re: Citation de Linus
Posté par David Demelier (site web personnel) . En réponse au journal Microsoft se lance dans FreeBSD. Évalué à 2.
En même temps ce n'est rien d'autre qu'un fork de atom alors bon :)
AI is a mental disorder
# Nommage des structures
Posté par David Demelier (site web personnel) . En réponse au journal Ulfius: framework pour faire des API Web en C. Évalué à 2.
Je ne sais pas pourquoi tu préfixes toutes tes structures par un _. En C++ c'est même réservé par la norme, je ne sais pas ce qu'il en est C.
Mais aussi, je trouve ça moche.
Sinon dans l'ensemble je trouve que le code est propre et bien documenté.
AI is a mental disorder
[^] # Re: Question naïve autour de la licence
Posté par David Demelier (site web personnel) . En réponse à la dépêche FreeBSD 10.3. Évalué à 5. Dernière modification le 06 avril 2016 à 12:54.
Effectivement pour le coup je pense que c'est bien pour Wine. Je n'ai rien contre la GPL lorsqu'il s'agit de frontends (exécutables finaux).
Cela protège largement le logiciel et c'est très bien comme ça.
C'est plutôt pour les bibliothèques, j'ai toujours pesté et fuis celles sous licence GPL. Je comprends pas l'intérêt de forcer un utilisateur de ta bibliothèque à faire du code open-source uniquement. C'est là que je trouve que la vision est vraiment orientée fanatique. Heureusement un bon nombre de personnes choisissent néanmoins la LGPL qui est bien mieux pour les bibliothèques.
Tiled (mapeditor.org) est bien fait pour ça. Son exécutable est sous GPL ce qui contraint tous les changements à être libre aussi et sa bibliothèque est sous LGPL. Au moins, normalement tout le monde est content :)
AI is a mental disorder
[^] # Re: Question naïve autour de la licence
Posté par David Demelier (site web personnel) . En réponse à la dépêche FreeBSD 10.3. Évalué à 8.
C'est une vision un poil extrémiste quand même.
Nvidia a bien fait un driver non libre pour Linux et aussi pour FreeBSD, je vois pas en quoi cet argument de licence permissive va fait fuir les entreprises.
De plus, rien ne t'empêche d'écrire un driver pour FreeBSD sous licence GPL. Personne ne t'interdira de faire cela.
FreeBSD a déjà reçu des contributions extérieures. Si le projet évolue plus lentement c'est pour bien d'autres raisons. Déjà parce que le projet s'est largement focalisé sur les serveurs. C'est venu après Linux et le modèle de développement est largement plus stricte. De plus les *BSD ont fait moins de communication.
Si j'ai bien compris, pour toi c'est "use GPL or die" ? :)
Chez FreeBSD (et autres BSD même) on aime la liberté. Utiliser la GPL et contraindre les gens pour moi c'est une vision de fanatiques qui détestent les entreprises et voient le mal partout.
Je me souviens Theo de Raadt (OpenBSD) avoir dit quelque chose comme "Les gens font Linux parce qu'ils détestent Windows, nous faisons OpenBSD parce que nous aimons Unix".
Personnellement je fais que du libre (license ISC) et si on contribue à mes projets tant mieux, sinon c'est pas grave.
AI is a mental disorder
# Plusieurs raisons
Posté par David Demelier (site web personnel) . En réponse au journal Steam & Linux. Évalué à 10.
J'ai tout de même testé une fois, c'était plutôt bon et bien intégré. Je pense que ça reste une bonne chose.
AI is a mental disorder
# Depuis le temps
Posté par David Demelier (site web personnel) . En réponse au journal Debian : Iceweasel pourrait redevenir Firefox . Évalué à -10.
Enfin, depuis le temps qu'on attend ça. Je trouvais ça tellement ridicule. Je trouve que Debian n'est pas assez transparent et modifie beaucoup trop les paquets qui sont fournis.
AI is a mental disorder
# CMake <3
Posté par David Demelier (site web personnel) . En réponse au journal CMake mon amour. Évalué à 2.
Aaah CMake <3 toujours aussi fan :)
/me est tellement content d'avoir changé le build-system vers CMake à $JOB
AI is a mental disorder
# Mon idole
Posté par David Demelier (site web personnel) . En réponse au journal Dave Mirra bronsonisé. Évalué à 1.
Celui qui m'a donné envie de me lancer dans le BMX il y a plus de 10 ans. Quel chagrin de voir son décès aujourd'hui même s'il a arrêté le BMX depuis plusieurs années. Pour moi ça a toujours été le meilleur. Décidement cette année…
AI is a mental disorder
# Popularité
Posté par David Demelier (site web personnel) . En réponse au journal Matt Mackall, l'auteur de Mercurial, passe la main. Évalué à 6.
Le départ de Matt n'a aucun impact sur la popularité de Mercurial. Mercurial a toujours été largement moins répandu que Git déjà parce que Git a eu un succès populaire avec GitHub et parce que son système de branche est efficace. Qu'il soit fait par Linus Torvalds lui donne probablement une étiquette supplémentaire.
Je suis fan de Mercurial, je m'en sers depuis environ 2008 et je m'en sers toujours, c'est mon DVCS au quotidien. Mercurial a des défauts mais il a aussi tellement d'avantages.
Malgré tout, j'avoue que GitHub est particulièrement pratique pour collaborer.
AI is a mental disorder
# Bluetooth
Posté par David Demelier (site web personnel) . En réponse à la dépêche OpenBSD 5.8. Évalué à 2.
Le bluetooth a été retiré il y a quelques versions de cela, j'espère que ça reviendra un jour.
AI is a mental disorder
[^] # Re: Comment faire pour supprimer l'intégration google drive ?
Posté par David Demelier (site web personnel) . En réponse à la dépêche GNOME 3.18 Göteborg est disponible. Évalué à 6.
Entre faire tourner un logiciel propriétaire local sur sa machine et utiliser un service web il y a une large différence. Sinon, on peut aussi enlever le support de l'imap/facebook/skype et autre conneries dans empathy et les compte en ligne.
De plus, si tu as pas de compte google, tu ne rajoute pas de compte en ligne et tu n'a aucune intégration. C'est pas parce que tu as le driver nvidia, le paquet flash player dans les dépôts de ta distribution que tu es obligé de les installer.
AI is a mental disorder
[^] # Re: Goût enfin
Posté par David Demelier (site web personnel) . En réponse à la dépêche Les évolutions KDE avec KDE Frameworks 5.13, KDE Applications 15.08 et Plasma 5.4. Évalué à 1.
Tu le teste avec quelle distribution ?
AI is a mental disorder
# Goût enfin
Posté par David Demelier (site web personnel) . En réponse à la dépêche Les évolutions KDE avec KDE Frameworks 5.13, KDE Applications 15.08 et Plasma 5.4. Évalué à 10.
On dirait que les développeurs de KDE ont enfin du goût ! Fini ces thèmes immonde qu'étaient oxygen avec ces dégradés immenses.
Ça a l'air vraiment chouette et j'ai très hâte de tester :)
AI is a mental disorder
# Logiciels privateurs
Posté par David Demelier (site web personnel) . En réponse au journal hacked Team : qui vit par l’épée périra par l’épée. Évalué à 7.
On ne le répètera jamais assez, les logiciels privateurs c'est le mal.
AI is a mental disorder
# Bravo
Posté par David Demelier (site web personnel) . En réponse à la dépêche Sortie de Makefly 0.4, alternative au moteur de blog statique Nanoblogger. Évalué à 4.
Félicitations Olivier :)
AI is a mental disorder
# Règle de sécurité
Posté par David Demelier (site web personnel) . En réponse au journal Scan de fichiers automatique. Évalué à 0.
Personnellement, je ne lance aucun binaire sur ma machine. Toutes mes applications viennent des dépôts officiels ou au pire je les compile à la main (CMake, Qt 5.4 par exemple).
Un .jar, jamais de la vie je l'aurais lancé, encore moins en root !
Pareil pour les applications qui te mettent ce genre d'instructions pour l'installation :
À fuir comme la peste :-)
AI is a mental disorder
[^] # Re: Les technos
Posté par David Demelier (site web personnel) . En réponse à la dépêche Sortie d'Ardour 4. Évalué à 3.
Mais peut-être qu'il y a du code assembleur directement dans le code source aussi.
AI is a mental disorder
# Mandrake
Posté par David Demelier (site web personnel) . En réponse au sondage En quelle année êtes-vous passé(e) à GNU/Linux (ou autre système libre) ?. Évalué à 1.
J'ai commencé sur Mandrake Linux 10.0 en 2003 puis je suis resté sur Linux depuis :). J'ai beaucoup voyagé entre Fedora (une de mes préférées), Ubuntu, SuSE (à l'époque 9.1), Gentoo.
AI is a mental disorder