Размышления о выборе языка программирования для школы (и ситуации с информатикой в целом)…

в 17:29, , рубрики: Pascal, python, информатика, школа

Эта статья выросла из ответа на комментарии к статье Основные отличия PascalABC.NET, где возник традиционный спор про то, есть ли смысл в 2023 году изучать Pascal. Для комментов мой ответ слишком большой, так что оформлю в виде такого спонтанного поста.

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

Сразу уточню: речь, прежде всего, идёт о среднем звене "среднестатистических" школ, где информатика изучается строго по ФГОС - только с 7-9 классы, по 1 часу (уроку в 40-45 минут) в неделю. Если хотите изучить "единую министерскую" программу, можете скачать её с официального сайта Минпроса (да-да, официальный сайт одного из ведомств Минпроса сделан на WordPress).

Конкретно на программирование эта программа отводит порядка 30 часов. По 1 часу в неделю, растянутых на конец 8 - начало 9 классов (с перерывом в 3 месяца, ага). В принципе, учитель может немного варьировать программу и менять местами отдельные разделы. Но общей картины такие игры не изменят (проверено).

За это время авторы ФГОС предлагают с нуля (!) объяснить детям (которые только-только поверхностно изучили строение компьютера и принципы работы с мышино-клавиатурным интерфейсом (а нынешние дети реально от мыши тупят, т.к. с пелёнок привыкли к тачскринам!) ):

  1. Понятие алгоритма как такового.

  2. Способы записи (в основном - блок-схемы, хотя в советское время начинали с условного алгоритмического языка).

  3. Основные алгоритмические конструкции (линейные алгоритмы, ветвления, циклы со счётчиком, циклы с пост/пред-условием, подпрограммы).

  4. Понятие переменных и типов данных.

  5. Массивы (включая сортировку).

И это только формальный ФГОС. По факту надо ещё успеть натаскать на решение чисто ОГЭшных задач (а там кроме обычных языков программирования есть ещё Кумир, который тоже надо хотя бы обзорно дать на уроках, т.к. дети без претензий на экзамене чаще выбирают именно его, а не классику). Не говоря уже об изучении с нуля принципов работы с консолью (а консоль нужна почти в любом языке программирования, кроме совсем уж заточенных под web, да и то...).

Чтобы лучше понять проблему времени, вспомните, сколько вы потратили на изучение последнего языка программирования? Вот реально: с первого знакомства и до написания простейшей программы с циклами, ветвлениями, массивами. Уложились в 20 астрономических часов? А теперь представьте, что к моменту изучения нового языка вы ВООБЩЕ не представляете, что такое переменные, функции, циклы и ветвления. Получится уложиться всё в те же 20 часов? А если вы толком не представляете, как устроен компьютер, набираете текст программы 1 пальцем (на изучение клавиатуры ФГОС даёт, по сути, 1 урок; если ребёнок дома не работает с клавиатурой, на уроках почти нереально его навыки заметно подтянуть; если только забить на ФГОС полностью, и 7 класс начинать с клавиатурных тренажёров (что я, частично, и делаю; но вам я этого не говорил) ). А если у вас нелады с математикой и базовой логикой (а нынешняя школьная программа такова, что с этими базовыми вещами к 7-8 классу проблемы у 2/3 школьников как минимум)?

Добавим к этому ОТВРАТИТЕЛЬНЫЙ "единый" учебник за авторством Босовой и Босовой. Кому интересно, КАК Минпрос предлагает учить детей информатике, скачайте этот учебник в сети, почитайте и попытайтесь взглянуть на ЭТО глазами детей 7-8 класса, которые теоретическую информатику ранее не изучали. Особенно я "люблю" разделы про системы счисления и основы булевой алгебры - когда впервые прочитал этот учебник, не сразу смог понять некоторые формулировки (хотя на тот момент успел поучиться в техническом ВУЗе и педагогическим коллежде, и везде изучал эти темы в рамках основ высшей математики).

Размышления о выборе языка программирования для школы (и ситуации с информатикой в целом)… - 1

