My memory (and my memory goes back a long way
is that Hungarian
notation was invented back when C compilers didn’t do a great job of
diagnosing type mis-matches and there were no such things as function
prototypes. In addition to embedding the type of the variable in the
name, it gives the programmer a way to do “type algebra,” i.e.
it helps you to remember that dereferencing a pFoo yields a Foo.
I think this is very true–some (hopefully small) amount of
Hungarian-like notation can be useful in situations where it is
critical to know the type of a symbol, but it’s ambiguous or leads to
namespace collisions otherwise. One example of this is VHDL – ports,
signals, and variables share the same namespace, but are not
syntactically identical–i.e. you can’t have a port and a signal both
called “DataOut” even though you really want to.
However, it makes sense only to embed the minimum amount of
information necessary. Having something like “DataOut” and “DataOut_o”
is usually sufficient, albeit even that is barely palpable to me. I
ever see VHDL code with a signal called ssulv31dt0uDataOut, somebody is
going to get schwacked! 
Likewise, I think having “pFoo” isn’t necessary the most evil thing
ever, especially if there is some other “Foo” that you’re referring to,
but having, for example, “lpvfiidFoo” (long pointer to a void function
that takes two integers and a double) starts getting ridiculous very
quickly.
Interestingly enough, Ruby itself actually has something similar to
Hungarian notation–but here it’s not about TYPE, but about SCOPE.
local_variable
Constant
$global
@member
@@class_member
…
Contrast this to perl, which is more-or-less type based:
$scalar
@list
…
Anyway, interesting to think about. =)
I once invented a coding standard called Pottsylvanian Notation. All
the variables had to be named as if Boris and Natasha were coding, so
you have variables like “moose” and “squirrel”.
Unless of course it’s a function that pulls rabits out of a hat, in
which case you have to have variables like “hey” and “rocky”. 
···
On Sunday 15 June 2003 11:28 am, Tim Hunter wrote:
–
Wesley J. Landaker - wjl@icecavern.net
OpenPGP FP: C99E DF40 54F6 B625 FD48 B509 A3DE 8D79 541F F830