Je'rome M. Berger:

>I have almost never used inline assembler even in languages that support it. 
>Of course, this is only a sub-point of your point 6: using inline assembly in 
>a language as slow as Python would be completely pointless.<

For scientific computing this is better than D inline asm:
http://www.corepy.org/


>I would not count them as advantages per se. Some of their consequences might 
>be seen as advantages once we have enough experience with them.<

In Python frozensets, tuples, namedtuples and strings are built-in immutables. 
And it's easy to find frozendicts too. They cover many usages. (They are 
head-const, sometimes).

And in the end Python design is based on different principles. If you look at 
Python and all you see is it lacking "const", "private" and "protected" then 
you miss the most important thing. A language doesn't fail because it lacks a 
feature, a language is like an old ecology, its parts are adapted to each 
other. This means that the lack of const is covered by other qualities of the 
language or its Zen. In practice I still create less bugs in Python than D. 
Google builds many systems using Python, and they work.


>Python has it too (since 2.6 IIRC, see the "with" keyword). Moreover, Python 
>makes it clear that RAII is happening by requiring a special syntax at the 
>call point.<

CPython GC is a reference counter (+ cycle breaker), so deallocations are often 
deterministic.


>Cython gives it too: it is as easy to write a Cython interface module as to 
>write a D interface file for a C library.<

This is built-in:
http://docs.python.org/library/ctypes.html
It's not hard to embed or extend Python in C.
Plus there are tens of ways of bridging the two, like SWIG, PIL, Boost Python, 
etc, plus there is ShedSkin, Cython, etc etc.

-------------------

Walter:

> Templates are far more than just generics.

But an army of people argue that using templates for more than generics is bad. 
In C++ you use templates for generic data structures and classes, for 
metaprogramming, for type-level computing, and probably for other things. For 
metaprogramming even D doesn't use templates much any more (after the 
introduction of CTFE), most other ways to perform metaprogramming are better 
than doing it with C++ templates. Type level computing is better done with 
staged compilation, a type to represent a type, more flexible type sytems, etc. 
See modern functional languages.


> That happens at compile time.
> That happens at run time. D's happens at compile time.

Python has a wonderful advantage over D: there is no compilation! You write 
your code and you run it! So no need to let things happen at compile-time. If 
you want to pre-compute things you can just split your program in two levels 
and run a level before another, or use eval/exec. So Python is better here.
No compilation, no problems :-) Generative programming in Python is way better 
than D :-)


Generally I don't post a message in a sub-thread like this. In the end what's 
the purpose of this sub thread? Is Python better than D? Who cares? They are 
very different languages, for different people doing different things. Even if 
D is ten times better than Python, the world will not stop using Python 
tomorrow. In future compiled languages, especially system languages that don't 
run on a VM will be just a small percentage of the whole computing world. They 
will not go away, but for any program written in C++ or D, in the next years 
people will write 1000 or more programs in JavaScript, Python, Ruby, PHP, VB, 
(and Java, C#). System languages are now a niche.

Bye,
bearophile

Reply via email to