На прошлой неделе я работал с 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 они все равно разберутся сами.