О обучении информатике в профильных классах общеобразовательной школы

(*****@***ru)

Государственное автономное общеобразовательное учреждение города Москвы «Центр образования№ 000 Царицыно»

(*****@***ru)

Государственное автономное общеобразовательное учреждение города Москвы «Центр образования№ 000 Царицыно»

Аннотация

Рассмотрены особенности профильного обучения программированию. Особое внимание уделено выбору языков программирования и программных сред.

Профильное обучение информатике на сегодня весьма востребовано. Во многом это обусловлено востребованностью IT специалистов на рынке профессий и сравнительно высокой оплатой их труда.

Информатика — дисциплина неустоявшаяся. Это в частности проявляется в различии между  содержанием ФГОС и реальными потребностями народного хозяйства. ФГОС основной упор делает на теоретическую информатику, в то время, как рынок вакансий требует специалистов, способных решать практические задачи: программистов, системных администраторов, и специалистов по ремонту и наладке вычислительной техники. Поэтому, при обязательном выполнении всех требований ФГОС, в профильном изучении информатики основное внимание должно уделяться подготовке к дальнейшему обучению этим специальностям.

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

НЕ нашли? Не то? Что вы ищете?

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

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

В отличие от этого, для обучения программированию требуются только компьютеры (причем не обязательно дорогие и современные) и простейшее программное обеспечение, которое, в большинстве случаев, может быть свободно распространяемым.

Если в 70-е годы программирование представляло собой более или менее однородный предмет, то на сегодня оно становится все более и более специализированным. Специализация идет как по областям применения, так и по подходам, применяемым к решению тех или иных задач.

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

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

Профессиональные программисты представляют сравнительно закрытую группировку, проникнуть в которую со стороны очень не просто. Помимо изложенных выше причин такая замкнутость определяется тем, что изучить программирование «с начала» практически невозможно, так как каждый преподаватель обозначает это «начало» по своему усмотрению.

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

С нашей точки зрения, профильное обучение программированию должно отображать все три ведущих его фактора и поэтому быть ближе всего к системному. Обучение должно начинаться с изучения устройства процессора и системы его команд [1]. С этой целью мы используем системный низкоуровневый отладчик Debug. К сожалению, это программное средство доступно только под младшими, 16 и 32 битными, версиями Windows, частью которых оно и является. Отметим, что полное понимание программной реализации алгоритма возможно только после проработки основных свойств исполнителя.

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

Дальнейшее изучение программирования требует использования компилятора и соответствующего языка программирования. Если в начале нынешнего тысячелетия в качестве такового повсеместно использовался Basic, то сегодня его также повсеместно вытесняют Pascal и Python. По нашему мнению, эти языки далеки от полной реализации  возможностей современной аппаратной платформы.

Модный ныне Python вполне возможен для обучения программированию в непрофильных классах. В то же время следует учитывать, что профессиональное программирование на этом языке весьма сложно и требует специальных знаний, увы, не школьного уровня. Говоря другими словами, Python не учебный язык.

В качестве учебного языка обычно позиционируется Pascal, пришедший на смену одному из первых языков программирования Алголу. Его действительно можно считать учебным применительно к теме «устройство и конструирование компиляторов», но отнюдь не к теме «алгоритмика и программирование» и, тем более, к теме «системное программирование».

С нашей точки зрения, наиболее подходящим для профильного обучения программированию является язык С с последующим переходом к С++. Прежде всего это язык системного программирования промежуточного уровня, позволяющий отследить связь между особенностями работы исполнителя (процессора) и их программной реализацией. Язык С проектировался как кроссплатформенный ассемблер и по сути своей таковым и является. Он никоим образом не маскирует понятия адреса информации, более того этот язык его существенно использует. И, наконец, для этого языка разработано несколько удобных компиляторов и отладчиков. Прежде всего, это легендарные gcc и gdb. Разработанные предварительно для операционной системы Linux они портированы в большинство операционных систем, используемых в настоящее время.

Литература

, Герасименко методическое пособие «Изучение работы процессора i8086 и основ низкоуровневого программирования»//Хроники объединенного фонда электронных ресурсов “наука и образование” № 06 (85), июнь 2016, с.22.