Qt essaye de fournir une API facile d'utilisation, cohérente, multi-platformes, intuitive.
Alors que la STL est plus bas niveau.
Hum... cette phrase sonne très « Qt, c'est le plus beau et le plus fort et pis c'est tout » !
Dire que la STL n'est ni intuitive, ni facile d'utilisation, c'est très subjectif... Personnellement, je ne vois pas ce qu'elle a de contre-intuitive ou de difficile d'accès.
La STL pas cohérente ? Tu peux développer ?
La STL pas multi-plateforme... euh faut peut-être pas déconner, là !
Par example, les conteneurs de Qt sont "implictly shared" ce qui permet de pouvoir passer des listes ou des chaîne de caractère d'une classe à l'autre de manière performante, très facilement et intuitivement.
Un peu comme un vector de shared_ptr, c'est ça ?
Si oui, quel avantage sur ce dernier ?
Les conteneur STL ne le sont pas car cela veux dire que le la copie à lieu a des moment non déterministique, ce qui est une horreur pour la programmation temps réel.
En quoi la copie des conteneurs de la STL n'est pas déterministe ?
La STL fait un usage important des templates, ce qui la rends plus difficile d'utilisation pour les novice. Un programmeur Qt peut s'en tirer sans connaître cette partie compliquée du C++.
Ben, c'est du C++, quoi...
Se passer des templates, je trouve ça idiot. Franchement.
Mais bon, admettons que ce soit trop compliqué... Si un template est peut-être compliqué à coder, je ne vois pas en quoi il l'est à l'utilisation.
On crée un std::vector, on met des ints dedans... bon... c'est pas bien sorcier, si ?
Exemple, les conteneur STL permettent d'avoir un "allocateur" personalisé. Mais qui a vraiment besoin de ça ? Et ce n'est pas transparent pour l'utilisateur si on ne les utilise pas (les messages d'erreurs sont imbitables, ça apparaît dans l'auto-completion, impossible de forward-déclarer certaine classes, ...)
Je n'ai jamais codé d'allocateur, mais je n'ai jamais souffert du fait qu'il soit possible d'en utiliser un.
Les messages d'erreur des templates sont parfois à rallonge, ça je te l'accorde. Mais c'est plus un problème inhérent au couple langage/compilateur. De plus, il existe un outil nommé STLFilt permettant de fournir des messages d'erreur plus clairs que ceux des compilateurs.
Que ça apparaisse dans l'auto-complétion, je vois pas bien ce que ça a de dramatique.
Quelle classe souhaites-tu forward-déclarer ? Et pourquoi ? De toute façon il est possible d'écrire des forward declarations pour n'importe quelle classe ou template de classe.
[^] # Re: Qt mais pas complètement ?
Posté par monsieurmoche . En réponse au journal Sortie de exxEditor - version 0.9. Évalué à 1.
Alors que la STL est plus bas niveau.
Hum... cette phrase sonne très « Qt, c'est le plus beau et le plus fort et pis c'est tout » !
Dire que la STL n'est ni intuitive, ni facile d'utilisation, c'est très subjectif... Personnellement, je ne vois pas ce qu'elle a de contre-intuitive ou de difficile d'accès.
La STL pas cohérente ? Tu peux développer ?
La STL pas multi-plateforme... euh faut peut-être pas déconner, là !
Par example, les conteneurs de Qt sont "implictly shared" ce qui permet de pouvoir passer des listes ou des chaîne de caractère d'une classe à l'autre de manière performante, très facilement et intuitivement.
Un peu comme un vector de shared_ptr, c'est ça ?
Si oui, quel avantage sur ce dernier ?
Les conteneur STL ne le sont pas car cela veux dire que le la copie à lieu a des moment non déterministique, ce qui est une horreur pour la programmation temps réel.
En quoi la copie des conteneurs de la STL n'est pas déterministe ?
La STL fait un usage important des templates, ce qui la rends plus difficile d'utilisation pour les novice. Un programmeur Qt peut s'en tirer sans connaître cette partie compliquée du C++.
Ben, c'est du C++, quoi...
Se passer des templates, je trouve ça idiot. Franchement.
Mais bon, admettons que ce soit trop compliqué... Si un template est peut-être compliqué à coder, je ne vois pas en quoi il l'est à l'utilisation.
On crée un std::vector, on met des ints dedans... bon... c'est pas bien sorcier, si ?
Exemple, les conteneur STL permettent d'avoir un "allocateur" personalisé. Mais qui a vraiment besoin de ça ? Et ce n'est pas transparent pour l'utilisateur si on ne les utilise pas (les messages d'erreurs sont imbitables, ça apparaît dans l'auto-completion, impossible de forward-déclarer certaine classes, ...)
Je n'ai jamais codé d'allocateur, mais je n'ai jamais souffert du fait qu'il soit possible d'en utiliser un.
Les messages d'erreur des templates sont parfois à rallonge, ça je te l'accorde. Mais c'est plus un problème inhérent au couple langage/compilateur. De plus, il existe un outil nommé STLFilt permettant de fournir des messages d'erreur plus clairs que ceux des compilateurs.
Que ça apparaisse dans l'auto-complétion, je vois pas bien ce que ça a de dramatique.
Quelle classe souhaites-tu forward-déclarer ? Et pourquoi ? De toute façon il est possible d'écrire des forward declarations pour n'importe quelle classe ou template de classe.