«Две самые сложные вещи в программировании – это именование сущностей, валидация кэша и ошибка на единицу» (Джефф Этвуд)
Что общего у Дракариса и маленького розового пони? Ммм? А если рядом с Дракарисом будет стоять Дрогон. А рядом с пони еще пони? Не очевидно?
Древние времена. Пастух выгоняет стадо овец. И ему надо понять, что вечером стадо вернулось в полном составе. Не надо ли идти искать заблудшую овечку. Времена настолько древние, что люди еще не научились считать. Нельзя просто заранее посчитать, что овечек было 34 и пересчитать их по возвращении.
Что делал пастух? Он брал гору камешек и когда овцы выходили из загона, он перекладывал камешки из одной кучки в другую. А когда они возвращались – эту кучку по одному камешку возвращал обратно.
Если вся кучка закончилась – значит все в порядке и можно идти пить кумыс.
Он придумал понятие взаимно-однозначного соответствия между множеством овец и множеством камушков!
Кстати, слово calculus произошло от латинского calculi – камешек.
Это сейчас мы узнаём что такое число в самом раннем возрасте. А человечество шло к этому тысячи лет.
Было понятно, что между кучкой камней и стадом овец есть что-то общее. Но что именно – было понять прям суперсложно.
Сложнее только понять, кто те люди, кто ходят на концерты Тимати 😂😂😂
Как древние австралийские племена обменивали коренья на угрей? Уверен, теперь ты знаешь ответ. Просто в ряд выкладывали один на против другого. Биекция, ёмаё!
Со временем появились эталоны счета. Сначала естественные. Пара глаз. Пять пальцев на руке… Потом искусственные: специальные палочки, уже знакомые камешки и т.д.
Поначалу числа были чем-то более конкретным. «Столько же, сколько лун на небе» (Т.е. одна). «Сколько глаз», «четрые» в каких-то племенах было «пальцы страуса».
Т.е. люди всегда «перебирали» что-то конкретное и выстраивали взаимно-однозначное соответствие с чем-то другим конекретным.
И мало по малу, с огромным трудом появилась абстракция под названием «число». Которая существует сама по себе.
К чему я это всё пишу?
К тому, что сделать мысленное усилие, увидеть абстракцию и еще ее как-то назвать – это действительно сложная задача.
А программистам выделением абстракций приходится заниматься чуть ли не каждый день. Поэтому абстрактное мышление для нас – как сиськи для Кардашьян. Хлеб насущный)
И одно из отличий хорошего программиста от индуса – это умение абстрактно мыслить, а не знание языка программирования или новомодной технологии.