WinApi and MFC versus Qt in an educational environment.
-
Some of my friends say that MVC might be loosing its popularity and that we might see Qt covering more ground in the future.I currently use both but I am liking Qt mostly because of its documentation.I need to choose one of those beasts as an introduction to GUI programming at my university.Any suggestions?
Thanks.
-
Thanks utcenter,
the cross platform point is invaluable!But if MVC has been used for some time,we need some folks to entertain the already running systems or help in the process of migrating.A lot of companies even require you have some MVC background to even consider hiring you.I have to say it though,if there are no client requirements i certainly like to use Qt.If is so easy to find your way around. -
[quote author="utcenter" date="1360117097"] Cross platform and the APIs are not as ugly as those of MS.[/quote]
I've done projects in C#, C++ and Qt and trust me utcenter is right. If I were to develop a project with an option of choosing between these three languages, then my preference would be
- Qt
- C#
- VC++
IMHO Qt will always rank first for its easy to understand documentation, awesome API and tremendous help from the Qt forums.
-
Although you obviously want your students to be employable, I think that courses should focus on concepts and that the skills they learn should be transferable, which MFC isn't.
I personally think that the jump from cross-platform to Windows-specific won't be nearly as tricky as the jump from Windows-specific to cross-platform.
-
[quote author="musimbate" date="1360116900"]Some of my friends say that MVC might be loosing its popularity[/quote]
This is absolutely not right!
MSC++ has big future. MS said that they will emphasize the C++ in the future (instead of .NET C#). And MSC++ has a VERY big code base. I've read more times that MFC is dead, and?: still lives in VS2012 (WindowsForms is really dead in VS2012, the new surface is the XAML)!At the Uni: Qt is better because it has a free and full usable multiplatform version.
Bur don't forget the MSC++ :) -
The code base of MS is not all that bad, and thanks to the high amount of integration getting started is pretty much effortless, in contrast to that Qt can be somewhat of a hassle, especially if you want to build it yourself, set the toolchain and so on...
But the big problem of MS, aside not being cross platform, is the dreadfully ugly APIs, I recently spend some time getting to know the new "metro" APIs and I was literally disgusted by how stupid the workflow needs to be to conform to MS's "vision". Completely counter intuitive, and against each and every core principle of OO programming...
And I mean it is bad for using, so teaching this kind of nonsense to newbies is simply ridiculous, I honestly won't envy anyone who gets to learn programming under such a moronic paradigm, only to end up isolated to write code for MS platforms. Hardship only makes sense when it leads to something good, in that case hardship will only lead to more hardship, so what's the point?
-
Introduction courses at a university should be about learning concepts, not technologies in my opinion. Technologies are going to be replaced every couple of years, but the concepts stay.
So I would go for Qt... it tends to have nicer APIs, so your students will have more time to think about what they want to tell the compiler and less on how to tell it:-)
-
If you teach people Qt, MS APIs will get even less popular, which is a great plus. It's hard to find anybody who is happy to use MS apis after being exposed to anything else, especially Qt. I personally refuse using any WinAPI at my work, and actively purge our codebase off this junk. For a company that is able to hire the best programmers on the globe, MS is doing a really bad job.
Doof, sorry for this offtop. back on track: I would start with Qt4. Qt5 might be a bit more challenging, to students. A lot of people seem to be having troubles even with installing Qt5. Never had any since alpha1 myself, but there you go.
-
Thanks guys,i certainly agree with you that Qt is far easy on the brain in the sense that you don't have to spend a lot of time figuring out the mechanics and the syntax of what you want to accomplish.
The question that is bugging me however is** if it can be easy for a person from a Qt background to adapt to environments like MVC++**.
In fact i was introduced to Qt a few years ago and client demand kept pushing me in that direction,i don't regret it though ,since it allowed me to enjoy the true advantages of Qt. -
[quote author="musimbate" date="1360159067"]The question that is bugging me however is** if it can be easy for a person from a Qt background to adapt to environments like MVC++**.[/quote]
Not likely, but depends. You can stick to more pure C++, omitting some of Qt goodness, just to make it easier for people to transfer to a different technology later.
-
[quote author="sierdzio" date="1360156863"]If you teach people Qt, MS APIs will get even less popular, which is a great plus.[/quote]
Yes, it would be great if the next generation of developers develop cross platform applications so that free solutions can gather popularity. Because when this happens, the industry will start writing good drivers for Linux and it will become a mainstream OS, unlike now, when it can only serve a very specific niche of users. Half of the hardware I own doesn't even have a Linux driver, the rest of it has terrible performing drivers, stripped of features and so on. It is a shame really...
[quote author="musimbate" date="1360159067"]
The question that is bugging me however is** if it can be easy for a person from a Qt background to adapt to environments like MVC++**.[/quote]Depends on how "gifted" that person is, if programming is in his intuition, he will likely be able to get into the MS APIs, but for most people it will be an ugly uphill experience. MS tools don't need that much compiling and setting up and don't come with that many external dependencies that are not provisioned by the OS, but MS really loves giving their own twist on things, this is also found in Qt, but there is a slight difference, the Qt twist on C++ development is logical and neat and relies on portable additions to the core language, while MS like adding their own keywords and operators without really being necessary, just for the sake of crippling portability of the code and lock developers in it. That plus the actual APIs are often terrible, as it was mentioned a few times already.
Also worth mentioning is the fact while MS will work with standard C++, if you plan to reuse any logic you must abstract it really well, because integration with the MS APIs is made so that it requires MS's proprietary "extensions" to the standard, which will make the code non-portable. And while it is entirely doable to abstract some logic and make it work for Qt, MS and even the Android NDK, it is still extra effort.
At any rate, I imagine you would get exactly the opposite answer to your question if you went ahead to ask it in the MSDN. I can testify that I am no fanboy to Qt (and even call it Q T instead of "cute" as many people do) or anything and my opinion is unbiased and as objective as my personal experience allows it to, but you cannot ignore the community bias factor. If I wasn't sure myself I'd ask in both places and carefully juxtapose the kinds of answers I get at both places, their factual argumentation and so on, before I make my mind up.
-
Excellent! :)
-
The title is misleading Visual C++ (witch the title is talking - maybe it's supposed to be edited) is the C++ compiler offered by Microsoft and this compiler can be used with Qt and Qt Creator IDE and also it's default IDE Visual Studio (editions higher than express) can easily be used with Qt (with add-in), but anyway the discussion is going to the WinApi and MFC versus Qt in an educational environment.
mhcrnl Qt offers at least two pre-built versions for Windows: one to use with MinGW compiler and one to use with VC++10 compiler (Visual Studio 2010) and Qt 4 is available for VC++9 (Visual Studio 2008) too.
-
You can use this book for a reference/inspiration for the teaching material: http://www.amazon.com/An-Introduction-Design-Patterns-Qt/dp/0131879057
The first edition has a "free":http://www.informit.com/store/introduction-to-design-patterns-in-c-plus-plus-with-9780131879058 online version //and i think that second edition can also be obtained for free but from ICS, i'm not sure and i don't have time to search, maybe later but i'm sure you won't have troubles finding it.