Информация об изменениях

Сообщение Re[5]: Операторы точка и стрелка от 06.02.2022 21:37

Изменено 06.02.2022 21:39 Андрей Тарасевич

Re[5]: Операторы точка и стрелка
Здравствуйте, Shtole, Вы писали:

S>Здравствуйте, Андрей Тарасевич, Вы писали:


S>>>Спрашивается: если этот язык так адски колбасило на ранних стадиях, почему же стрелка дожила до наших дней? Вернее, почему автор ответа не понимает, что история языка, приводимая им как аргумент, служит ещё и аргументом того, что на историю в этом случае опираться вообще нельзя?


АТ>>Не понимаю этого тезиса. Что сейчас, что тогда вопросы обратной совместимости и поддержки легаси кода играли свою роль в принятии решений об удалении каких-то фич языка. В тем времена, полагаю, все было даже проще: уже просто потому, что какой-нибудь "Боб" из соседнего кубика использовал оператор `->` в своем коде, его могли оставить в языке.


S>Так ведь с тем же успехом «Боб» мог использовать имя поля из одной структуры для указания оффсета в другой. (Я про такое даже не знал, поэтому за исторический экскурс спасибо). Но эту же возможность выкинули. Я из этого делаю прямо противоположный вывод, что дело в не том, как там было исторически, а в том, что невыкинутые фишки, в т.ч. разделение селекторов на точку и стрелочку было чем-то полезным. Я и предположил, чем: удобством видеть, где указатели, а где экземпляры.


Да, это так. Но чисто интуитивно я предполагаю, что даже на ранних стадиях развития С все таки "мейнстримовым"/преобладающим использованием оператора `->` было его более "ортодоксальное" использование — то есть использование со строго типизацией, такое, с которым мы работаем сегодня.

С другой стороны, язык С, описанный в CRM, обладал и другими вопиющими несовместимостями с K&R: операторы `+=` записывались "наоборот" — как `=+` и т.п. А это, как мне предполагается, тоже довольно популярные операторы. Так что вполне возможно, что я преувеличиваю роль обратной совместимости в принятии решений по таким вопросам. Вполне возможно что "ненужный" оператор `->` сохранился в языке просто вследствие своего удобства. Это — постфиксный оператор, т.е. в отличие от префиксного `*` его применение не требует дополнительных скобок. Это — уже хорошая причина для его сохранения.
Re[5]: Операторы точка и стрелка
Здравствуйте, Shtole, Вы писали:

S>Здравствуйте, Андрей Тарасевич, Вы писали:


S>>>Спрашивается: если этот язык так адски колбасило на ранних стадиях, почему же стрелка дожила до наших дней? Вернее, почему автор ответа не понимает, что история языка, приводимая им как аргумент, служит ещё и аргументом того, что на историю в этом случае опираться вообще нельзя?


АТ>>Не понимаю этого тезиса. Что сейчас, что тогда вопросы обратной совместимости и поддержки легаси кода играли свою роль в принятии решений об удалении каких-то фич языка. В тем времена, полагаю, все было даже проще: уже просто потому, что какой-нибудь "Боб" из соседнего кубика использовал оператор `->` в своем коде, его могли оставить в языке.


S>Так ведь с тем же успехом «Боб» мог использовать имя поля из одной структуры для указания оффсета в другой. (Я про такое даже не знал, поэтому за исторический экскурс спасибо). Но эту же возможность выкинули. Я из этого делаю прямо противоположный вывод, что дело в не том, как там было исторически, а в том, что невыкинутые фишки, в т.ч. разделение селекторов на точку и стрелочку было чем-то полезным. Я и предположил, чем: удобством видеть, где указатели, а где экземпляры.


Да, это так. Но чисто интуитивно я предполагаю, что даже на ранних стадиях развития С все таки "мейнстримовым"/преобладающим использованием оператора `->` было его более "ортодоксальное" использование — то есть использование со строго типизацией, такое, с которым мы работаем сегодня.

С другой стороны, язык С, описанный в CRM, обладал и другими вопиющими несовместимостями с K&R: операторы `+=` записывались "наоборот" как `=+` и т.п. А это, как мне предполагается, тоже довольно популярные операторы. Так что вполне возможно, что я преувеличиваю роль обратной совместимости в принятии решений по таким вопросам в те времена. Вполне возможно что "ненужный" оператор `->` сохранился в языке просто вследствие своего удобства. Это — постфиксный оператор, т.е. в отличие от префиксного `*` его применение не требует дополнительных скобок. Это — уже хорошая причина для его сохранения.