On Friday, 29 August 2025 at 02:48:21 UTC, H. S. Teoh wrote:
On Fri, Aug 29, 2025 at 01:52:59AM +0000, Lance Bachmeier via
Digitalmars-d-learn wrote:
On Thursday, 28 August 2025 at 18:47:19 UTC, Brother Bill
wrote:
> It seems like 'templates' are the 'Achilles heel' of D.
>
> Without starting a flame war, has D gotten to the point
> where ordinary mortals have difficulty coding in D with
> 'templates' such as 'cycle' requiring rewrites into
> 'myCycle'?
Templates are in general a horrible way to program. Therefore
I don't use them very much. When I do, I don't do anything
complicated. But everyone has their opinion on that. I
similarly don't use attributes. I prefer simple code with a
simple language. Hard to avoid ranges in Phobos, which can be
crazy complex/inconvenient at times, but every language has
its warts.
[...]
Interesting how opinions differ on this. :-D I couldn't live
without templates. I might be tempted to quit D if I couldn't
use templates... ;-) but OTOH there are times when templates
are overused where they aren't actually needed.
Templates are obviously useful in a lot of cases, but I don't
consider them fun to read.
Another thing I don't like is that functions like foo(T)(T x)
throw away relevant information. Then you decide to use a
template constraint, you read the code, and you realize it's
better to write out stubs for the relevant argument types instead.
Classic D code includes types like Matrix!double when you could
just use DoubleMatrix.
They're like macros in Lisp. Powerful in principle but routinely
a PITA when you actually use them. Now, if someone's coming from
C++, the story is different because templates are just how you do
it when you're writing C++. He who writes the most generic code
is the king in that world.