Пару месяцев назад я писала о том, как использую идеи коммуникативного подхода, обучая лингвистов программированию. Вместо списков чисел мы работали с текстами, частотностью, стоп-словами и частями речи. Код становился способом решить понятную профессиональную задачу.

Курс завершился! И завершился на очень приятной и доброй ноте - благодарностями и словами о том, что было понятно и интересно!

Параллельно я начала вести базовый Python для сотрудников промышленного предприятия. Вместо художественных текстов появились таблицы с производственными показателями, партии продукции, количество дефектов, результаты контроля качества и визуализация данных.

Казалось бы, аудитория и задачи стали совершенно другими. Но довольно быстро выяснилось: основные методические проблемы остались теми же.

Недостаточно показать работающий код. Нужно выстроить маршрут, по которому человек сначала повторяет действие, затем изменяет отдельные элементы, перестраивает решение под новую задачу и только после этого пишет собственную программу.

Ничего не напоминает??))

От имитации к самостоятельному высказыванию

При изучении иностранного языка мы не просим человека на сразу выступить с докладом. Сначала он знакомится с речевой моделью, повторяет её, заменяет отдельные элементы, учится переносить конструкцию в новые ситуации — и лишь затем самостоятельно формулирует высказывание.

В программировании работает похожая логика.

Сначала студент запускает готовый код:

defect_rate = defects / total * 100
print(defect_rate)

Затем меняет исходные данные. После этого добавляет округление, условие или подпись к результату. Далее использует ту же конструкцию для другой партии продукции. И только потом самостоятельно пишет программу, которая рассчитывает показатель для всей таблицы.

Получается своеобразная цепочка:

  1. Повтори готовое действие.

  2. Замени один элемент.

  3. Дополни решение.

  4. Перенеси способ действия в новую ситуацию.

  5. Самостоятельно реши задачу.

Это очень похоже на переход от имитативных и подстановочных упражнений к трансформационным и репродуктивным.

Условно-речевые упражнения — только теперь на Python

Особенно интересной мне кажется параллель с условно-речевыми упражнениями.

В таком упражнении обучающийся уже действует не совсем механически: у него есть понятная задача и определённое намерение, но языковой материал пока частично задан. Например, нужно согласиться с утверждением, опровергнуть его или задать вопрос, используя изучаемую конструкцию.

В программировании можно выстроить такой же промежуточный уровень.

Человеку предлагается не просто перепечатать код, но и не написать программу полностью с нуля. Например:

В таблице содержатся результаты контроля качества. Измените программу так, чтобы она выводила только партии, в которых доля дефектов превышает 5%.

Структура решения уже знакома: загрузка таблицы, обращение к столбцу, фильтрация строк. Но её необходимо перестроить под конкретную цель.

Это уже не механическое повторение, однако и не свободное программирование. Студент получает опору, внутри которой принимает небольшие самостоятельные решения.

Такие задания особенно важны для начинающих. Между «повторите код за преподавателем» и «создайте собственную программу» находится огромный разрыв. Если его ничем не заполнить, человек может успешно воспроизводить примеры на занятии, но теряться, когда сталкивается с новой задачей.

Не изучать код, а решать задачи с его помощью

Один из принципов коммуникативного подхода — речевая направленность обучения. Язык изучается не только как система правил, а прежде всего как средство решения коммуникативных задач.

С программированием происходит то же самое.

Можно изучать цикл for как абстрактную конструкцию:

for i in range(10):
    print(i)

А можно использовать цикл, чтобы обработать результаты десяти измерений, найти отклонения или сформировать отчёт.

Можно объяснять условный оператор через сравнение двух случайных чисел. А можно поставить задачу:

Если доля дефектов превышает допустимый уровень, выведите предупреждение о необходимости дополнительного контроля.

Синтаксическая конструкция остаётся той же. Но у действия появляется цель, понятная конкретной аудитории.

Для лингвистов такой целью может быть анализ текста. Для сотрудников промышленного предприятия — обработка производственных данных, а для экономистов — расчёт показателей.

Профессиональный контекст не отменяет изучение основ Python. Он делает эти основы осмысленными.

Ситуативность тоже работает

