[Freeschool] [JT] Re: чему стоит учить в школе

Denis Kirienko =?iso-8859-1?q?dk_=CE=C1_altlinux=2Eru?=
Чт Окт 23 15:26:21 MSD 2008


Владимир пишет:
> Народ, давайте лирику опустим и решим подходит питон для изучения в школе или 
> есть что-то лучше и понятней?

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

Я считаю, что для первоначального обучения Питон сложен. Первоначальное 
обучение - это алгоритмизация и даже не программирование. То есть всякие 
исполнители и умение написать алгоритм для какого-то исполнителя, 
который его выполнит. Реальные промышленные языки тут не нужны.

Именно в таком объеме и изучается алгоритмизация в 8-9 классах 
российской школы по стандарту. Термина "программирование" там нет.
Но этому должны учить всех и везде, мне не кажется изучение питона 
подходящим для этого.

Здесь нужно что-то вроде Лого, KTurtle. А я сейчас использую для этого 
Кумир - пока на маленьких матшкольниках, а чуть попозже - на обычных 
9-классниках. На маленьких матшкольниках пока все идет замечательно, а 
до обычных 9-классниках - пока я не дошел до алгоритмизации, потом 
расскажу. Впрочем, Кумир годится для обучения алгоритмизации не только 
на исполнителях, но и для написания вполне серьезных программ.

Сайт новой реинкарнации Кумира здесь: http://lpm.org.ru/kumir/
Также он есть в Сизифе.

Следующий шаг - это уже обучение программированию. Этому нужно учить не 
всех (по стандарту образования изучение программирования возможно в 
10-11 классах если информатика изучается в школе на профильном уровне). 
Можно, конечно, и раньше - все зависит от школы, от профиля и т.д.

Вот здесь мне кажется Питон очень удачным выбором и лучшего решения я не 
вижу. Хотя я сам отказался от использования Питона в пользу C++ - но я 
могу себе такое позволить. Для изучения программирования на основе C++ 
нужно иметь достаточно сильных школьников и очень квалифицированного 
преподавателя, поэтому C++ претендовать на массовость обучения не может.
Значительная часть обучения программированию на C++ - это "борьба с 
языком программирования", то есть объяснение, почему нужно делать так, а 
не иначе. То есть в С++ есть очень много нелогичных, неочевидных и 
непонятных вещей, к которым нужно привыкать и учиться их использовать.

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

Первая - нужно переучиваться самому. У Питона - другая идеология, не 
такая как в C++ или Паскале. Многие вещи, которые делаются в С++ одним 
образом в Питоне делаются по-другому. Например, сегодня утром я узнал, 
что эффективный способ создать в Питоне список (массив) из N элементов, 
и заполнить его нулями выглядит так:
A=[0]*N

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

Вторая проблема - среда разработки. Написать курс программирования на 
каком-то языке - это одно. А вот когда начнем его использовать, то сразу 
же возникает вопрос, над которыми зачастую авторы курса не задумываются: 
"А как школьники пишут программу? А как они ее запускают? А как они ее 
отлаживают?". И тут сразу же возникает вопрос о среде разработке. Вот 
адекватных сред разработки для Питона (с обязательным отладчиком!) я не 
нашел. Смотрел на eric - она мне показалась чрезвычайно громоздкой. 
Учебная среда разработки должна быть простой и не перегруженной 
ненужными функциями, но при этом должна обеспечивать необходимый набор 
этих функций. Вот этим и хорош Кумир - очень простая среда разработки, 
но все необходимое содержащая.

Я некоторое время использовал Active State Komodo - но он платный 
(бесплатный для школ - но не для школьников, что плохо). Eric, как я 
говорил, не понравился громоздкостью. Вчера нашел Wing IDE - он тоже 
платный, есть облегченная версия Wing IDE 101 - бесплатная, но закрытая. 
Она мне понравилась, но там какой-то облегченный и малофункциональный 
отладчик.

Наконец, третья проблема - это использование Питона вместе с 
автоматической тестирующей системой, которые используются на олимпиадах. 
И дело не только в олимпиадах, я автоматическую тестирующую систему 
использую постоянно на уроках. Дело не только в том, что Питон тяжело 
прикрутить к тестирующей системе (как раз таки это легко сделать), а в 
том, что в Питоне нет привычного на Паскаля и C++ потокового ввода 
данных. То есть пусть в тесте для задачи записано два числа через 
пробел, их нужно считать программой. В Питоне нет средств сделать это 
удобно (насколько я знаю), можно только считать строку и дальше ее 
парсить либо самому, либо регекспами. А если числа могут быть записаны в 
одной строке, а могут быть записаны в две строки - как тогда быть?

Но поскольку это причины малокритичные, то мне кажется, что Питон в 
качестве учебного языка подходит отлично, лучше чем C++, Паскаль или 
Бейсик. Что до проблем с пробелами - таких проблем не существует. 
Кому-то может нравиться, кому-то не нравиться идея использовать пробелы, 
мне лично - нравится, Мише вот - не нравится, но для обучения это 
абсолютно неважно.

--
Денис



Подробная информация о списке рассылки Freeschool