Пояснительная бригада: не просите программиста передать вам соль

Пояснительная бригада: не просите программиста передать вам соль

Поясняет редакция «Кода»:

Это мем с кадрами из фильма «Начало» (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
}

Фильм «Начало» сам по себе сложен и многослоен, его сюжет связан с проникновением в сны и множественными уровнями реальности. Использование кадров из этого фильма отдельно добавляет комический эффект: простая обыденная просьба встречает уточняющий вопрос с переходом к технической терминологии.

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно