Здравствуйте, Нomunculus, Вы писали:
Н>Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? ....
Н>И как бы вы ответили?
Что компьютер вообще ничего не знает, а программа для компьютера — это как пошаговый рецепт для приготовления какого-то блюда.
Многие и рады были бы испытать когнитивный диссонанс, но нечем.
Здравствуйте, Михаил Романов, Вы писали:
МР>Но мне такое описание не очень нравится тем, всё равно остался вопрос "а коробочки откуда?", и таки нужно делать следующий шаг объяснения. МР>А с привязкой к памяти вроде как выходит законченное объяснение...
Ну есть, как бы, два подхода. Один заключается в том, что язык программирования более-менее удобно описывает железо, а другой в том, что язык программирования, по мере возможности, математически-абстрактен, а возня с железом — это уже артефакт реализации.
Исторически мне ближе первый; все-таки я шёл от железа. Но на высокоабстрактом языке, типа условного Хаскеля, я вряд ли когда-либо буду программировать. Но кто-то ведь зашёл именно с той стороны, и тоже вполне хорошо себя чувствует...
Здравствуйте, Нomunculus, Вы писали:
Н>И как бы вы ответили?
Пошел бы с другой стороны.
1. Объяснение что такое переменная. Для чего она предназначена. Операции + — и присваиванием.
2. Объяснение что такое цикл. Для чего используется.
3. Объяснение как реализуется цикл.
Самое сложное здесь пункт 2. Но он и самый важный, чтобы все не только вместилось в мозг, но потом еще использовалось.
Здравствуйте, graniar, Вы писали: G>Вот да, лучше всего дать самые базовые основы, чтобы было представление, откуда ноги растут. G>Иначе в голове останется место для всякой полумистической чепухи.
Да-да, для начала нужно дать основы квантовой механики. Затем на её основе можно объяснить зонную теорию проводимости.
Потом можно показать устройство транзистора. Когда оно более-менее усвоится, показываем, как можно сделать на транзисторах логический элемент "или-не".
Потом собираем из них полусумматор, из полусумматоров — сумматор.
Показываем какую-нибудь из схем с быстрыми переносами.
И так далее — в общем, типичную институтскую программу по технической специальности. Правда, с одной оговоркой — 8 семестров по несколько предметов в каждом нужно запихать в один семестр одного предмета.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Нomunculus, Вы писали:
Н>И как бы вы ответили?
А сколько ей лет? Раннее обучение программированию — плохая идея, лет до 12 точно.
Нужно сначала знать в самых общих чертах устройство компьютера, как он работает, что это продвинутый калькулятор с памятью, в которой есть данные и коды команд.
А потом уже вводить переменные, циклы и функции.
Может даже показать какой-нибудь самый простой код на ассемблере (типа сложения чисел), а потом, после закономерного вывода "что-то сложно и непонятно", сказать, что поэтому придумали упрощенные языки, объяснить про компиляторы и интерепретаторы. И тогда уже Питон пойдет.
Хотя, ИМХО, Паскаль или Си гораздо лучше в качестве первого языка.
— Нет в мире справедливости, — простонал Билл, когда цепкие пальцы Смертвича впились в его плечо.
— Конечно, нет, — согласился Смертвич. — А ты как думал?
Здравствуйте, Нomunculus, Вы писали:
Н>Объяснил дочери, что надо перед циклом завести переменную, обнулить ее, и в цикле увеличения начального числа эту переменную тоже увеличивать на 1. Ну и вывести ее в результате. Н>Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"
Похоже она смысла самого понятия "переменная" не понимает. Также не понимает что такое алгоритм и какова суть алгоритма, который ты объясняешь.
Я сейчас примерно такие же задачи решаю: дочке семь недавно исполнилось. Фишка в том, что ты объясняешь сначала суть задачи, на пальцах, на нитках, на карандашах и т.п., а только потом расписываешь шаги, которые нужно проделать для её решения. Потом демонстрируешь процесс решения, а потом даёшь подобную задачу, для решения которой нужны такие же шаги. И в процессе также внимаетельно смотришь, чтобы ребёнок ничего не забыл и не перепутал.
Проблема учителя — проклятие знания, считай это термином. Когда ты демонстрируешь процесс решения задачи, ты сам того не замечая выполняешь несколько последовательных операций, не действий — действия отличаются от операций (это термины). В процессе этого ребёнок, который ещё не овладел этими действиями, не осознаёт их сути, либо вообще пропускает.
Наверное, хорошей аналогией для тебя будет обучение хотьбе — попробуй вспомнить, как твои дети училсь ходить. Если ты был достаточно наблюдательным, то наверное заметил, что ходить, оказывается, не так просто — это сложный процесс. При этом сейчас твои дети не замечают отдельных движений и связанных с ними сложностей — это уже не последовательность действий, сама хотьба перешла в разряд операций.
Всё сказанное выше — личное мнение, если не указано обратное.