Ugh. C# can be pretty confusing too because it doesn't make a distinction between a pointer and a reference. It's motto seems to be just pass the damn object and it will work. Except, sometimes it doesn't and you have to think about passing your "pointer" by "reference" instead. I find it much easier to actually make a distinction between pointers and references.

And ugh. Python. Another stupid dynamically typed language. The enemy of all humankind*.

*) Strictly my opinion only.