мой баттхёрт от мейнстримных языков программирования продолжается. сегодня я подумал о сабже и взбугуртил так, что мне совершенно расхотелось писать на C (но всё равно пришлось).
возьмем, к примеру, такой код:
int return; // переменная с именем return
int ;; // переменная с именем ;
int an int; // переменная с именем an int
return = 0; // error
; = 0; // error
an int = 0; // error
грамматика C в основном регулярна, в выражении
; = 0;
ровным счётом никакого труда не составляет определить, что ;
— это, блджад, имя переменной, просто по расположению этого символа. ошибка на return = 0;
— это вообще позор, неужели так сложно отличить переменную от ключевого слова? ну а про идиотию с запретом пробела в идентификаторах даже и говорить не хочется, особенно учитывая, что в Алголе-58 это было разрешено, а в потомках выпилили — нинужна, видите ли!точно такая же петрушка имеет место и в других популярных языках: C++, Java, педон и остальная пыхоплеяда... хорошо хоть запрет иметь идентификаторы с одинаковым именем, но разными типами потихоньку уходит в прошлое (и то в основном только для функций).
у меня, собственно, остаётся только два вопроса:
- зачем так сделано?
- существуют ли языки, не калькирующие этот маразм?