Использование языков программирования в школе

Обновлено: 05.07.2024

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

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

Проблема школьного обучения программированию

Методика И. Р. Дединского

Последовательность задач

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

Зачем нужен баннер (монолог вредного заказчика)

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

Кто же это сделает?

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

Кратко о дальнейшем обучении

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

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


Мнения о том, какой язык программирования лучше преподавать в школе, разнятся: от того, что программирование изучать не нужно, а следует просто поднимать компьютерную грамотность и осваивать офисные программы (как Западе), до того, что нужно изучать операционные системы и несколько языков программирования с различными парадигмами. Это крайние случаи, но золотую середину найти непросто. В первую очередь, нужно определить цель. Научить школьников логически и алгоритмически мыслить? Познакомить с компьютерами на бытовом уровне, чтобы школьники умели пользоваться Интернетом, электронной почтой, текстовым графическим редакторами? Заложить базовые знания, необходимые для будущих инженеров, математиков, физиков и специалистов по информационным технологиям? А может, нужно каждого школьника познакомить с программированием как явлением, чтобы он представлял потенциал компьютерных систем? Много ли школьников станет программистами? Немного. Безусловно, в науке о программировании есть фундаментальная составляющая, но определить её непросто. Некоторые считают, что не так важно, какой язык программирования взять: на уроках информатики нужно учить не языку программирования, а методам программирования и системному подходу решения задач. Нужно развивать алгоритмическое мышление и на примерах знакомиться с принципами построения современных компьютерных систем.

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

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

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

В программировании есть несколько парадигм, подходов к созданию программ: модульная парадигма, процедурные парадигма, объектно-ориентированная парадигма. В школах обычно преподают процедурный подход к программированию, в то время как ООП (объектно-ориентированное программирование) — очень редко или никогда.

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

Какие из современных используемых на практике языков годятся на роль первого языка? Наверное, это императивный, строго типизированный, со статической типизацией и строгой семантикой язык. Turbo-Pascal всему этому соответствует, но он уже почти мертв.

Так как объектно-ориентированное программирование (ООП) — это основа всех современных языков программирования, то его необходимо начинать изучать ещё в школе, чтобы учащиеся, придя в высшие учебные заведения, уже имели правильное представление о программировании. Такое утверждение очевидно не является бесспорным, так как для большинства учащихся их дальнейшее образование не связано с разработкой IT технологий.

Вероятно, в этом заключается основная “неудовлетворенность” учащихся, которые решили совершенствоваться в программировании. Для реальной работы им приходится учить более популярный язык (Java, C/C++, PHP, Python и т. д.). Однако использование Си в качестве начального языка программирования имеет ряд проблем: в нём много отпугивающих конструкций даже для интересующихся программированием учащихся. С другой стороны, никто не заставляет учителей показывать все глубины Си. С ним можно работать на том же уровне, что и с Паскалем, используя соответствующие конструкции.

FreePascal — бесплатный компилятор Паскаля, отвечающий современным требованиям и обладающий средой разработки один в один похожей на Turbo Pascal, что делает возможным использования большей части методической литературы, написанной для последнего. Работает под Windows и Linux. Рекомендуется как самый простой способ замены Turbo Pascal. Отсутствуют проблемы с лицензией.

Lazarus — среда разработки, использующая компилятор FreePascal, но при этом поддерживающая разработку современных оконных приложений. Позиционируется как, совместимая с Delphi, но учебный материал, написанный для последней, применим не всегда. Интерфейс более сложен по сравнению с IDE FreePascal. Рекомендуется использовать при достаточной квалификации преподавателя.

Использование Turbo/Free Pascal в процессе обучения программированию — это почти идеальный вариант для обучения алгоритмам, без понимания которых дальше лучше не программировать (и не имеет значения дальнейшая специализация — будет ли человек работать на ассемблере под микроконтроллеры, или посвятит себя разработке софта на языках высокого уровня с применением современных парадигм).

Выбор современных систем визуального проектирования (Delphi, Lazarus, Visual Studio и т. д.) на начальном этапе обучения программирования вызывает ряд проблем. При создании проекта система автоматически генерирует большой объем кода, связанный с работой визуальных компонентов и не относящийся к решению поставленной задачи. Всё сразу объектно-ориентированное, а ученику, для начала бы, разобратьсяс циклами, массивами, условными операторами.

