На прошлой неделе я работал с 11-летней студенткой Дженни, которая плохо знала программирование. Проведя несколько дней в Scratch, она теперь создавала игру в стиле Flappy Bird на JavaScript, используя WoofJS framework.
"Это продвинутое кодирование?" - спросила Дженни.
Пытаясь успокоить ее, я указал на некоторые функции JavaScript, которые она использовала в рамках WoofJS: «Конечно, это так. Смотрите, вы используете объектно-ориентированное программирование, это тема для продвинутого уровня средней школы, а здесь вы используете сложную булеву алгебру ».
Дженни улыбнулась. Ей понравилась эта игра, в которой я назвал концепции, которые она использовала, причудливыми техническими терминами.
«А здесь я чуть не забыл. Вы используете не менее 1, 2, 3… 15 анонимных функций! »
Я подумал об этом минуту. Это был второй день программирования Дженни на JavaScript и Woof. Ей 11. Кто научил ее пользоваться анонимными функциями? Конечно, это был не я.
В информатике анонимная функция считается довольно сложной темой. Многие студенты, изучающие информатику в колледжах, не изучают ее до старших курсов, если вообще изучают ее. Я хотел проверить, насколько хорошо Дженни знала, о чем говорила.
«Дженни, все это называется анонимными функциями. Вы знаете, что они делают? »
Дженни посмотрела на свой код. «Эм, я не уверена. Я просто использую их, когда хочу, чтобы что-то произошло ».
Я смеялся. Это не определение, которое можно было бы сдать на экзамене по информатике, но это было твердое рабочее определение, которое явно позволяло ей использовать их эффективно.
Примите беспорядок
Изучение разговорного языка - будь то английский, испанский или китайский - - сложный процесс. В лучшем случае изучение компьютерного языка - тоже беспорядок.
Представьте, что было бы, если бы вам пришлось понимать грамматику - существительные, глаголы, структуру предложений и пунктуацию - до того, как вам разрешили говорить на своем родном языке. Часто именно так выглядит обучение программированию. Сначала давайте узнаем о кодировании - переменные, операторы if, типы - а затем приступим к кодированию.
Но это совсем наоборот. Изучение языка, как разговорного, так и компьютерного, должно быть, во-первых, практической деятельностью, а во-вторых, аналитической деятельностью. Это означает, что умышленно не преподают такие понятия, как анонимные функции, прежде чем позволить учащимся использовать их.
Приведет ли это к тому, что ученики поначалу ошибаются? Вы делаете ставку.
Смогут ли студенты запутаться и расстроиться? Без сомнений.
Смогут ли студенты произносить словарные определения? Без шансов.
Но, несмотря на все это, беспорядочное обучение - общая черта проектной среды обучения - более эффективно и значительно увлекательнее.
WoofJS
К сожалению, не все языки программирования подходят для такого подхода к обучению без вмешательства пользователя. Большинство языков программирования, включая HTML, CSS и JavaScript, имеют синтаксис, из-за которого учащимся невероятно сложно понять его методом проб и ошибок.
Вот почему я так взволнован WoofJS, фреймворком JavaScript, который позволяет студентам изучать JavaScript беспорядочно. В Woof студенты могут свободно играть с продвинутыми концепциями программирования методом проб и ошибок, никаких предварительных условий не требуется.
Вместо того, чтобы часами запоминать и гуглить новый синтаксис, Woof предоставляет студентам понятный интерфейс, позволяющий учиться через исследования и эксперименты.
Так что же в трюке с обучением анонимным функциям 11-летних? Не надо. С Woof они все равно разберутся сами.