[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