2009-11-12 4 views
18

STL/Boost copre tutto il materiale di basso livello.Qualcuno sta lavorando su una libreria standard di alto livello per C++

Ma per quanto riguarda i concetti di livello superiore?

di Windows: Abbiamo più librerie a finestre

  • KDE (QT)
  • Gnome
  • Motif (C ma scritte in stile OO)
  • MS Windows
  • ecc

Ma qualcuno sta lavorando su uno standard unificato per le finestre? Qualcosa che avvolgesse tutto quanto sopra sarebbe accettabile. (anche se accedesse solo alle cose comuni sarebbe un punto di partenza).

Rete:
Ci sono un paio là fuori (incluso il materiale di basso livello Boost).
Ma c'è qualcuno che lavora su un livello di rete basato sul servizio?

Tutte le altre cose che Java/C# hanno nelle loro librerie standard.
Il materiale che semplifica l'ingresso di un principiante e dice Wow fatto e funziona ovunque (quasi).

In ogni caso. Qui sperano ci siano progetti interessanti là fuori.

Modifica

Forse non ce n'è uno. Ma se ci sono un paio che potrebbe essere raggruppato insieme come punto di partenza (e potenzialmente modificato nel tempo (dove è la parola chiave deprecata)) in un bel insieme consolidato.

Nota: Windows è solo una piccola parte di ciò che sto cercando. I linguaggi Java/C# si consolidano molto di più rispetto alla sola GUI. Quale sarebbe un buon set di librerie per ottenere tutte le funzionalità in un unico posto.

+2

+1 preferito per riferimento futuro anche;) – AraK

+0

Come qualcosa diventerebbe uno "standard unificato"? Intendi renderlo parte dello standard ISO o cosa? (tieni presente che Boost non è "standard" in questo senso, sebbene alcuni di essi siano entrati nella libreria standard del C++). –

+3

@Pavel: come boost. Rendi tutto così utile che chiunque lo usa e diventa praticamente uno standard defacto. Per me scrivere codice senza boost è un vero dolore (anche se è bello che anche alcuni lo abbiano trasformato in std :: tr1). Ma praticamente mi aspetto che ogni sviluppatore C++ abbia installato boost. –

risposta

9

Il progetto Poco C++ mira a fornire tutto ciò che si chiede, ad eccezione di Windowing:

I POCO C++ Libraries mirano ad essere per network-centric, cross-platform C++ di sviluppo software quello Cocoa di Apple è per lo sviluppo Mac, o Ruby su Rails è per lo sviluppo Web - una piattaforma potente, ma facile da usare per costruire le applicazioni su.

0

Per finestre a più piattaforme, c'è wxWidgets. (precedentemente wxWindows).

14

Ci sono troppe differenze tra le piattaforme per ottenere uno standard C++ definitivo per la programmazione GUI. Penso che lo Qt sia il più vicino possibile al futuro prevedibile. wxWidgets è un'altra scelta popolare, ma, a quanto ho capito, stanno utilizzando funzionalità C++ meno moderne.

Per quanto riguarda il networking, penso che tu sia un po 'vago. Se intendi servizi web su HTTP, darei un'occhiata a .

+4

Qt ha anche alcune funzioni di rete. –

+0

Sì, molti altri progetti hanno anche dei bei componenti di rete. Solo non so cosa sta cercando il richiedente. – gnud

+0

Con Qxt su Qt, si ottiene un supporto RPC e HTTP/Web decente. – Macke

5

Qt potrebbe essere l'unica struttura completa sufficiente per essere ciò che suggerisci.

3

Non credo sia possibile creare una libreria GUI portatile davvero completa. I sistemi operativi sono troppo diversi. Riesci a immaginare una libreria GUI che copra tutto da iPhone a Windows 7 e non si sentirebbe strano su nessuno di loro?

+5

Scusa, non ho potuto resistere: le GUI Java si sentivano strane su tutte le piattaforme, ma questo non le ha fermate :) –

+1

Quale è una delle ragioni per cui Java ora è principalmente un linguaggio lato server (prima che qualcuno mi salti: non esclusivamente ma è il suo principale adesso). –

3

Una libreria di GUI Boost viene visualizzata occasionalmente.
L'opinione generale sembra essere che i problemi siano troppo ampi (stai prendendo di mira cellulari, giochi FPS o workstation CAD) e che è troppo lavoro - Qt/wxWidgets ha impiegato 10 anni.

vedere http://lists.boost.org/Archives/boost/2005/09/94453.php per una discussione.

Sarebbe stato bello perché la GUI di solito significa multipiattaforma e thread, quindi tutti i toolkit della GUI hanno inventato le proprie classi cross-platform, file system e thread. D'altra parte, se una GUI standard fosse stata introdotta in C++, probabilmente sarebbe TK!

11

Bene è quasi 2010 e C++ quasi ha thread.

