Кстати, к вопросу о сохранении корректности. При необязательности точек с запятой правильная программа правильной останется, а вот неправильная программа может стать правильной.

Допустим была неправильная программа, долно не буду изобретать:

## Код:
```
а ; ()
```


стёрли мы точку с запятой - и стала она синтаксически правильной:
## Код:
```
a()
```

Это не обязательно есть хорошо, потому что получается ошибка + ошибка иногда равно нулю. Каждый наверняка попадал в такую ситуацию и знает, что это плохая ситуация.