Fri, 27 May 2005 18:59:35 +0400 Dimmy Timchenko wrote to Harry Zhurov:
DT>>> Hо case sensitivity - штука скорее вредная, чем полезная.
HZ>> Очень полезная и удобная. Она позволяет использовать одни и те же HZ>> слова в разном исполнении,
DT> Что ж в этом хорошего? Слова "хлеб", "Хлеб" и "ХЛЕБ" значат одно и то же, DT> независимо от регистра. :)
Вот именно, что в программе может быть несколько сущностей, относящихся к понятию "хлеб". И, соответственно, например, "хлеб" - глобальное имя, "Хлеб" - локальное, "ХЛЕБ" - макрос. При такой нотации я сразу вижу по написанию имени, что это такое. :-Р
HZ>> которые при принятой нотации одним своим видом "говорят", что за HZ>> сущность скрывается за именем.
DT> А вот это никто не мешает делать и в case-insensitive языках. Более того, DT> это делать необходимо.
Только тут ты можешь ошибок наделать, и компилятор тебе в этом никак не поможет. И смысла особого нет отбивать регистр, если он не несет значения.
HZ>> Все это упрощает придумывание имен - придумывание хороших, понятных, HZ>> удобных имен - очень непростая задача.
DT> Да не такая сложная. Просто нужно хорошо владеть языком. Русским, DT> английским - человеческим языком. И понимать, какую именно сущность должно DT> обозначить это имя, и какое именно слово или слова отразят её наилучшим DT> образом.
Это смотря какая у тебя программа. Когда она делается достаточно большой, придумывание хороших имен уже делается непростой задачей. Главная трудность в том, что решение неформализуемо. И сенситивность регистра тут кстати.
DT> И здесь определённая близость ЯВУ к естественному языку помогает. Есть DT> даже такое направление, э-э, программистско-философской мысли :) - literate DT> programming.
Может быть. Не буду углубляться в философию, мы тут, я понял, про императивные языки говорим, а для них все несколько не так.
HZ>> Идентификатор - это имя. Имя в языке, на котором пишут и читают, но не HZ>> разговаривают.
DT> Идентификатор - не просто имя, это _слово_.
Идентификатор - не слово. Он может состоять из нескольких слов человеческого языка - например, GetWordCount.
DT>>> Кстати и некоторая близость ЯВУ к естественным языкам полезна: если DT>>> идентификаторы подобраны правильно, операторы (statements) Ады или DT>>> Паскаля читаются почти как фразы на английском и получается хорошая DT>>> самодокументируемость.
Самодокументируемость получается, повторяю, из усилий программиста, не более того.
DT>>> Оператор же на C/C++ произнести обычно невозможно.
HZ>> Какой оператор?
DT> Statement. "Фраза" языка. Тот же условный оператор. Сравни:
DT> if not Ready or Busy then exit;
DT> if (!ready || busy) exit;
Естественно второй вариант гораздо лаконичнее и читабельнее. Причем сразу видно, какое "или" используется - логическое или битовое. А из этого "or" это еще надо понять, какое это "или".
В общем, дискуссия свелась к "одни люди считают, что бить собак можно, другие - что нельзя. И то, и другое недоказуемо". Остаемся при своих, предлагаю дальше не спорить - мне тебя не переубедить, тебе меня тоже. :)