Поясняет редакция «Кода»:
Это мем с кадрами из фильма «Начало» (Inception). В верхнем кадре герой в исполнении Леонардо Ди Каприо просит передать ему соль. В нижнем кадре герой в исполнении Киллиана Мёрфи спрашивает в ответ: «Передать по значению или по ссылке?»
В обычной жизни, когда кто-то просит передать соль за обеденным столом, это простая и понятная просьба, и мы ожидаем, что другой человек просто возьмёт солонку и передаст её нам.
В программировании есть концепция передачи параметров в функции двумя основными способами: по значению pass-by-value и по ссылке pass-by-reference. Рассмотрим пример на C++, потому что этот язык чётко различает передачу параметров по значению и по ссылке.
Когда аргумент передаётся по значению, функция получает копию значения аргумента. Любые изменения, которые происходят с этим параметром внутри функции, не влияют на оригинальное значение вне функции:
void increment(int a) {
a = a + 1;
}
int main() {
int x = 5;
increment(x);
// x всё ещё равно 5
}
Когда аргумент передаётся по ссылке, функция получает доступ к оригинальному значению аргумента. А изменения, которые происходят с этим параметром внутри функции, влияют на оригинальное значение вне функции:
void increment(int &a) {
a = a + 1;
}
int main() {
int x = 5;
increment(x);
// x теперь равно 6
}
Фильм «Начало» сам по себе сложен и многослоен, его сюжет связан с проникновением в сны и множественными уровнями реальности. Использование кадров из этого фильма отдельно добавляет комический эффект: простая обыденная просьба встречает уточняющий вопрос с переходом к технической терминологии.