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.

Reply via email to