I feel like you can also draw a parallel with programming languages. Consider:
def sum1(array)
sum = 0
array.each { |e| sum += e }
sum
end
def sum2(array)
array.reduce(:+)
end
sum2 isn't just a different way to write the same thing. It's a construct that expresses a specific pattern of evaluation and aggregation. It doesn't describe what it's doing like sum1 does. It's more expressive than that. It's "clearer" once you learn it.Similarly (at least in the US) green means proceed/go/forward/continue and red means cancel/go back/stop/error. This is something that was learned, not something that was known by instinct.