Leandro Lucarella wrote:
It looks like you can (not as easily) according to bearophile example, but
this is besides the point, you only want to use malloc() for performance
reasons, and I already said that D is better than Python on that.
I mentioned ctypes just for the point of easy C-interoperability.

To me C interoperability means being able to connect with any C function. That means handling pointers, structs, etc.


It's simpler, because you only have one obvious way to do things,
No, Python has try/catch/finally as well.
I said *obvious*. try/catch/finally is there for another reason (managing
errors, not doing RAII). Of course you can find convoluted ways to do
anything in Python as with any other language.

try/catch/finally is usually used for handling RAII in languages that don't have RAII, so I don't think it's really justifiable to argue that Python only gives one obvious way to do it.

D has three: RAII, scope guard, and try-catch-finally. As far as I'm concerned, the only reason t-c-f isn't taken out to the woodshed and shot is to make it easy to translate code from other languages to D.


Maybe you are right, but the with statement plays very well with the
"explicit is better than implicit" of Python :)

Again, is flexibility vs complexity.
Another principle is abstractions should be in the right place. When
the abstraction leaks out into the use of the abstraction, it's user
code complexity. This is a case of that, I believe.

Where is the code complexity here, I can't see it.

The code complexity is suppose I create a mutex object. Every time I get the mutex, I want the mutex to be released on all paths. With RAII, I build this into the mutex object itself. Without RAII, I have to add in the exception handling code EVERY place I use the object. If I change the abstraction, I have to go and change every use of it. To me, that's code complexity, not flexibility.

A proper abstraction means that if I change the design, I only have to change it in one place. Not everywhere its used.


The thing is, I never used them and never had the need to. Don't ask me
why, I just have very few errors when coding in Python. So it's not really
*needed*.

I agree that static analysis isn't needed. The better statement is is there a benefit to it that exceeds the cost?

Reply via email to