За пределами класса дети со средней мотивацией забивают на это дело чуть более, чем полностью (проверено годами), т.к. большинство не может продраться через эти формулировки. Особенно умиляет, что булеву алгебру изучают в начале 8 класса, примеры задач в учебнике разбирают с использованием диаграмм Эйлера, но (!) к этому моменту ученики 8 класса ещё не изучали эти штуки на алгебре (и вообще не изучали множества), т.е. плюсом к булевой алгебре мне приходится объяснять им ещё и немного обычной математики (а ещё не забываем про ОГЭ, эти задачи тоже надо успеть пробежать). В классе ещё удаётся какие-то основы в головы вложить, но нормально закрепить - банально не успеваем.

А теперь к вопросу о выборе языка. Я несколько лет назад провёл эксперимент. В одной параллели предложил детям выбрать язык Pascal (ABC.NET) и Python. Самые "начитанные" выбрали модный Python. Разделил на группы и весь раздел "основы программирования" давал теорию на разных языках. По итогам лично для себя сделал вполне однозначный вывод: лучше Pascal для изучения САМЫХ основ алгоритмов в ШКОЛЕ ничего не придумали. Его синтаксис на базовом уровне легко "читается" на человеческом языке, т.е. я могу дать пример нового кода (например, при первом знакомстве с ветвлениями или циклами) и читать его по-русски (если ... то ... иначе; для i от 1 до N; и т.п.). Т.е. минимум времени тратится именно на синтаксис языка, и максимум - именно на алгоритмы. Ещё раз напомню: времени минпрос и ФГОС дают ОЧЕНЬ мало, а успеть нужно нереально много.

А в 10-11 классах по новым ФГОС - другая крайность. Уровень заданий ЕГЭ в сравнении с ОГЭ за 9 класс вырастает просто в разы. Сравните: ОГЭ и ЕГЭ. А в плане обучения разница между этими экзаменами - 68 часов изучения, размазанных на 2 учебных года (если повезло со школой и завучами, то ещё столько же дадут в виде внеурочки; тогда у ребят и учителя появляется шанс более или менее нормально отработать хотя бы часть заданий). И вот тут уже можно немного поспорить о выборе языка, т.к. задачи ЕГЭ явно заточены под Python. Но есть нюанс: если натаскивать учеников чисто на задачи, возможности языка всё-равно изучаешь однобоко. А базовые алгоритмы тупо некогда отрабатывать. Вот и учатся парни использовать готовые библиотеки, не понимая, как работает банальный "метод пузырька". Есть ли в таком изучении Python'а смысл? Вопрос риторический. И, опять-таки, добавим сюда ужасные учебники, которые не на 100% закрывают даже темы ЕГЭ, не говоря уже про жуткую муть в плане теории (ссылку на учебники выше приводил, хотя там не самые свежие издания, но принципиально мало что поменялось).

В общем, когда программисты со стажем 10+ лет спорят о выборе языка для обучения, рядовому учителю хочется толи всплакнуть, то ли истерично похихикать. При нынешних стандартах в образовании этот спор не имеет смысла, ведь учим, по сути, лишь самым верхам. И заявленный властями курс на повышение "технологического суверенитета" с нашего ракурса выглядит, по меньшей мере смешным: часы на информатику за последние 6 лет сократили вдвое, качество учебников упало ниже плинтуса (всё тот же учебник Босовой с разделами, касающимися программирования, подстраивали под новые ФГОС сменой цифры на обложке: "9 класс" заменили на "8 класс", и ужали программу с 68 часов до 34; поищите этот учебник за 9 класс года примерно 2008 и за 8 класс 2020 - и найдите отличия).

И если подход в изучению информатики не изменится кардинально, то на первых курсах технических ВУЗов преподавателям скоро придётся учить фактически с нуля. И не факт, что вообще будет кого учить - в 10 класс (с заделом на ЕГЭ и ВУЗ) идут единицы, большинство ребят уходит в СПО.

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

Автор: Николай Петроченко

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js