В методике преподавания иностранных языков большое значение имеет ситуация общения. Высказывание появляется не в пустоте: человек сообщает новость, просит о помощи, объясняет причину, сравнивает варианты или принимает решение.

Учебная программа тоже не должна возникать в пустоте.

Задание «постройте столбчатую диаграмму» формально проверяет умение использовать библиотеку визуализации. Но задание можно сформулировать иначе:

Начальнику подразделения необходимо показать, на каких производственных участках за последний месяц зарегистрировано больше всего дефектов. Выберите подходящий тип диаграммы и подготовьте визуализацию.

Теперь студенту нужно не только вспомнить функцию, но и проанализировать данные, чтобы выбрать способ их представления, подписать график и сделать вывод.

У кода появляется адресат. У визуализации — назначение. У обучающегося — причина выполнить действие.

Именно в этот момент программирование начинает становиться деятельностью, а не набором команд.

Функциональность важнее количества конструкций

Начинающим часто хочется дать как можно больше: переменные, типы данных, условия, циклы, функции, файлы, библиотеки, классы — желательно за несколько занятий.

Но знание большого количества конструкций ещё не означает, что человек умеет программировать.

Можно знать формы английских времён и не суметь поддержать простой разговор. Точно так же можно помнить синтаксис цикла и не понимать, когда он нужен.

Поэтому на базовом курсе важнее, чтобы обучающийся несколько раз использовал одну конструкцию в разных задачах:

  • посчитал количество дефектных изделий;

  • обработал показатели нескольких партий;

  • нашёл значения, выходящие за допустимый диапазон;

  • сформировал итоговый список для отчёта.

Так постепенно формируется не только знание синтаксиса, но и понимание функции: какую задачу позволяет решить конкретный инструмент.

От страха ошибки — к её анализу

Есть и ещё одно сходство между иностранным языком и программированием: страх ошибки.

Начинающий изучать язык боится неправильно произнести слово или выбрать не то время. Начинающий программист боится красной строки в выводе и иногда воспринимает сообщение об ошибке как доказательство того, что «программирование ему не дано». Но мы же не забираем у человека слово после первой грамматической ошибки. С кодом стоит поступать так же.

Важно отдельно учить работать с ошибками, не просто исправлять код за студента, а вместе отвечать на вопросы:

  • на какой строке возникла ошибка;

  • к какому типу она относится;

  • какие значения участвовали в операции;

  • что программа ожидала получить;

  • что можно проверить в первую очередь.

Сообщение об ошибке в таком случае превращается в обратную связь!

От воспроизведения — к проекту

Итогом обучения должно становиться не воспроизведение знакомого примера, а способность собрать изученные средства для решения новой задачи. Для этого финальное задание может быть небольшим, но целостным. Например:

Загрузите таблицу с производственными данными, проверьте пропуски, рассчитайте долю дефектов, найдите проблемные партии, постройте график и сформулируйте краткий вывод.

Здесь нет принципиально новых конструкций. Однако студенту нужно самостоятельно определить последовательность действий и связать знакомые элементы в единую программу.

В терминах обучения языку это уже собственное высказывание. Пусть пока небольшое, с опорой на изученные модели, но созданное самостоятельно и для конкретной цели.

Так можно ли преподавать Python по методике обучения иностранному языку?

Конечно, программирование — не иностранный язык в прямом смысле. Код не равен естественной речи, а выполнение программы подчиняется гораздо более строгим правилам.

Однако некоторые методические принципы переносятся удивительно хорошо:

  • практическая задача предшествует выбору конструкции;

  • новый материал вводится в понятном контексте;

  • сложность увеличивается постепенно;

  • готовый образец становится опорой, а не конечным результатом;

  • одна конструкция используется в разных ситуациях;

  • обучение завершается самостоятельным продуктом;

  • ошибка рассматривается как естественная часть деятельности.

И для лингвистов, и для сотрудников промышленного предприятия сработала одна и та же логика: человек увереннее пишет код, когда понимает не только что написать, но и зачем он это пишет.

Поэтому хороший курс по программированию — это не экскурсия по синтаксису языка. Это система постепенно усложняющихся задач, в которой студент проходит путь от повторения образца до самостоятельного решения.

Комментарии (0)