2009-11-12 3 views
18

STL/Boost couvre tous les éléments de bas niveau.Est-ce que quelqu'un travaille sur une bibliothèque standard de haut niveau pour C++?

Mais qu'en est-il des concepts de plus haut niveau?

de Windows: Nous avons plusieurs libs fenêtrage

  • KDE (Qt)
  • Gnome
  • Motif (C mais écrit dans un style OO)
  • MS Windows
  • etc

Mais est-ce que quelqu'un travaille sur une norme unifiée pour le fenêtrage? Quelque chose qui a enveloppé tout ce qui précède serait acceptable. (même si seulement il a accédé aux choses communes ce serait un point de départ).

Mise en réseau:
Il existe un couple là-bas (y compris les trucs de niveau inférieur Boost).
Mais y a-t-il quelqu'un qui travaille sur une couche réseau basée sur le Service?

Toutes les autres choses que Java/C# ont dans leurs bibliothèques standard.
Le truc qui le rend plus simple pour un débutant de sauter et de dire Wow done et ça marche partout (presque).

Quoi qu'il en soit. En espérant qu'il y a des projets sympas là-bas.

Modifier

Peut-être il n'y a pas un. Mais s'il y a un couple qui pourrait être regroupé en tant que point de départ (et éventuellement modifié au fil du temps (où est ce mot-clé déprécié)) dans un ensemble consolidé agréable.

Remarque: Windows est juste une petite partie de ce que je cherche. Les langages Java/C# consolident beaucoup plus sous le capot que seulement l'interface graphique. Quel serait un bon ensemble de bibliothèques pour obtenir toutes les fonctionnalités en un seul endroit.

+2

+1 favorisé pour référence future aussi;) – AraK

+0

Comment un élément deviendrait-il un «standard unifié»? Voulez-vous dire faire partie de la norme ISO, ou quoi? (Gardez à l'esprit que Boost n'est pas "standard" dans ce sens, bien que certains de ses éléments aient fait leur chemin dans la bibliothèque C++ standard). –

+3

@Pavel: comme boost. Vous faites quelque chose de tellement utile que tout le monde l'utilise et devient pratiquement un standard de facto. Pour moi, l'écriture de code sans boost est une vraie douleur (bien que ce soit sympa que certains d'entre eux l'aient aussi fait dans std :: tr1). Mais je m'attends pratiquement à ce que chaque développeur C++ ait un boost installé. –

Répondre

9

Le projet Poco C++ vise à offrir tout ce que vous demandez, à l'exception de fenêtrage:

Poco bibliothèques C++ pour objectif d'être pour centrée sur le réseau, multi-plateforme C++ développement de logiciels que d'Apple Cocoa est pour le développement Mac, ou Ruby sur Rails est pour le développement Web - une puissante, mais facile à utiliser la plate-forme pour construire vos applications sur.

0

Pour le fenêtrage multiplateforme, il y a wxWidgets. (anciennement wxWindows).

14

Il existe de trop grandes différences entre les plates-formes pour obtenir une norme C++ définitive pour la programmation GUI. Je pense que Qt est à peu près aussi proche que vous obtiendrez dans l'avenir prévisible. wxWidgets est un autre choix populaire, mais si je comprends bien, ils utilisent des fonctionnalités C++ moins modernes. En ce qui concerne le réseautage, je pense que vous êtes un peu vague. Si vous voulez dire les services Web sur HTTP, je voudrais regarder Pion.

+4

Qt possède également des fonctions de mise en réseau. –

+0

Oui - plusieurs autres projets ont également de jolis composants réseau. Je ne sais pas ce que le demandeur cherche. – gnud

+0

Avec Qxt au-dessus de Qt, vous obtenez un support RPC et HTTP/Web décent. – Macke

5

Qt pourrait être le seul cadre assez complet pour être ce que vous suggérez.

3

Je ne pense pas que ce soit réalisable pour faire une bibliothèque GUI portable vraiment complète. Les systèmes d'exploitation sont simplement trop différents. Pouvez-vous imaginer une bibliothèque graphique qui couvrirait tout de l'iPhone à Windows 7 et ne se sentirait bizarre sur aucun d'entre eux?

+5

Désolé, n'a pas pu résister: Les interfaces graphiques Java sont bizarres sur toutes les plates-formes, mais cela ne les a pas arrêtées :) –

+1

Quelle est l'une des raisons pour lesquelles Java est maintenant un langage principalement serveur (avant que personne ne me saute dessus? à présent). –

3

Une bibliothèque Boost Booth apparaît occasionnellement.
L'opinion générale semble être que les problèmes sont trop larges (ciblez-vous les téléphones portables, les jeux FPS ou les postes de travail CAD) et que c'est trop de travail - Qt/wxWidgets a pris 10 ans.

voir http://lists.boost.org/Archives/boost/2005/09/94453.php pour une discussion. Cela aurait été bien parce que GUI signifie généralement multiplate-forme et threads, donc tous les toolkits de l'interface graphique ont inventé leurs propres classes de multiplateforme, de système de fichiers et de thread. D'un autre côté, si une interface graphique standard avait été introduite en C++, elle ressemblerait probablement à un TK!

11

Eh bien, il est presque 2010 et C++ presque a des discussions.

