С косным взрослым учеником можно и нужно упрощать до банальной арифметики, но даже давая ученику достаточно времени подумать, и даже точно регулируя количество подсказок, подталкиваний, если ученик не умеет думать, приходится переставать давать точную науку и возвращаться к 1+1. И даже говоря про 1+1 приходится с горестью или радостью наблюдать, осознает человек или нет это самое 1+1 в контексте преподаваемого предмета, происходит ли в нем внутренняя работа по сопоставлению 1+1 и того, о чем шла речь до того, как мы опускались к тупой арифметике.
Ученику можно разжевать, но он все равно не усвоит, если его усваивающий аппарат за годы бездействия не шевелится. Ученик будет слушать слова, эмоции, но они не будут входить. Задача учителя найти малую брешь в этом заржавелом механизме, вложить туда еду, и наконец услышать чавкание, и затем добиться того, чтобы ржавое животное в конце зашевелилось и само активно вышло на поиски еды, почувствовав ее необходимость.
Это я к тому, что случилось мне тут обучать одну особу средних лет азам программирования. Особа — женщина 36 лет, уже сложившаяся, с юридическим образованием и практикой, но вынужденная переквалифицироваться, а ее окружение (муж, тесть и остальные) — программисты. Поэтому чтобы ей не скучать дома при работающем муже, решили ее приучить к программированию. Оба родственника не осилили, но они не осилили бы научить программированию и золотого медалиста физ.-мат. школы, и тут вот я. И вот она стала приходить, и я педалю свое, а рядом она проходит то codecademy, теперь вот оказывается и khan academy очень недурственный курс предлагает.
Медленно, но со скрипом дело идет. Регулярные флешбеки и откаты назад...
Прорыв в осознании что такое вызов функции в языке высокого уровня она поняла только после того, как я рассказал ей про ассемблер, операции с регистрами, про концепцию стека и передачу параметров и возврат параметров на стеке (без требования понять полностью что-либо кроме самой концепции). До этого предыдущие 3 или 4 самых разных классических подхода оказались безуспешными.
Понятие "выражение" (expression) и порядок его вычисления она поняла после того как я заставил ее на бумаге с карандашом проделать упражнение по разбору упражнения в синтаксическое дерево, по переводу этого дерева в static single assignment (без объяснения что это такое), и потом обратно из SSA в дерево и далее в выражение на высоком уровне.
Понятие переменная и scope она поняла, но не до конца, но в какой-то мере, а когда поняла про function application, про variable shadowing, ей стало немного легче.
Все это подтверждает мою скромную гипотезу, что средняя женщина вообще на низком уровне (ассемблер и машинные коды) работают легче, вопреки распространенному мнению. Я связываю это с абстрактностью мужского и конкретностью женского мышления.