I'm haven't decided whether it's a net gain, but that's something it catches especially well.
Here is the original Hungarian notation article by Charles Simonyi. http://msdn.microsoft.com/en-us/library/aa260976.aspx
But it's overbalanced by the sheer amount of effort necessary to make the compiler shut up when I do want to do that. Something like half my Ada code winds up as inane type conversions. I find myself very hesitant declare things in feet and square feet and milliwatts and meters because I know what a phenominal amount of work I am making for myself. Writing in Ada is a strange exercise in type engineering, trying to get exactly the amount of error-checking that I want out of the compiler without distracting myself too much from the actual problem I'm trying to solve. I'm rarely successful. I once recently spent four hours developing an algorithm in Perl, and then--with it understood and debugged--two days translating it into Ada. Most of that time was spent making reassuring gestures toward the compiler.
Then again, the extreme permissiveness of a language like Perl has its own drawbacks. I recently lost a whole day to a function I thought was expecting named parameters (but which wasn't). Ubiquitous default values and silent conversions are nice when you're expecting them and brutal when you aren't; to write efficiently, I must sprinkle die everywhere. And that's the catch: I'm not persuaded that truckloads of 'turn error-checking on' incantations are an improvement over truckloads of 'turn error-checking off'. It's inane code either way.
When you get right down to it, one size doesn't fit all, even within the same program. Ideally, I'd like a language that let me 'tag' variables and functions with types or units or associations, and let me decide when and what to check by default in what contexts. I'd love a language that stopped me from setting a variable in feet to one in meters, but also gave me a way to say "don't check units on this line--it's a formula--but please still check my pointer indirection". Alas, between building Perl up, quieting Ada down, templating C++, or simply building a baroque OO hierarchy in Java, nothing I've used seems really robust and flexible enough to serve this purpose well.
http://en.wikipedia.org/wiki/Hungarian_notation#Systems_vs._...