Desktop Apps: C++ and wxWidgets: Language and Toolkit of the Year

Mtangoo

JF-Expert Member
Oct 25, 2012
6,167
5,602
We are heading the end of the year and its time for evaluation. I would like to share my experience as software developer what I see as the best of this year. I'm not sure how much I'm going to cover but let me jump start with this one. C++ is the best language of the Year and wxWidgets as the best toolkit of the Year.

For those who does not know it, C++ is programming language that was born out of C. It was given a once famous name, C with classes. It is not entirely accurate name as it differ with C in numerous ways, but one thing is obvious: C++ supports Object Oriented Programming. One can say wait a minute, with Gobject you can do that in C. But I'm talking not about third party but core.

C++ have a lot of useful features including STL library. For even a novice programmer, he knows how useful vectors, maps, and all STL components are useful. Also OOP helps your program be structured well and much more. So C++ is quiet powerful. If well designed, it beats Java in speed since there is no need for virtual machine. There are downside to developer like memory management, multiple inheritance issues and others but if done perfect enough (sorry for oxymoron word) you will avoid the caveats.

What about Python? Well Python was made to compliment C/C++ and not to compete with it so its out of question. This also puts to rest other languages like perl and ruby. Why? Because I can use Python+Cpp!

Well here are some Applications coded in C++.
All famous browsers are written in C++. The list includes Google Chromium – The opensource version that gets rebranded as Google Chrome with few modifications, Mozilla FireFox and Thunderbird – My Favorite browser and Mail client. They command great usage and are world class applications, Microsoft Internet Explorer – Every windows comes bundled with it which have made it very famous. Safari and Opera.

Microsoft Office Suite, Apache OpenOffice, Corel Office suite Are Developed in C++. Also All major Adobe flagship softwares are developed in C++ including Photoshop ,ImageReady ,Illustrator , Acrobat Reader/Distiller , InDesign, GoLive , Frame et al.

All major database RDBMS are coded in C++ including Oracle database , MySQL , IBM DB2 , Microsoft SQL Server , IBM Informix , SAP DB/MaxDB , MongoDB. Some debate that core of these databases are written in C and other components in C++. But it is hard to say and it is then subject to discussion.

Autodesk Maya (Maya 3D software) - Maya 3D software, now a days is widely used in computers, video games, television. It is a powerful, integrated 3D modelling, animation, visual effects, and rendering solution. Also another powerful 3D CAD, civil engineering and surveying software, 12D, is coded in C++.

That is not all. Some parts of famous Apple OSX are coded in C++ while almost all Microsoft products (including all office suites, and all operating sytems) are written in C++. The list goes on and on.

The wxWidgets Toolkit
Some might be asking: what on eart is this beast? From its manual, everything lays open. Here is how developers define it: wxWidgets is a C++ framework providing GUI (Graphical User Interface) and other facilities on more than one platform. Version 2 and higher currently support all desktop versions of MS Windows, Unix with GTK+ 1.x or 2.x, Unix with Motif, Unix with just X11, Unix with DirectFB, Mac OS X, OS/2.

wxWidgets was originally developed at the Artificial Intelligence Applications Institute, University of Edinburgh, for internal use, and was first made publicly available in 1992. Version 2 is a vastly improved version written and maintained by Julian Smart, Robert Roebling, Vadim Zeitlin, Vaclav Slavik and many others.
Now why is wxWidgets my toolkit of the years? Note that there are two more famous toolkits, that is GTK+ and QT. Apart from the fact that our soon to be released products are built on this toolkit, it is very powerful. wxWidgets renders native widgets, that is a software made with wxWidgets looks like a software made by native API. QT tries to emulate nativity in all platform but KDE while GTK+ is only native to Gnome.

Also the two competitors to wxWidgets do force you to learn something than C++. GTK+ is C toolkit with some mechanism to support OOP (via gobject). Also QT have it pseudo language that is somehow mixed with C++. Since I like to go with normal C++ I find wxWidgets my choice. That does not mean it have got not caveat.
With advent of version 2.9 (looking forward to 3.0) wxWidgets have addes amny whstles and bell that made it beaten by its “foes”. One of great additions is wxWebview an html rendering engine.

That being said, wxwidgets lacks some features like database classes. It is understandable since the whole project is voluntary. There is also Python version of wx called wxPython.

Some applications written in wxWidgets are Audacity, Filezilla, Google Drive, Ashampoo Burning Studio, CodeLite, Code::Blocks, wxFormBuilder, Jutoh (featured on CNN), Helpblocks, Older Versions of VLC (recently moved to QT), wxDevCpp, PoEdit, KICAD, Hosanna Studio, BOINC, SYSmark 2012, Game Develop, Audio Evolution, Ginkgo CADx, GIMIAS, WebsitePainter, Trident, VibeStudio Designer, BitWise IM, Kirix Strata, Symscape's Caedium, Kephra, Transcribe!, WaveIdea, Cn3D, Dataton WATCHOUT, FlameRobin, PG Admin III, StoryLines, Display Doctor, wxDesigner, wxForms, and many others

