On Friday, 9 February 2018 at 19:19:03 UTC, H. S. Teoh wrote:
D. They are optional extras that are nice once you're
comfortable with the language. I got by fine for *years*
without even using a single mixin, or knowing what 'inout'
does, or use any attributes.
But none of these features are *necessary* to start coding in
It's like human language, there's a set of core words ("basic
features") that you have to know to hold a conversation, but
there's a vast vocabulary of more specialized words ("advanced
features") to draw from when you need to be more precise or in
special situations. You don't need to know the *entire*
language to be functional in it. E.g., there's a vast body of
scientific vocabulary that 90% of the general population (of
native English speakers) has no idea about. Yet they can live
and function in society just fine. But that vocabulary is
there when you *do* need it.
That's true for writing your own code, but when you look at other
code like the standard library and are trying to understand it -
if it's written using a plethora of features, then you have to
learn a plethora of features.