Quote:Original post by Extrarius
I don't doubt that your productivity went up, but I got the feeling from the way you said so that perhaps you don't make much use of c++s standard library.
Also, IME, this is one of the main reasons beginners (not that you are one) hate C++ and love languages like python is that they were never exposed to the STL and might not even know it exists, whereas with languages like python, the data structures are 'shoved in your face' so to speak, and the absence of a few (arrays iirc) isn't apparent to them since they don't really know that much (if anything) about data structures.
I'll be learning python for a class this semester, but I'm biased against it and would like to hear other's opinions/reasons/rationalizations/etc to help balance my input =-)
I've been exposed for a lot of time in C++,STL and (lately)boost. I've recently started messing around with Python and I love it. STL and boost are both great additions to C++, but they still use the C++ syntax to do things. It just doesn't feel as natural and easy as it is with Python.
For example, Python lists can have elements of different types. I can probably do this in C++ using std::list and Boost::Any or Boost:Variant, but it isn't the same, because of the restrictive C++ syntax, which is a boundary that you can sometimes go around, but never beyond it. If I had to use an analogy, I would say that C++ ties my left hand behind my back, and then gives me a tool(STL and boost) that, if used correctly with my right hand, can make up for the loss. But Python lets both my hands free from the beginning. It's not surpising that Python has powerful libs like Numeric which, from what I've seen so far, gives the ease of syntax and power of Matlab(as far as manipulating multidimensional arrays go), and then some. It's just designed in a way that has much less limits than C++. And let's not talk about how easy it is to inspect and manipulate code at run-time, and how much more sense it makes for variables to be untyped references to any existing object, instead of the static typing C++ has. Bottom line: It makes me more productive, because it makes it so easier and natural for me to express programming notions that seem amazingly difficult and "kludgy" in C++.