I've got some bad experience with C++ for this. Yes, part of that was losing the flow, which is probably why way back then scripting languages were easier to sell than these days (where you can throw more money on the issue, with umpteen core dev machines).
But the other part was the reaction amongst developers to this. Layers of abstractions introduced just to please the compiler gods. C++ was particular famous for this, all for the sake of partial compilation still working -- sometimes this had the benefits of decoupling, but often it was a few cake layers on top of that.
So you end up with convenient languages, but have to forsake some of that convenience to actually be productive. But you still had to learn the convenient unused part and know the difference, even if you almost never could afford to use it (if it's just about runtime performance, you often don't need that. But you don't want to cause the projects compilation or test phase to double, just because that functional-combinatoric template metaprogramming approach is so much neater)
Oh man, if only we would have Wirth-dows, not Windows ;)