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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

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

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

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

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

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

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

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

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

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

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

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

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


Интересные статьи

Интересные статьи

I. Преамбула Где-то в середине осени мой однокашник по ВА им. Ф.Э.Дзержинского Иванов Валерий Петрович прислал интересный материал по своему видению проблем информационной безопасности. Ранее он уже ...
В чем конечная цель программирования? В том, чтобы иметь код, который легко изменять.Давайте разберемся. Какую проблему мы пытаемся решить?Мне кажется, что фундаментальная проблема прог...
Особо амбициозные разработчики любят заявлять о том, что используемый ими язык программирования или фреймворк будет жить лет сто. Дерзкое заявление, учитывая, что разработке программного обеспечения, ...
Сразу оговоримся, что в этой публикации мы не будем затрагивать вопросы подходов к созданию полномасштабных приложений для Web, подразумевающих наличие крупной кодовой базы, заставляющей ...
Законы, теории, принципы и закономерности, полезные для разработчиков Введение Перевод репозитория github.com/dwmkerr/hacker-laws При обсуждениях, связанных с разработкой ПО, люди часто гово...