To me C++ and wxWidgets wins hands down as best desktop programming language though it drives also many web applications too!

Reference:
Top 10 best applications written in C/C++ - C and C++ Programming Resources
List of all famous software written in C++
Screenshots - wxWidgets
wxWidgets: Documentation

What are your opinions?
 
Hi, I give credit to python..WHY.
1.Easy to learn
2.Modern and Powerfull
3.High level programming language that's has a lot of libraries
4.Very popular, as soon many programs will be developing in python,
5.Proven being the best for Penetration testing,Cracking and hacking and now well used by advanced programmers

Sent from my BlackBerry 9900 using JamiiForums
 
For a lone developer the time to market lenders these development environments bloated and cumbersome to work with. I will volunteer 5th gen environments and platforms that are best suited to lone and small teams. Web dev environment and cloud space lenders themselves easier to use for most of the piping is encpsulated from the developer.

CTO, you have dates for release of your solutions?
 
i hate C++ its time consuming language. ni nzuri kama mnafanya project as a team lakini otherwise ni kuumizana vichwa tu.....
 
Lugha zangu ni mbili tu java na C++, sasa hivi nakula tutorials za Qt for C++ nataka nianze ku develop symbian apps
 
Hi, I give credit to python..WHY.
1.Easy to learn
2.Modern and Powerfull
3.High level programming language that's has a lot of libraries
4.Very popular, as soon many programs will be developing in python,
5.Proven being the best for Penetration testing,Cracking and hacking and now well used by advanced programmers

Sent from my BlackBerry 9900 using JamiiForums
You missed this one

What about Python? Well Python was made to compliment C/C++ and not to compete with it so its out of question. This also puts to rest other languages like perl and ruby. Why? Because I can use Python+Cpp!



Now take a look at link below and know these are complementaries not rivals.
Yes Python is good but it is interpreted language and we know the achille's heel is VM

1. Extending Python with C or C++ — Python v2.7.3 documentation
 
i hate C++ its time consuming language. ni nzuri kama mnafanya project as a team lakini otherwise ni kuumizana vichwa tu.....
C++ is not a time consumer. Yes, it have higher learning curve, but that is during learning. After that you brush!

You can make single or multiple Project with C++. With wxWidgets and RAD like wxFormbuilder, Dialogblocks, wxSmith or wxDesigner: you can whip a simple calculator in few minutes! That is how fast C++ is.

Actually my first language was VB before advent of VB.Net (remember VB6 with OCX and such?) I found it confusing and hard. Buying a compiler was not a choice and it just looked kiddish! I dumped and went for Python and wxPython, did some projects with Java (also JSP for Web) and just stayed with C++ for desktop and PHP/Yii for Web!
 
Lugha zangu ni mbili tu java na C++, sasa hivi nakula tutorials za Qt for C++ nataka nianze ku develop symbian apps
Good to have two alike spanners!
Kwangu mimi ni vitu vinavyofanya same task. Ni nzuri kama unataraji kufanya kazi ya mtu ambayo ameanza na kuiongeza (kati ya hizo) lakini ni upotevu wa muda kujifunza zote ili ufanye project zako.

Hata hivyo tuko boti moja, ila mimi nilijifunza Java kwa kuwa kuna Project ilikuwa lazima ifanyike kwa Java for some reason!
 
For a lone developer the time to market lenders these development environments bloated and cumbersome to work with.
For simple solution I tend to use Python and wxPython. A neat Solution. But with Project that are perfomance critical it becomes unavoidable to do them in C/C++. You have at that point two options: Extending Python (thanks to PF for Ctypes) or rewrite whole thing in C/C++!
Iff I have not misunderstood what you mean!

I will volunteer 5th gen environments and platforms that are best suited to lone and small teams. Web dev environment and cloud space lenders themselves easier to use for most of the piping is encpsulated from the developer.
The Problem with web app is the need of running a server and sometimes network. I would rather work with MySQL workbench than PHPMyAdmin. With former no need of Apache, nor PHP. with latter it is a must!

So web App comes handy when it is to be shared in environment like shared authentication mechanism and centralization. These two are easier in Web than in Desktop. Also no one can reverse engineer your code if you do your homework on security!

CTO, you have dates for release of your solutions?
I believe by the beginning of the next year (before mid January) It will be time for Beta release (Thanks to Christmas and New Year celebrations). 90% is done and so I'm confident of that. There is a good big thing coming with the final releases by the end of January or early of Feb (depending on feedbacks and bug fixes)
 
looking forward to those releases.
On issues of development, for casual developers, it get's doubly scaring on issues of security hence rely on the "promise" of the framework to provide that. The headache to figure all that out simply is time consuming and not in the realms of a casual developers expertise.
 
Nope I didn't miss it
My point stays there

For me why should I have to consume a lot of time for coding as if building os while,

While a simple script from python implement the same job efficiently

