Что такое рефлексия информатика
Основные принципы программирования: интроспекция и рефлексия
Авторизуйтесь
Основные принципы программирования: интроспекция и рефлексия
Часто во время работы программы нам бывает нужна информация о данных — например, какой у них тип или являются ли они экземпляром класса (в ООП). Опираясь на эти знания, нам нужно проводить над данными некоторые операции, или даже изменять их — но необходимого вида данных у нас может и не быть! Если вы ничего не поняли, не расстраивайтесь — мы подробно во всём разберёмся. Всё, что я здесь описал — это иллюстрация целей двух возможностей, присутствующих почти в каждом современном языке программирования: интроспекции и рефлексии.
Интроспекция
Интроспекция — это способность программы исследовать тип или свойства объекта во время работы программы. Как мы уже упоминали, вы можете поинтересоваться, каков тип объекта, является ли он экземпляром класса. Некоторые языки даже позволяют узнать иерархию наследования объекта. Возможность интроспекции есть в таких языках, как 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-утверждений нужно сильно ограничивать формат входных данных — и обычно это лишь занимает лишнее время.
Заключение
Интроспекция и рефлексия — это очень мощные инструменты современных языков, и их понимание может позволить вам писать по-настоящему крутой код. Ещё раз отметим: интроспекция — это изучение атрибутов объекта, а рефлексия — это манипуляция ими. Будьте внимательны при использовании рефлексии, поскольку она может сделать ваш код нечитаемым и уязвимым. Чем больше сила, тем больше и ответственность — вот девиз всего, что связано с метапрограммированием.
Организации рефлексии на уроках математики и информатики
Содержимое разработки
ЛУГАНСКОЙ НАРОДНОЙ РЕСПУБЛИКИ
«ЛУГАНСКОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ –
СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА № 18″
«ОРГАНИЗАЦИИ РЕФЛЕКСИИ НА УРОКАХ
МАТЕМАТИКИ И ИНФОРМАТИКИ»
Шунина Ирина Владимировна
Один из принципов развивающего обучения принцип активности и сознательности. Ребенок может быть активен, если осознает цель учения, его необходимость, если каждое его действие является осознанным и понятным. Обязательным условием создания развивающей среды на уроке является этап рефлексии. (слайд 2)
Слово рефлексия происходит от латинского (reflexio) – обращение назад. Словарь иностранных слов определяет рефлексию как размышление о своем внутреннем состоянии, самопознание.
Толковый словарь русского языка трактует рефлексию как самоанализ. В современной педагогике под рефлексией понимают самоанализ деятельности и её результатов.
Применительно к урокам, рефлексия — это этап урока, в ходе которого учащиеся самостоятельно оценивают свое состояние, свои эмоции, результаты своей деятельности.
Целью рефлексии является:
Вспомнить, выявить и осознать основные компоненты деятельности- её смысл, типы, способы, проблемы, пути их решения, полученные результаты;
сравнить способы и методы, применяемые другими, со своими;
собрать в общую копилку замеченное, обдуманное, понятое каждым;
уйти с урока с зафиксированным результатом. (слайд 3)
Рефлексия может осуществляться не только в конце урока, как это принято считать, но и на любом его этапе. Рефлексия направлена на осознание пройденного пути, на сбор в общую копилку замеченного обдуманного, понятого каждым. Её цель не просто уйти с урока с зафиксированным результатом, а выстроить смысловую цепочку, сравнить способы и методы, применяемые другими со своими.
Исходя из функций рефлексии предлагается следующая классификация (слайд 4):
1. Рефлексия настроения и эмоционального состояния
2. Рефлексия деятельности
3. Рефлексия содержания учебного материал
Методы и формы рефлексии (слайд 5):
Вербальная и невербальная рефлексия
Графическая рефлексия деятельности
Методика «Закончи предложение»
Цветовая рефлексия деятельности
«Лист обратной связи»
«Письмо самому себе»
«Разговор на бумаге»
«Ну что, как прошло занятие?»
Рассмотрим некоторые из них.
Рефлексия настроения и эмоционального состояния
Проведение рефлексии настроения и эмоционального состояния целесообразно в начале урока с целью установления эмоционального контакта с группой и в конце деятельности.
Применяются карточки с изображением лиц, цветовое изображение настроения, эмоционально-художественное оформление (картина, музыкальный фрагмент). Обучающиеся сигнализируют о своем эмоциональном состоянии с помощью карточки со стилизованными рисунками.
У учащихся две карточки: синяя и красная. Они показывают карточку в соответствии с их настроением в начале и в конце урока. В данном случае мы можем проследить, как меняется эмоциональное состояние ученика в процессе занятия.
«СМАЙЛИКИ», «СОЛНЫШКО И ТУЧКА» (слайд 6)
Задание с элементами рефлексии: Постройте график функции у=2cosx одним из следующих цветов, которые, на ваш взгляд, соответствуют вашему настроению от проделанной вами работы: красный – отличное, зеленый – хорошее, синий – удовлетворительное.
2. Рефлексия деятельности
Красный – есть проблема, нужна помощь; желтый – не все понятно; зеленый – все понятно.
«РЮКЗАК» Прием рефлексии используется чаще всего на уроках после изучения большого раздела. Суть зафиксировать свои продвижения в учебе, а также, возможно, в отношениях с другими. Рюкзак перемещается от одного ученика к другому. Каждый не просто фиксирует успех, но и приводит конкретный пример. Если нужно собраться с мыслями, можно сказать «пропускаю ход».
я научился строить график квадратичной функции
я запомнил формулу для нахождения дискриминанта
я разобрался в теме «Квадратные уравнения»
я наконец-то запомнил, чем стандартный многочлен отличается от не стандартного
Карточка красного цвета: «Я удовлетворен уроком, урок был полезен для меня, я много, с пользой и хорошо работал на уроке, я получил заслуженную оценку, я понимал все, о чем говорилось и что делалось на уроке».
Карточка желтого цвета: «Урок был интересен и я принимал в нем активное участие, урок был в определенной степени полезен для меня, я отвечал с места, я сумел выполнить ряд заданий, мне было на уроке достаточно комфортно».
Карточка зеленого цвета: «Пользы от урока я получил мало, я не очень понимал, о чем идет речь, мне это не очень нужно, домашнее задание я не понял, к ответу на уроке я не был готов».
«МИШЕНЬ» поставить знак в соответствующий сектор: было интересно, узнал новое, было понятно, активно участвовал.
«ФРАЗЕОЛОГИЗМ» или «ПОСЛОВИЦА»
Выберите фразеологизм или пословицу которые характеризуют вашу работу сегодня:
3. Рефлексия содержания учебного материала
«АНКЕТА» учащимся предлагается небольшая анкета, наполнение которой можно менять, дополнять в зависимости от того, на какие элементы урока обращается особое внимание. Можно попросить обучающихся аргументировать свой ответ.
Доволен ли ты тем, как прошел урок? (да / нет)
Было ли тебе интересно? (да / нет)
Сумел ли ты получить новые знания? (да / нет)
Был ли ты активен на уроке? (да / нет)
Ты с удовольствием будешь выполнять домашнее задание? (да / нет)
Учитель был внимателен к тебе? (да / нет)
Сумел ли ты показать свои знания? (да / нет)
1. На уроке я работал (активно пассивно).
2.Своей работой на уроке я (доволен не доволен).
3.Урок для меня показался (коротким длинным).
4.За урок я (не устал – устал).
5.Материал урока мне был (понятен не понятен, полезен – бесполезен).
6.Домашнее задание мне кажется (легким – трудным).
РЕЗЮМЕ-ученики письменно отвечают на вопросы, отражающих их отношение к уроку, учебному предмету, учителю:
Что нравится на уроках?
Что не нравится на уроках?
Можешь ли учиться лучше по предмету?
Что мешает учиться лучше?
Какие действия учителя считаешь неправильными?
Поставь отметку учителю по 10-ти балльной системе. Обоснуй её.
Поставь себе отметку по 10-ти балльной системе. Обоснуй её.
Задание с элементами рефлексии: Напишите мини-сочинение – размышление на одну из тем:
1) Почему люди создают компьютерные вирусы?
2) Живое и виртуальное общение – плюсы и минусы.
3) Компьютеры мне интересны, потому что.
4) Я люблю информатику потому, что и др.
Посчитайте количество информации, содержащейся в тексте, выразите его в байтах, битах, и Кбитах.
Я считаю… (мнение об уроке)
Особенно удачным является… (достоинства, положительные моменты урока)
В тоже время, я посоветовал бы…(рекомендация учителю)
Сложно было …(трудности, проблемы и т.п.)
Эффективен прием незаконченного предложения, тезиса. Например, методика «Рефлексивный экран».
Я почувствовал, что…
Мне представляется интересным то, что…
А у меня на этот счет другое мнение…
Я бы хотел (а) еще раз услышать…
Работа над заданием помогла мне…
У меня появилось желание…
Урок дал мне для жизни…
Экран с незаконченными предложениями находится перед глазами детей. Они по желанию выбирают себе фразу и заканчивают ее самостоятельно.
Для письменного выполнения обучающимся предлагается заполнить таблицу из трех граф. В графу «П» – «плюс» записывается все, что понравилось на уроке, информация и формы работы, которые вызвали положительные эмоции, либо по мнению ученика могут быть ему полезны для достижения каких-то целей. В графу «М» – «минус» записывается все, что не понравилось на уроке, показалось скучным, вызвало неприязнь, осталось непонятным, или информация, которая, по мнению ученика, оказалась для него не нужной, бесполезной с точки зрения решения жизненных ситуаций. В графу «И» – «интересно» обучающиеся вписывают все любопытные факты, о которых узнали на уроке и что бы еще хотелось узнать по данной проблеме, вопросы к учителю.
В конце урока обучающимся предлагается написать синквейн на основе изученного материала. Синквейн – это пятистрочная строфа.
1-я строка – одно ключевое слово, определяющее содержание синквейна;
2-я строка – два прилагательных, характеризующих данное понятие;
3-я строка – три глагола, обозначающих действие в рамках заданной темы;
4-я строка – короткое предложение, раскрывающее суть темы или отношение к ней;
5-я строка – синоним ключевого слова (существительное).
Синквейн является быстрым, эффективным инструментом для анализа, синтеза и обобщения понятия и информации, учит осмысленно использовать понятия и определять свое отношение к рассматриваемой проблеме.
Синквейн «Квадратное уравнение»:
Квадратное уравнение. (Заголовок)
Неполное, приведенное (2 прилагательных)
Преобразовать уравнение, вычислить дискриминант, найти корни. (3 глагола)
Знак дискриминанта– количество корней. (Фраза, несущая определенный смысл)
Осевая, зеркальная. (2 прилагательных)
Существует, нарушается, отсутствует. (3 глагола)
Понятие математики. (Фраза, несущая определенный смысл)
После завершения занятия каждому из обучающихся предлагается заполнить бланк телеграммы, получив при этом следующую инструкцию: “Что вы думаете о прошедшем занятии? Что было для вас важным? Чему вы научились? Что вам понравилось? Что осталось неясным? В каком направлении нам стоит продвигаться дальше? Напишите мне, пожалуйста, об этом короткое послание – телеграмму из 11 слов. Я хочу узнать ваше мнение для того, чтобы учитывать его в дальнейшей работе.”
На следующем занятии педагогу необходимо поделиться своими соображениями о полученных результатах и рассказать о том, как они будут учитывать в дальнейшем совместной работе.
Участникам педагогического взаимодействия, вставшим в круг, педагог предлагает через выполнение определенных движений дать оценку отдельным компонентам этого взаимодействия (содержанию, отдельным технологиям, деятельности некоторых творческих групп, учащегося, педагога, отдельным играм и т.д.), а также выразить свое отношение к этим компонентам.
Могут быть предложены следующие движения:
-присесть на корточки – очень низкая оценка, негативное отношение;
-присесть, немного согнув ноги в коленях, – невысокая оценка, безразличное отношение;
-обычная поза стоя, руки по швам – удовлетворительная оценка, спокойное отношение;
-поднять руки в локтях – хорошая оценка, позитивное отношение;
-поднять руки вверх, хлопая в ладоши, подняться на цыпочки – очень высокая оценка, восторженное отношение.
В начале реализации этой технологии педагог знакомит участников со всеми движениями и их значением. Каждый участник, после того как педагог называет тот или иной компонент состоявшегося взаимодействия, по своему усмотрению производит какое-либо движение.
К какому ПО относятся программы, которые (если к прикладному ПО – поднять правую руку, если к системному ПО – левую, если к системам программирования – встать):
считывают информацию с магнитного носителя;
помогают обрабатывать фотографии;
выполняют бухгалтерский отчет;
проверяют диск на ошибки;
проверяют носитель на наличие вирусов;
преобразуют голос в звуковой сигнал;
отображают рисунки на экране;
создают программу для начисления заработной платы;
сжимают данные для отправления через Интернет;
помогают инсталлировать другую программу;
создают среду для просмотра фотографий?
1 этап посередине чистого листа (классной доски) пишется ключевое слово или словосочетание, которое является «сердцем» идеи, темы.
2 этап учащиеся записывают все то, что вспомнилось по данной теме. В результате вокруг «разбрасываются» слова или словосочетания, выражающие идеи, факты, образы, подходящие для данной темы. Записывается все, что называют учащиеся, ничего не отсеивается.
3 этап осуществляется систематизация. После чтения учебника, объяснений учителя учащиеся начинают анализировать и систематизировать изученный материал. Хаотичные записи слов-ассоциаций объединяются в группы, в зависимости от того, какую сторону содержания отражает то или иное записанное понятие, факт. Лишние, ошибочные зачеркиваются.
4 этап по мере записи оставшиеся слова соединяются прямыми линиями с ключевым понятием. У каждого из «спутников» в свою очередь появляются «спутники», устанавливаются новые логические связи.
В итоге получается структура, которая графически отображает размышления, определяет информационное поле данной темы.
Учащиеся оценивают вклад друг друга в урок и благодарят друг друга (Комплимент-похвала, Комплимент деловым качествам, Комплимент в чувствах) и учителя за проведенный урок. Такой вариант окончания урока дает возможность удовлетворения потребности в признании личностной значимости каждого.
Содержимое разработки
Организации рефлексии на уроках математики и информатики
Автор: учитель математики и информатики
Методы и формы рефлексии
Задание с элементами рефлексии
Постройте график функции у=2 x^2+3 одним из следующих цветов, которые, на ваш взгляд, соответствуют вашему настроению от проделанной вами работы:
Карточка красного цвета: «Я удовлетворен уроком, урок был полезен для меня, я много, с пользой и хорошо работал на уроке, я получил заслуженную оценку, я понимал все, о чем говорилось и что делалось на уроке»
Карточка желтого цвета: «Урок был интересен и я принимал в нем активное участие, урок был в определенной степени полезен для меня, я отвечал с места, я сумел выполнить ряд заданий, мне было на уроке достаточно комфортно»
Карточка зеленого цвета: «Пользы от урока я получил мало, я не очень понимал, о чем идет речь, мне это не очень нужно, домашнее задание я не понял, к ответу на уроке я не был готов»
«ФРАЗЕОЛОГИЗМ» или «ПОСЛОВИЦА»
Выберите фразеологизм или пословицу которые характеризуют вашу работу сегодня:
Рефлексия содержания учебного материала. Анкетирование
Рефлексия содержания учебного материала. Анкета-самоанализ
4.За урок я (не устал – устал).
6.Домашнее задание мне кажется (легким – трудным).
Рефлексия содержания учебного материала.
Резюме-ученики письменно отвечают на вопросы, отражающих их отношение к уроку, учебному предмету, учителю:
Задание с элементами рефлексии
Напишите мини-сочинение – размышление на одну из тем:
1) Почему люди создают компьютерные вирусы?
2) Живое и виртуальное общение – плюсы и минусы.
3) Компьютеры мне интересны, потому что.
4) Я люблю информатику потому, что и др.
Рефлексия содержания учебного материала.
Я считаю… (мнение об уроке)
Особенно удачным является… (достоинства, положительные моменты урока)
В тоже время, я посоветовал бы…(рекомендация учителю)
Сложно было …(трудности, проблемы и т.п.)
Рефлексия содержания учебного материала.
Экран с незаконченными предложениями находится перед глазами детей. Они по желанию выбирают себе фразу и заканчивают ее самостоятельно.
записывается все, что понравилось на уроке, информация и формы работы, которые вызвали положительные эмоции, либо по мнению ученика могут быть ему полезны для достижения каких-то целей.
записывается все, что не понравилось на уроке, показалось скучным, вызвало неприязнь, осталось непонятным, или информация, которая, по мнению ученика, оказалась для него не нужной, бесполезной с точки зрения решения жизненных ситуаций.
вписывают все любопытные факты, о которых узнали на уроке и, что бы еще хотелось узнать по данной проблеме, вопросы к учителю.
Синквейн «Квадратное уравнение»:
Квадратное уравнение. (Заголовок)
Неполное, приведенное (2 прилагательных)
Преобразовать уравнение, вычислить дискриминант, найти корни. (3 глагола)
Знак дискриминанта– количество корней. (Фраза, несущая определенный смысл)
Осевая, зеркальная. (2 прилагательных)
Существует, нарушается, отсутствует. (3 глагола)
Понятие математики. (Фраза, несущая определенный смысл)
К какому ПО относятся программы, которые (если к прикладному ПО – поднять правую руку, если к системному ПО – левую, если к системам программирования – встать):
Учащиеся оценивают вклад друг друга в урок и благодарят друг друга (Комплимент-похвала, Комплимент деловым качествам, Комплимент в чувствах) и учителя за проведенный урок. Такой вариант окончания урока дает возможность удовлетворения потребности в признании личностной значимости каждого.
Разбираемся с рефлексией на примерах в C#
Приветствую всех, сегодня поговорим о рефлексии, для чего она нужна, ее применения. Тема эта очень интересная, и ее методы использования часто приходится применять в больших проектах.
Рефлексия (отражение) — это процесс, во время которого программа может отслеживать и модифицировать собственную структуру и поведение во время выполнения, это своего рода процесс обнаружения типов во время выполнения.
Рефлексия позволяет: перечислять члены типа, создавать новые экземпляры объекта, запускать на выполнение члены объекта, извлекать информацию о типе, извлекать информацию о сборке, исследовать пользовательские атрибуты, примененные к типу, создавать и компилировать новые сборки.
Метаданные описывают все классы и члены классов, определённые в сборке, а также классы и члены классов, которые текущая сборка вызывает из другой сборки.
Манифест сборки— коллекция данных, с описанием того, как элементы любой сборки (статической или динамической) связаны друг с другом. Манифест сборки содержит все
метаданные, необходимые для задания требований сборки к версиям и удостоверения безопасности, а также все метаданные, необходимые для определения области действия сборки и разрешения ссылок на ресурсы и классы. Манифест сборки может храниться в PE-файле (EXE или DLL) с кодом MSIL или же в отдельном PE-файле, содержащем только данные манифеста.
Модули — это контейнеры типов, расположенные внутри сборки. Модуль может быть контейнером в простой, или многофайловой сборке. Несколько модулей в одной сборке применяются в редких случаях, когда нужно добавить код на разных языках в одну сборку или обеспечить поддержку выборочной загрузки модулей.
Парадигма программирования, положенная в основу отражения, называется рефлексивным программированием. Это один из видов метапрограммирования.
System.Reflection — Пространство имен содержит типы, предназначенные для извлечения сведений о сборках, модулях, членах, параметрах и других объектах в управляемом коде путем обработки их метаданных. Эти типы также можно использовать для работы с экземплярами загруженных типов, например для подключения событий или вызова методов.
Класс Type.
Type является корневым классом для функциональных возможностей рефлексии и основным способом доступа к метаданным. С помощью членов класса Type можно
получить сведения об объявленных в типе элементах: конструкторах, методах, полях, свойствах и событиях класса, а также о модуле и сборке, в которых развернут данный класс.