The Flangy News - The Never-ending Soda: "A coment on Joel on Software's discussion board (not from Joel himself) suggested that a first programming language should be one that differentiates pass-by-value and pass-by-reference (which might include C++ but exclude C on a technicality) because it's hard to get the differences right later on.
Nuts to that.
Python has only one style of passing objects (everything is an object) to functions. And it turns out that it's quite complicated to explain what variables in Python are and how they're passed, especially if you're coming to it from a C-centric point of view.
In C a variable, such as 'int someNumber' is essentially a name for a memory location. 'someNumber=3' to the compiler means look up which memory address someNumber stands for and cram a 3 in that slot. A pointer is a memory address that contains a number that should be interpretted as a different memory address.
Variables in Python are rather divorced from the concept of memory addresses. Instead of having variables it is perhaps more correct to say that Python has names and namespaces. You don't assign a value to variable, you bind an object to a name in a namespace.
In C a variable has a type (which can be easily circumvented by casting), so 'someNumber' is a slot that normally only can be set to 'int' things. In Python type is associated with the object, not the name. Since you don't assign a type to names in Python, you can bind any sort of object to a name, and this freaks out the static typing crowd.
This does NOT mean that types are freely mixable in Python. 3 + '1' throws an exception because the types are incompatible. (Perl has separate addition and concantenation operators. VBScript will convert types behind your back. Yuck and yuck.)"
What a great explaination!
I ususally strugle with something unless I can intuitively understand it. Dynamic languages bothered me because I never developed a comfort level. But with that as a mindset I think I would quickly become comfortable with them.
It may be time to pull out the python books again =)