Why do we have lots of restrictive validation rules?

For datasets, I get the following validation error for the name of the dataset:
"The first character must be alphabetical."

Why do need to be this restrictive? I see no reason we cannot start
the name with a number. Could someone explain all these seemingly
artificial limitations? And list all of them clearly in the
documentation?

KNut