Before starting an application, if we do not target a particular system, we should choose a graphical user interface, and a wide choice is offered to the programmer.
But above all, for a lambda programmer, unrelated to a particular environment, a fact must be taken into consideration: the future of programming is not Windows (or any other system), it is in Web applications running on a server, so should we use a framework able to run on the most common servers, and so on Apache.
We can also talk about mobiles, but in this case we are facing a considerable fragmentation of environments, as discussed in the article Programming a mobile phone, which we wan overcome only with HTML 5.
WIMP
Classical user interface on the desktop operate on the WIMP principle. It is the acronym of Window, Icon, Menu, Pointing device. The principle was developed from 1973 by Xerox and popularized by Apple with the Macintosh and then by Microsoft from Windows 95.
This model is challenged by touch screens.
List of toolkits and platforms
Toolkits contain predefined components used directly to create the interface of an application.
Basic APIs
There APIs are interfaces to the systems, providing primitives used to create a library of components.
Conclusion
We see that when a framework offers the possibility of programming for mobile phones, one enters the circle of specializations, each platform running a system for a single brand.
Otherwise, when programming for the desktop but not specifically for Windows, Qt seems to be the most comprehensive framework while being portable. The license is LGPL.
Remain still the possibility to write his own components with OpenGL or WebKit if you need a very limited interface.
Resources
Net Beans. To make Java, PHP, C + +. Multi-platform.
Eclipse. Multi-plateforms and languages, written in Java.