On Friday, 16 February 2018 at 09:44:27 UTC, aberba wrote:
1. Do you first write it in idiomatic D style or a more general approach before porting to idiomatic D?

In micro-level, it's usually fairly idiomatic from get-go. Usually no heap allocations at inner loops, for-looping, static variables etc. Sometimes if I get a bit desperate of frustated I might do this a bit.

But at larger level, I often find myself shifting work between functions, structs, modules and so. In other words, redesigning.

2. Do you find yourself mostly rolling out your own implementation first before using a library function?

No, the vast majority of my calls are from Phobos or other libraries I use. And in case of Phobos at least, it's stuff is so general that I don't need to design my own function often. An exception is std.algorithm.each, but just to get better error messages (template constraints don't tell why the call did not work).

3. Do the use of generics come out of first try or a rewrite?

Rewriting a lot, but that's the case with all coding. With generics, i often tend to forget ! before an alias parameter.

4. What rough percentage of phobos knowledge is required for reasonable good problem solving efficiency?

If we talk about experience of the language in general, it's more than with C-style programming, Java or C# but less than with C++ generics. I don't think you have to know Phobos throughout, but you have to know the language and understand the philosophy of ranges quite deeply.

Percentages aren't important, I think that as long as you know the general purpose of std.algorithm, std.range, std.stdio, std.conv and std.array that gets you started. Again, if you know the language and understand the range concept.

Reply via email to