Python – в школу!::Журнал СА 10.2006
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

Как хорошо вы это знаете  

Портал Инкоманд. Для чего он? Для кого? Какие проблемы решает?

Компания «ЕМДЕВ» – создатель интернет-портала, предлагает всем желающим протестировать себя на

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9997
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8211
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8303
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5272
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5947
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 Python – в школу!

Архив номеров / 2006 / Выпуск №10 (47) / Python – в школу!

Рубрика: Карьера/Образование /  Образование

Сергей Супрунов

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, как мне кажется, на сегодняшний день является идеальным кандидатом, чтобы вдохнуть новую жизнь в такую жизненно необходимую (извините за каламбур) школьную дисциплину, как информатика.

  1. Ремнёв А. А. Программирование в курсе средней школы. – http://som.fio.ru/item.asp?id=10009522.
  2. Ильясов А. Н. Один из подходов к изучению программирования в базовом курсе информатики средней школы – http://www.ito.su/2001/I/I-2-38.html.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru