These are really bad reasons to not use a language.
Anyone who makes a language that is not like a popular language (ex
C or C#) should have to do a lot of justification for it, not the other way around. Change for change's sake is bad.
In other words, if you can make a language that does something new, without having to have new syntax or paradigms, that is much better.
> Anyone who makes a language that is not like a popular language (ex C or C#) should have to do a lot of justification for it
Of course; but that's expected. My point is that this always applies, but sometimes "C does it, so I'm doing it as well" is treated as a good reason for things when it really isn't.
Javascript, for example, treats 0 as false in if conditions. This made sense in C, which had no dedicated Nil-value and used the Nullpointer for that purpose, so 0 meant both the numerical zero and nil.
Javascript, however, has a dedicated nil-value, so 0 really only stands for the number zero, which isn't any less a value than any other number, and thus has way less reason to be treated as falsey.
So, in this example, while C had a good reason to do a thing, that reason just doesn't apply to JS. Maybe there are other good reasons that do apply to JS, maybe they just did what C did without thinking, maybe a bit of both.
But it does underline a opint: There should be a reasoning behind every language decision; one that specifically applies to the language in question. And I do believe this isn't the case with many C features.
Anyone who makes a language that is not like a popular language (ex C or C#) should have to do a lot of justification for it, not the other way around. Change for change's sake is bad.
In other words, if you can make a language that does something new, without having to have new syntax or paradigms, that is much better.