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.