Good Development Tools

This is a list of tools that I find very good. I only recommend them because I have used them.

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:

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:

The bigger your project is, the most you benefit from compiler cache. My cache's size is currently 1.3 Gbytes and I hope to get it bigger. Storage is cheap.

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!

There is a very high probability that your favourite language has a Unit Test library. Test the Tool page of Extrem Programming.

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 $