Le problème avec C est clair. On dois réinventer la roue pour pour chaque structure de donnée, et tu dois faire du micro-management de la mémoire.
Mais C++ est un langage de haut niveau avec une de bonnes bibliothèques.
Le C++ n'est pas un langage facile à apprendre, mais une fois connus, il ne reste pas beaucoup plus de « spécificités rigide » propre au C++.
Je suis cependant d'accord que le python est apparemment plus adapté pour ce genre de jeux. Mais un autre point à considérer et que il est préférable d'utiliser un langage qu'on maîtrise bien.
Mais calculer les nombre de fibonacci est assez rare.
Peu de C++ courant fait un usage intensif des template. Et pourtant la compilation est quand même lente. C'est parce que dés que on inclus les header standard, ça inclus plein de headers qui contienne pas mal de templates.
C'est pour ça que les header pré-compilé rendent la compilation du C++ tellement plus rapide. Mais c'est un hack.
La faute au fait qu'un OS aujourd'hui a une moindre importance
Et voilà encore une bataille perdue de RMS, car RMS n'a pas vu le web venir.
J'étais à la conférence de RMS au desktop summit de gran canaria en 2009. À cette époque on voyait déjà de plus en plus "d'application web"
A la fin de la conférence, une des question était à propos des applications web et si elle représentait un danger. RMS à totalement nié le danger et il a répondu totalement à coté de la plaque en disant que le principale problème était que du Javascript non libre était exécuté sur sa machine.
Depuis, il a légèrement changé son avis.
Aujourd'hui je pense que la liberté des données est un combat bien plus important que la liberté du code, mais apparemment RMS reste coincé dans son monde en se focalisant sur ses 4 libertés qu'il croit universelles.
foo*bar;/* Si foo est un typedef, ça déclare un pointeur, sinon c'est une multiplication. */a=(t)-1;/* Si t est un typedef, alors c'est un cast, sinon c'est une soustraction. */
Le C++ est peut être pire dans l'interpretation de < et > comme séparateur de template ou opérateur.
Mais je ne pense pas que c'est ce qui ralentis le parsing.
Je dirais plutôt que c'est le fait qu'il y ait tellement de headers, et qu'il doivent être re-parsé pour chaque translation unit
Nokia fait ça pour des raisons techniques.
Ce n'est que pour les navigateurs de téléphones bas de gamme qui ne sont pas capable de faire le rendu sur le terminal.
Les smart phone Nokia ne sont pas concernés.
Pour GTK je ne sais pas, mais pour Qt c'est très facile de porter ou maintenir pour un système d'affichage différent.
Grâce à QPA (Qt Platform Abstraction)
Pour rappel, QPA fût introduit dans Qt 4.8, c'est le successeur de Qt pour Embedded Linux.
Qt pour embedded Linux avait son propre système d'affichage par dessus le frame buffer: QWS. Ce dernier est assez simple (on parle d'applications embarquées avec une seule fenêtre plein écran). Mais les utilisateur demandent toujours plus de fonctions et sur des platformes matériel de plus en plus variées. QPA est né de se besoin de personnaliser le système d'affichage pour différent matériels.
Il s'agit d'un système de plugin qui gère le serveur d'affichage (et d'input).
Avec Qt 5.0 QPA est devenu le système par défaut même sur Mac et Windows car ça simplifie beaucoup le code de Qt. Sous linux, il n'est donc pas nécessaire de recompiler Qt ou des applications Qt pour les faire tourner sous X11 (XCB ou XLib¹ au choix), Wayland, le frame buffer, ou pas d'affichage du tout. Il suffit de passer un argument dans la ligne de commande.
Si ils sont capable de faire un serveur d'affichage, faire un plugin pour Qt devrait être assez facile.
Ce avec quoi je ne suis pas d'accord c'est de dénigrer Qt à cause de moc juste pour le principe qu'avoir un générateur de code c'est « pas propre » alors qu'en réalité ça ne pose pas vraiment de problèmes.
Qu'est-ce que les macro de Qt ont de moins standard que les macro de, disons, boost ?
Il ne supporte pas les templates de QObject
C'est vrai. C'est un petit inconvénient du système actuel. Mais apparemment, pas tellement de développeurs ont besoin de ça.
(Dans Qt5 tu peux connecté à un slot parametré par un template.)
si tu a besoin qu'une partie des fonctionnalités […] qui ne nécessité pas de compiler du code généré, et bien tu te tappe quand même du code généré et toutes les limitations de moc
Non. Tu ne met pas la macro Q_OBJECT et tu n'as pas besoin de code généré.
Et tu peux donc avoir des QObject avec template (exemple: QFutureWatcher)
J'ai bien vu la doc, mais les réponses à mes questions n'y est pas. Tout simplement parce que la réponse est en fait « Boost sait pas faire »
Comment fais tu l'introspection sans te farcir plein de boiler plate et de répétitions propices aux erreurs ?
Biensûr que tout est possible avec des macros et des templates, mais est-ce que on arrive à du code aussi clair que celui de Qt ?
Un autre aventage des signaux et propriétés de Qt: on peux en rajouter dans les objects sans casser la compatibilité binaire.
Quand à savoir si moc vaut le coup ? Quel est le coût ? Quel est le problème avec moc ? Il s'intrègre bien dans lessystèmes de build. Le code qu'il génère est relativement simple et ne pose pas de problème avec les outils de debug ou autre.
Pour rappel, le moc génère un fichier .cpp additionel qui est compilé avec le code. Il ne modifie pas le fichier original (contrairement à ce qui est parfois pensé). Le fichier .h est un fichier C++ standard, annotés à l'aide de macro pour le moc. Cela ne pause aucun problème avec les IDE ou autre outils qui parse le C++ standard.
En quoi est ce que les interfaces .ui sont lourdes ?
Tu donne un lien vers le xml, mais il n'est pas sensé être lu ou édité par un humain. Il faut utiliser Qt designer, qui est quand même vachement pratique.
Et puis il n'y a pas tellement de boiler plate dans la gestion des signaux. Bon, c'est vrai qu'il aurais pu faire ça dans une boucle plutôt de se répéter pour chaque action.
Comment est-ce que boost fait une connection inter-thread ? Avec quelle boucle d'événements il s'intègre ?
Dans Qt, chaque QObject « vit » dans un thread (QObject::thread()) et si le thread est différent, un événement Qt est posté dans la boucle d'événement du thread en question. (Et la boucle d'événement Qt peux facilement être intégrée dans les boucles d'événement d'autres bobliothèques)
Comment est-ce que boost fait la connection autmatique avec les noms qui vont biens ? Comment font ils sans l'introspection fournie par moc ?
Ce que Qt fait est que le moc génère du code C++ qui contiens le nom (sous forme de char*) des slots et signaux, et ainsi faire une connection automatique (avec QMetaObject::connectSlotsByName)
Les signaux de boost peuvent en effet faire beaucoup de chose, mais Qt rends ça plus facile.
De plus, grâce à l'introspection fournie par moc, il est facile de faire des bindings avec des languages de scripts comme javascript et QML.
Mettre la doc dans le .h a l'avantage que les .h sont installé et pas les .cpp.
Et que l'IDE a plus facile à trouver les .h que les .cpp pour pouvoir afficher la doc dans un tooltip par exemple (ou afficher la doc quand on navigue vers la déclaration du symbole)
Pour l'instant, c'est assez difficile de sortir du standard SSL, donc ce n'est pas trop problématique.
Je crois que tu as une conception erroné du « standard SSL »
Déjà on dis TLS, parce que SSL c'est dépassé.
Ensuite, il existe de nombreux bugs et incompatibilité dans les différentes implémentations qui oblige a faire pas mal de hack pour blacklister certaines implémentations, ou se limiter à une version inférieure.
[^] # Re: Translation plz
Posté par Gof (site web personnel) . En réponse au journal Blagues et sexisme. Évalué à 5. Dernière modification le 23 mars 2013 à 12:54.
Je dirais plutôt que un bébé est un merge. (En résolvant tous les conflits au hasard.)
[^] # Re: Python uber alles
Posté par Gof (site web personnel) . En réponse à la dépêche Concours de programmation CodinGame le 26 mars 2013. Évalué à 3.
Pourquoi tu mets C et C++ dans le même sac?
Le problème avec C est clair. On dois réinventer la roue pour pour chaque structure de donnée, et tu dois faire du micro-management de la mémoire.
Mais C++ est un langage de haut niveau avec une de bonnes bibliothèques.
Le C++ n'est pas un langage facile à apprendre, mais une fois connus, il ne reste pas beaucoup plus de « spécificités rigide » propre au C++.
Je suis cependant d'accord que le python est apparemment plus adapté pour ce genre de jeux. Mais un autre point à considérer et que il est préférable d'utiliser un langage qu'on maîtrise bien.
[^] # Re: Pas de support C++
Posté par Gof (site web personnel) . En réponse à la dépêche Sortie de TinyCC 0.9.26. Évalué à 2.
Mais calculer les nombre de fibonacci est assez rare.
Peu de C++ courant fait un usage intensif des template. Et pourtant la compilation est quand même lente. C'est parce que dés que on inclus les header standard, ça inclus plein de headers qui contienne pas mal de templates.
C'est pour ça que les header pré-compilé rendent la compilation du C++ tellement plus rapide. Mais c'est un hack.
[^] # Re: Chipotage
Posté par Gof (site web personnel) . En réponse à la dépêche Joyeux anniversaire Richard Stallman. Évalué à 6.
Et voilà encore une bataille perdue de RMS, car RMS n'a pas vu le web venir.
J'étais à la conférence de RMS au desktop summit de gran canaria en 2009. À cette époque on voyait déjà de plus en plus "d'application web"
A la fin de la conférence, une des question était à propos des applications web et si elle représentait un danger. RMS à totalement nié le danger et il a répondu totalement à coté de la plaque en disant que le principale problème était que du Javascript non libre était exécuté sur sa machine.
Depuis, il a légèrement changé son avis.
Aujourd'hui je pense que la liberté des données est un combat bien plus important que la liberté du code, mais apparemment RMS reste coincé dans son monde en se focalisant sur ses 4 libertés qu'il croit universelles.
[^] # Re: Pas de support C++
Posté par Gof (site web personnel) . En réponse à la dépêche Sortie de TinyCC 0.9.26. Évalué à 7.
Le C aussi est dépendent du contexte.
Le C++ est peut être pire dans l'interpretation de < et > comme séparateur de template ou opérateur.
Mais je ne pense pas que c'est ce qui ralentis le parsing.
Je dirais plutôt que c'est le fait qu'il y ait tellement de headers, et qu'il doivent être re-parsé pour chaque translation unit
[^] # Re: L'homme au milieu
Posté par Gof (site web personnel) . En réponse au journal De la neutralité du net .... Évalué à 6.
Rien à voir.
Nokia fait ça pour des raisons techniques.
Ce n'est que pour les navigateurs de téléphones bas de gamme qui ne sont pas capable de faire le rendu sur le terminal.
Les smart phone Nokia ne sont pas concernés.
[^] # Re: Autre, l'adhésion à une certaine éthique, un sens politique !
Posté par Gof (site web personnel) . En réponse au sondage Selon vous, quel est l'avantage d'un système libre type GNU/Linux sur un ordinateur de bureau ?. Évalué à 6.
[X] La possibilité d'adapter les logiciels a ses besoin (corriger des bugs, ajouter des fonctionalités)
[X] Adhésion aux valeurs du logiciel libre
[^] # Re: Wai
Posté par Gof (site web personnel) . En réponse au journal [HS] Un écart de 28 %. Enfin non, 18%. Enfin en comparant des choux et des carottes. Évalué à 10.
Il est pas très idéal ton système. Dans un système idéal, je dirais que personne ne doit travailler.
[^] # Re: Je suis curieux de voir ce qu'en pense les dev de KUbuntu
Posté par Gof (site web personnel) . En réponse à la dépêche Mir, un serveur d’affichage de trop ?. Évalué à 10.
Pour GTK je ne sais pas, mais pour Qt c'est très facile de porter ou maintenir pour un système d'affichage différent.
Grâce à QPA (Qt Platform Abstraction)
Pour rappel, QPA fût introduit dans Qt 4.8, c'est le successeur de Qt pour Embedded Linux.
Qt pour embedded Linux avait son propre système d'affichage par dessus le frame buffer: QWS. Ce dernier est assez simple (on parle d'applications embarquées avec une seule fenêtre plein écran). Mais les utilisateur demandent toujours plus de fonctions et sur des platformes matériel de plus en plus variées. QPA est né de se besoin de personnaliser le système d'affichage pour différent matériels.
Il s'agit d'un système de plugin qui gère le serveur d'affichage (et d'input).
Avec Qt 5.0 QPA est devenu le système par défaut même sur Mac et Windows car ça simplifie beaucoup le code de Qt. Sous linux, il n'est donc pas nécessaire de recompiler Qt ou des applications Qt pour les faire tourner sous X11 (XCB ou XLib¹ au choix), Wayland, le frame buffer, ou pas d'affichage du tout. Il suffit de passer un argument dans la ligne de commande.
Si ils sont capable de faire un serveur d'affichage, faire un plugin pour Qt devrait être assez facile.
¹ Le plugin XLib n'est plus maintenu
[^] # Re: Signaux / slot
Posté par Gof (site web personnel) . En réponse à la dépêche Projet Qt5 : lecteur de musique. Évalué à 6.
Sur ce point nous sommes d'accord.
Ce avec quoi je ne suis pas d'accord c'est de dénigrer Qt à cause de moc juste pour le principe qu'avoir un générateur de code c'est « pas propre » alors qu'en réalité ça ne pose pas vraiment de problèmes.
[^] # Re: Signaux / slot
Posté par Gof (site web personnel) . En réponse à la dépêche Projet Qt5 : lecteur de musique. Évalué à 4.
Qu'est-ce que les macro de Qt ont de moins standard que les macro de, disons, boost ?
C'est vrai. C'est un petit inconvénient du système actuel. Mais apparemment, pas tellement de développeurs ont besoin de ça.
(Dans Qt5 tu peux connecté à un slot parametré par un template.)
Non. Tu ne met pas la macro Q_OBJECT et tu n'as pas besoin de code généré.
Et tu peux donc avoir des QObject avec template (exemple: QFutureWatcher)
[^] # Re: Signaux / slot
Posté par Gof (site web personnel) . En réponse à la dépêche Projet Qt5 : lecteur de musique. Évalué à 7.
J'ai bien vu la doc, mais les réponses à mes questions n'y est pas. Tout simplement parce que la réponse est en fait « Boost sait pas faire »
Comment fais tu l'introspection sans te farcir plein de boiler plate et de répétitions propices aux erreurs ?
Biensûr que tout est possible avec des macros et des templates, mais est-ce que on arrive à du code aussi clair que celui de Qt ?
Un autre aventage des signaux et propriétés de Qt: on peux en rajouter dans les objects sans casser la compatibilité binaire.
Quand à savoir si moc vaut le coup ? Quel est le coût ? Quel est le problème avec moc ? Il s'intrègre bien dans lessystèmes de build. Le code qu'il génère est relativement simple et ne pose pas de problème avec les outils de debug ou autre.
Pour rappel, le moc génère un fichier .cpp additionel qui est compilé avec le code. Il ne modifie pas le fichier original (contrairement à ce qui est parfois pensé). Le fichier .h est un fichier C++ standard, annotés à l'aide de macro pour le moc. Cela ne pause aucun problème avec les IDE ou autre outils qui parse le C++ standard.
[^] # Re: Qt5
Posté par Gof (site web personnel) . En réponse à la dépêche Projet Qt5 : lecteur de musique. Évalué à 4.
Quelque chose du genre.
[^] # Re: Qt5
Posté par Gof (site web personnel) . En réponse à la dépêche Projet Qt5 : lecteur de musique. Évalué à 6.
En quoi est ce que les interfaces .ui sont lourdes ?
Tu donne un lien vers le xml, mais il n'est pas sensé être lu ou édité par un humain. Il faut utiliser Qt designer, qui est quand même vachement pratique.
Et puis il n'y a pas tellement de boiler plate dans la gestion des signaux. Bon, c'est vrai qu'il aurais pu faire ça dans une boucle plutôt de se répéter pour chaque action.
[^] # Re: Signaux / slot
Posté par Gof (site web personnel) . En réponse à la dépêche Projet Qt5 : lecteur de musique. Évalué à 7.
Comment est-ce que boost fait une connection inter-thread ? Avec quelle boucle d'événements il s'intègre ?
Dans Qt, chaque QObject « vit » dans un thread (QObject::thread()) et si le thread est différent, un événement Qt est posté dans la boucle d'événement du thread en question. (Et la boucle d'événement Qt peux facilement être intégrée dans les boucles d'événement d'autres bobliothèques)
Comment est-ce que boost fait la connection autmatique avec les noms qui vont biens ? Comment font ils sans l'introspection fournie par moc ?
Ce que Qt fait est que le moc génère du code C++ qui contiens le nom (sous forme de char*) des slots et signaux, et ainsi faire une connection automatique (avec QMetaObject::connectSlotsByName)
Les signaux de boost peuvent en effet faire beaucoup de chose, mais Qt rends ça plus facile.
De plus, grâce à l'introspection fournie par moc, il est facile de faire des bindings avec des languages de scripts comme javascript et QML.
[^] # Re: Concernant les commentaires (headers)
Posté par Gof (site web personnel) . En réponse à la dépêche Projet Qt5 : lecteur de musique. Évalué à 8.
Mettre la doc dans le .h a l'avantage que les .h sont installé et pas les .cpp.
Et que l'IDE a plus facile à trouver les .h que les .cpp pour pouvoir afficher la doc dans un tooltip par exemple (ou afficher la doc quand on navigue vers la déclaration du symbole)
[^] # Autres typos.
Posté par Gof (site web personnel) . En réponse à la dépêche Projet Qt5 : lecteur de musique. Évalué à 6. Dernière modification le 28 février 2013 à 14:54.
Dans le code:
Aussi, le l'URL "plus d'info" est un lien vers la documentation de Qt3. Mettre le lien vers la doc de Qt5 et peut être mieux. [http://qt-project.org/doc/qt-5.0/qtcore/signalsandslots.html] Jeu: trouver les différences :-)
[^] # Re: concrete
Posté par Gof (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 10.
Quand tu va apprendre à lire à tes enfant, quel bouquin vas tu leur donner ?
A)
B)
Est-ce tellement plus ludique d'apprendre à lire avec des "vrai" livre?
# Cuisine:
Posté par Gof (site web personnel) . En réponse au journal Variations sur un thème culinaire. Évalué à 5.
Pourtant il y en a eu pas mal.
Quelque exemples:
https://linuxfr.org/users/artagorn/journaux/mettre-de-lhuile-dans-leau-des-pâtes
suivit de https://linuxfr.org/users/seeschlos/journaux/la-nourriture-des-dlfpiens
puis, quelque années plus tard https://linuxfr.org/users/yellowiscool/journaux/pates-a-l-huile-d-olive-ou-au-beurre
Il y a aussi pas mal de recettes
https://linuxfr.org/users/linuce/journaux/ma-recette-favorite-correctif
https://linuxfr.org/users/lorill/journaux/une-recette-de-gaufres
https://linuxfr.org/users/lolz/journaux/recette-dété-la-glamouille-aux-piroles
https://linuxfr.org/users/jmk/journaux/une-recette-facile-et-originale-pour-les-geeks
Et j'en passe.
# Un autre témoignage.
Posté par Gof (site web personnel) . En réponse au journal Témoignage d'une survivante d'un camps de travail Nord-Coréen. Évalué à 3.
Commentaire bookmark:
http://www.utsalumni.org/news/how-one-man-escaped-from-a-north-korean-prison-camp-3549/
http://www.northkoreanrefugees.com/2007-09-atbirth.htm
# Javelin \o/
Posté par Gof (site web personnel) . En réponse au journal Écrire une application web de nos jours. Évalué à 4.
Perso moi je viens de découvrir JavelinJS.
http://www.javelinjs.com/
[^] # Re: Bon
Posté par Gof (site web personnel) . En réponse au journal L'angoisse du programmeur. Évalué à 2.
Berk subversion :-s
Git c'est bien mieux. :-)
(Ceci n'est qu'une opinion personnelle. Si tu aime bien SVN, ne te sens pas obligé de changer à cause de mon commentaire)
[^] # Re: Diversité
Posté par Gof (site web personnel) . En réponse à la dépêche Opera Ice, nouveau brouteur à l'interface innovante, avec du Webkit dedans. Évalué à 1.
Je crois que tu as une conception erroné du « standard SSL »
Déjà on dis TLS, parce que SSL c'est dépassé.
Ensuite, il existe de nombreux bugs et incompatibilité dans les différentes implémentations qui oblige a faire pas mal de hack pour blacklister certaines implémentations, ou se limiter à une version inférieure.
[^] # Re: Analyse de glazou
Posté par Gof (site web personnel) . En réponse au journal Opera passe à Webkit. Évalué à 2.
[^] # Re: Analyse de glazou
Posté par Gof (site web personnel) . En réponse au journal Opera passe à Webkit. Évalué à 1.
Obliger qui ? Et comment ?
Personne n'est obligé.