История изменений
Исправление
qulinxao,
(текущая версия)
:
Как правило, при профессиональном программировании часто приходится иметь дело с понятием «адреса». Универсальные языки программирования всячески стараются избегать этого понятия, считая его чисто «машиным», из-за чего возникают свои специфические трудности. Частично их преодолевают, вводя понятие «указателя», просто алгоритмического аналога адреса, а частично - вводя понятие «разыменования». Это уже более сложное понятие, особенно если в языке сложная система описания типов переменных. Дело в том, что имена переменных, скажем a и b, в разных контекстах надо трактовать по разному. Ясно, что если мы напишем оператор a=b , то a и b означают разные вещи: b относится к значению переменной b, а а указывает, именует, адресует переменную a и не имеет никакого отношения к значению этой переменной. Если мы хотим одинаково хорошо манипулировать и значениями переменных, и их адресами, именами и т.д. ( а при программирование на низшем уровне это необходимо) мы должны точно говорить, что есть что. Наиболее логичное ( или по крайней мере чёткое) решение принято, например, в языке
ВЫРЕЗАННО ЦЕНЗУРОЙ, где употребление имени переменной всегда сопоставляется с её внутреним именем, адресом. Для ссылки же на значение переменной используется операция «точка». В этом языке оператор a := b означает, что переменная a принимает значение адреса переменной b . Традиционное же присваивание записывается так:a := .b
Хотя такая система крайне простая и чёткая, в языке Си она использованна не была. Отчасти, очевидно, из-за того, что профессионалы спокойнее относятся к контекстному толкованию и не хотят видеть в программе «лишнии» символы: ведь их в конце концов придётся самим и писать .
...
Так как
ВЫРЕЗАННО ЦЕНЗОРОМ2, ЦЕНЗОРу1 выговор с занесением за халатностьбыл универсальным языком, а универсальные языки в силу своей природы тяготеютк системам контекстной зависимости и неявного разыменования, то в Си остался именно такой подход.
для новичков было бы удобней ежель все унарные операции были бы однофексными ( пре либо пост ( пост++/-- и пре++/-- можно отдельно или для чистоты только один , ну или чётче , что сначала все одни потом все другие)) тогда строка парсилась в разы проще , однако и сверхэксплуатация таковой нотации была бы.
Исходная версия
qulinxao,
:
цитаты (угадай откуда)
Как правило, при профессиональном программировании часто приходится иметь дело с понятием «адреса». Универсальные языки программирования всячески стараются избегать этого понятия, считая его чисто «машиным», из-за чего возникают свои специфические трудности. Частично их преодолевают, вводя понятие «указателя», просто алгоритмического аналога адреса, а частично - вводя понятие «разыменования». Это уже более сложное понятие, особенно если в языке сложная система описания типов переменных. Дело в том, что имена переменных, скажем a и b, в разных контекстах надо трактовать по разному. Ясно, что если мы напишем оператор a=b , то a и b означают разные вещи: b относится к значению переменной b, а а указывает, именует, адресует переменную a и не имеет никакого отношения к значению этой переменной. Если мы хотим одинаково хорошо манипулировать и значениями переменных, и их адресами, именами и т.д. ( а при программирование на низшем уровне это необходимо) мы должны точно говорить, что есть что. Наиболее логичное ( или по крайней мере чёткое) решение принято, например, в языке
ВЫРЕЗАННО ЦЕНЗУРОЙ, где употребление имени переменной всегда сопоставляется с её внутреним именем, адресом. Для ссылки же на значение переменной используется операция «точка». В этом языке оператор a := b означает, что переменная a принимает значение адреса переменной b . Традиционное же присваивание записывается так:a := .b
Хотя такая система крайне простая и чёткая, в языке Си она использованна не была. Отчасти, очевидно, из-за того, что профессионалы спокойнее относятся к контекстному толкованию и не хотят видеть в программе «лишнии» символы: ведь их в конце концов придётся самим и писать .
...
Так как
ВЫРЕЗАННО ЦЕНЗОРОМ2, ЦЕНЗОРу1 выговор с занесением за халатностьбыл универсальным языком, а универсальные языки в силу своей природы тяготеютк системам контекстной зависимости и неявного разыменования, то в Си остался именно такой подход.для новичков было бы удобней ежель все унарные операции были бы однофексными ( пре либо пост ( пост++/-- и пре++/-- можно отдельно или для чистоты только один , ну или чётче , что сначала все одни потом все другие)) тогда строка парсилась в разы проще , однако и сверхэксплуатация таковой нотации была бы.