Time to give space for new Programming languages for high end Applications

Should C++ remain for heavy duties Programs like OS

Sent from my BlackBerry 9900 using JamiiForums
 
Hi Junior05,

Nope I didn't miss it
Yes you missed it!

My point stays there
Mh! Let's see!

For me why should I have to consume a lot of time for coding as if building os while, While a simple script from python implement the same job efficiently
While its true that coding in Python is faster than C++, two things you are missing. Let's see what Python developers say about this point:

Guido van Rossum said:
Python programs are generally expected to run slower than Java [hence C++] programs, but they also take much less time to develop.
So Python is slower than C++ and fails any speed/performance critical mission! Now you will ask, is that a failure in Python part? No! As I said it was not created to compete with C++ but complement with it. For example you can create all non-critical parts in Python and put critical parts in C++ library and call them from python.

See this quote:
Guido van Rossum said:
where Python code is typically 3-5 times shorter than equivalent Java code, it is often 5-10 times shorter than equivalent C++ code! Anecdotal evidence suggests that one Python programmer can finish in two months what two C++ programmers can't complete in a year. Python shines as a glue language, used to combine components written in C++.
Kinda nail on head :)


Time to give space for new Programming languages for high end Applications
What do you mean? New is not a synonym for better!

Should C++ remain for heavy duties Programs like OS
Nope! It gos far beyond that! Did you one time had a fight with Bjarne Stroustrup?

Sent from my BlackBerry 9900 using JamiiForums
Time to give space for new smartphone brands lol!

You can read a document I quoted above by creator of Python below
Comparing Python to Other Languages
 
No doubt C++ it the most powerful language u can ever find in this planet and it is not that hard as java people say. Now when it comes to GUI development i wil say it with no shame "QT is the Best" this tool can make you develop amaizin apps from desktop to mobile apps especially symbrian.

CTO please take a look of this tool here Qt
 
No doubt C++ it the most powerful language u can ever find in this planet and it is not that hard as java people say. Now when it comes to GUI development i wil say it with no shame "QT is the Best" this tool can make you develop amaizin apps from desktop to mobile apps especially symbrian.

CTO please take a look of this tool here Qt
QT is not a lame, its powerful. I akcnowledged that. But QT widgets are emulative not native. wxWidgets make use of native widgets as much as possible.
Also Building wxWidgets is like building any C++ project while QT adds woes of QMake and such stuffs. While QT might Boast of QTCreator wxWidgets have CodeLite, Code::Blocks, DialogBlocks et al.

QT have Database classes that are missing but that can be easily solved using thirdparty libs like wxDatabase, Soci, Poco::Data et al. Licence for wx allows you to do anything with codes. I even had opportunity to contribute to wx though I'm not part of development team :)

In summary wxWidgets beats QT hands down
 
Hi Junior05,


Yes you missed it!


Mh! Let's see!


While its true that coding in Python is faster than C++, two things you are missing. Let's see what Python developers say about this point:


So Python is slower than C++ and fails any speed/performance critical mission! Now you will ask, is that a failure in Python part? No! As I said it was not created to compete with C++ but complement with it. For example you can create all non-critical parts in Python and put critical parts in C++ library and call them from python.

See this quote:

Kinda nail on head :)



What do you mean? New is not a synonym for better!


Nope! It gos far beyond that! Did you one time had a fight with Bjarne Stroustrup?


Time to give space for new smartphone brands lol!

You can read a document I quoted above by creator of Python below
Comparing Python to Other Languages

Mana imebidi nicheke kwa dialog uliyotengeneza.
All depends on programmer needs
You can be right depending on your desire,which can be something quit different from somebody else
Hahahhahaa anyways this post is based on C++ folks

Cheers
 
Mana imebidi nicheke kwa dialog uliyotengeneza.
All depends on programmer needs
You can be right depending on your desire,which can be something quit different from somebody else
Hahahhahaa anyways this post is based on C++ folks

Cheers
Enjoy! :)
 
QT is not a lame, its powerful. I akcnowledged that. But QT widgets are emulative not native. wxWidgets make use of native widgets as much as possible.
Also Building wxWidgets is like building any C++ project while QT adds woes of QMake and such stuffs. While QT might Boast of QTCreator wxWidgets have CodeLite, Code::Blocks, DialogBlocks et al.

QT have Database classes that are missing but that can be easily solved using thirdparty libs like wxDatabase, Soci, Poco::Data et al. Licence for wx allows you to do anything with codes. I even had opportunity to contribute to wx though I'm not part of development team :)

In summary wxWidgets beats QT hands down

WxWidgets is the one lacks databases classes (according to your artice), Qt has full support in every apps development area that includes databases. Who want to create an app which looks like it came from windows95? is that the nativity u are talking about?. In today world people want softwares with nice looks and feel and style, just take a look of KDE (made by QT) desktop project, that is best looking desktop environment of this era, you cant compare that with others. Look @ other softwares like Skype, Chrome, VLC.
 
Back
Top Bottom