Qt
Qt is a C++ graphical toolkit made by Trolltech. It uses a powerful mechanism of signal and slots which simplifies GUI programming so much that it is difficult to imagine it without trying.Qt has an excellent and copious documentation and all the controls that you will need. It is simple, efficient and more powerful than equivalents. Cool stuff includes database backend, unicode with mixed bidirectional display, automatic arranging of controls, Gui designer, very good support for translation and multi-platform support with very good look'n feel emulation.
Qt runs on Windows, Unix, Macintosh and embedded devices. The Unix version and the embedded version are distributed under the GPL.
If you are familiar with Gtk, Qt is very similar to Gtk except that:
- it was there before
- it is written in C++ (but you can use it in python, perl, java, c, Objective C and C#)
- it is licensed under true GPL (Gtk is LGPL)
- it has a quicker development pace
KDE
KDE is a graphical desktop for Unix workstation. KDE is based on Qt and features the same qualities: very good documentation, very good architecture, professional attitude for everything.KDE is really a pleasure to develop with, because of its mature and modern architecture. See for example my article for a demonstration of their component architecure.
developer.kde.org is the reference site for developing with KDE. You should find all your answers here.
Python
Python is an interpreted language that is both simple and powerful. The syntax is always clean and clear. It features a rich set of libraries and a powerful language.I now do all my developments in python, from simple scripts I used to do in bash to powerful applications I used to do in C or C++. Python is really very efficient in term of development speed. You get something clean and working in no time. The interpreter allows you to do small interactive tests. The cycle write/compile/run/debug/fix cycle becomes write/run. Complex transformation can usually be expressed in very simple forms thank to the powerful language.
PyQt
PyQt cumulates the advantages of Qt and Python. It just rocks!
Compiler Cache
If you are a geek, you compile a lot of stuff by hand. If you are a true geek, you do that often, because you develop and test new versions. In the ancient times, compiling would take a lot of time. But now, there is Compiler Cache.Compiler Cache caches the output of your compilations, so that you can run them again very quickly. The page explains that better than me. The results are truly good:
- Linux kernel: reduce compile time from 5 minutes and 30 seconds to 3 minutes
- Qt : reduces compile time from 22 minutes to 4 minutes
Valgrind
Valgrind is a memory debugger for C/C++. Using a virtual machine, it tracks memory allocation, read, write and deallocation. The idea is more powerful that the "I override malloc and free" technique used by all the memory debugger tools.I said that I would only talk about tools I have used. Valgrind is the only exception. I have never used it but hope I will someday. However, the whole KDE project has used it extensively and the tool was improved with their feedback, to get the current version. Being validated by KDE, you can be sure that Valgrind is reliable and scales very well.
Unit Testing
I have discovered Unit Testing with Extrem Programming. Unit Testing is a central activity in this environment. Although I have still never programmed in the pure extrem fashion, I now can not live without Unit Testing.Unit Testing is just a framework that allows you to easily perform unit testing of everything you develop. Extrem Programming suggests that you write first your test, and then your code. Although initially surprising, this proves to be a very good idea when you practise it.
Unit Testing is not a revolutionnary idea. It existed before Extrem Programming. But the lack of framework would refrain people to do it thoroughly. Now, they have no excuse.
My personal experience is that it increases the reliability of my code and my coding experience. The initial feeling of losing time writing tests is immedietaly counter-balanced by the reliability and quality-assurance of your code. Really great!
- For C++: cppunit.sourceforge.net. I wrote a QCppUnit, a Qt graphical frontend for this.
- For Java: Junit and Mock objects
- For Python, a unittest module is part of the standard library of Python 2.1
KDbg
KDbg is a KDE frontend for gdb. This is the only frontend I have managed to use. Although it could see many UI improvements, it is far more comfortable to use than the raw text gdb.
Pychecker
Programming in python has one drawback. Because the language is interpreted and has a dynamic typing, you very easily get small runtime errors that would be picked by the compiler in a compiled language. For example, a variable name typo is only detected at runtime.But now, this problem is no more, thank to PyChecker. It does some magic to check the modules, names and types of everything you use. Really great!
$Id: tools.html,v 1.13 2004/09/13 12:04:49 philippe Exp $