Изучение понятий языка программирования
Как учитель-студент, я очень заинтересован в том, насколько эффективны такие "мини-языки", как Scratch, Logo, Alice и Lego, в обучении ученика основным понятиям программирования, таким как переменные, функции и циклы.
Является ли один "мини язык" лучше другого для преподавания этих основных понятий?
4 ответа
Это очень сложный вопрос. Logo и Smalltalk (чтобы назвать только два очевидных примера) были первоначально разработаны специально для использования в обучении детей программированию. Однако вы быстро сталкиваетесь с проблемой: трудно определить язык, который достаточно прост, чтобы маленький ребенок мог его полностью понять, и все же достаточно богат, чтобы избежать его быстрого ограничения и неуклюжести.
По крайней мере, из того, что я видел, большинство попыток сработало плохо в обоих отношениях. Например, большинство попыток включить многословие предназначено для того, чтобы сделать код более похожим на английский (например, "Кому:" в логотипе). Дети часто имеют достаточно плохие навыки игры на клавиатуре, что такое многословие расстраивает. Они также (по моему опыту) ожидают, что если часть синтаксиса будет выглядеть как английский, то язык также должен принимать другой допустимый английский (я ожидаю, что то же самое верно и для носителей других языков, но мой опыт в основном связан с Англоговорящие).
В то же время большинство детей (с которыми я работал) быстро доходят до того, что находят ограничение в миниязыке. Часть этого, вероятно, связана с разочарованиями, упомянутыми выше. Некоторые, вероятно, также проистекают из-за недостатка воображения со стороны (по крайней мере, некоторых из) их учителей в разработке интересных и сложных упражнений. Я думаю, что сегодня это также намного сложнее, чем (скажем) 20 лет назад - тогда дети были в восторге от того, что они могли нарисовать с помощью графики черепах (для одного примера). Сегодня они привыкли к играм с фотореалистичной трехмерной графикой, и рисование двумерной "розы" из прямых линий кажется гораздо большим количеством из них, поскольку они в основном хромают.
В зависимости от того, насколько молоды дети, которых вы учите, я бы выбрал более простой язык, такой как python.
Вот бесплатная книга, которая преподает все основы и составляет всего около 200 страниц: http://www.greenteapress.com/thinkpython/thinkpython.html
Я думаю, что это не имеет большого значения, какой "мини язык" вы используете. Но я думаю, что вам лучше придерживаться настоящего мини-языка, а не "настоящего" языка, если вы не планируете объяснять больше, чем основы. Когда я изучил основы (с Java), я был действительно раздражен, что я должен был запомнить public static void main
не зная, что все это значит. Поэтому я бы выбрал язык с минимальными накладными расходами. Какой именно язык выбрать, зависит от возраста ваших учеников.
Возможностей довольно много, и в конечном итоге этот вопрос имеет непосредственное отношение к "вкусу". Я думаю, что эта схема действительно хороший выбор по нескольким причинам. Во-первых, это очень минималистский язык с очень небольшим количеством синтаксиса, который усложняет ситуацию. Во-вторых, мне кажется, что схема выражает нечто действительно фундаментальное в вычислениях, и делает это очень четко. Другое - то, что Схема может использоваться очень "мультипарадигматическим" способом. Вы можете заниматься функциональным программированием на Scheme или императивным программированием. Также очень просто построить объектную систему с нуля для Scheme - вы можете внедрить простую систему в язык менее чем за 100 строк кода. Есть также некоторые реализации Scheme, которые имеют много библиотек, так что вы можете делать такие вещи, как графическое программирование или веб-программирование.
И, наконец, большое внимание было уделено разработке хороших педагогических материалов в Схеме."Структура и интерпретация компьютерных программ" по праву считается классикой, но, как мне кажется, многие материалы в ней были бы довольно жесткими для маленьких детей (они были нацелены на новичков в MIT.) Но есть и более мягкие. материалы, такие как "Как разрабатывать программы": http://www.htdp.org/ Одна из вещей, которую вы действительно ясно видите в htdp, это то, как минимальный синтаксис Scheme позволяет вам получить право на важные идеи.
Основным недостатком Scheme в качестве первого языка является то, что большинство языков, которые действительно широко используются в наши дни, не очень похожи на Scheme, поэтому при переходе к ним у учащихся может быть некоторая корректировка. Но я склонен думать, что, особенно для детей, получение основных идей - это, поначалу, самое важное.