На сегодняшний день наиболее удачным выбором, скорее всего, был бы Питон (Python) + приличная IDE (Eclipse или PyCharm), с тестированием приложений во встроенной консоли. Питон был создан более 20 лет назад и по сей день используется и в обучении основам программирования, и в коммерческих целях. На нем можно разрабатывать серверные и клиентские программы, сайты и веб сервисы, мобильные приложения и программировать роботов. Самое главное, что на рынке труда Python-программисты получают широкую востребованность, и она будет расти еще много лет, ведь язык Python используют крупные корпорации в своих коммерческих проектах.

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

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

В ряде школ проводят интересные эксперименты по преподаванию программирования на базе языка Python. Отзывы учителей и школьников очень положительные. За рубежом накоплен большой опыт в преподавании информатики в школах и колледжах с практикой программирования на самых разных языках, в частности и на Python. Конечно переход в школьной информатике на “новый” язык программирования Python связан целым рядом трудностей, в первую очередь отсутствие учебно-методического материала и необходимости самостоятельно изучать особенности языковых конструкций.

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

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

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

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

  1. Лапчик М. П., Семакин И. Г., Хеннер Е. Г. Методика преподавания информатики: Учебное пособие для студентов педвузов — М.: Издательский центр “Академия”, 2003–624 с.
  2. Захарова И. Г. Информационные технологии в образовании: Учебное пособие для студ. высш. учеб. заведений — М.: Издательский центр “Академия”, 2005–192 с.
  3. Угринович Н. Д. Информатика и ИКТ. Профильный уровень: учебник для 10 класса / 9-е изд., испр. и доп. — М.: БИНОМ, Лаборатория знаний. 2012. — 295с.
  4. Поляков К. Ю. Информатика. Углубленный уровень: учебник для 10 класса: в 2ч. Ч. 2 — М.: БИНОМ, Лаборатория знаний. 2013. — 304 с.
  5. Поляков К. Ю. Информатика. Углубленный уровень: учебник для 11 класса: в 2ч. Ч. 2 — М.: БИНОМ, Лаборатория знаний. 2013. — 304 с.
  6. Авдошин С. М., Ахметсафина Р. З., Максименкова О. В. Информатика и ИКТTU”Учебно-справочные материалы. М.: СПб.: Просвещение. 2012.-252с.

Основные термины (генерируются автоматически): язык программирования, язык, программирование, IDE, основа программирования, паскаль, программа, ученик, алгоритмическое мышление, высокий уровень.

Уроки по информатике в школе и вузе: какой язык программирования выбрать? Насколько глубоко его изучать и нужно ли вообще в школе изучать языки программирования? Есть мнение, что учащихся нужно знакомить с различными языками и различными стилями программирования. Видимо, наиболее подходящими учебными языками программирования сегодня являются Форт, Ruby, Python, Си, Паскаль и Java.

Содержание

Первым кодировки на бумаге придумал Паскаль. В одной строке умещалось от 0 до 255 символов. Первым языком электрического типа считается Планкакюль. Его изобретателем считается немец Конрад Цузе. Элементы ячейки располагались в две строки. В первой писались натуральные, а во второй аргументы. Один из четырех его компьютеров был частично из консервных банок. Использовалась двуличная система в одной ячейке. Один элемент заряжен положительно, а другой отрицательно. Мнения о том, какой язык лучше преподавать в школе, разнятся: от того, что программирование изучать не нужно, а следует просто поднимать компьютерную грамотность и осваивать офисные программы (как на Западе), до того, что нужно изучать операционные системы и несколько языков программирования различных уровней абстракции и с различными парадигмами. Это крайние случаи, но золотую середину найти непросто. В первую очередь, нам нужно определить цель. Научить школьников логически и алгоритмически мыслить? Познакомить с компьютерами на бытовом уровне, чтобы школьники умели пользоваться интернетом, электронной почтой и текстовыми редакторами? Заложить базовые знания, необходимые для будущих инженеров, математиков, физиков и специалистов по информационным технологиям? А может, нам нужно каждого школьника познакомить с программированием как явлением, чтобы он представлял потенциал компьютерных систем? Много ли школьников станет программистами? Немного. Но синусами и уравнениями Кирхгофа в жизни тоже пользуется не каждый. Безусловно, в науке о программировании есть фундаментальная составляющая, но определить её непросто. Некоторые считают, что не так важно, какой язык программирования взять: на уроках информатики нужно учить не языку программирования, а методам программирования и системному подходу решения задач. Нужно развивать алгоритмическое мышление и на примерах знакомиться с принципами построения современных компьютерных систем.

