On Friday, 27 March 2015 at 14:21:18 UTC, Shammah Chancellor
wrote:
D is a superset of go's functionality aside from the structural
typing (which in my opinion is a huge fail for a variety of
reasons you will see if you try to use it for anything
extensive). If you don't want to learn about templates and
metaprogramming, then don't. I fail to understand why having
extra features is a deterrant?
-Shammah
That's what I thought for a long time, and I still think that it
is a valid approach, but it should be noted that more features
makes reading and understanding other's code more difficult.
1/ if you don't know templates, then reading a code making use of
it needs a long time to identify the construct, read about it,
understand it and then apply this new knowledge to the original
piece of code. The identification part is important, how often
when learning a language did you found a weird syntax that you
just could'nt identify because it was generic enough not to get
any useful results in a web search?
2/ more paradigms allow people to write different solutions for a
same problem. Of course, that's the whole point of accepting
different paradigms, but it makes it difficult to have a
uniformed programming style. If you take a language that emphasis
having one good, elegant, performant way to do things (like
python) then the code I write will be very similar to the code
you would have written. Of course there are divergences but there
is one style that is said to be good and sticking to it means
that nobody will have problem understanding what I'm writting.
A language that famously took the other path and decided that it
should allow programmers to solve the same problem in as many
ways as possible is perl. And if perl is often praised for its
expressiveness, it is disturbing to see that even perlers are
often having a hard time deciphering other's code.