Во.. кстати...
Про классический треугольник в языке. Как только его не пишут (вариантов терминологии полно - всякие денотаты, концепты...). В этой книжке так:
"Значение — обозначаемый именем предмет ими класс предметов
Смысл — способ, каким имя обозначает предмет (информация о предмете).
Имя — языковое изображено, обозначающее предмет."
Не буду копипастить разъяснения афтара. Сами почитайте три абзаца от слов "Каждое имя имеет значение и смысл" и до картинки. Сцылка:
http://exsolver.narod.ru/Books/Other/Logica/c5.html
Объяснения обычные (в смысле похожие объяснения я видел у других авторов, скажем, у Чёрча).
Может, кому интересно? Давно хотелось обсудить - неспешно, вдумчиво. Никакого сценария обсуждения у меня нет, и свое мнение толком не сформировано. Скажу только одно: интуитивно мне эта схема очень не нравится. Но интуиция меня, бывает, подводит.
Возможно, это привычка программиста. Кто не программист, поясню: у нас повсюду такие вещи состоят не из трех частей, а из двух:
1. Есть адрес, который указывает где что-то лежит.
2. Есть это самое "что-то".
Причем, адрес тоже где-то лежит. Может быть, лежит только временно. Может быть адрес адреса. Могут быть циклические ссылки (1 указывает на 2, 2 указывает на 1). И куда тогда девать этот самый треугольник?
В книжке приводится пример:
"Разные выражения, обозначающие один и тот же предмет, имеют одно и то же значение, но разный смысл (т е. смысл выражений “4”, “2 + 2” и “9 - 5” различен)."
Да ну нафик. Это три адреса: "4", "2 + 2", "9 - 5". Первый адрес - указывает на цифру. Два других - на пару цифр и операцию. Если к этим трем адресам применить некую процедуру: рассматривать их как инструкцию по вычислению, то можно получить число. Одно и то же. Но ведь можно и другую процедуру применить. Скажем, засунуть в какое-нибудь уравнение.
Как-то так... мутно все, не могу сформулировать.
"Значение — обозначаемый именем предмет ими класс предметов
Смысл — способ, каким имя обозначает предмет (информация о предмете).
Имя — языковое изображено, обозначающее предмет."
Не буду копипастить разъяснения афтара. Сами почитайте три абзаца от слов "Каждое имя имеет значение и смысл" и до картинки. Сцылка:
http://exsolver.narod.ru/Books/Other/Logica/c5.html
Объяснения обычные (в смысле похожие объяснения я видел у других авторов, скажем, у Чёрча).
Может, кому интересно? Давно хотелось обсудить - неспешно, вдумчиво. Никакого сценария обсуждения у меня нет, и свое мнение толком не сформировано. Скажу только одно: интуитивно мне эта схема очень не нравится. Но интуиция меня, бывает, подводит.
Возможно, это привычка программиста. Кто не программист, поясню: у нас повсюду такие вещи состоят не из трех частей, а из двух:
1. Есть адрес, который указывает где что-то лежит.
2. Есть это самое "что-то".
Причем, адрес тоже где-то лежит. Может быть, лежит только временно. Может быть адрес адреса. Могут быть циклические ссылки (1 указывает на 2, 2 указывает на 1). И куда тогда девать этот самый треугольник?
В книжке приводится пример:
"Разные выражения, обозначающие один и тот же предмет, имеют одно и то же значение, но разный смысл (т е. смысл выражений “4”, “2 + 2” и “9 - 5” различен)."
Да ну нафик. Это три адреса: "4", "2 + 2", "9 - 5". Первый адрес - указывает на цифру. Два других - на пару цифр и операцию. Если к этим трем адресам применить некую процедуру: рассматривать их как инструкцию по вычислению, то можно получить число. Одно и то же. Но ведь можно и другую процедуру применить. Скажем, засунуть в какое-нибудь уравнение.
Как-то так... мутно все, не могу сформулировать.
no subject
как переменная она существует только во время компиляции.
в жабе нет различия между ссылкой и указателем, так как там все через указатели.
для C++ ссылка это альтернативное имя объекта
например:
int* x;
int* & y = x;
x = new int(0);
*y = 1;
std::cout << x << std::endl;
результат - печать '1'. Т.е. x и y - это имена одной и той же переменной.
no subject
ссылками один и тот же объект можно называть по-разному.
например,
struct a_t {
int x;
}
a_t y;
int & z = y.x;
// Строка 1.
std::cout << y.x << std::endl;
// Строка 2.
std::cout << z << std::endl;
Строка 1 и строка 2 компилятся в один и тот же байт-код. И если заменить в проге все z на y.x, то ничего не изменится в EXE.
no subject
no subject
“самое глубокое озеро мира”
“the most deep lake of the world”
имеют одинаковый смысл и разное имя. Если правильно понимаю..
no subject
int* x;
int* & y = x;
дело в том, что код генерируется все-таки разный для
*x = 0 и *y = 0.
В первом случае происходит одно обращение к адресу, во втором - два. Т.е. технически y - это вовсе не другое имя, не равноценный алиас. Это просто сокращение. В C писали бы так:
int* x;
int** y = &x;
*x = 0;
**y = 0;
В C++ сделали такую хрень как ссылка, это указание каждый раз, когда написано "y" делать автоматически еще одну операцию "*", которую не писать каждый раз. Потому ссылки вообще-то "дороже".
Вот ежели в вашем примере всякий раз автоматически переводить вторую фразу на русский перед использованием - это будет что-то типа того...
no subject
Если так:
взять две одинаковые по содержанию функции get_baikal(), только одна называется get_baikal(), а вторая - get_most_deep_lake_in_the_world() с одинаковым содержимым (прверкой на 1620).
Так вот, имя - это одно из get_most_deep_lake_in_the_world()/get_baikal(), смысл - содержание функции, предмет - результат обработки.
Где-то так.
Но я в этих треугольниках не разбираюсь, только пишу как понял по-своему.