tags:

views:

607

answers:

11

STL/Boost cover all the low level stuff.

But what about the higer level concepts?

Windows: We have multiple windowing libs

  • KDE(Qt)
  • Gnome
  • Motif(C but written in OO style)
  • MS Windows
  • etc

But is anybody working on a unified standard for windowing? Somthing that wrapped all the above would be acceptable. (even if it only accessed the common stuff it would be a starting point).

Networking:
There are a couple out ther (including the Boost low level stuff).
But is there anybody working on a Service based network layer?

All the other stuff that Java/C# have in their standard libraries.
The stuff that makes it simpler for a beginner to jump in and say Wow done and it works everywhere (nearly).

Anyway. Here hoping there are some cool projecs out there.

Edit

Maybe there is not one. But if there are a couple that could be bundled together as a starting point (and potentially modified over time (where is that depricated keyword)) into a nice consolidated whole.

Note: Windows is just a small part of what I am looking for. The Java/C# languages cosolodate a lot more under the hood than just the GUI. What would be a good set of libraries to get all the functionality in one place.

A: 

For cross platform windowing, there's wxWidgets. (formerly wxWindows).

Jeff Paquette
+13  A: 

There are too big differences between platforms to get a definitive C++ standard for GUI programming. I think Qt is about as close as you will get in the forseeable future. wxWidgets is another popular choise, but as I understand it, they are using less modern c++ features.

As for networking, I think you are being kind of vague. If you mean web services over HTTP, I would have a look at Pion.

gnud
Qt has some networking functions as well.
static_rtti
Yes - several other projects also have nice networking components. I just don't know what the asker is looking for.
gnud
With Qxt on top of Qt, you get decent RPC and HTTP/Web support.
Marcus Lindblom
Yes I was being delibrately vague in the hopes of finding libraries that I had not heard about.
Martin York
+4  A: 

Qt might be the only framework complete enough to be what you suggest.

Klaim
+2  A: 

I don't think it is achievable to make a really comprehensive portable GUI library. Operating systems are just too different. Can you imagine a GUI library that would cover everything from iPhone to Windows 7 and wouldn't feel wierd on any of them?

Nemanja Trifunovic
Sorry, could not resist: Java GUIs feel weird on all platforms, but that did not stop them :)
Éric Malenfant
Which is one reason the Java is now a mainly server side language (before anybody jumps me: not exclusively but that's its main nich now).
Martin York
+2  A: 

A Boost gui library comes up occasionally.
The general opinion seems to be that the problems is too wide (are you targeting cellphones, FPS games or CAD workstations) and that it is too much work - Qt/wxWidgets has taken 10years.

see http://lists.boost.org/Archives/boost/2005/09/94453.php for a discussion.

It would have been nice because GUI usually means cross platform and threads, so all the GUI toolkits have invented their own cross platform,filesystem and thread classes. On the other hand if a standard GUI had been introduced in C++ it would probably look like TK !

Martin Beckett
+10  A: 

Well it is almost 2010 and C++ almost has threads.

I'll probably get slammed for this but C++ moves too slow - to its own detriment and its user base. I readily acknowledge the difficulty of the technical and political issues involved but that's still the dirty reality of it. The language can't build in higher level concepts when it takes 5-10 years to agree on and implement the building blocks.

The reasons for this have endlessly debated but the sad truth is that C++ has relegated itself to a niche language. I like C++ but I look at the progress C#, Java, and even Python and Ruby have made over the last 5 years and I increasingly question whether C++ is worth the effort.

Duck
Get slammed? Why? You’re unfortunately absolutely right.
Konrad Rudolph
Why would including threads in the standard be a prerequisite to a portable windowing abstraction?
Éric Malenfant
@Eric: I think he was just commenting on the processes as a whole. And too a degree I agree. @Duck: But as a result C++ is technically a much nicer language than some some out there. But the slow pace of change has left us wallowing a bit.
Martin York
@Eric It was just an example of how long it takes to get anything standardized in C++.
Duck
I can agree on some things but for threading I'll drop a note that hopefully makes sense. Remember though that all other environments are implemented with C or C++ and then some real ugly glueing..
rama-jka toti
I'd consider myself lucky that it hasn't, otherwise it would have messed up with memory models as much as Java, and to lesser extent C#. These are known artifacts in those environments. Second, rest assured that the people doing the CPUs are telling C++ compiler guys what to do and how.In that sense, both Java and C# 'rushed in'.You could have used posix or nt or boost wrapped one for years and most compilers gave you freebies that are executing far better than in VMs and their pools on top of OS bits.It is niche though,however, that's not its focus, it's a tool for any kind of idea,ie.Rubies
rama-jka toti
The speed of standard C++ development has nothing to do with external frameworks, Boost is not part of the standards process. This is a ridiculous argument.
Andy Dent
I think Duck definitely has a point here, but I think I'd disagree with C++ being a niche language, but maybe that's me being a little defensive or something. It's not one of the shiny, new sparkly tools on the block, but I don't think it's quite in the niche category either.
Michael Burr
@Andy: I don't see what you are commenting on?
Martin York
@Michael: I would afree with that. C++ is everywhere I look. Its not the old grandad (C) but its not the nifty new language (C#). Only time will tell how the language holds up against developer needs and hardware paradiagm shifts (what happened to Dataflow processors).
Martin York
A "niche" language wouldn't have such a big user base. You could tell it's more suited for some specific kind of software developpement, yes, but "niche" is kind of wrong. It's like being a game developper and saying that Java is a niche programming language because it's not really used or only in phones...for games anyway. In reallity, like some other language we all heard about, it's almost everywhere in specific kind of developpement.
Klaim
+4  A: 

I guess there's some kind of keyword lookup driving the advertising here because I'm seeing a REALbasic ad, which is what I generally use for cross-platform GUI's nowadays.

I have spent a lot of time over the last 15 years working in C++ GUI's including retailing my own portability layer for CodeWarrior PowerPlant and working on the two Macintosh-based GUI code generators, including adding Windows generation to AppMaker. I've worked with wxWidgets, mainly wxPython. So, my opinion on difficulties in cross-platform GUI is fairly well-qualified :-)

Cross-platform GUI frameworks are hard to the point of nearly impossible without significant compromise - the issues come down to subtle matters of behavior which generally bother users at a level where some of them can't quantify but know that the application doesn't feel right. This is a lot harder to fix than just rendering native controls.

I started using REALbasic because their framework does a better job of getting the feel right than anything else I'd tried (I didn't get into Qt because of the expensive commercial license).

