К списку

Альтернативные способы изучения программирования с нуля

15 апреля 2016

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

Давайте рассмотрим критерии, которым должны соответствовать инструменты и подходы к изучению программирования с нуля:

  • Максимальное упрощение базовых понятий. Именно усвоение базы требует, как правило, максимальных усилий. Как при изучении языка необходимо наработать базовый активный словарь, после чего процесс пойдет заметно быстрее, так и для изучения программирования необходимо усвоить основные понятия, на базе которых продвигаться дальше будет значительно проще. Соответственно, базовые понятия должны быть представлены максимально просто и наглядно.
  • Прикладной характер заданий и реальная польза от их выполнения. Для того чтобы усвоенный материал отложился, его нужно применять на практике. Следовательно, задачи должны приносить ощутимый результат и демонстрировать, как полученные знания и навыки помогут в решении реальных проблем.
  • Забавная, веселая форма занятий. Скучать не любит никто. Когда занятия проходят в развлекательной и веселой форме, дисциплину более интересно изучать. Таким образом, знания намного лучше откладываются.
  • Геймификация занятий. Геймификация набирает высокие обороты именно в сфере обучения программированию. Это неудивительно, ведь в современном мире игры очень тесно связаны со сферой IT. Именно поэтому игровые техники можно встроить в учебный процесс очень просто и гармонично.

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

  1. Python + PyCharm Edu. Язык программирования Python давно зарекомендовал себя как прекрасный язык для изучения программирования с нуля. Высокоуровневый интерпретируемый язык, поддерживающий различные парадигмы программирования, он как никакой другой подходит для изучения основ и плавного перехода от процедурного к объектно-ориентированному стилю. Кроме того, в пользу Python говорит его динамическая типизация. Ведь, типы данных и работа с переменными – один из основных моментов, достаточно трудных для восприятия на первых этапах обучения. Более того, здесь есть автоматическое управление памятью, что избавляет учащегося от еще одной серьезной и сложной в освоении области. Дополнительным плюсом можно назвать то, что специально для учебных целей компания JetBrains разработала специальную версию IDE для этого языка – PyCharm Edu. Этот тандем позволяет максимально упростить задачу по созданию и проверке заданий для студентов.
  2. Google Blockly. Своеобразный взгляд на программирование: полный отказ от набора кода своими руками. Как это возможно? С помощью визуального программирования! Команды и операторы в Blockly представлены в виде элементов паззла, которые мышью перетаскиваются в блок кода. Каждый оператор подразумевает свои возможные совместимые операции. Именно так и организован Blockly: к оператору подойдут только специфичные для него аргументы, точно так же, как в обычном детском паззле элементы подходят друг к другу, выстраиваясь вместе в общую картинку. Конечно же, готового программиста на этой базе не получится. Однако, основы алгоритмизации и работы с операторами изучать можно буквально с детского возраста. Полученный в итоге паззл можно скомпилировать в JavaScript, Dart или Python.
  3. AppInventor. Платформа для быстрого и наглядного создания приложений для Android. Наглядно представлен подход MVC, логика приложения программируется с помощью уже рассмотренного Blockly, а дизайн можно создавать во встроенном редакторе, перетаскивая элементы мышью. Готовое приложение можно сразу же загрузить на телефон и любоваться результатом своей работы.
  4. BlueJ – спроектированный специально для изучения Java инструмент. Позволяет в наглядной манере ознакомиться с основами ООП, выстраивая готовую диаграмму классов. Версия Java осознанно упрощена для того, чтобы не перегружать учащихся слишком сложной информацией. BlueJ используется во многих университетах США, включая знаменитый Массачусетский Технологический Университет.
  5. Kodu Game Lab ориентирован прежде всего на детей. Он не направлен на изучение какого-либо промышленного языка программирования, а скорее на то, чтобы обучить детей основам алгоритмизации и взаимодействию с компьютерами. Проект предоставляет инструментарий для проектирования компьютерных игр с помощью визуального интерфейса. Ученик может создать свое игровое поле, добавить туда персонажей и задать для них логику поведения с помощью визуального языка. Этот проект является инициативой компании Microsoft.
  6. Sikuli Script — это инструмент для автоматизации любых задач на ПК. Казалось бы, при чем тут программирование? Но дело в том что написание скриптов для автоматизации предполагается на своем языке, близком к языку Jython. Очень наглядные скрипты, где объекты для взаимодействия задаются с помощью скриншотов элементов на экране. При этом, вся мощь Jython позволяет реализовывать довольно сложную логику, а результатом является автоматическое выполнение задач прямо на ваших глазах

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

Вадим Зубович, Automation Tech Lead.