Вот мой взгляд на это после пары неудачных и довольно неплохих попыток:
Программирование - это решение проблем.
Начните с конкретных вещей, которые запрограммированы и используются ими каждый день - интернет-браузер (facebook), мобильный телефон, кассовый аппарат и т. Д. Получите их, чтобы привести множество примеров. Убедитесь, что все эти вещи имеют своего рода компьютер. Сердцем компьютера является процессор.
Процессор похож на очень быстрый, но очень тупой рабочий. Если вы дадите ему несколько инструкций, он сделает их именно так, как вы говорите. Он не будет делать ничего лишнего и не скажет вам, если что-то, что вы сказали, сделать неправильно. Этот процессор делает все, хотя - если вы скажете ему точно, как это сделать, он может сделать телефонный звонок или поместить фотографию в электронное письмо.
Спросите ее, как она скажет очень быстрому, но очень тупому работнику купить банку содовой из автомата по продаже газировки Когда она начнет описывать шаги («Положите деньги в машину и нажмите кнопку»), начните анализировать их как программу («Что такое деньги? Как мне положить их в машину? Когда я кладу деньги в машину и нажимаю кнопка в то же время, ничего не происходит. "). Если у вас есть доска, начните слева с ее первым набором инструкций. Когда она пересмотрит их, разместите новый большой список с правой стороны. Когда у вас есть хороший набор инструкций, начните обобщать фигуры («Извлеките деньги из своего кармана и выньте соду из лотка с похожим звуком - какие части одинаковые / разные?») Возьмите обобщения и поместите их в середину и вычеркните части, которые они теперь охватывают. Постарайтесь со временем связать кусочки, чтобы она соответствовала ее оригинальным инструкциям, вроде вызовов функций. Другие хорошие упражнения: отправьте письмо по почте, пройдите через дверь, нарисуйте круг / квадрат / треугольник.
Таким образом, программирование - это решение проблем: разбивание проблем на части, выявление общих частей и группирование этих частей для решения проблем. Вскоре вы обнаруживаете, что некоторые детали являются общими для многих проблем, а затем вы начинаете собирать детали для решения проблем, о которых вы даже не подозревали.
Хорошо, к этому моменту она может понять, но ей, вероятно, скучно. Продолжайте с набором классных примеров программирования. Шейдеры и связанный с ними визуальный код легко продемонстрировать - вы можете создать изображение и начать вносить в него изменения с очень небольшими изменениями кода. Если она выразила интерес к Facebook, пообщайтесь с Facebook через REST, чтобы увидеть данные друзей друзей (ее 6 градусов). Если ей нравятся видеоигры, покажите пару демо-версий игр с открытым исходным кодом вместе с несколькими фрагментами их кода и тем, как они помогают работе игры. Завершите это, показав пару бесплатных инструментов и ресурсов, которые она могла бы исследовать дома. (Python, C # и т. Д.)
Мои неудачные попытки: попытка объяснить вычисление числа Пи (они спрашивали), настольная игра C-Jump http://c-jump.com/ (они не получили его, а инструкции глючили) и живое кодирование 2d игра (просто не мог удержать интерес, независимо от того, как мало шагов я делал между демонстрациями).
Удачи!