A basic idea of the ROOT developers is that future software development will progressively see larger and larger use of interpreters, to be considered the "glue" that ties together different pieces of compiled code. On one side, we need compiled code to provide acceptable performance in case of highly demanding data processing (high-energy physics is today one of the most impressive examples of very high requirements). On the other side, we need to quickly adapt our application to different needs (for example when developing a data analysis application with a step by step approach). Interpreters provide the best way to provide both advantages, and the ROOT team is providing an approach that tries to make most changes in some automatic way (that implies less effort for the user, and less error-prone evolution for the application).
The ROOT framework has been written in C++, hence the best interpreter for users who have the most demanding needs is CINT, the C++ interpreter that is executed by default when ROOT is started in interactive or batch mode. However, C++ is a complex programming language to master, and several people finde themselves more confortable with higher-level interpreted environments. For them, ROOT provides two choices, Python and Ruby. Such interpreters have been interfaced to the ROOT framework and offer acceptable performances (compared to the interpreted CINT macros, not with compiled C++ code!), still offering a more user-friendly user interface. Of course, they are intended to be used for simple tasks: it is much easier to build an optimized application starting from interpreted C++ code than having to re-write it from scratch following a Python or Ruby macro.