The reason it has taken so long for things to evolve is nothing to do with the C++ world moving slowly, it's just an intractable problem. The very best cross-platform Java apps do some stuff conditionally for OS/X and it is still screamingly obvious to an experienced user that they are not a native Mac app, although some are very usable and come pretty close to looking native - Oxygen XML editor and DeltaWalker are two of my favourites.

Andy Dent
+1  A: 

ACE is great for concurrent communication and networking.

Yep. I like ACE. Though internally some of the code is a bit doddgey (IMO)
Martin York
+8  A: 

The Poco C++ project aims to deliver all that you ask, except for Windowing:

The POCO C++ Libraries aim to be for network-centric, cross-platform C++ software development what Apple's Cocoa is for Mac development, or Ruby on Rails is for Web development — a powerful, yet easy to use platform to build your applications upon.

StackedCrooked
A: 

Only everybody and his brother, but hardly any of them actually get anywhere.

Russell Newquist
+2  A: 

What's so great about standardization ? Sure, if novice coders want to download one SDK to build portable apps, let them download Qt (or something similar) and forever remain within it's fine walled environment. But it'd be a tragedy if the C++ world revolved around that one library and boost and POCO and wxWidgets and clutter and blitz++ and eigen and and 101 other wonderful things (yes, gtkmm and ACE even) were stifled at birth because the gatekeepers of The Standard Library didn't see fit to admit them.

Diversity is good I think (although when dealing with it, it helps to have a good package manager; I've spent hours setting up build dependencies on Windows which just needed a few seconds of apt-getting on Debian).

timday
Diversity is good I admit, but would not you be grateful to have a high-level, easy-to-use, high-performance library for GUI or for Threading or for Web Services ? That's what are great with defacto standards, they become such because users find them useful, not because they are given to them by a magnanimous committee.
Matthieu M.
Personally I'm glad all of the boost::thread and Intel TBB and Qt thread libraries exist (and OpenMP for C++ too). All of them have their own strengths and areas of applicability. If one was clearly superior to the others, it probably would emerge as a defacto standard. But the fact a defacto standard hasn't emerged isn't necessarily a bad thing, or mean that there's a desperate need to subsume all of them into some new all-encompasing API which tries to be all things to all users so that a de-facto standard can emerge.
timday