Some time ago, I saw that CERN people had their own clang tree with a few addons, most notable one being the C++ REPL (C++ interpreter) called cling.
Now we had a presentation by Pere Mato from CERN who talked about their ROOT data analysis framework. It seems like a really nice and powerful piece of software.
The software is around 50 million lines of code, mostly C++. Some of it is python, but it is only used for quick-and-dirty testing of new ideas.
Another cool thing is that they use Qt for writing UIs, and that they also run Linux and KDE Plasma.
Oh please, is one of the ugliest libraries I have ever had the displeasure to use. It has been initially written by people who knew Fortran and its limitations, and tried to learn C++ and OOP along the way. The result is obviously both a pain to watch and to use.
It sports a confused memory model, a confused *object* model, lots of square wheel reinvention, impossibly large interfaces with great confusion between "real" methods of the objects and devious forwarders to related objects, serious confusion about OOP and consequent absurd class hierarchies (with inheritance used for random reasons), *huge* global state and action at distance, plus lots of crashes if the planets aren't correctly aligned (especially due to the confused memory model above).
Don't get me started on the C++ interpreter. The idea itself is pure madness, but for some reason someone liked it and want on to build "cint", a mostruosity which was able to parse and somewhat execute a badly defined subset of C++, with very little respect for the C++ type system and, again, extremely liberal memory management. I suppose this was done once someone realized that the C++ build/compile/debug cycle doesn't lend itself well to small scale experimentation, but instead of wrapping the algorithms to make them usable from a real scripting language (which they later did with Python), they grew this monster. The sad part of this is that the interpreter encourages extremely sloppy coding style, which is then borrowed to compiled programs with tragical results. Also, the limitations of the interpreter seriously hindered the usage of more advanced C++ techniques in the library interface. Now they are trying a reboot with clang - when will they learn that it's a lost cause, and that the python wrapper is both simpler to implement and maintain and way easier to use than a friggin' C++ interpreter?
But the real problem underlying this mess is that it has never been clear what root is intended to be - it claims to be a library, but is more like a crossover between a C++ library and an interactive environment, thus not doing neither of these tasks with any coherency, and encouraging a deadly mix between GUI state and algorithm state.
What *really* bothers me is that this train wreck is what almost any Italian physics student is exposed to immediately after learning C++ - actually, the diffusion of ROOT at CERN is probably one of the reasons why they teach C++ to physics undergraduates, which in itself would be a bad idea, since C++ is a notoriously bad language to start programming.
The result is that people get used to work with a completely unforgiving language, with horrible libraries and never learn a thing about proper programming, and end up misusing a sledgehammer for every little problem they have to deal with (it's either Excel or ROOT). Sigh, I hope one day numpy/scipy will start to be taught around instead of this pile of shit.