← Все статьи
Python9 минут чтения

Python и C++: почему мы выбрали именно эти языки программирования

Один из закономерных вопросов: почему дети изучают именно Python и C++? Почему сначала мы ведём ученика к Python, а C++ появляется значительно позже, если оба языка считаются серьёзными и используются профессиональными разработчиками?

Python и C++ в обучении программированию детей — образовательная траектория Tomorrow

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

Языков существует много, потому что и задачи бывают разными. Где-то особенно важно быстро создать программу и проверить идею, где-то нужно обрабатывать большие объёмы данных, где-то управлять оборудованием, создавать игры или строить сложные высокопроизводительные системы.

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

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

Поэтому обучение начинается вообще не с Python и не с C++.

Сначала мы учим ребёнка самому «программированию».

Сначала ребёнок должен научиться думать как программист

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

На самом деле язык — лишь способ записать решение в понятной для компьютера форме — на «языке компьютера».

Главная работа происходит раньше.

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

Это уже программирование.

На каком языке потом будет записано это условие — на Python, C++ или на любом другом языке — вопрос второй.

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

Когда этот фундамент появляется, переход к текстовому языку становится значительно проще, потому что ученик уже знает, что именно он хочет сказать компьютеру, а теперь ему остаётся освоить правила, по которым это записывается.

Так в нашей программе появляется Python.

Почему первым серьёзным языком мы выбрали Python

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

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

И здесь очень важно, чтобы язык не создавал лишний барьер.

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

Python позволяет сделать переход мягче.

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

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

При этом Python нельзя считать упрощённым языком исключительно для детей.

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

Поэтому нам не приходится через несколько месяцев говорить ученику: «Теперь забудь всё, что ты изучал, и начинаем настоящий язык».

Python уже настоящий.

А сложность задач растёт вместе с ребёнком.

Сначала небольшие программы, затем всё более серьёзные проекты

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

Постепенно программы становятся больше.

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

И здесь возникает новая проблема.

Можно знать Python достаточно хорошо и всё равно писать плохие программы.

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

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

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

Именно здесь появляется ООП.

Что такое ООП простыми словами

ООП расшифровывается как объектно-ориентированное программирование.

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

Представим игру, в которой есть несколько персонажей.

У каждого персонажа есть определённые характеристики: имя, количество здоровья, скорость, количество очков. Кроме того, он умеет выполнять действия — двигаться, получать урон, собирать предметы.

Если игра маленькая и в ней один герой, всё это можно написать достаточно просто.

Но теперь представим, что персонажей стало двадцать.

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

ООП предлагает более удобный подход.

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

Такая общая модель называется классом.

А конкретный персонаж, созданный по этой модели, — объектом.

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

Примерно ту же идею мы используем в программировании.

Это очень упрощённое объяснение, но для первого понимания ООП его вполне достаточно.

Зачем ребёнку вообще изучать ООП

Главная ценность ООП заключается не в том, чтобы ученик запомнил новые слова «класс» и «объект».

Намного важнее то, как меняется его мышление.

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

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

Теперь нужно сначала представить всю систему целиком.

  • Из каких крупных частей она состоит?
  • Какая часть за что отвечает?
  • Какие данные должны находиться внутри каждой части?
  • Как эти части будут взаимодействовать между собой?

То есть ученик постепенно переходит от вопроса «какую следующую команду написать?» к гораздо более серьёзному вопросу:

«Как правильно устроить всю программу?»

Именно здесь начинается настоящее проектирование.

Можно провести аналогию со строительством.

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

С большой программой происходит примерно то же самое.

ООП помогает ребёнку постепенно перейти от написания отдельных фрагментов к пониманию структуры целого проекта.

Почему ООП мы сначала изучаем именно на Python

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

Это важно.

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

Поэтому сначала меняется уровень задач, а инструмент остаётся знакомым.

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

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

И именно после того, как ученик проходит достаточно большой путь на Python, появляется смысл познакомить его со вторым серьёзным языком — C++.

Зачем нужен C++, если уже есть Python

Для человека, далёкого от программирования, этот вопрос вполне логичен.

Если ребёнок уже научился писать программы на Python, зачем вообще изучать ещё один язык? Не проще ли продолжать совершенствоваться только в одном?

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

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

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

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

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

C++ помогает сделать эту внутреннюю сторону программирования значительно более заметной.

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

Почему мы не начинаем сразу с C++

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

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

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

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

Поэтому сначала мы убираем лишнюю сложность.

Ребёнок осваивает фундамент, затем учится полноценно программировать на Python и только после этого, имея уже устойчивую базу, смотрит на знакомые идеи через C++.

В этот момент второй язык становится действительно полезным.

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

Второй язык помогает лучше понять первый

Это, пожалуй, один из самых интересных эффектов.

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

После появления C++ становится очевидно, что одна и та же идея может записываться совершенно по-разному.

Но сама идея остаётся прежней.

Условие всё равно проверяет, выполняется ли определённое правило.

Цикл всё равно повторяет действия.

Функция всё равно позволяет выделить отдельную логику программы.

Алгоритм вообще не принадлежит конкретному языку.

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

Именно здесь происходит очень важный образовательный переход: ученик перестаёт быть «человеком, который знает Python» и постепенно становится человеком, который понимает программирование.

Поэтому наша траектория выглядит именно так

Если собрать весь путь в одну последовательность, логика становится достаточно простой.

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

Когда этот фундамент сформирован, появляется Python.

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

Когда проектов становится больше, появляется ООП.

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

После этого появляется C++.

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

Именно поэтому мы выбрали такую последовательность не случайно.

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

Мы в соцсетях: Telegram VK VC.ru DZEN
Продолжить чтение

Связанные статьи

Методика

Домашка, теория, роль родителя и исключение из школы

Зачем нужны ДЗ и теория в программировании и к чему должен быть готов родитель и ребёнок

Выбор группы

А зачем моему ребёнку нужно программирование?

Почему программирование нужно не только будущим разработчикам и какие навыки оно формирует для цифрового мира.

Выбор группы

В каком возрасте ребёнку начинать программирование: плюсы и минусы раннего и позднего старта

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