Рубрика:
Карьера/Образование /
Образование
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Сергей Супрунов
Python – в школу!
Современная жизнь без компьютеров уже немыслима, и чтобы чувствовать себя в этом мире достаточно уверенно, понимание того, как эти «ящики» работают, просто необходимо. И закладывать это понимание нужно на самых ранних этапах образования, начиная со средней школы.
Что должно быть на уроках информатики?
Сейчас со школьным предметом «Информатика» сложилась довольно неприятная ситуация – он теряет роль фундаментальной дисциплины, вырождаясь в некие курсы подготовки секретарей-машинисток.
Однако основная задача средней школы – дать общее образование, то есть понимание процессов, которые заложены в то или иное явление. Мы же не учим детей на уроках физики, как менять головку блока цилиндров двигателя ЕМЗ-236? И на биологии не преподаётся практика протезирования зубов. Эти вопросы – уже задача профессионального образования, но никак не общего.
А вот с информатикой получилась ситуация как раз противоположная. Определённые «общие» понятия, такие как архитектура ЭВМ (по плакатам, нарисованным в 80-х годах) и основы алгоритмизации, по инерции ещё преподаются, хотя порой и с довольно сильным отрывом от действительности.
А вот практическая составляющая сводится к программам типа «Введите A, введите B, получите A + B» на Бейсике и «глубокому» освоению процедуры создания таблицы в Word, когда любое отклонение мышки от заданной преподавателем траектории жестоко карается...
Мне кажется, такой подход как раз и приводит к тому, что, устроившись на работу или поступив в вуз, недавний ученик как огня боится компьютера, полностью теряет ориентацию в системе при минимальных изменениях интерфейса и при всплывании любого окошка, не упомянутого в инструкции, бежит к системному администратору.
По моему глубокому убеждению, сейчас назрела необходимость вернуть информатике былую «фундаментальность», когда изучаются не последовательность «кликов» для запуска веб-браузера, а основы архитектуры операционной системы и её организация; не назначение иконок на панели инструментов в Excel, записываемое под диктовку, а базовые понятия графического интерфейса пользователя... Причём в идеале – абстрагируясь от конкретной операционной системы.
Безусловно, практическая работа тоже необходима, но именно как практикум, дополняющий основной курс.
Нужно ли изучать языки программирования?
Понятно, что компьютеры изучать необходимо. А нужно ли в школе преподавать программирование? Ведь мы только что решили, что не стоит готовить из учеников полноценных специалистов в той или иной области, отбирая хлеб у вузов и колледжей.
Ну а как тогда объяснить школьнику, как именно работает операционная система или тот же Word? Без понимания основ программирования, без прикосновения к ним на практике информационные системы так и останутся «чёрными ящиками», а неизвестность ведь всегда пугает.
Естественно, не нужно ставить своей задачей научить школьника писать драйверы к Linux или полнофункциональные клиенты для сетей BitTorrent. Но показать частичку этого «волшебства», когда из нескольких десятков строк самых обычных букв и цифр рождается работающая программа – это просто необходимо.
Причём важным моментом здесь является «жизненность» этих экспериментов, их соответствие современным стандартам и тенденциям. Ну и, конечно же, полезность, практическая ценность. Если программа не вписывается в интерфейс нынешних систем и не делает ничего полезного, то её разработка вряд ли сможет вызвать необходимый интерес и желание действительно разобраться во всей этой «кухне», вместо того чтобы просто «содрать» код у соседа по парте.
Что нам надо от языка программирования?
Итак, возникает следующий вопрос – а какой же язык программирования лучше всего подходит на роль «учебного»? Традиционно это Basic или Pascal, но, к сожалению, сейчас они несколько устарели. Впрочем, чтобы не гадать на кофейной гуще, попробуем сформулировать основные требования, которым должен (по крайней мере, в идеале) соответствовать язык программирования для школы.
Во-первых, он должен быть прост и понятен. Если для того, чтобы вывести на экран любимое всеми «Hello, world!», потребуется целую четверть рассказывать пятиклассникам про «кучи», стеки и динамическое выделение памяти, то такой язык должен быть отброшен сразу.
Но с другой стороны, он также не должен быть и слишком простым, не позволяющим «выпрыгнуть» за пределы элементарных консольных диалогов. То есть в идеале язык программирования должен обладать способностью «эволюционировать» вместе с учениками, постепенно наращивая сложность и позволяя на первых этапах получить осязаемый результат, не углубляясь в излишние подробности.
Во-вторых, такому языку программирования нужна определённая «прозрачность», чтобы детали работы разрабатываемой программы не были скрыты за «виджетами и прочими гаджетами».
В-третьих, он должен быть современным. Не нужно бояться рассказывать детям про объектный подход к программированию, про модули и библиотеки. Ведь это всё есть, на этих понятиях основана работа современных вычислительных систем, с этим ученикам предстоит столкнуться в будущем, если они выберут себе специальность, связанную с компьютерами. В конце концов базовые концепции ООП совсем не сложнее органической химии и общей теории относительности.
В-четвёртых, было бы хорошо, если бы выбранный язык программирования был «практикующим». То есть это должен быть не искусственный, пусть и идеально соответствующий целям образования, а всё-таки реальный инструмент. Если навыки, полученные в школе, нельзя будет применить дома для разработки какой-нибудь «запускалки для игрушек», то их ценность будет уже заметно ниже. А если эти знания пригодятся и в университете, и на работе – так вообще замечательно.
Ну и, наконец, дополнительными плюсами будут доступность самого языка программирования и среды разработки, а также его многоплатформенность, то есть возможность использовать его независимо от того, рискнёт ли школа выбрать в качестве базовой платформы Linux или «останется верна» системам Windows.
Почему Python – лучший выбор?
Теперь попытаюсь объяснить, почему я вынес в заголовок статьи именно Python. Анализ сформулированных выше критериев показывает, что Python в той или иной мере соответствует всем этим требованиям.
Написать первую программу на нём предельно просто:
print ‘Ура! Я программирую!!!’
И всё! Если потребуется в будущем показать на практике концепцию переменных, просто развиваем этот скрипт:
message = ‘Ура! Я использую переменные!!!’
print message
И так, шаг за шагом, можно зайти настолько далеко, насколько это потребуется. Вплоть до графического интерфейса и объектов. Причём Python позволяет выбирать любую стратегию преподавания: и быть «на шаг впереди», когда с каждым разом вводятся всё новые и новые понятия, и «на шаг позади», когда сами ученики начинают чувствовать, что какую-то задачу можно решить проще, и таким образом, задают темп движению вперёд.
Python прекрасно подходит для демонстрации и пооперационного (линейного), и процедурного, и объектного подходов. Так что преподавателю не придётся переключаться с одного языка программирования на другой по мере усложнения излагаемого материала.
Причём и работа с объектами, и программирование графического интерфейса осуществляются на Python достаточно легко и понятно, и в то же время без излишнего упрощения и «визуализации», позволяя разобраться, что называется, на нижнем уровне, как на самом деле формируются окна графического интерфейса и как на них появляются кнопки, поля ввода; почему что-то происходит, если щёлкнуть по той или иной кнопке, и т. д. По себе помню, сколько восторга доставляет простая линия на экране, но не прочерченная мышкой, а нарисованная моей собственной программой!
Прозрачность Python тоже не вызывает сомнений – вплоть до того, что можно заглянуть в исходный код какого-то модуля и убедиться, что внутри у него всё то же самое, что рассказывает преподаватель. Да и что может быть прозрачнее, чем открыть обычный текстовый файл, ввести самые обычные строки и получить итоговый результат безо всякой компиляции, компоновки и т. п.?
Прибавим к этому лёгкость, с которой читается код на Python. Программиста, написавшего тысячи строк на Java, все эти отступы могут раздражать, но для начинающего разработчика они позволяют не запутаться в собственном коде, не говоря уже про чужой. А ведь умение разбираться в чужом, уже готовом коде, и использовать его в своей программе – это тоже непременный и очень важный элемент программирования, о котором почему-то часто забывают.
Далее, Python – безусловно, современный язык. Достаточно открыть любой дистрибутив Linux и посмотреть, что используется для многих средств администрирования и даже игр. Это же говорит и о том, что им пользуются на практике, что это – «живой», постоянно развивающийся язык программирования.
Ну и то, что он совершенно бесплатен, не требует дорогостоящих инструментариев, замечательно работает практически на всех современных операционных системах, делает его ещё более привлекательным.
А что же его «конкуренты»? Basic и Pascal, внеся немалый вклад в развитие информационных дисциплин, к сожалению, потеряли свою актуальность. Их «визуальные» последователи – Visual Basic и Delphi – мало пригодны для преподавания программирования, поскольку не позволяют видеть скрывающийся за «мастерами» код, и тем самым не дают полного понимания того, как на самом деле работают программы. Да и высокая стоимость инструментов разработки не позволяет их применять достаточно широко (даже если школы и получат их по какой-нибудь льготной «академической» лицензии, школьники всё равно будут лишены возможности поставить на свой домашний компьютер полноценную версию).
Про языки «семейства Си» вообще можно не упоминать – их сложность просто непостижима для школьного уровня. К сожалению, сюда же я отношу и Java. Несмотря на высокую популярность этого языка, особенно в корпоративном секторе, и сравнительную простоту разработки, всё же его «абсолютная и непреклонная объектность» будет являться барьером на первых шагах обучения.
Perl? Да, хороший, мощный, ни в чём не уступающий языку Python. Но его вольный стиль и возможность писать код хоть ёлочкой, хоть столбиком, хоть вообще в одну строку – слишком тяжёлое испытание для неокрепших детских пальчиков, не привыкших к определённому стилю программирования. Да и графический интерфейс Python более «интегрирован» в язык, чем графические модули к Perl. Кроме того, следует отметить и более ясную и простую для понимания объектную концепцию Python.
В последние годы Perl всё больше и больше вытесняется набирающим силу PHP, причём не только на ниве веб-программирования. Безусловно, это очень простой и понятный язык, но, на мой взгляд, он имеет и те черты, которые я отнёс к недостаткам языка Perl, в частности, излишнюю «вольность» стиля. Плюс к этому его (былая, но ещё не забытая) ориентированность на веб-разработку может привести к слишком однобокому подходу в его преподавании.
Кстати, английского языка бояться не нужно. Есть мнение, что использование «реальных» языков программирования создаёт определённый барьер для детей, изучающих другой иностранный язык, не английский. Но поскольку в программировании не требуется знать времена глаголов и правила построения деепричастных оборотов, а выучить пару десятков новых слов – вряд ли такая уж непосильная задача, то на самом деле нет и никакого барьера. Так что различные искусственные языки вроде РЯПдш («Русский Язык Программирования для школы») лишь усложняют ситуацию, отрывая теорию от практики и плодя лишние сущности.
Так что, при всём богатстве альтернатив Python, как мне кажется, на сегодняшний день является идеальным кандидатом, чтобы вдохнуть новую жизнь в такую жизненно необходимую (извините за каламбур) школьную дисциплину, как информатика.
- Ремнёв А. А. Программирование в курсе средней школы. – http://som.fio.ru/item.asp?id=10009522.
- Ильясов А. Н. Один из подходов к изучению программирования в базовом курсе информатики средней школы – http://www.ito.su/2001/I/I-2-38.html.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|