I created a small Desktop application (approx 15000 lines of code, so not that large) written in C++/Qt. This is non-commerical, just a hobby project and I am coding on my free time.
The larger the application gets, I find it more and more tedious to write C++, and adding new features takes a lot of time.
- I find it especially hard to manually manage memory - even with smart pointers, I have to often think of ownership, on how to pass objects efficiently.
- Compile times are slow, as there is no real-time compilation
- Even modern C++ syntax is often somewhat cryptic and full of type annotations and somewhat tedious to write
- My application is based on several custom Qt Widgets, which makes using the Designer difficult. This results in a lot of time spent creating simple dialogs and interfaces manually by code.
Cross-Platform is interesting, but the majority of my users are on Windows anyway.
These are all reasons that make me think of moving to C#/WPF.
On the other hand, there is the strong "nevery rewrite from scratch" meme (cf. Joel Spoesky's famous blog entry), and I fear I might suffer from the "grass is always greener of the other side" syndrome.
What is your experience with projects converted from C++/Qt to C#/WPF? What perceived productivity gain did you yield after converting and writing pure C#? How tedious was the rewrite process? Is it diffcult to move from Qt's signal/slot thinking to the MVVM approach? What's learning curve for WPF like?