Je vais probablement être critiqué pour cela, mais C++ se déplace trop lentement - à son propre détriment et sa base d'utilisateurs. Je reconnais volontiers la difficulté des problèmes techniques et politiques, mais c'est toujours la sale réalité. Le langage ne peut pas intégrer des concepts de niveau supérieur lorsqu'il faut 5 à 10 ans pour se mettre d'accord sur les éléments constitutifs et les mettre en œuvre.

Les raisons en sont sans cesse débattues mais la triste vérité est que C++ s'est relégué à un langage de niche. J'aime le C++ mais je regarde la progression que C#, Java, et même Python et Ruby ont faite au cours des 5 dernières années et je me demande de plus en plus si C++ en vaut la peine.

+3

Vous êtes critiqué? Pourquoi? Vous avez malheureusement absolument raison. –

+0

Pourquoi inclure des threads dans la norme est une condition préalable à une abstraction de fenêtrage portable? –

+1

@Eric: Je pense qu'il ne faisait que commenter les processus dans leur ensemble. Et aussi un degré, je suis d'[email protected]: Mais en conséquence C++ est techniquement une langue beaucoup plus agréable que certains d'entre eux. Mais la lenteur du changement nous a laissé vautrer un peu. –

5

Je suppose qu'il y a une sorte de recherche de mot clé qui conduit la publicité ici parce que je vois une publicité REALbasic, qui est ce que j'utilise généralement pour les interfaces graphiques multi-plateforme de nos jours.

J'ai passé beaucoup de temps au cours des 15 dernières années de travail dans l'interface graphique C++ de y compris la vente au détail mon portability layer pour CodeWarrior PowerPlant et de travailler sur les deux générateurs de code de l'interface graphique Macintosh, y compris l'ajout génération Windows AppMaker. J'ai travaillé avec wxWidgets, principalement wxPython. Donc, mon opinion sur les difficultés dans l'interface graphique multi-plateforme est assez bien qualifiée :-)

Les frameworks GUI multiplateformes sont difficiles au point de presque impossible sans compromis significatif - les problèmes se résument à des questions subtiles de comportement qui dérange généralement les utilisateurs à un niveau où certains d'entre eux ne peuvent pas quantifier, mais savent que l'application ne se sent pas bien. C'est beaucoup plus difficile à réparer que de rendre les contrôles natifs.

J'ai commencé à utiliser REALbasic parce que leur framework fait un meilleur travail pour obtenir la sensation que tout ce que j'avais essayé (je ne suis pas entré dans Qt à cause de la licence commerciale coûteuse).

La raison pour laquelle il a fallu si longtemps pour que les choses évoluent n'a rien à voir avec le fait que le monde C++ bouge lentement, c'est juste un problème insoluble. Les meilleures applications Java multiplateformes font certaines choses sous condition pour OS/X et il est toujours évident pour un utilisateur expérimenté qu'ils ne sont pas une application Mac native, même si certains sont très utilisables et sont assez proches de l'aspect natif - Oxygen XML editorDeltaWalker sont deux de mes favoris.

1

ACE est idéal pour la communication simultanée et la mise en réseau.

+0

Oui. J'aime ACE. Bien qu'en interne une partie du code soit un peu doddgey (IMO) –

0

Seulement tout le monde et son frère, mais pratiquement aucun d'entre eux ne va nulle part.

3

Qu'y a-t-il de si bon à propos de la normalisation? Bien sûr, si les programmeurs novices veulent télécharger un SDK pour créer des applications portables, laissez-les télécharger Qt (ou quelque chose de similaire) et rester pour toujours dans son environnement aux murs fins. Mais ce serait une tragédie si le monde C++ tournait autour de cette bibliothèque et boostait et POCO et wxWidgets et fouillis et blitz ++ et eigen et 101 autres choses merveilleuses (oui, gtkmm et ACE même) étaient étouffés à la naissance parce que les gardiens de La bibliothèque standard n'a pas jugé bon de les admettre. Je pense que la diversité est bonne (bien que cela me permette d'avoir un bon gestionnaire de paquets, j'ai passé des heures à configurer des dépendances de compilation sous Windows qui nécessitaient quelques secondes d'apt-get sur Debian).

+1

La diversité est bonne je l'admets, mais ne seriez-vous pas reconnaissant d'avoir une bibliothèque de haut niveau, facile à utiliser, haute performance pour GUI ou pour Threading ou pour Services Web ? C'est ce qui est génial avec les standards de facto, ils deviennent tels parce que les utilisateurs les trouvent utiles, pas parce qu'ils leur sont donnés par un comité magnanime. –

+0

Personnellement, je suis content que toutes les bibliothèques de thread boost :: thread et Intel TBB et Qt existent (et OpenMP pour C++ aussi). Tous ont leurs propres forces et domaines d'application. Si l'un était nettement supérieur aux autres, il apparaîtrait probablement comme un standard de facto. Mais le fait qu'un standard de facto n'ait pas émergé n'est pas nécessairement une mauvaise chose, ou signifie qu'il y a un besoin désespéré de tous les intégrer dans une nouvelle API globale qui essaie d'être tout pour tous les utilisateurs afin qu'une -facto standard peut émerger. – timday

Questions connexes