Современные языки программирования при образовании имен требуют выполнения некоторых правил. Почти каждый из них различает верхний и нижний регистры символов, запрещает пробельные символы (табуляция, пробел, перевод строки) и любые другие, помимо буквенно-цифровых и некоторых других (к примеру, символа подчеркивания).
Большое значение ограничения на длину идентификаторов перестали существовать.
Большинство языков разрешают записывать идентификаторы с помощью Unicode (юникод), но сохраняется традиция ограничения символами ISO8859-1 (ASCII). Также возможны дополнительные ограничения.
Стандарты языков C/C++ резервируют определенные диапазоны имен: глобальные идентификаторы, за которыми следует буква нижнего регистра, не должны начинаться с символов str, помимо этого не должны начинаться с символа подчеркивания или совпадать с идентификаторами пространства имен std.
Для того, чтобы писать надежный, корректный код, нужно помнить об этих ограничениях.