Здравствуйте, Cicero, Вы писали:
C>Почему:
C>Говоря двумя словами: потому что в Паскале минимум неоднозначности синтаксиса.
Это шутка такая, да?
Точку с запятой можно ставить перед end и после begin, а можно не ставить. Но нельзя — перед else. Очень логично, да.
Одиночные предложения можно заворачивать в begin-end, а можно не заворачивать. Сначала рассказываем, как ставить одно предложение после if или внутри while, а потом переучиваем на то, что их надо ставить чуть ли не всегда.
Зато repeat — until почему-то само образует блок. "Дети, это невозможно понять, это надо запомнить".
Всякие read/writeln могут иметь первым параметром файл, а могут и не иметь. Следите за руками и не удивляйтесь, что вообще перегрузки функций нет, а тут она почему-то есть. Что не позволено простому быку, позволено Юпитеру. Кстати, что это за синтаксис такой write(a:3:2), и почему он работает только тут?
Ещё и функции с переменным числом параметров вдруг самозародились? (Я про Паскаль, а не про всякие поздние Delphi.)
Синтаксис цикла — for i := 1 to 10, например. Сначала ":=" несловесной лексемой, затем почему-то "to" — словесной. А назад — downto. Кстати, если я хочу шаг 2? "Петрику, слухай пісню про комбайн"?
if a=1 or b>0... ой, не то получилось. Надо подвыражения в скобки заключать, потому что у or почему-то приоритет выше.
Идентификаторы регистронезависимые. Потом долго пытаешься понять, почему boo и Boo начали неожиданно путаться. И не надо рассказывать, что плохое именование. Тот, кто только учится, в своём коде не успевает за эти следить.
И это только то, через что я сам "продирал" своих учеников, когда им было необходимо научиться этому кошмару.
C>ИМХО это научит контролировать код более строго.
Сказки-то какие, страсть
Чесслово — по сравнению с Паскалем даже Go лучше. И вот там, кстати, настоящая осмысленная строгость (порой даже слишком).
Вирт, кстати, часть этих огрехов Pascal исправил, создав Modula. Но упёртым баранам из всяких Borland было на это плевать.