Strong convention is much better than pleasure of everyone.
That's unfounded, please try it at least once in the playground play.nim-lang.org/. To me it's very cool that wrapped C libs with identifiers like ATOMIC_RELEASE can be written as AtomicRelease without any trouble.
If my codebase enforces camelCase and a library uses snake_case, then I can still use that library using camelCase, and Nim has nimgrep to make this easier all the way.
So you oppose languages supporting both recursion and iteration?
For example, here's how you can iterate over a list in scala to print each element:
List(1, 2, 3).foreach(element => println(element))
List(1, 2, 3) foreach { element => println(element) }
List(1, 2, 3).foreach(println(_))
List(1, 2, 3).foreach { println(_) }
List(1, 2, 3).foreach { println _ }
List(1, 2, 3).foreach(println)
List(1, 2, 3) foreach (println)
List(1, 2, 3) foreach { println }
List(1, 2, 3) foreach println x = 2 + 3
x = 3 + 2
x = (2 + 3)
x = (3 + 2)
x = 2; x += 3
x = 3; x += 2
x = 2; x = x + 3
x = 3; x = x + 2Recursion and inheritance are interchangeable (in fact, either can be implemented as syntax sugar over the other); while some people find one or the other more natural for a particular problem, there is considerable disagreement among people over which is more natural for which problems. In practice people choose between them based on personal preference and what the language they are using favors (e.g., you probably [0] don’t use recursion unless it is of fairly tightly bounded depth in a language like Python that doesn’t optimize tail calls.
> Language syntax is different; it's an opinion of the language designer which gives the language its distinctive style, and IMO shouldn't have much leeway in expressing the same thing in multiple ways.
As noted, recursion vs. iteration is exactly a syntax-preference decision, and one on which some languages are highly opinionated (Python) forming an important part of their distinctive style, while others are not.
[0] though you could use a tail call optimization decorator
Did you mean Recursion and Iteration?
Some recursion could be translated into iteration only if there is stack managed by hands. It decreases readability significantly.
Simplest example: Ackermann function.
And it works both way: some algorithms are better read as iteration.