I do agree that Perl lends itself to confusing coding idioms, but at least it doesn't have inheritance (not really). Java programmers I have worked with seem to have become so deliriously enamored of formal conventions ("patterns," they call them), that they tend to ignore the actual problem at hand. "Ah wait!" they say, "here is an opportunity to decorate the interface with a delegation facade!" Every language has its pitfalls. C++, yes, very scary traps, but in the end I find that bad taste knows no linguistic bounds. Bad programmers will be bad.