Об используемых языках программирования

Выбор языков программирования для решения задач обусловлен их популярностью в образовательных учреждениях России (и использованием в ГИА и ЕГЭ). Возможным исключением из этого правила является Python. Однако из-за привлекательности этого языка он набирает популярность и при обучении программированию.

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

  • FreePascal (компилятор fpc-2.x.x) в операционной системе на базе GNU/Linux,
  • Basic-256,
  • С (компилятор gcc) в GNU/Linux,
  • КуМир последних версий,
  • Python версии 3.x.

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

Языки программирования Basic-256 и тот, что "живет" в среде КуМир (мы предполагаем, что он и есть тот самый "школьный алгоритмический") - это исключительно учебные языки, поставляемые с удобными средами программирования. Установив одну программу, вы получаете полноценную среду программирования и в одном приложении пишете программу, нажимаете кнопку и тут же видите результат исполнения программы. Кроме того, обе среды (Basic-256 и КуМир) содержат встроенную возможность программирования графики, что дает простор для разнообразного обучения программированию и преподаванию в более младшем школьном возрасте.

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

На наш скромный взгляд Basic-256 можно использовать при преподавании программирования в 5-7 классах, т.к. язык достаточно прост в синтаксисе (не надо писать никаких лишних скобок и слов), в нем только два простых типа данных - числа и строки. Данный язык хорош, чтобы познакомить с такими понятиями как логические выражения, ветвления в программе, циклы, массивы, развить логическое мышление и творческие способности, разнообразить кругозор, дать представление о том, что такое программирование и что оно позволяет делать. Писать на Basic решения более-менее сложных алгоритмов неудобно, да и не нужно в этом возрасте.

Несмотря на то, что Pascal позиционируется также как учебный язык, он в отличие от Basic и КуМир более соответствует практическим языкам. При этом его большим плюсом для обучения является отсутствие всего лишнего, что ненадобно при изучении алгоритмики (структурного программирования). Т.е. никакие специфические особенности языка не будет отвлекать (ну если не считать нагромождений begin-end, уменьшающих читабельность программы).

На наш взгляд Pascal хорош как первый язык программирования, если знакомство с программированием начинается в 8-10 классах. В этом возрасте обучающиеся уже хорошо знакомы с различными типами чисел и операциями над ними, более внимательны к деталям (не забудут про точку с запятой), способны понять более сложные и объемные конструкции. Если вы планируете не ограничиваться только ветвлениями и циклами, а также требуется изучить подпрограммы, структуры данных (записи) и возможно элементы ООП, то вам не нужно смотреть в сторону Basic (даже если что-то и есть там), берите Pascal.

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

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

Особенности Python позволяют использовать его и для обучения структурному программированию, и для обучения ООП, и для изучения создания программ с графическим интерфейсом, и для изучения Web-программирования и многого другого. На основе Python уместно разрабатывать последовательные курсы по программированию. Например, в первый год вы изучаете структурное программирование на Python, на втором - ООП, на третьем - создание GUI, на четвертом - рассматриваете возможности различных библиотек (т.е. осознаете сферы применения программирования).

Если же рассматривать Питон в качестве первого языка и исключительно ограничиться изучением структурного программирования, то из нашего опыта можем заключить, что желательно, чтобы обучающиеся были не младше 7 класса, т.к. для Python нет удобной учебной среды разработки. Работа в нескольких окнах, сложность интерфейса среды, работа в терминале, понимание сообщений об ошибках для более младшего возраста затруднительно. Кроме того в Python много внимания отводится структурам данным (словарям, спискам) и операциям над ними. Понять эти темы пятикласснику достаточно сложно.

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