I generally use Octave to test simple ideas, Python for more complex frameworks and I use C++ for heavy-duty programs. While in the prototyping phase I frequently use Python and some tools makes my life easier. I list them below.
- Editor → vim: Vim is my favourite code editor by far with its very efficient commands and script library. Although learning curve is a bit steep, it is worth it. After you build-up some skills, you can code as fast as you think. Personally one of the things I like about VIM its configuration file. I simply edit it and copy to various locations where I work and everywhere feels like home. You can put my config file .vimrc in your home folder and modify it as you like. (VIM website)
- Debugger → pdb/Winpdb: For simple debugging tasks, pdb is perfectly suitable. If your variables starts to get out of control, you should use a debugger with a gui like Winpdb. Winpdb has enhanced features like support for multiple threads, remote debug with encrypted communication etc. (Winpdb website)
- Code analyser → pylint: I discovered this tool recently. It simply check your code statically and generates a report with useful tips to improve both its style (wrt. PEP8) and its structure. It found a class method of mine and told me that it’s really unnecessary to include it in the class definition. I liked it. (pylint website)
- Performance improvement → psyco: Because I use Python for prototyping, I generally do not need any speed up for my computational tasks. In case you need, you can use psyco but unfortunately it is no longer maintained. (psyco website)
- Number crunching → numpy: numpy package contains most of the basic numerical tools you may ever need like arrays, statistical functions, linear algebra routines, data input/output etc. (numpy website)