Moc est là pour rajouter une couche d'introspection qui n'existe pas dans C++ malheureusement. On peut pas faire autrement avec un langage aussi statique et typé. Cette fonctionnalité permet de pouvoir appeler une fonction par son nom ce qui est assez pratique avec le système signaux/slot qui supportent les overloads.
On pourrait très bien faire sans, en utiliser juste une liste de std::function sauf que Qt, ça a un passé et ça évolue petit à petit.
Je précise que sans ça, ça serait difficile d'implémenter des interface depuis les .ui. En effet, ces fichiers XML peuvent déjà aider à mettre des signaux/slots au moment du chargement de l'UI et tout ça de manière sécurisé puisque moc va créer des vrais fonctions typés. Alors qu'une alternative utilisant dlopen serait totalement non-typé.
C'est vrai que c'est tellement bien un toolkit en C :
gtk_window_create_with_my_very_large_number_of_parameters(GTK_WINDOW(myobject), g_utf_text_from_char("je dis oui")); Sans compter les macros de merde pour déclarer un objet en glib. C'est vrai, c'est tellement mieux de réinventer la roue pour faire de l'OO avec un langage qui ne le permet pas nativement au lieu d'utiliser un qui le permet. Avec C++, on a RAII, les exceptions, l'orienté object (prérequis pour un toolkit), l'overload, les namespaces, … Mais bon, certains dinosaures préfèrent écrire du code en 30 lignes et à s'amuser à chercher où il manque des free plutôt que d'utiliser un langage moderne.
Un code Qt est beau, propre et facile. Avec C++14 ça l'est encore plus.
J'ajoute aussi que Gtk sur les plateformes non Linux c'est une grosse blague. Testez geany, gimp sur Windows, vous allez pleurer. À l'inverse une application Qt est presque native visuellement, je regarde TortoiseHg, VirtualBox, on pourrait croire qu'ils sont développés directement avec le toolkit du système.
Pourtant, dans l'esprit rolling release, arch suit vraiment mieux les nouvelles versions des logiciels mais en fait beaucoup trop… Arch n'a aucune cohérence, on package une nouvelle version d'un paquet même si ça doit casser d'autres paquets…
Je pense que le slogan qui caractérise bien Arch c'est "Tester c'est douter". La dernière fois j'ai voulu tester GNOME 3 dessus, j'ai eu plusieurs applications avec des bibliothèques manquantes. Chouette début :)
Je ne vois pas en quoi c'est un standard, beaucoup de projets ont laissé tomber autotools pour CMake parce qu'ils ont découvert qu'il ne fallait pas un doctorat pour s'en servir.
Moi je ne comprends pas qu'ils puissent encore utiliser des outils pourris et dépréciés que sont les autocrap. Pourquoi ne pas utiliser quelque chose de moderne comme CMake ? Scons ?
J'ai tout de suite regardé pour SDL2, et je vois qu'ils ont mal écrit l'auteur de la bibliothèque.
Maintenant ce que je me demande, c'est comment on définit qu'on veut utiliser tel ou tel compilateur, car par exemple sur Windows on a le choix entre diverses options qui ne sont pas du tout compatibles (MSVC et MinGW par exemple).
Mais sinon j'avoue que l'idée est très intéressante et pendant un long moment j'avais envie de coder moi même un truc comme ça !
Personnellement, ma Fedora 21 boot bien plus lentement que mon ancienne Ubuntu 14.10. Et elle boot même plus lentement que ma FreeBSD (et dieu sait à quel point FreeBSD c'est pas ce qui a de plus rapide pour le temps de boot).
l'ABI ne concerne pas tous les langages… Par exemple en python/ruby/perl/js parler d'ABI n'a presque pas de sens. Semver n'est pas destiné qu'aux langages natifs.
De plus l'ABI elle est normalement gérée par le numéro de version de la bibliothèque partagée. Tu sais le dernier numéro de liba.so.0.2. Et ce dernier n'a rien à voir avec la version de la bibliothèque elle même. Lorsqu'on utilise une bibliothèque statique, le problème ne se pose même pas.
Un des seuls langages au monde que je connaisse intégrant Graphviz dans sa bibliothèque standard. J'ai du mal à voir ce que ce module vient faire dans un langage supposé "système".
À part la recherche et le développement, c'est quoi le réel intérêt de minix en 2014 ? Est-ce réellement utilisable pour un individu où ça reste tout simplement des hobbies ?
Pour moi plan9, minix, GNU/Hurd font parti du même lot dont personne voudra.
Tu réalises que je peux très bien faire un jeu Libre mais pas gratuit?
Avec la GPL c'est complètement contradictoire. Puisque la GPL oblige le partage du code source, tu peux très bien dire (en tant qu'auteur) "je te le vends" puis l'acheteur en fait après ce qu'il a envie (puisque c'est GPL) et donc, le redistribuer gratuitement aux autres.
Tes deux exemples ne sont pas du C++ "courant" (qu'on est sûr de retrouver sur tout compilateur C++), car ils viennent de la dernière version de la norme…
C'est un peu gros d' "oublier" de dire que ce que tu proposes n'est pas vraiment connu ni utilisable car pas dispo partout.
Ça c'est ton problème si tu souhaites vivre dans le passé. Même VisualStudio 2012 accepte ce code (qui pourtant supporte très mal C++11).
Moi personnellement, j'utilise les nouvelles technologies au maximum, et tant pis pour ceux qui supportent pas encore ça. Je ne suis pas un dinosaure :-).
[^] # Re: C++ / Modèle Objet
Posté par David Demelier (site web personnel) . En réponse au journal [Bookmark] Qt fête ses vingt ans. Évalué à 3. Dernière modification le 21 mai 2015 à 15:18.
Moc est là pour rajouter une couche d'introspection qui n'existe pas dans C++ malheureusement. On peut pas faire autrement avec un langage aussi statique et typé. Cette fonctionnalité permet de pouvoir appeler une fonction par son nom ce qui est assez pratique avec le système signaux/slot qui supportent les overloads.
On pourrait très bien faire sans, en utiliser juste une liste de
std::function
sauf que Qt, ça a un passé et ça évolue petit à petit.Je précise que sans ça, ça serait difficile d'implémenter des interface depuis les .ui. En effet, ces fichiers XML peuvent déjà aider à mettre des signaux/slots au moment du chargement de l'UI et tout ça de manière sécurisé puisque moc va créer des vrais fonctions typés. Alors qu'une alternative utilisant
dlopen
serait totalement non-typé.AI is a mental disorder
[^] # Re: C++ / Modèle Objet
Posté par David Demelier (site web personnel) . En réponse au journal [Bookmark] Qt fête ses vingt ans. Évalué à 9. Dernière modification le 21 mai 2015 à 09:33.
C'est vrai que c'est tellement bien un toolkit en C :
Sans compter les macros de merde pour déclarer un objet en glib. C'est vrai, c'est tellement mieux de réinventer la roue pour faire de l'OO avec un langage qui ne le permet pas nativement au lieu d'utiliser un qui le permet. Avec C++, on a RAII, les exceptions, l'orienté object (prérequis pour un toolkit), l'overload, les namespaces, … Mais bon, certains dinosaures préfèrent écrire du code en 30 lignes et à s'amuser à chercher où il manque desgtk_window_create_with_my_very_large_number_of_parameters(GTK_WINDOW(myobject), g_utf_text_from_char("je dis oui"));
free
plutôt que d'utiliser un langage moderne.Un code Qt est beau, propre et facile. Avec C++14 ça l'est encore plus.
J'ajoute aussi que Gtk sur les plateformes non Linux c'est une grosse blague. Testez geany, gimp sur Windows, vous allez pleurer. À l'inverse une application Qt est presque native visuellement, je regarde TortoiseHg, VirtualBox, on pourrait croire qu'ils sont développés directement avec le toolkit du système.
AI is a mental disorder
[^] # Re: kernel
Posté par David Demelier (site web personnel) . En réponse au journal Trolldi, c'est aussi le lundi. Évalué à 3.
Le slogan que j'attribue à Arch : "Tester c'est douter".
AI is a mental disorder
[^] # Re: Intérêt
Posté par David Demelier (site web personnel) . En réponse au journal MenuetOS : 1.0. Évalué à 10.
Bien sûr qu'il y a un intérêt !
AI is a mental disorder
[^] # Re: SID vs Arch
Posté par David Demelier (site web personnel) . En réponse au journal Debian Sid facile. Évalué à 2.
Je pense que le slogan qui caractérise bien Arch c'est "Tester c'est douter". La dernière fois j'ai voulu tester GNOME 3 dessus, j'ai eu plusieurs applications avec des bibliothèques manquantes. Chouette début :)
AI is a mental disorder
[^] # Re: Fond d'écran
Posté par David Demelier (site web personnel) . En réponse au journal elementaryOS, une distribution aux nombreuses qualités. Évalué à 2.
C'est pas faux :D
AI is a mental disorder
# Fond d'écran
Posté par David Demelier (site web personnel) . En réponse au journal elementaryOS, une distribution aux nombreuses qualités. Évalué à -5.
J'avais testé, c'est vrai que c'est plutôt joli sauf… le fond d'écran. Perso, je suis pas fan des photos en fond d'écran :)
AI is a mental disorder
[^] # Re: pilote AMD propriétaire FGLRX
Posté par David Demelier (site web personnel) . En réponse à la dépêche Debian 8 : Jessie l’écuyère est en selle !. Évalué à 1.
Moi j'ai jamais eu de souci avec le driver libre. Et j'ai une assez vieille carte graphique (radeon hd 4330).
AI is a mental disorder
# apt-get vs aptitude
Posté par David Demelier (site web personnel) . En réponse à la dépêche Debian 8 : Jessie l’écuyère est en selle !. Évalué à 10.
J'ai cru comprendre qu'une nouvelle commande apt va regrouper apt-get et apt-cache ? Est-ce que aptitude va disparaitre ?
J'ai jamais compris pourquoi il y avait depuis toujours ces deux outils différents. Ça serait tellement plus simple d'en avoir qu'un :)
AI is a mental disorder
# Beau
Posté par David Demelier (site web personnel) . En réponse à la dépêche Un point d'avancement sur Neovim. Évalué à 6.
Côté design et logo ils ont tapé fort, j'adore c'est vraiment moderne. J'espère vraiment que ce projet marchera.
Je suis un grand fan de vim, mais j'avoue qu'il lui manque un peu de modernité.
AI is a mental disorder
# C'est vrai
Posté par David Demelier (site web personnel) . En réponse au journal lns: ln -s pour les étourdis. Évalué à 5.
J'avoue que je me trompe tout le temps aussi :-(
AI is a mental disorder
[^] # Re: Quel est l'interet de GNOME Builder ?
Posté par David Demelier (site web personnel) . En réponse à la dépêche GNOME 3.16 - nettoyage de printemps. Évalué à 5.
Je ne vois pas en quoi c'est un standard, beaucoup de projets ont laissé tomber autotools pour CMake parce qu'ils ont découvert qu'il ne fallait pas un doctorat pour s'en servir.
AI is a mental disorder
[^] # Re: Quel est l'interet de GNOME Builder ?
Posté par David Demelier (site web personnel) . En réponse à la dépêche GNOME 3.16 - nettoyage de printemps. Évalué à 1.
Moi je ne comprends pas qu'ils puissent encore utiliser des outils pourris et dépréciés que sont les autocrap. Pourquoi ne pas utiliser quelque chose de moderne comme CMake ? Scons ?
AI is a mental disorder
# Ça commence mal
Posté par David Demelier (site web personnel) . En réponse au journal Biicode: gestionnaire de dépendances c++. Évalué à 1.
J'ai tout de suite regardé pour SDL2, et je vois qu'ils ont mal écrit l'auteur de la bibliothèque.
Maintenant ce que je me demande, c'est comment on définit qu'on veut utiliser tel ou tel compilateur, car par exemple sur Windows on a le choix entre diverses options qui ne sont pas du tout compatibles (MSVC et MinGW par exemple).
Mais sinon j'avoue que l'idée est très intéressante et pendant un long moment j'avais envie de coder moi même un truc comme ça !
AI is a mental disorder
[^] # Re: L'argument kitu
Posté par David Demelier (site web personnel) . En réponse au journal systemd: je me lance. Évalué à 2.
Personnellement, ma Fedora 21 boot bien plus lentement que mon ancienne Ubuntu 14.10. Et elle boot même plus lentement que ma FreeBSD (et dieu sait à quel point FreeBSD c'est pas ce qui a de plus rapide pour le temps de boot).
AI is a mental disorder
[^] # Re: Et l’ABI, c’est du poulet ?
Posté par David Demelier (site web personnel) . En réponse à la dépêche Gestion sémantique de version. Évalué à 4.
l'ABI ne concerne pas tous les langages… Par exemple en python/ruby/perl/js parler d'ABI n'a presque pas de sens. Semver n'est pas destiné qu'aux langages natifs.
De plus l'ABI elle est normalement gérée par le numéro de version de la bibliothèque partagée. Tu sais le dernier numéro de liba.so.0.2. Et ce dernier n'a rien à voir avec la version de la bibliothèque elle même. Lorsqu'on utilise une bibliothèque statique, le problème ne se pose même pas.
AI is a mental disorder
# Graphviz
Posté par David Demelier (site web personnel) . En réponse à la dépêche Rust 0.12 : non, pas le jeu vidéo, le langage !. Évalué à 2.
Un des seuls langages au monde que je connaisse intégrant Graphviz dans sa bibliothèque standard. J'ai du mal à voir ce que ce module vient faire dans un langage supposé "système".
AI is a mental disorder
# Intérêt
Posté par David Demelier (site web personnel) . En réponse au journal Conférence d'Andrew S. Tanenbaum. Évalué à 1.
À part la recherche et le développement, c'est quoi le réel intérêt de minix en 2014 ? Est-ce réellement utilisable pour un individu où ça reste tout simplement des hobbies ?
Pour moi plan9, minix, GNU/Hurd font parti du même lot dont personne voudra.
AI is a mental disorder
[^] # Re: Séparateur de chiffre
Posté par David Demelier (site web personnel) . En réponse au journal C++14. Évalué à 2.
http://fr.wikipedia.org/wiki/Espace_(typographie)#Sens_du_mot_espace_au_masculin_et_f.C3.A9minin
AI is a mental disorder
[^] # Re: En vrac
Posté par David Demelier (site web personnel) . En réponse au journal Pourquoi empaqueter KDE prend-il du temps ?. Évalué à 0.
AI is a mental disorder
[^] # Re: Licence
Posté par David Demelier (site web personnel) . En réponse au journal Soya 3D version 3 arrive... (en images !). Évalué à 1.
Avec la GPL c'est complètement contradictoire. Puisque la GPL oblige le partage du code source, tu peux très bien dire (en tant qu'auteur) "je te le vends" puis l'acheteur en fait après ce qu'il a envie (puisque c'est GPL) et donc, le redistribuer gratuitement aux autres.
AI is a mental disorder
# Licence
Posté par David Demelier (site web personnel) . En réponse au journal Soya 3D version 3 arrive... (en images !). Évalué à 0.
Vraiment dommage de choisir GPL comme licence. Pour une bibliothèque / framework la LGPL reste un gros avantage et est bien moins contraignante.
Beaucoup de personnes vont fuir ton projet si tu garde la GPL, crois moi :-). C'est dommage car en plus il a l'air sympathique.
AI is a mental disorder
[^] # Re: Le bon bash des familles
Posté par David Demelier (site web personnel) . En réponse au journal Python comme premier langage de programmation ?. Évalué à 1.
Ça c'est ton problème si tu souhaites vivre dans le passé. Même VisualStudio 2012 accepte ce code (qui pourtant supporte très mal C++11).
Moi personnellement, j'utilise les nouvelles technologies au maximum, et tant pis pour ceux qui supportent pas encore ça. Je ne suis pas un dinosaure :-).
AI is a mental disorder
[^] # Re: Le bon bash des familles
Posté par David Demelier (site web personnel) . En réponse au journal Python comme premier langage de programmation ?. Évalué à 1.
EDIT: avec clang il faudra peut-être rajouter l'entête locale aussi.
AI is a mental disorder
[^] # Re: Le bon bash des familles
Posté par David Demelier (site web personnel) . En réponse au journal Python comme premier langage de programmation ?. Évalué à 1. Dernière modification le 23 juillet 2014 à 08:49.
Tu veux dire std::u32string ?
Et aussi std::codecvt_utf8 ?
Pour ma part, j'utilise ce code pour faire la conversion UTF-8 UCS-4
AI is a mental disorder