The Thermopylae excerpt of TDPL available online
Saaa
empty at needmail.com
Fri Oct 30 23:08:00 PDT 2009
Andrei Alexandrescu wrote
> Saaa wrote:
>> Andrei Alexandrescu wrote:
>>> Andrei Alexandrescu wrote:
>>>> Saaa wrote:
>>>>> Could anybody clear these up for me?
>>>>>
>>>>>> p16. Is there anything other than the random values, unsafe about
>>>>>> void assignment?
>>>> I'd put your feedback on my pile of things to do, but now that you ask,
>>>> I made this change to the incriminated paragraph:
>>>>
>>>> ===========
>>>> Such uninitialized arrays are particularly useful for large arrays
>>>> that serve as temporary buffers. An uninitialized integral may not
>>>> cause too much harm, but uninitialized values of types with
>>>> indirections (such as arrays themselves) are unsafe.
>>>> ===========
>>>>
>>>>>> p18. What is unsafe about implicit conversion of static to dynamic
>>>>>> array?
>>>>>> Meaning getting a dynamic array pointing to a stack allocated
>>>>>> array.
>>>>>> Any operation changing its size could copy the array to the
>>>>>> heap. What am I missing
>>>> T[] fun() { T[10] a; return a; }
>>>> ...
>>>> auto x = fun(); // gained access to recycled stack memory
>>>>
>>>> There's no change in size there.
>>>>
>>>>>> p20. 10 int take up 40 words?
>>>> The example given has a per-row payload of 10 ints, i.e. 40 words.
>>> It's bytes actually. So finally I rewrote those last words as:
>>>
>>> "... small per-row payload of~10 @int at s (40 bytes)."
>>>
>>>
>>> Andrei
>>
>> Thanks !
>>
>> Out of interest, do you keep a list of common error or something alike
>> that helps you keep errors at a minimum?
>
> I got as sophisticated as having an email folder dedicated to TDPL.
>
>> Also, do you have automated example checking?
>
> Yes. If you look at the document very closely, you'll see that some
> snippets have a thin line above and below them. Those are automatically
> checked every time I save the document. (There are 1-2 examples that
> aren't checked in the Thermopylae excerpt because I switched editing to a
> 64-bit machine that can't build D programs (I'll post a question later
> today). But in the meantime I fixed those.)
>
> Very short snippets do not have a thin line above and below them. Those
> are not checked because they are short enough to warrant that I know what
> I'm doing.
:)
>
> Some checked snippets wouldn't compile without being in a function, for
> example:
>
> enum size_t columns = 128;
> // Allocate a matrix with 64 rows and 128 columns
> auto matrix = new double[columns][64];
> // No need to allocate each row - they already exist in-situ
> foreach (ref row; matrix) {
> ... // use row of type double[columns]
> }
>
> These are automatically entered inside a unittest. Also, my code
> extraction script (written in D!) automatically eliminates unneeded
I Wouldn't accept it being written in C++ !! :D
> "...", so the code as seen by the compiler is:
>
> unittest {
> enum size_t columns = 128;
> // Allocate a matrix with 64 rows and 128 columns
> auto matrix = new double[columns][64];
> // No need to allocate each row - they already exist in-situ
> foreach (ref row; matrix) {
> // use row of type double[columns]
> }
> }
>
> which passes compilation.
>
> Some other examples need "invisible" support:
>
> writeln("hey");
>
> For those I have a special mechanism to insert invisible code, so my text
> for the above actually looks like this:
>
> \begin{D-invisible}
> import std.stdio;
> \end{D-invisible}
> \begin{D-snippet}
> writeln("hey");
> \end{D-snippet}
>
> What the compiler sees is a file importing std.stdio and including the
> writeln inside a unittest.
nice
>
> I wouldn't know how to pull this off reasonably with e.g. Word, but I'm
> sure it now has mechanisms or extensions that allow that kind of thing.
> One thing I don't need to worry about with LaTeX is that it's text-based
> so I can process it easily myself.
Somehow I only associate LaTeX with b/w scientific articles :)
>
>> Or, more general, I would be interested in a small article explaining how
>> a book like this is written.
>>
>> Maybe After the book is finished :)
>
> I think the topic is well worth an article indeed. I continuously
> streamline the process of building the book, and it's gotten pretty
> sophisticated but very helpful as well. Index building is also an
> interesting subtopic.
>
>
> Andrei
Thanks, looking forward to the article ( and the tools used :P )
More information about the Digitalmars-d-announce
mailing list