[Python-Dev] Error in PEP3118?
oliphant.travis at ieee.org
Mon Feb 11 20:34:27 CET 2008
Thomas Heller wrote:
> Travis Oliphant schrieb:
>> The intent of the struct syntax is to handle describing memory. The
>> point is not to replicate how the C-compiler deals with statically
>> defined N-D arrays. Thus, even though the struct syntax allows
>> *communicating* the intent of a contiguous block of memory inside a
>> structure as an N-d array, the fundamental memory block is the
>> equivalent of a 1-d array in C.
>> So, I think the example is correct (and intentional).
> Sorry, I do not think so. If you use a 2-d array in the example, you
> must describe it correctly. The difference between this pep and the old
> buffer interface is that the pep allows to describe both how the compiler
> sees the memory block plus the size and layout of the memory block, while
> the old buffer interface only describes single-segment memory blocks.
> And 'double data' *is* a single memory block containing a 2-d array,
> and *not* an array of pointers.
I don't understand what you mean by "must describe it correctly". The
size and layout of the memory block description of the PEP is not
supposed to be dependent on the C-compiler. It should also be able to
define memory as used in Fortran, C#, a file, or whatever. So, I don't
understand the insistence that the example use C-specific 2-d array syntax.
The example as indicated is correct. It is true that the 2-d nature of
the block of data is only known by Python in this example. You could
argue that it would be more informative by showing the C-equivalent
structure as a 2-d array. However, it would also create the possibility
of confusion by implying an absolute relationship between the C-compiler
and the type description.
Your insistence that the example is incorrect makes me wonder what point
is not being communicated between us. Clearly there is overlap between
C structure syntax and the PEP syntax, but the PEP type syntax allows
for describing data in ways that the C compiler doesn't.
I'd rather steer people away from statically defined arrays in C and
don't want to continually explain how they are subtly different.
My perception is that you are seeing too much of a connection between
the C-compiler and the PEP description of memory. Perhaps that's not
it, and I'm missing something else.
More information about the Python-Dev