Так устроены современные компиляторы. Как компилятор/интерпретатор должен воспринять переменную "int 123apple;", если int - целочисленный тип данных? А как понять вот это:
int a = 2;
int 2 = 5;
int c = 2 * a;
"c" будет равна 4 или 10? Как минимум - следующий кто будет читать ваш код может сойти с ума. А как максимум - можно залезть отладчиком под капот компилятора и посмотреть в подробностях почему так происходит.
а почему нельзя назвать переменную
2bombi? это ведь не должно вызвать тех же проблем