qt:motivations
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
qt:motivations [2010/12/08 17:31] – [Motivations] mithat | qt:motivations [2011/03/21 21:04] – [A word on multi-platform programming in general] mithat | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Motivations ====== | ====== Motivations ====== | ||
- | I have decided that I need to teach myself [[http:// | + | I have decided that I need to teach myself |
- | My enthusiasm for Qt had also been tempered by its licensing. In the past, it was available under a GPL or an expensive commercial license, and anything made with the GPL version was required to be published under a GPL-compatible license. In early 2009, Qt [[http:// | + | My enthusiasm for Qt had also been tempered by its licensing. In the past, it was available under a libre and gratis |
- | Another thing that's kept me from getting really excited about Qt is that its native language binding is C++. C++ (like C before it) is a great " | + | Another thing that's kept me from getting really excited about Qt is that its native language binding is C++. C++ (like C before it) is a great " |
- | Some people get bothered by the fact that Qt isn't " | + | It could be worse. It could be straight C. |
+ | |||
+ | Some people get bothered by the fact that Qt isn't " | ||
So, as far as major objections go, the only one that's really relevant is the language issue. | So, as far as major objections go, the only one that's really relevant is the language issue. | ||
===== The alternatives ===== | ===== The alternatives ===== | ||
- | There are a lot of different multi-platform development environments. Why Qt? Why now? First, let's consider some of the other options. I have a strong preference for FOSS solutions (there are lots of reasons for liking FOSS as well as some for disliking it; I won't get into this here), and these are the only solutions | + | There are a lot of different multi-platform development environments. Why Qt? Why now? First, let's consider some of the other options. I have a strong preference for FOSS solutions (there are lots of reasons for liking FOSS as well as some for disliking it; I won't get into this here), and so these are the focus of what' |
| | ||
- | **wxWidgets** is possibly the best known of the alternatives, | + | **[[http:// |
- | **GTK+** is the defacto standard GUI toolkit for *NIX systems that are not KDE-based. It is also available for Windows, and an OS X version appears to be in the works. There are lots of language bindings, but the underlying language is C. It is also a GUI toolkit only. (Other kits discussed here offer more than just GUI widgets.) I haven' | + | **[[http:// |
- | **Lazarus** is a relatively unknown gem in the field of multi-platform toolkits--possibly because it uses the relatively obscure | + | **[[http:// |
In spite of these strengths, Lazarus has a few issues: | In spite of these strengths, Lazarus has a few issues: | ||
- | * As is the case with Delphi and Visual Studio, the overall design and workflow discourage a clean separation of GUI logic and business | + | * As is the case with Delphi and Visual Studio, the overall design and workflow discourage a clean separation of GUI and processing |
* The project needs a bit more time to mature. As of v0.9.28.2, there are a bunch of not-deal-breaking-but-nonetheless-irritating bugs in the IDE as well as in the generated code. I suspect these will get ironed out in time. | * The project needs a bit more time to mature. As of v0.9.28.2, there are a bunch of not-deal-breaking-but-nonetheless-irritating bugs in the IDE as well as in the generated code. I suspect these will get ironed out in time. | ||
- | * While it supports quite a few [[http:// | + | * While it supports quite a few [[http:// |
In spite of these shortcomings, | In spite of these shortcomings, | ||
- | **Mono** is a multi-platform, | + | **[[http:// |
- | **Swing** is the standard GUI toolkit for Java and is very well served by the Netbeans IDE. However, Swing apps always look and feel like Swing apps, even when they are trying to look native. In addition, you have the same issues of needing a runtime that you do with Mono. I love the Java language, but the slowness of apps to start and Swing' | + | **[[http:// |
- | **SWT** is an alternative to Swing. While it solves the look-and-feel problem by using native widgets when possible, it still has the Java runtime overhead. | + | **[[http:// |
- | As far as solutions that are neither | + | As far as desktop programming |
===== Decisive factors ===== | ===== Decisive factors ===== | ||
- | Perhaps what really tilted the scales for me was the porting of Qt to Symbian and (more importantly) | + | Perhaps what really tilted the scales for me was the adoption of Qt as the native platform in [[http:// |
- | Another factor that was decisive for me is the support that Qt seems to be getting. While the community aspect of Qt support isn't as strong as I'd like it to be, Nokia appears to be giving Qt big hugs and are themselves betting on Qt's future through Meego and to a lesser extent Symbian. And lest we forget, Intel is also part of the Meego effort. So, I have some confidence that Qt will be around for a while and remain relevant. | + | Another factor that was decisive for me is the support that Qt seems to be getting. While the community aspect of Qt support isn't as strong as I'd like it to be, Nokia appears to be giving Qt big hugs and are themselves betting on Qt's future through Meego and (to a lesser extent) Symbian. And lest we forget, |
===== A word on multi-platform programming in general ===== | ===== A word on multi-platform programming in general ===== | ||
- | The goal of multi-platform programming is to write once and compile anywhere. This is a huge goal, and one that not unexpectedly is essentially impossible to achieve. There are just too many differences in the way platforms work--from the OS level up to interface conventions. This leads to the following: | + | The goal of multi-platform programming is to write once and compile anywhere.((Or, as in the case with Java, compile once and deploy anywhere.)) |
- | **If you plan to develop your project to reach multiple platforms using one holy code base, you //must// accept compromises.** | + | **If you plan to develop your project to reach multiple platforms using //OneHolyCodeBase//™, you must accept compromises.** |
- | There are people who tell you this isn't the case. They are lying. There are people who say multi-platform development is doomed to failure. I believe they are lying as well. The simple truth is that multi-platform development based on one holy code base is possible, isn't perfect, and may not be the best (or even easiest) way for you to solve your multi-platform problem. The key is to develop an understanding of what the limitations (and strengths) of multi-platform programming are, and then apply it when it makes sense. And I can't think of anything but experience to give you this understanding. | + | There are people who tell you this isn't the case. They are lying. There are people who say multi-platform development is doomed to failure. I believe they are lying as well. The simple truth is that multi-platform development based on OneHolyCodeBase™ |
qt/motivations.txt · Last modified: 2011/12/03 17:24 by mithat