Здравствуйте, Mystic, Вы писали:
M>Хотелось бы пообсуждать такую тему, как удобство синтаксиса языка программирования. Кроме того, что это дело вкуса и привычки, должны быть какие-то неизменные критерии. Найти такой информации я не смог, что могу предложить навскидку:
M>1) Односимвольные ошибки должны в большинстве случаев приводить к ошибкам компиляции, в крайнем случае, к предупреждениям. Вроде бы понятно, все мы ошибаемся. Если результат опечатки приходится отлавливать в отладчике, это грустно.
M>2) Нагрузка на символы. Нехорошо, когда один и тот же символ в одном и том же блоке может выполнять разную семантическую нагрузку. Это усложняет восприятие программы и может ввести неоднозначности.
M>3) Неоднозначности. Понятно, что лучше, если их нет
M>4) Простота разработки CASE-средств и трансляторов. Пункты 2-4 перекливаются
M>5) Соотношение количества символов/количество букв в тексте. Или, как вариант, соотношения идентификаторы/символьные лексемы Большое количество символов приводит к тому, что текст программы представляется криптологическим изысканием. Малое количество специальных символов приводит к обратному эффекту, когда за словами не видно сути (COBOL).
M>6) Семантическая нагрузка на один символ текста. Перекликается с п. 5.
M>7) Максимум модуля разности между двумя смежными строками. Не совсем приятно, когда одна строка трисимвола, другая шестьдесят. Потом опять три, потом опять шестьдесят. Слишком неровный правый край.
M>8) Длина часто используемых операторов. Чем короче, тем лучше (долгло набирать)
M>Что я пропустил? что бы добавили вы? Ваши предпочтения по указаным пунктам? Приоритеты? Что в синтаксисе какого языка вам больше всего мешало? Что, наоборот, нравилось?
Эта задача уже была решена несколько (10-20) лет назад — идеальный синтаксис уже изобретен. Самая главная фишка заключается в том, что язык должен порождаться контекстно свободной грамматикой (а если это возможно в каких-то простых случаях, то даже регулярной грамматикой). Вот и все.
Смотри
http://www.inr.ac.ru/~info21/cpascal/cp_report_1.4_rus.htm