Trolltech has announced the availability of the second Qt 4 Technical Preview. Key highlights include support for AT-SPI, bringing accessibility to the Unix and Linux desktop for people with disabilities.
Trolltech has announced the availability of the second Qt 4 Technical Preview. Key highlights include support for AT-SPI, bringing accessibility to the Unix and Linux desktop for people with disabilities.
Kopete is ok but needs a while to get further in development. Another app many will install GTK for is Firefox/Mozilla. I know of kolour but the GIMP is much more powerful; I haven’t tried out konversation yet but as I made it obvious I keep *both* systems around, I’ll probably stick with X-chat until konversation replaces ksirc in the KDE distribution.
The reason I brought this up is I just did a fresh install (slack 10.0) on my laptop and decided to try KDE3.3 (contrib) out *without* using any GTK apps. I was able to use Kopete for about 3 weeks before giving up (its connect interface is pretty lame; I want a dialog or a progress bar telling me why I am not connected, instead of just sitting there disconnected). I finally cracked when I needed to use The GIMP and then wanted to try out Inkscape. Now I’m using Xchat and gaim constantly; so I guess my little experiment failed: The purely Qt replacements that came with KDE just did not cut it for my needs.
A little off topic; features like having tabbed conversations and using enter to send are un-necessarily difficult to find in Kopete; and features that I cannot live without like “ignore font & color” were suspiciously not working or in other cases absent.
You’re one case though, of a pure KDE/Qt user. I’d wager that there are more Gnomer’s who do not use Qt than there are KDE users who do not use Gtk.
Further, inheritance is great. In terms of code saving and the consequent ease of maintenance, it can’t be beaten.
Inheritance is one of your tools in OO programming, but tends to be overused and almost all “modern” OO best practices says to favor composition over inheritance and to program to interfaces not implementations.
Maintenance problems is probably the primary reason why overuse of inheritance is a bad thing.
Qt can be used with C with QtC as Gtk has Gtkmm for C++.
Qt may be not too cheap, but Qt/Windows has acceptable quality (understatement) while Gtk on Windows isn’t very convincing though it has improved.
So if you want to have a good impression on Windows, too, Gtk might not be an option.
For OSS projects there is a problem, but it can be solved with adding an exception for Qt to GPL or using LGPL.
PSI, for example, is using Qt on Windows.
As a Free Software project you have not necessarily to pay the proprietary version, you can use non-commercial version of a Qt book or ask Trolltech if they provide it to you (->PSI).
I don’t feel hurt if I use a Qt or Gtk application and can accept if I don’t complain because someone has decided for one of them.
It seems to me that some people just want to create a scenario giving Qt/Gtk a bad impression.
I doubt that a kernel developer wouldn’t have to be careful without language like C and that it is no hardware problem (stated in older OSNews thread).
It couldn’t be ensured that each program is nice and complies to the specs of a “sane” language if the hardware allows that.
So each program would have to be controlled if it uses low level stuff and may not be executed.
Or how did you meant that?
Only a very small portion of kernel code actually needs to touch hardware directly. That code would have to be written in something like C, or an unsafe dialect of the safe language. Everything else would be written in a safe language. Security would be ensure either through code-signing (guaranteeing that a binary was compiled by a known-good compiler), or by shipping applications in some low-level intermediate language, and compiling them upon installation (kinda like .NET’s AOT compiler).
“Windows isn’t very convincing though it has improved.
So if you want to have a good impression on Windows, too, Gtk might not be an option.”
Gtk 2.4 on Windows is greatly improved. The only problem I have had is occasionally, widgets fail to repaint one or two scanlines after another window is dragged slowly over the top, such that relatively small areas are being repainted rapidly. But I have also had this problem with other Windows toolkits, so I am not even sure this is a bug in in Gtk. It might be a bug in Windows GDI itself.
My two main options really are Gtk and wxWidgets. wxWidgets uses the native Windows API, so the widgets are actually native. On one hand, this is nice. But on the other hand, it can cause some portability problems when a cross platform toolkit tries to use native APIs for drawing widgets. I also looked at FLTK, but its widgets are really ugly, and they also behave like XForms, which is rather form Windows users.
I’d suggest not knocking OOP until you’ve tried it. Java is not the greatest example of it. Qt is good, because it’s API manages to work around most of the defects of C++, but something like Smalltalk is even better, because it does OOP naturally.
I’m not knocking it, if I started right from day one thinking in OOP terms, then I guess my java learning experience wouldn’t have been a trip to hell and back.
With that being said, I’m not using Java as the barometre of OOP languages, what I am saying is for a person who has been using proceedural his whole programming life, the way OOP approaches things seems very unnatural, and at times, the virtues of OOP seemed to be over hyped by marketers in IT companies claiming that their OOP is better than the rest, then they spit off a speal of rubbish of the features they have.
What many IT people *need* to understand is that the computer should work for the individual, it shouldn’t require an individual to dump everything out of their memory and relearn the basics again because the powers-that-be claim that their new “paradigm” is better than everyone elses.
As for the chap who talked about “I always thought of things in classes”, I don’t think that would be the case. The fact is, you’re now used to the idea of thinking in classes, but the natural thing for a human to think in is blocks of instructures. Lets take making breakfast; you would have a block of code handling making the tea, one making toast and within that toast routine, you would have one handling the topping that will be put on the toast etc. All these groups of instructions would then be grouped at the beginning when interrogating the end user.
It really doesn’t matter what you “start off thinking like.” You have to learn how to naturally write in each paradigm. Programming languages don’t need to be user-friendly — they need to be efficient. If that requires the programmer to learn how to use his brain in different ways, well, tough. Object-orientation is just a way of structuring logic to allow programmers to write code efficiently, just like procedural programming or functional programming. Good programmers need to be able to deal naturally with different paradigms, then apply the best one to each situation.
Qt can be used with C with QtC
The QtC bindings were for implementing other language bindings where you couldn’t call C++ directly. They were originally for the Qt/KDE Objective-C bindings, and then used for the first version of Qt#. They were never intended to be used directly for writing apps.
They’ve been retired now, and are superceded by the Smoke library.
Programming languages don’t need to be user-friendly — they need to be efficient
I disagree with that. One of the things I like about ruby is the great effort put into usability, even at the expense of efficiency. A lot of the syntactic clutter in C++ is for the convenience of the compiler, at the expense of the programmer.
One of the best talks at the KDE aKademy conference was Matthias Ettricht’s presentation on the design of Qt 4. Api usability is a very high priority for Trolltech. So given a choice between, say maximum conformance to the MVC pattern that nobody could easily understand, and something simpler, they will choose the simpler option. Contrast that with some of Sun’s design-by-commitee apis, that often pay very little attention to usability.
I meant efficient for the programmer, not efficient for the computer
My point is that a little learning curve isn’t a big deal if it pays off big in productivity.
I meant efficient for the programmer, not efficient for the computer
My point is that a little learning curve isn’t a big deal if it pays off big in productivity.
Ah I see, your comment makes sense now. With ruby there is certainly a learning curve for things like blocks (ie closures), if you haven’t come across them before. I think too many programmers are ‘one club golfers’, who just start off with one language and never really learn another. Particularly javans and COBOL programmers for instance. The ‘Pragmatic Programmers’ say every professional programmer should try and learn a new language every year, and I think that’s very good advice.
I think too many programmers are ‘one club golfers’, who just start off with one language and never really learn another. Particularly javans and COBOL programmers for instance. The ‘Pragmatic Programmers’ say every professional programmer should try and learn a new language every year, and I think that’s very good advice.
There is good reason why many coders remain one club golfers. I play golf and can’t use a wood to save myself, so instead I use my 5 iron to make it fly down the fairway. I gain *nothing* by using a wood, so why use a wood when a 5 iron can do a better job?
What I would say is there are two types of programmers, there is the programmer who loves to programme, and then there are those like me who simply want to get the damn thing done with minimum fuss and bother. Screw the fact that the language isn’t sexy, the paradigm isn’t groovy; as long as the PHB is happy, the end users have their little applet, then my work is done – I can happily ride off into the sunset knowing that although technologically the best solution wasn’t used, the problem was solved with minimum fuss.
Screw the fact that the language isn’t sexy, the paradigm isn’t groovy; as long as the PHB is happy,
I’m not 100% convinced that you are a programming ‘one club golfer’, because you have taken the time to reply to an arcane point on a ‘techies’ site on a Saturday. But if your only concern is how happy the PHB is, you have handed over control of your career to the PHB. For instance, the PHP probably has no knowledge of Groovy, and there is a distinct possibility that it will become important in the future for java development. So if you have spent you spare time learning ruby and its blocks/closures you will be able to adapt to Groovy really easily. Suppose the PHB is making a choice between the Groovy fan, and the other guys to decide about who to make redundant, who will he choose?
“What I would say is there are two types of programmers, there is the programmer who loves to programme, and then there are those like me who simply want to get the damn thing done…”
I agree with this. And I think enjoyment is another reason for one’s choice of language. After all, this stuff should be fun right?
I enjoy programming in C. Sure it is a hassle sometimes, but still I enjoy it. I enjoy programming in C more than I enjoy programming in any other language. And that alone is an important factor in choosing one language over another. After all, it doesn’t really matter how easy a language is to use if one does not enjoy programming in it. One is still likely to be more productive in a language that they enjoy programming in, even if that language is more complicated.
I agree with this. And I think enjoyment is another reason for one’s choice of language. After all, this stuff should be fun right?
I enjoy programming in C. Sure it is a hassle sometimes, but still I enjoy it. I enjoy programming in C more than I enjoy programming in any other language.
Any your other club is..?
“Any your other club is..?”
I have lots of clubs: C, C++, Java, Visual Basic, Python, Perl, and even Scheme. But I still enjoy C more than any other language. Granted, I am not going to write a throw away text processing program in C. Obviously I am going to use Perl for that. But for any kind of major development, I still find myself going to C most often cause I simply enjoy programming in it.
I’d say breakfast is either a collection of Consumables which could be consumed by a Consumer. Consumables could be drinks or foods. Tea could be a drink, toast could be a food.
[Note: If it was just tea and toast, I wouldn’t bother with such a huge inheritance tree].
Depending on the detail of the model, a consumable could contain other consumables (e.g. water, sugar, milk = tea) or not.
Each consumable could be created in an overrided constructor.
A consumer (me in the morning) could then polymorphically consume a consumable item.
Yep – I think my fragile little mind is warped 😉
As regards Simba’s mutterings (and in fairness, his comments did kickstart a half-way interesting discussion), I almost never inherit from third party components (it can be a little scary when it’s all proprietary), however patterns often turn up in the design that let me exploit common functionality.
I am amazed that he apparently knows so many languages and knows so little about the paradigms behind them (???). As regards Java people never getting out of the box, it’s usually because Sun tosses out a whole new set of APIs every year – it’s quite hard to keep up with the Java standards demanded by job agencies.
“I am amazed that he apparently knows so many languages and knows so little about the paradigms behind them (???).”
I am quite familar with the paradigms behind them.
“As regards Java people never getting out of the box, it’s usually because Sun tosses out a whole new set of APIs every year”
Well, in fairness:
A: Java is a young language that is still evolving. So this is to be expected. C++ had the same problem before it was standardized. (In fact, with C++, it was even worse since different compiler vendors would all implement the string and vector classes differently.)
B: Are you trying to say that this is not a problem with Linux toolkit APIs? They are constantly undergoing revisions too. And often those revisions are not backward compativle. Hense, you need 3 different versions of Qt or Gtk installed on your system just to run all the apps you might want to run.
I am amazed that he apparently knows so many languages and knows so little about the paradigms behind them
I think Simba knows more about language paradigms than he lets on. Perhaps the reason is that he seems to think it’s a good idea to knock the Qt/KDE toolkit, is to help the success of the GTK/Gnome toolkit. That’s nonsense – there are four main toolkits for the Linux desktop; Gnome, KDE, Mozilla and OpenOffice (although I would love GNUStep to be important too). If you deal with actual KDE contributors you will find they don’t spend their time knocking Gnome or the OpenOffice api, like simba has knocked Qt in this discussion. Instead all they want to do is make them all interoperate and improve the user experience. How come Lars Knoll and Zack Rusin were doing amazing stuff at aKademy to integrate Gecko as a KPart when Lars was actually the originator of the apparently competing KHTML library?
“Perhaps the reason is that he seems to think it’s a good idea to knock the Qt/KDE toolkit”
If I wanted to attack KDE, I would just point out the problems with its licensing issues because of the Qt toolkit. This can cause real problems for some software developers because it is very easy to run afoul of the GPL by accident without even realizing it when writing software that integrates with KDE.
If I wanted to attack KDE
Do you want to attack KDE/Qt then, and if so why?
I would just point out the problems with its licensing issues because of the Qt toolkit. This can cause real problems for some software developers because it is very easy to run afoul of the GPL by accident without even realizing it when writing software that integrates with KDE.
If they are developing GPL software then they don’t have a problem. If they want to develop commercial software then the KDE libaries have an LGPL license, and they can buy a commercial license from Trolltech.
Are you talking about Windows shareware developers – who cares about them? Why buy binary-only software from a company who might well go out of business in a year or two, no matter how cheap? Anyone who buys software from a small company without any sort of rights to the source is making a mistake in my opinion.
“If they want to develop commercial software then the KDE libaries have an LGPL license, and they can buy a commercial license from Trolltech.”
But since those KDE libraries are linked against a GPL version of Qt, I don’t think they would be covered by the LGPL They would inherit the GPL. Now if I buy a commercial license of Qt from Trolltech, does that cover me and make the KDE libraries become LGPL, because I have a Qt commercial license now? Even though the actual KDE libraries were linked to a GPL version of Qt by someone that did not have a commercial license for Qt?
“Are you talking about Windows shareware developers – who cares about them? Why buy binary-only software from a company who might well go out of business in a year or two, no matter how cheap? Anyone who buys software from a small company without any sort of rights to the source is making a mistake in my opinion.”
This is only an issue for someone who is a programmer. If someone is not a programmer, having the source code doesn’t do them any good. If the company goes out of business, they are still screwed. Sure they could pay someone else to update the source code for them. That might or might not be cost effective. If we are talking some $50 program, then it would not be effective, and the source code is useless to the non-programmer anyway.
“Now if I buy a commercial license of Qt from Trolltech, does that cover me and make the KDE libraries become LGPL, because I have a Qt commercial license now?”
Yes it does. This is one of the reasons why Qt is dual-licensed under both the GPL and the QPL.
For further reference you may want to check the FAQ at Trolltech’s website that answers the question: If the Free Edition is GNU GPL, aren’t there license conflicts with incompatible open source licenses? How come people can even run commercial software like the Opera web browser with it?
Answers on http://www.trolltech.com/developer/faqs/license_gpl.htm
Are you talking about Windows shareware developers – who cares about them?
Open Source is not restricted to Linux. There are a lot of oss software that are ported to Windows.
There are also lots of Freeware programs for Windows. Programs that are closed source, but made available for free.
Do you really expect people to buy expensive licences to port Open Source, or to make a closed source freeware program?