Когда-то наиболее популярными языками программирования в школах мира были Бейсик и Паскаль. Бейсик всегда считался самым простым языком программирования, а Паскаль — самым подходящим языком для обучения программированию. Но теперь это не так. Да, Бейсик прост. Но он создавался во времена, когда человечество не имело никакого опыта создания компьютерных систем, и основан на устаревших и не оправдавших себя принципах. Собственно, никакой фундаментальной целостной идеи в основе Бейсика не лежит. Сегодня есть простые и при этом более наглядные и идейно замкнутые языки программирования, нежели Бейсик. Паскаль удобен в учебных целях; ведь именно для них он и создавался. Студенты быстро учатся решать с его помощью алгоритмические задачки. Но так получается, что изучать Паскаль полезно только для того, чтобы писать программы на Паскалe. А если нужно создать настоящий программный продукт, Паскаль оказывается неудобен. И студентам, знающим только Паскаль, приходится переучиваться, что часто сложнее, нежели изучить правильные языки и технологии с нуля. Часто слышишь от преподавателей школ и вузов:

Но есть и другие мнения:

Альтернатив много. Ныне есть целый зоопарк (экосистема) языков программирования, которые постоянно эволюционируют, расщепляются и сливаются. Это уже упомянутые выше языки Форт, Ruby и Python. Дерево эволюции видов языков программирования можно найти в Сети [1] [2]. Перечислим ключевые факторы, управляющие отбором:

Итак, Perl многогранен, Python прост, Python красив, Ruby тоже молодец, Java и Си технологичны. Номинаций много и явного победителя нет, так же как и нет одежды, которая одинаково хорошо подходит под летнюю, дождливую или зимнюю погоду. Температура и влажность — всего лишь два параметра, а в языках программирования их гораздо больше.

А что можно сказать про Паскаль и Бейсик?

Давайте вернёмся к нашему вопросу — какой язык программирования преподавать в школе?

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

Здесь правильнее рисовать дерево зависимостей между языками. Не имеет смысл изучать и Python, и Ruby, ибо они похожи. Изучать их оба значит загружать учащихся двойным грузом технических деталей, и при этом одарить лишь одним стилем программирования (стилем мышления при проектировании программ). Также неправильно рассказывать студентам и про Си, и Паскаль. Время, потраченное на один из них будет просто потеряно зря. Но тем не менее, шаг от Паскаль к Си делали многие программисты, после чего Паскаль успешно ими забывался. Язык Java стоит рассказывать вместо языка Си++, так как Java более модульный и имеет явно выраженную объектную парадигму, да и намного проще в изучении. Не имеет смысла учить Lisp и Haskell одновременно, разве только студентам факультетов и групп, специализированных на функциональном программировании. А школьникам и студентам первого курса достаточно одного из них. Просто полезно получить представление о том, что бывают стили программирования, отличные от императивного. В этом смысле также полезен язык Prolog. Очень много педагогов соглашается, что рассказывать про один язык программирования так же нелепо, как учить повара готовить только одно блюдо (правда очень хорошо). Нет необходимости знакомить учащихся со всеми тонкостями и техническими подробностями языка программирования. Необходимые детали он сможет узнать сам, если его научат пользоваться документацией. Гораздо важнее познакомить учащегося с различными парадигмами программирования (чтобы наш повар знал о китайской, о русской кухне, и имел представления о всех этапах подготовки пищи — от выращивания овощей до сервировки). Но при этом есть опасность того, что наши поварята не смогут приготовить для себя ничего съедобного. Мнений очень много, и нельзя ничего здесь категорично заявлять.

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

Вот примерный список этих задач:

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

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

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

  1. выполнения всех арифметических операций
  2. ("+", "-", "*", "/");
  3. реализации:
  4. логических операций сравнение:
  5. ">", ">=", "=", "<>","

    WriteLn('');

    ReadLn(X);

Наглядно и просто для начинающих программировать.

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

Именно поэтому в своей практике автор использует Qbasic для преподавания программирования графики в 5-6 классах; а в 7-11 классах, для программирования вычислительных задач используется PASCAL.

Читайте также: