Что такое рефлексия в информатике определение
Основные принципы программирования: интроспекция и рефлексия
Авторизуйтесь
Основные принципы программирования: интроспекция и рефлексия
Часто во время работы программы нам бывает нужна информация о данных — например, какой у них тип или являются ли они экземпляром класса (в ООП). Опираясь на эти знания, нам нужно проводить над данными некоторые операции, или даже изменять их — но необходимого вида данных у нас может и не быть! Если вы ничего не поняли, не расстраивайтесь — мы подробно во всём разберёмся. Всё, что я здесь описал — это иллюстрация целей двух возможностей, присутствующих почти в каждом современном языке программирования: интроспекции и рефлексии.
Интроспекция
Интроспекция — это способность программы исследовать тип или свойства объекта во время работы программы. Как мы уже упоминали, вы можете поинтересоваться, каков тип объекта, является ли он экземпляром класса. Некоторые языки даже позволяют узнать иерархию наследования объекта. Возможность интроспекции есть в таких языках, как Ruby, Java, PHP, Python, C++ и других. В целом, инстроспекция — это очень простое и очень мощное явление. Вот несколько примеров использования инстроспекции:
В Python самой распространённой формой интроспекции является использование метода dir для вывода списка атрибутов объекта:
В Ruby интроспекция очень полезна — в частности из-за того, как устроен сам язык. В нём всё является объектами — даже класс — и это приводит к интересным возможностям в плане наследования и рефлексии (об этом ниже). Если вы хотите узнать об этом больше, советую прочитать мини-цикл Metaprogramming in Ruby.
Прим. перев. Также не будет лишним прочитать нашу статью, посвящённую интроспекции в Ruby.
Вот несколько простых примеров интроспекции с использованием IRB (Interactive Ruby Shell):
Вы также можете узнать у объекта, экземпляром какого класса он является, и даже «сравнить» классы.
Однако интроспекция — это не рефлексия; рефлексия позволяет нам использовать ключевые принципы интроспекции и делать действительно мощные вещи с нашим кодом.
Рефлексия
Интроспекция позволяет вам изучать атрибуты объекта во время выполнения программы, а рефлексия — манипулировать ими. Рефлексия — это способность компьютерной программы изучать и модифицировать свою структуру и поведение (значения, мета-данные, свойства и функции) во время выполнения. Простым языком: она позволяет вам вызывать методы объектов, создавать новые объекты, модифицировать их, даже не зная имён интерфейсов, полей, методов во время компиляции. Из-за такой природы рефлексии её труднее реализовать в статически типизированных языках, поскольку ошибки типизации возникают во время компиляции, а не исполнения программы (подробнее об этом здесь). Тем не менее, она возможна, ведь такие языки, как Java, C# и другие допускают использование как интроспекции, так и рефлексии (но не C++, он позволяет использовать лишь интроспекцию).
По той же причине рефлексию проще реализовать в интерпретируемых языках, поскольку когда функции, объекты и другие структуры данных создаются и вызываются во время работы программы, используется какая-то система распределения памяти. Интерпретируемые языки обычно предоставляют такую систему по умолчанию, а для компилируемых понадобится дополнительный компилятор и интерпретатор, который следит за корректностью рефлексии.
Мне кажется, что мы сказали много об определении рефлексии, но смысла это пока несёт мало. Давайте взглянем на примеры кода ниже (с рефлексией и без), каждый из которых создаёт объект класса Foo и вызывает метод hello.
Этот список отнюдь не исчерпывает возможности рефлексии. Это очень мощный принцип, который к тому же является обычной практикой в метапрограммировании. Тем не менее, при использовании рефлексии нужно быть очень внимательным. Хотя у неё и есть свои преимущества, код, использующий рефлексию, значительно менее читаем, он затрудняет отладку, а также открывает двери по-настоящему плохим вещами, например, инъекции кода через выражения eval.
Eval-выражения
Некоторые рефлективные языки предоставляют возможность использования eval-выражений — выражений, которые распознают значение (обычно строку) как выражение. Такие утверждения — это самый мощный принцип рефлексии и даже метапрограммирования, но также и самый опасный, поскольку они представляют собой угрозу безопасности.
Рассмотрим следующий пример кода на Python, который принимает данные из стороннего источника в Сети (это одна из причин, по которой люди пользуются eval-выражениями):
Защита программы будет нарушена, если кто-то передаст в метод get_data() такую строку:
Для безопасного использования eval-утверждений нужно сильно ограничивать формат входных данных — и обычно это лишь занимает лишнее время.
Заключение
Интроспекция и рефлексия — это очень мощные инструменты современных языков, и их понимание может позволить вам писать по-настоящему крутой код. Ещё раз отметим: интроспекция — это изучение атрибутов объекта, а рефлексия — это манипуляция ими. Будьте внимательны при использовании рефлексии, поскольку она может сделать ваш код нечитаемым и уязвимым. Чем больше сила, тем больше и ответственность — вот девиз всего, что связано с метапрограммированием.
Рефлексия
Введение в рефлексию. Класс System.Type
Рефлексия представляет собой процесс выявления типов во время выполнения приложения. Каждое приложение содержит набор используемых классов, интерфейсов, а также их методов, свойств и прочих кирпичиков, из которых складывается приложение. И рефлексия как раз и позволяет определить все эти составные элементы приложения.
Основной функционал рефлексии сосредоточен в пространстве имен System.Reflection. В нем мы можем выделить следующие основные классы:
Assembly : класс, представляющий сборку и позволяющий манипулировать этой сборкой
AssemblyName : класс, хранящий информацию о сборке
MemberInfo : базовый абстрактный класс, определяющий общий функционал для классов EventInfo, FieldInfo, MethodInfo и PropertyInfo
EventInfo : класс, хранящий информацию о событии
FieldInfo : хранит информацию об определенном поле типа
MethodInfo : хранит информацию об определенном методе
PropertyInfo : хранит информацию о свойстве
ConstructorInfo : класс, представляющий конструктор
Module : класс, позволяющий получить доступ к определенному модулю внутри сборки
ParameterInfo : класс, хранящий информацию о параметре метода
Эти классы представляют составные блоки типа и приложения: методы, свойства и т.д. Но чтобы получить информацию о членах типа, нам надо воспользоваться классом System.Type.
Класс System.Type представляет изучаемый тип, инкапсулируя всю информацию о нем. С помощью его свойств и методов можно получить эту информацию. Некоторые из его свойств и методов:
Метод FindMembers() возвращает массив объектов MemberInfo данного типа
Метод GetConstructors() возвращает все конструкторы данного типа в виде набора объектов ConstructorInfo
Метод GetEvents() возвращает все события данного типа в виде массива объектов EventInfo
Метод GetFields() возвращает все поля данного типа в виде массива объектов FieldInfo
Метод GetInterfaces() получает все реализуемые данным типом интерфейсы в виде массива объектов Type
Метод GetMembers() возвращает все члены типа в виде массива объектов MemberInfo
Метод GetMethods() получает все методы типа в виде массива объектов MethodInfo
Метод GetProperties() получает все свойства в виде массива объектов PropertyInfo
Свойство Name возвращает имя типа
Свойство Assembly возвращает название сборки, где определен тип
Свойство Namespace возвращает название пространства имен, где определен тип
Свойство IsArray возвращает true, если тип является массивом
Свойство IsClass возвращает true, если тип представляет класс
Свойство IsEnum возвращает true, если тип является перечислением
Свойство IsInterface возвращает true, если тип представляет интерфейс
Получение типа
Получение типа через typeof :
Здесь определен класс User с некоторым набором свойств и полей. И чтобы получить его тип, используется выражение Type myType = typeof(User);
Получение типа с помощью метода GetType класса Object :
В отличие от предыдущего примера здесь, чтобы получить тип, надо создавать объект класса.
Первый параметр указывает на полное имя класса с пространством имен. В данном случае класс User находится в пространстве имен TestConsole. Второй параметр указывает, будет ли генерироваться исключение, если класс не удастся найти. В данном случае значение false означает, что исключение не будет генерироваться. И третий параметр указывает, надо ли учитывать регистр символов в первом параметре. Значение true означает, что регистр игнорируется.
В данном случае класс основной программы и класс User находятся в одном проекте и компилируются в одну сборку exe. Однако может быть, что нужный нам класс находится в другой сборке dll. Для этого после полного имени класса через запятую указывается имя сборки:
Теперь исследуем тип и получим всю информацию о нем.
Разбираемся с рефлексией на примерах в C#
Приветствую всех, сегодня поговорим о рефлексии, для чего она нужна, ее применения. Тема эта очень интересная, и ее методы использования часто приходится применять в больших проектах.
Рефлексия (отражение) — это процесс, во время которого программа может отслеживать и модифицировать собственную структуру и поведение во время выполнения, это своего рода процесс обнаружения типов во время выполнения.
Рефлексия позволяет: перечислять члены типа, создавать новые экземпляры объекта, запускать на выполнение члены объекта, извлекать информацию о типе, извлекать информацию о сборке, исследовать пользовательские атрибуты, примененные к типу, создавать и компилировать новые сборки.
Метаданные описывают все классы и члены классов, определённые в сборке, а также классы и члены классов, которые текущая сборка вызывает из другой сборки.
Манифест сборки— коллекция данных, с описанием того, как элементы любой сборки (статической или динамической) связаны друг с другом. Манифест сборки содержит все
метаданные, необходимые для задания требований сборки к версиям и удостоверения безопасности, а также все метаданные, необходимые для определения области действия сборки и разрешения ссылок на ресурсы и классы. Манифест сборки может храниться в PE-файле (EXE или DLL) с кодом MSIL или же в отдельном PE-файле, содержащем только данные манифеста.
Модули — это контейнеры типов, расположенные внутри сборки. Модуль может быть контейнером в простой, или многофайловой сборке. Несколько модулей в одной сборке применяются в редких случаях, когда нужно добавить код на разных языках в одну сборку или обеспечить поддержку выборочной загрузки модулей.
Парадигма программирования, положенная в основу отражения, называется рефлексивным программированием. Это один из видов метапрограммирования.
System.Reflection — Пространство имен содержит типы, предназначенные для извлечения сведений о сборках, модулях, членах, параметрах и других объектах в управляемом коде путем обработки их метаданных. Эти типы также можно использовать для работы с экземплярами загруженных типов, например для подключения событий или вызова методов.
Класс Type.
Type является корневым классом для функциональных возможностей рефлексии и основным способом доступа к метаданным. С помощью членов класса Type можно
получить сведения об объявленных в типе элементах: конструкторах, методах, полях, свойствах и событиях класса, а также о модуле и сборке, в которых развернут данный класс.
Рефлексия и кодогенерация в C++
Язык С++ по сей день является одним из самых востребованных и гибких языков программирования. Но иногда возможностей языка не хватает, несмотря на то что стандарт развивается и расширяется. С такой проблемой столкнулся и я в процессе разработки 2D движка для игр. Я стоял перед необходимостью решения несколько нетривиальных задач, таких как сериализация, анимирование и связка с редактором. Для этого отлично подходит рефлексия. Готовые решения из сети, к сожалению, мне не подошли, поэтому пришлось конструировать свой велосипед.
Далее описаны детали реализации и демо проект. Кому интересно — добро пожаловать под кат.
Требования
Существует мнение, что правильно поставленные условия задачи практически решают эту задачу. Именно поэтому перед началом реализации были собраны необходимые требования и ограничения:
Синтаксис
Следуя требованию о простоте был выработан довольно простой синтаксис определения объекта поддерживающего рефлексию: необходимо чтобы класс был унаследован от IObject, содержал в теле макрос IOBJECT(*имя класса*); и у членов класса были указаны необходимые атрибуты через комментарии.
Пример класса с поддержкой рефлексии:
Примеры использования рефлексии:
Реализация
Как вы наверное уже догадались, работает все просто: пользователь объявляет классы, которые поддерживают рефлексию, а отдельная утилита генерирует код, который инициализирует типы в системе. В данной статье я опишу принцип работы, с минимальным включением исходного кода, так как его наличие раздует статью. Но к статье прилагается демо проект со всеми исходниками, который можно посмотреть и протестировать.
Итак, подробнее о структуре рефлексии.
Тип объекта
Каждому классу соответствует описание типа, в котором содержится имя класса, информация о наследовании, члены и методы класса. С помощью типа можно создать экземпляр класса. Так же в типе класса есть довольно интересный функционал: можно получить указатель на член класса по его пути и наоборот, получить путь к члену класса по его указателю. Чтобы понять что делают последние две функции достаточно взглянуть на пример использования:
Зачем это нужно? Ближайший пример — анимация. Допустим, есть анимация, которая анимирует параметр value из примера. Но как сохранить такую анимацию в файл? Здесь и нужны эти функции. Мы сохраняем ключи анимации с указанием пути к анимируемому параметру «aObject/bObject/value», и при загрузке из файла по этому пути находим нужную нам переменную. Такой подход позволяет анимировать совершенно любые члены любых объектов и сохранять/загружать в файл.
Однако, есть небольшой недостаток, который необходимо учитывать. Поиск указателя на член класса по пути происходит быстро и линейно, но обратный процесс совершенно не линеен и может занять много времени. Алгоритму приходится «прочесывать» все члены класса, их члены и так далее, пока не встретит нужный нам указатель.
Члены класса
Каждый член класса определяется с помощью типа FieldInfo, который содержит в себе тип члена, его имя и список атрибутов. Так же тип члена класса позволяет получить значение члена класса для определенного экземпляра и наоборот, присвоить значение. Тип, имя и атрибуты заполняются сгенерированным кодом. Присваивание и получение значения работают через адресную арифметику. На этапе инициализации типа высчитывается смещение в байтах относительно начала памяти под объект, затем, при присваивании или получении значения к адресу объекта прибавляется это смещение.
Функции класса
Каждой функции класса соответствует объект с интерфейсом FunctionInfo, который хранит в себе тип возвращаемого значения, имя функции и список параметров. Почему именно интерфейс и как вызвать функцию из этого интерфейса? Чтобы вызвать функцию нам нужен указатель на нее. Причем, указатель на функцию класса должен быть такого вида:
Для хранения таких указателей определены классы определены шаблонные классы:
Шаблонная магия пугает, но работает все довольно просто. На этапе инициализации типа для каждой функции создается объект класса SpecFunctionInfo или SpecConstFunctionInfo в зависимости от константности функции и помещается в тип объекта Type. Затем, когда нам нужно вызвать функцию из интерфейса FunctionInfo, мы статически преобразуем интерфейс в ISpecFunctionInfo и вызываем у него виртуальную функцию Invoke, переопределенный вариант которой выполняет функцию по сохраненному адресу.
Атрибуты
Функция атрибутов — это добавление мета информации для членов классов. С помощью атрибутов можно указывать сериализуемые члены, тип их сериализации, отображение в редакторе, параметры анимации и так далее. Атрибуты наследуются от интерфейса IAttribute и добавляются к членам класса на этапе инициализации типа. Пользователю лишь необходимо обозначит необходимые атрибуты через комментарии к членам класса.
Модуль рефлексии
Итак, вся структура типов у нас есть, необходимо все это где-то хранить. С этой простой задачей справляется класс-синглтон Reflection. С его помощью можно получить тип по имени, создать экземпляр типа или получить список всех зарегистрированных типов.
Кодогенерация
Почему именно кодогенерация? Есть решения рефлексии с помощью хитрых макросов, прописывания функции сериализации и тому подобное. Но у таких подходов один общий минус — фактически приходится вручную описывать типы. В рефлексии от этого никуда не избавиться, поэтому проще всего доверить эту рутинную работу отдельной подпрограмме, которая работает до компиляции и генерирует отдельный исходный файл с инициализацией типов.
По-хорошему, это конечно же должен делать сам компилятор, ведь у него есть вся информация о классах, членах и методах. Но решение должно быть не зависимым от компилятора, в конце концов глупо навязывать свой определенный компилятор разработчику, тем более для 2D игр с кучей целевых платформ.
Именно поэтому кодогенерация отдельной утилитой. К сожалению, утилита в моем проекте не может похвастаться изящностью и стопроцентной стабильностью, но на моем уже довольно немаленьком проекте она работает прекрасно. В будущем она наверняка будет переписана и дополнена, так как у нее есть как минимум один существенный минус — она написана на C#, что требует Windows платформы, либо наличия Mono. Это путь наименьшего сопротивления, и я выбрал его потому что на этапе демо версии мне нужно как можно больше функционала в проекте. Тем не менее в этой статье я опишу этапы ее работы и с какими трудностями я столкнулся.
Работа утилиты делится на два этапа:
Парсинг исходников проекта
Здесь мой подход отличается от работы компиляторов.
Генерация итогового исходника с инициализацией типов
Данный этап включает в себя генерирование следующих частей:
В конечном итоге мы получаем исходных файл с функцией, которая инициализирует все типы приложения. Пользователю лишь необходимо ее вызвать при старте приложения.
Рефлексия на уроках информатики
Онлайн-конференция
«Современная профориентация педагогов
и родителей, перспективы рынка труда
и особенности личности подростка»
Свидетельство и скидка на обучение каждому участнику
Министерство образования и науки, молодежи и спорта Украины
Министерство образования и науки Автономной Республики Крым
Республиканский конкурс проектов молодых педагогов «Шагни за горизонт»
Проект
учителя информатики
Бахчисарайской средней общеобразовательной школы №4
Слабченко Александры Юрьевны
в номинации «Профи»
по направлению «Развитие инновационного педагогического потенциала»
на тему:
«Теоретические и практические основы использования рефлексии на уроках информатики»
Современный урок информатики характеризуется большой интенсивностью и требует от учеников концентрации внимания и напряжения сил, поэтому внимание ученых, методистов и учителей направлено на поиск резервов для совершенствования урока информатики, на повышение его эффективности, действенности.
Резервы кроются в повышении целенаправленности обучения, усилении его мотивации, информационной ёмкости содержания образования, применении современных методов обучения, активизации методов обучения, активизации темпов учебных действий, развитии рефлексивных навыков труда, использовании новейших информационных технических средств обучения.
Рефлексия очень часто используется на уроках в школах. Данный проект раскрывает особенности применения рефлексии на уроках информатики. Необходимость изучения особенностей рефлексии на уроках информатики обусловлена тем, что рефлексия – это деятельность человека, направленная на осмысление своих собственных действий, процедура, осуществляющая снятие практического затруднения на уроках информатики. С помощью рефлексии происходит процесс осмысления и переосмысления полученных знаний.
Проблема рефлексии в педагогической деятельности выступает особенно ярко потому, что, рассмотрев структуру, специфику и другие ее особенности, можно более обоснованно подходить к проблеме произвольности всех психических процессов учащегося. Соответственно, осмыслив и исследовав роль рефлексии в этом вопросе, можно работать над повышением сознательности и произвольности всех процессов, входящих в изучение информатики.
Таким образом, актуальность этой темы заключается в ее высокой значимости, злободневности.
Как показывают многочисленные исследования, особенности рефлексии в процессе мышления являются необходимым условием для успешной реализации практической деятельности.
Цель проекта – выявить особенности рефлексии на уроках информатики, собрать из различных источников и систематизировать приемы рефлексии для применения на практике.
Объект исследования – особенности рефлексии на уроках информатики.
Предмет исследования – методика применения рефлексии на уроках информатики.
изучить психолого-педагогическую и методическую литературу о рефлексии, выявить педагогические условия развития;
определить особенности использования рефлексии на уроках информатики;
разработать рекомендации и практический материал для применения рефлексии на уроках информатики.
Некоторые выводы, касающиеся практического применения рефлексии на уроках информатики, были сделаны на базе Бахчисарайской СОШ № 4 г. Бахчисарая.
Материалы данного проекта могут быть использованы учителями информатики.
Глава 1. Теоретические основы использования рефлексии в учебном процессе
Рефлексия – размышление человека, направленное на анализ самого себя (самоанализ) – собственных состояний, своих поступков и прошедших событий. При этом глубина рефлексии, самоанализ зависит от степени образованности человека, развитости морального чувства и уровня самоконтроля. Рефлексия, в упрощённом определении, – это «разговор с самим собой». Слово рефлексия происходит от латинского reflexio – обращение назад. Словарь иностранных слов определяет рефлексию как размышление о своём внутреннем состоянии, самопознание. Толковый словарь русского языка трактует рефлексию как самоанализ. В современной педагогике под рефлексией понимают самоанализ деятельности и её результатов.
Ценностным ориентиром образования становится формирование способности личности к самоорганизации в учебной, профессиональной деятельности, способности к самоизменению и саморазвитию.
Рефлексивная деятельность характеризуется следующим: ей присущи свойства деятельности (целенаправленность, преобразующий характер, предметность, осознанность) и характерна общность в построении и способов, процесса деятельности ее конечных результатов.
Рефлексивная среда – это некая система условий развития личности, открывающая перед ней возможность самоисследования и самокоррекции социально-психологических и профессиональных ресурсов [6].
Учитель должен постоянно давать учащимся средства для выхода в пространство чистого мышления (схемы, графики, формулы, таблицы, карты и пр.) и обучать ими пользоваться.
Организовать деятельность учащихся следует таким образом, чтобы они могли выйти в более мощную рефлексивную позицию, чем им (каждому конкретному ученику) было присуще до этого момента. Этого можно достичь, например, посредством интерпретации действий учащегося при помощи достаточно мощных категорий, вынуждая учащихся рефлектировать свои действия этими категориями как средствами и, соответственно, осуществлять задаваемые этими категориями действия.
Обязательным условием создания развивающей среды на уроке является этап рефлексии. Она помогает ученикам сформулировать получаемые результаты, определить цели дальнейшей работы, скорректировать свои последующие действия. Особенно актуальной является рефлексия для дистанционных форм обучения, когда ученик и учитель разделены пространством. В этом случае в рефлексии ученик представляет механизм самопознания своей деятельности, который поможет не только ему, но и дистанционному педагогу наблюдать за ходом обучения. Рефлексия связана с очень важным действием – целеполаганием. Постановка учеником целей своего образования предполагает их выполнение и последующее осмысление способов достижения поставленных целей. Рефлексия бывает:
а) индивидуальная – формирование реальной самооценки («За что ты можешь оценить свою работу?», беседа с ребенком по результатам самооценки, «Почему выбран тот или иной уровень?»)
б) групповая – акцентирование ценности деятельности каждого члена группы для достижения максимального результата в решении поставленной задачи. («Смогли бы сделать, если бы с нами не работал ….(имя)» «Какую помощь в работе оказал… (имя)»)
Рефлексия может осуществляться не только в конце урока, как это принято считать, но и на любом его этапе. Рефлексия направлена на осознание пройденного пути, на сбор в общую копилку замеченного обдуманного, понятого каждым. Её цель не просто уйти с урока с зафиксированным результатом, а выстроить смысловую цепочку, сравнить способы и методы, применяемые другими со своими. Исходя из функций рефлексии, предлагается следующая классификация (см. Приложение 2):
Рефлексия настроения и эмоционального состояния
Рефлексия содержания учебного материала
Приёмы проведения рефлексии
Рефлексия осуществляется на протяжении всего учебного процесса, выполняя на разных его этапах различные функции. При этом, как уже отмечалось, важно, что в процесс рефлексии вовлечены и учащиеся, и учитель. Как показывает опыт, в случае неучастия кого-либо из субъектов процесса обучения в процессе рефлексии, весь механизм рефлексии оказывается неэффективным.
Рефлексия может быть осуществлена в устной или письменной форме. При этом она имеет разное смысловое назначение.
Устная рефлексия имеет своей целью обнародование собственной позиции, ее соотнесение с мнениями других людей. Часто ученики говорят о том, что выражение своих мыслей в форме повествования, диалога или вопросов помогает прояснить некоторые значимые проблемы. Данный прием – «Двухрядный круглый стол» – имеет своей целью обмен мнениями по наиболее актуальной проблеме для участников.
Двухрядный круглый стол
В процессе проведения «Двухрядного круглого стола» учитель формирует из участников две группы. Первая группа образует «внутренний» круг. Участники этой группы свободно высказываются по обсуждаемой проблеме. При этом важно чтобы учащиеся не критиковали точку зрения других, а коротко и четко высказывали свое собственное мнение. Участники второй группы («внешний круг») фиксируют высказывания участников внутреннего круга, готовя свои комментарии и вопросы. Комментарии могут касаться сути обсуждаемого вопроса, процесса обсуждения во внутреннем круге, закономерностей в высказываемых позициях, возможных причин подобных высказываний. Участники внутреннего круга должны четко и кратко выразить свое мнение, связывая его с предыдущими высказываниями. Учитель осуществляет координацию работы, не вмешиваясь в содержание высказываний, направляя диалог в рамки обсуждаемой проблемы, фиксируя различные точки зрения. После окончания работы внутреннего круга учитель предлагает группе, образующей внешний круг, принять участие в обсуждении. Участники внешнего круга работают в соответствии с правилами, описанными выше. В конце работы учитель просит участников сформулировать выводы в устной или письменной форме, после чего представляет свои замечания и комментарии.
Письменная рефлексия. Большинство ученых-психологов и педагогов, в том числе Ф. Кортахен, отмечают, что наиболее важной для развития личности является письменная рефлексия. Можно выделить несколько наиболее известных форм письменной рефлексии:
Эссе – как произведение небольшого объема, раскрывающее конкретную тему и имеющее подчеркнуто субъективную трактовку, свободную композицию, ориентацию на разговорную речь, склонность к парадоксам. Написание эссе призвано обратить учащегося к своему опыту во всех его противоречиях по определенному вопросу.
Бортовой журнал (англ. Log) – форма фиксации информации с помощью ключевых слов, графических моделей, кратких предложений и умозаключений, вопросов. В качестве задаваемых преподавателем частей «бортового журнала», которые будут заполняться учащимися, могут быть: ключевые понятия темы, связи, которые может установить ученик, важные вопросы.
Письменное интервью – вариант групповой письменной рефлексии в форме вопросов и ответов участников группы. Данный способ позволяет в достаточно короткий промежуток времени провести письменную рефлексию с целью взаимообмена мнениями.
Стихотворные формы (например, синквейн – пятистишье) – это способ творческой рефлексии, который позволяет в художественной форме оценить изученное понятие, процесс или явление.
Глава 2. Практическое применение рефлексии на уроках информатики
Теоретическое изучение проблемы определило необходимость проведения анализа данного вопроса в реальном учебном процессе.
Исследовательская работа проводилась в Бахчисарайской средней общеобразовательной школе №4. В работе были задействованы ученики 5-11 классов, которые изучают информатику. Целью анализа явилось выявление необходимости использования рефлексии на уроках информатики и ее эффективности.
Необходимость разработки системы уроков с использованием рефлексии, обусловила проведение уроков с внедрением изученных приемов рефлексии.
Основной задачей являлась разработка уроков информатики с применением рефлексии. Рассмотрим фрагменты разработанных уроков информатики, в каждом из которых имел место этап рефлексии.
Фрагмент урока информатики в 5 классе с применением рефлексии “Укрась торт”:
Я доволен своей работой на уроке – зеленый цвет.
Я хорошо работал, но умею еще лучше – желтый.
Работа не получилась, не доволен собой – красный цвет.
Тема: Моделирование окружающего мира
*На этом уроке рефлексия проводится перед работой за компьютером, на этапе осмысления полученных знаний.
IV . Осмысление полученных знаний. Рефлексия
Дети, перед вами цветные жетоны. Поднимите жетоны того цвета, который больше соответствует вашему настроению:
«Ура! Я все понял, могу приступать к практическому заданию» – зеленый цвет.
«Есть над чем поработать, но буду делать практическое задание – научусь» – желтый.
Фоторепортаж с этого урока представлен в Приложении 4.
Фрагмент урока информатики в 9 классе с применением рефлексии «Сигнализация»
Тема. Программное обеспечение персонального компьюте ра. Операционные системы, их функции и назначение.
Цель: сформировать понятие программного обеспечения как составляющей информационной системы; дать об щие сведения о системном, служебном и прикладном программном обеспечении. Ознакомить с классифика цией операционной системы, основными функциями и составляющими современных операционных систем; воспитать информационную культуру.
Тип урока: усвоение новых знаний.
К какому ПО относятся про граммы, которые (если к прикладному ПО – поднять правую руку, если к системному ПО – левую, если к системам программирования – встать):
считывают информацию с магнитного носителя;
помогают обрабатывать фотографии;
выполняют бухгалтерский отчет;
проверяют диск на ошибки;
проверяют носитель на наличие вирусов;
преобразуют голос в звуковой сигнал;
отображают рисунки на экране;
создают программу для начисления заработной платы;
сжимают данные для отправления через Интернет;
помогают инсталлировать другую программу;
создают среду для просмотра фотографий?
Фоторепортаж с этого урока представлен в Приложении 5.
Фрагмент урока информатики в 6 классе с применением рефлексии « Оценивание учащимися своей активности и качества своей работы»
Тема: «Алгоритмы и исполнители»
Тип урока: изучение нового материала.
Вид урока: комбинированный.
Цель урока: сформировать понятия «алгоритм» и «исполнитель»; способствовать использованию этих понятий при решении задач, для которых ответом является не число или утверждение, а описание последовательности действий; способствовать развитию алгоритмического и логического мышления; способствовать формированию познавательного интереса как компонента учебной мотивации.
Дети, нарисуйте на доске свое настроение:
– Мне было не все понятно.
Фоторепортаж с этого урока представлен в Приложении 6.
Фрагмент урока информатики в 10 классе с применением рефлексии урока-игры
Тема: «Работа с электронной почтой через веб-интерфейс»
Тип урока: изучение нового материала.
Цель урока: добиться усвоения способов регистрации почтового ящика и работы с электронной почтой на бесплатных почтовых серверах Интернета.
Что мне удалось на сегодняшнем уроке-игре?
Какие причины стоят за этим?
Что мне требуется понять, осмыслить, чтобы не повторять эти же ошибки на следующих уроках?
Таким образом, внедрение новых подходов, стимулирующих изучение информатики, не только обеспечивает первоначальное становление личности ребенка, но и выявление, развитие у него способностей, формирование умений и желание учиться. Использование рефлексивной практики в образовательном процессе позволяет выстроить эффективные и поистине межсубъектные отношения в системе «ученик – учитель». Грамотно применяемая рефлексия может стать для педагога и мощным инструментом психолого-педагогического исследования, и средством, актуализирующим собственное личностное развитие, а также эффективной «иммунизации» к профессиональному эмоциональному выгоранию.
Заключение
В ходе разработки и реализации проекта осуществлен сбор и систематизация информации об особенностях рефлексии на уроках информатики, о приемах рефлексии на уроке.
Основная цель проекта достигнута.
Рефлексия входит в практику обучения информатике. Она привлекает учителя возможностью творческого подхода к обучению. Нет единого подхода в изучении рефлексии и ее компонентов, так как ученые используют в своих исследованиях различные методы.
В ходе работы над проектом решались следующие задачи:
изучена психолого-педагогическая и методическая литература о рефлексии, выявлены педагогические условия развития;
определены особенности использования рефлексии на уроках информатики;
разработаны рекомендации и практический материал для применения рефлексии на уроках информатики.
Практическое применение рефлексии на уроках информатики было осуществлено на базе Бахчисарайской СОШ № 4 г. Бахчисарая. За период применения рефлексии у учащихся наблюдались положительные изменения в обучении и в общем психологическом климате на уроке. Дети стали чувствовать себя уверенней, когда отвечали на вопросы, стали объективно оценивать свою работу и работу своих одноклассников, научились делать правильные выводы.
Список использованной литературы
Бизяева А.А. Психология труда учителя: Книга для учителя. – М.: Просвещение, 2001.
Выготский Л.С. Мышление и речь // Психология развития человека. – М.: Смысл; Эксмо, 2005.
Карпов А.В. Психология механизмов деятельности. – Москва.: Изд-во «Институт психологии РАН», 2004. – 424 с.
Подласный И.П. Педагогика.– М.:Просвещение,2002
Россохин А. В.Рефлексия и внутренний диалог в изменённых состояниях сознания: Интерсознание в психоанализе.– М.: «Когито-Центр», 2010.
Степанов С. Ю., Семенов И. Н. Проблема формирования типов рефлексии в решении творческих задач. // Вопросы психологии, М., 1982, № 1,
Стеценко И.А – Тенденции психологии развития мышления, рефлексии и познавательной активности. – Киев: Слово, 2007. – 90 с.
Щедровицкий Г. П. Мышление. Понимание. Рефлексия. – Москва.: Наследие ММК, 2005.
Применение рефлексии на различных этапах учебной деятельности
Прочитайте тему урока и попробуйте сформулировать свои задачи на урок.
Этап актуализации ЗУН учащихся
Это своего рода диагностический срез, позволяющий ученику увидеть свой уровень подготовленности
каждый ученик для себя определяет полноту знаний по теме и самостоятельно оценивает правильность выполнения задания
В начале работы по теме урока содержательная рефлексия
Помочь учащимся осознать интеллектуальный «конфликт», получить знание о границе своего знания
самостоятельно выбрать форму организации познавательной деятельности
Как поможет вам работа в парах?
На завершающем этапе
Подвести итоги работы, поставить новые цели, выявить удовлетворенность работой
Происходит осознание учащимися уровня освоения, способ действий, их продвижение.
– Что дала вам работа в парах? Какие трудности вы встретили? Как с ними справиться? «Что нового я узнал на уроке?», «Как я смогу полученное на уроке использовать в жизни?».
Классификация видов рефлексии
Рефлексия настроения и эмоционального состояния
установления эмоционального контакта с группой
Применяются карточки с изображением лиц, цветовое изображение настроения, эмоционально-художественное оформление (картина, музыкальный фрагмент).