Probabilmente mi verrebbe sbattuto per questo, ma il C++ si muove troppo lentamente - a proprio danno e la sua base di utenti. Riconosco prontamente la difficoltà delle questioni tecniche e politiche coinvolte, ma questa è ancora la sporca realtà di ciò. Il linguaggio non può costruire concetti di livello superiore quando ci vogliono 5-10 anni per concordare e implementare i blocchi costitutivi.

Le ragioni di ciò hanno dibattuto incessantemente ma la triste verità è che il C++ si è relegato in un linguaggio di nicchia. Mi piace il C++ ma guardo al progresso C#, Java, e anche Python e Ruby hanno fatto negli ultimi 5 anni e mi chiedo sempre più se il C++ valga la pena.

+3

Sbattono? Perché? Sfortunatamente hai assolutamente ragione. –

+0

Perché includere i thread nello standard è un prerequisito per un'astrazione di finestre portatile? –

+1

@Eric: Penso che stava solo commentando i processi nel loro complesso. E anche un grado sono d'[email protected]: Ma come risultato C++ è tecnicamente un linguaggio molto più carino di alcuni altri là fuori. Ma la lentezza del cambiamento ci ha lasciato un po 'rallentare. –

5

Suppongo che ci sia un tipo di ricerca di parole chiave che guida la pubblicità qui perché sto vedendo un annuncio REALbasic, che è quello che generalmente uso per la GUI multipiattaforma al giorno d'oggi.

ho speso un sacco di tempo nel corso degli ultimi 15 anni di lavoro in C++ GUI tra cui vendita al dettaglio il mio portability layer per CodeWarrior PowerPlant e lavorare su due generatori di codice GUI basati su Macintosh, tra cui l'aggiunta di generazione di Windows per AppMaker. Ho lavorato con wxWidgets, principalmente wxPython. Quindi, la mia opinione sulle difficoltà nella GUI multipiattaforma è abbastanza qualificata :-)

I framework di interfaccia grafica multipiattaforma sono difficili da raggiungere quasi senza un compromesso significativo - i problemi si riducono a questioni sottili del comportamento di che generalmente infastidiscono gli utenti a un livello in cui alcuni di loro non sono in grado di quantificare, ma sanno che l'applicazione non sembra giusta. Questo è molto più difficile da correggere rispetto al semplice rendering dei controlli nativi.

Ho iniziato a utilizzare REALbasic perché il loro framework fa un lavoro migliore di ottenere la sensazione giusta di qualsiasi altra cosa che ho provato (non sono entrato in Qt a causa della costosa licenza commerciale).

Il motivo per cui ci sono voluti così tanto tempo per l'evoluzione delle cose non ha nulla a che fare con il mondo C++ che si muove lentamente, è solo un problema intrattabile. Le migliori app Java multipiattaforma fanno alcune cose condizionatamente per OS/X ed è ancora sconcertante per un utente esperto che non sono un'app nativa per Mac, anche se alcune sono molto usabili e sono molto simili all'aspetto nativo - Oxygen XML editor e DeltaWalker sono due dei miei preferiti.

1

ACE è ideale per la comunicazione e il collegamento in rete.

+0

Sì. Mi piace ACE. Sebbene internamente parte del codice sia un po 'doddgey (IMO) –

0

Solo tutti e suo fratello, ma quasi nessuno di loro arriva da nessuna parte.

3

Cosa c'è di così straordinario nella standardizzazione? Certo, se i principianti programmatori vogliono scaricare un SDK per costruire app portatili, lascia che scarichino Qt (o qualcosa di simile) e rimangano per sempre all'interno del suo fine muro. Ma sarebbe una tragedia se il mondo C++ ruotasse attorno a quella libreria e boost e POCO e wxWidgets e clutter e blitz ++ e eigen e 101 altre cose meravigliose (sì, gtkmm e ACE anche) furono soffocati alla nascita perché i guardiani di La libreria standard non ha ritenuto opportuno ammetterli.

La diversità è buono penso (anche se quando si tratta di esso, aiuta ad avere un buon gestore di pacchetti; ho passato ore la creazione di dipendenze di compilazione su Windows, che solo bisogno di un paio di secondi di apt-ottenere su Debian).

+1

La diversità è buona lo ammetto, ma non sarebbe grato avere una libreria di alto livello, facile da usare e ad alte prestazioni per GUI o per Threading o per Servizi web ? Questo è ciò che è grande con gli standard defacto, diventano tali perché gli utenti li trovano utili, non perché sono dati loro da un comitato magnanimo. –

+0

Personalmente sono contento che tutte le librerie di boost :: thread e Intel TBB e Qt esistano (e anche OpenMP per C++). Tutti loro hanno i loro punti di forza e le aree di applicabilità. Se uno era chiaramente superiore agli altri, probabilmente emergerebbe come uno standard de facto. Ma il fatto che uno standard de facto non sia emerso non è necessariamente una cosa negativa, o significa che c'è un disperato bisogno di ricondurli tutti in una nuova API omnicomprensiva che cerca di essere tutto per tutti gli utenti in modo che un -facto standard può emergere. – timday

Problemi correlati