Начиная с 1985 г., после введения предмета «Информатика» в школьный курс, остается актуальным вопрос подготовки учителя информатики. Сложность решения этого вопроса, с одной стороны, обусловлена быстрым изменением самой предметной области «информатика». Бурное развитие вычислительной техники, информационных технологий, информатизация общества требует ежегодной актуализации предметных знаний учителя, что, естественно, должно находить отражение в его профессиональной подготовки.
С другой стороны, постоянно поднимается вопрос о превалировании того или иного раздела информатики в предметной подготовки учителя. В частности, высказывается мнение, предполагающее отход от линии алгоритмизации и программирования, как менее значимой по сравнению с другими линиями, например линией информационных технологий. Но отход от изучения раздела программирования, как в школе, так и в вузе, несомненно, обедняет всю науку информатику, лишает возможности формирования особого типа мышления, практических навыков, которые находят свое применение и во многих других областях знаний.
Рассмотрев историю развития науки информатики, можно отметить, что программирование будет выступать неотъемлемым компонентом ее изучения. Необходимо только говорить о совершенствовании методики его изучения.
Предполагается отход от изначального варианта обучения, предложенного в 1985 г. когда программирование выступало как способ реализации алгоритмов, инструмент анализа и исследования программ. Различные варианты предлагаются в работах Е.А. Ракитиной, Л.А. Кугель, В.Е. Жужжалова [4, 5, 8].
Нами же предлагается так называемый «задачный» подход, в котором определяется важность задачи, а парадигма, язык программирования, выступает лишь инструментом решения задачи.
С понятием «задача» человек сталкивается постоянно, как в естественно-математических, так и психолого-педагогических, методических науках. Так в психолого-педагогической литературе можно обозначить несколько подходов к определению понятия «задача». Г.А. Балл [3] отмечает, что изначально само понятие «задача» никак нельзя признать четко определенным. Общее психологическое определение задачи можно встретить в теории деятельности. А.Н. Леонтьев отмечает, что задача – это «цель, данная в определенных условиях» [6, с. 309]. Этим определением пользуется в своих работах С.Л. Рубинштейн, но дает свое определение задачи как цели для мыслительной деятельности индивида, «соотнесенную с условиями, которыми она задана» [9, с. 369]. В работе «Психологический словарь» под редакцией В.В. Давыдова, А.В. Запорожца, приводится такое определение задачи: «задача (проблема) – цель деятельности, данная в определенных условиях и требующая для своего достижения использования адекватных этим условиям средств» [10, с. 106]. Таки образом, любая задача, требующая своего решения с помощью определенных средств языка программирования, представляет собой некую цель, к которой надо стремится. Языки программирования как раз и являются одним из современных средств решения задачи.
Возникает совершенно иная постановка проблемы в теории и методике изучения программирования, которая предполагает не первое место выдвигать не изучения самого языка, его основного синтаксиса, а структуры, некоторых парадигм, принципов построения программ, ориентированных на задачи. Такого подхода целесообразно предлагается придерживаться и в школе, и в вузе.
Соответственно, встает проблема классификации решаемых задач, выявление их свойств – признаков классификации, которые затем позволили ли бы выбирать наиболее эффективную парадигму их решения.
Предлагается рассматривать пространство задач с помощью введения своеобразной системы координат, на пересечении возникают классы задач, решаемые с помощью определенных парадигм. Б. Хигман в своей работе «Сравнительное изучение языков программирования» также анализирует вариант классификации языков программирования, исходя из решения возникающих перед ними задач: «Другой причиной создания различных типов языков является различный подход к решению возникающих задач» [11, c. 23]. Дж. Маккарти также неоднократно высказывал идею использования различных языков программирования для решения определенных задач [12, с. 2].
Дж. Маплас также придерживается мнения, что «целью написания программы для ЭВМ является либо решение определенной задачи, либо представление системы, существующей в реальном мире, таким образом, чтобы программа могла использоваться для моделирования поведения этой системы. Целесообразно оценивать взгляды на мир, навязываемые различными языками программирования, в соответствии с тем, насколько хорошо они соответствуют указанным выше целям. …Нужно определить, какие языки и программные средства наилучшим образом ей удовлетворяют» [7, c. 13].
При классификации задач мы предполагаем построение своеобразной «оси координат». На наш взгляд, будет целесообразно выделить следующие оси (рисунок):
Оси для классификации задач
1. Местонахождения объекта задачи: пространство или время. Специфика реализации решения задачи зависит от особенностей проблемной области, от характера имеющихся знаний. Задачи, относящиеся к пространственному типу, нацелены на представление, описание данных; задачи, относящиеся к временному типу, нацелены на обработку данных.
2. Степень формализации: полностью, слабо формализованная задача, неформализованная задача.
3. Структура хранимых данных.
Таким образом, в заданной системе координат каждая задача будет находится на пересечении соответствующих координат и относится к определенному типу, который будет задаваться тремя характеристиками. А для эффективного решения каждого такого выделенного типа будет подходить определенная парадигма.
При проведении классификации задача попадает в определенный класс на данной системе координат, что будет обуславливать и выбор парадигмы для ее решения. Соответственно, методику обучения программированию предполагается начинать именно с разбора стоящей перед обучаемым задачи, с определения ее основных характеристик и выбора наиболее адекватного и рационального способа ее решения.