Организация человеческой памяти

 

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

 

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

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

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

3. Долговременная память. Это память с самыми широкими возможностями, относительно трудным доступом и крайне ненадежными механизмами хранения (мы забываем иногда некоторые вещи). Такая память используется для "постоянного" хранения информации. Продолжая наше сравнение с компьютерной памятью, можем соотнести долговременную память с дисковыми накопителями.

 

 

Рис. 23.1. Схема организация человеческой памяти

 

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

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

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

Шнейдерман предполагает, что процесс формирования блоков информации используется и при чтении программы программистом. Читающий разбивает содержащуюся в программе информацию на блоки, построенные по принципу внутренней семантической (смысловой) структуры. Восприятие программы не происходит последовательно от оператора к оператору, если только оператор не представляет собой логический блок. На рис. 23.2 показано, как простая программа сортировки может быть разбита на блоки читающим ее субъектом.

 

 

Рис. 23.2. Познавательные блоки в программе сортировки

 

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

 

Знания, которые приобретаются в процессе разработки ПО и сохраняются в долговременной памяти, разделяются на два класса.

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

2. Синтаксические знания. Это детализированные знания (подробности) об отдельных объектах и явлениях, например о том, как дать описание объекта в UML, какие стандартные функции доступны в языке программирования, создается ли оператор присвоения с помощью знака "=" или знака ":=" и т.д. Эти знания хранятся в неструктурированном виде.

 

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

 

 

Рис. 23.3. Синтаксические и семантические знания

 

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

Различные модели приобретения синтаксических и семантических знаний помогают понять, как опытные программисты изучают новый язык программирования. У них не возникает особых трудностей в освоении основных понятий языка, таких, как присвоение, цикл, условные операторы и т.п. Синтаксис нового языка, тем не менее, имеет тенденцию смешиваться с синтаксисом уже знакомых языков. Поэтому программист, владеющий языком Ada, при изучении языка Java напишет оператор присвоения скорее с использованием знака ":=", чем "=".

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

Для примера рассмотрим алгоритм двоичного поиска, в котором осуществляется поиск конкретного элемента в упорядоченной совокупности. Этот алгоритм включает проверку средней точки совокупности и применение знаний о взаимоотношении порядка для проверки местонахождения элемента-ключа – в верхней или нижней части совокупности. Программист, знакомый с этим алгоритмом, без труда напишет его версию на языках Java, Ada или на любом другом языке программирования.

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

 

 








Дата добавления: 2015-08-14; просмотров: 1794;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.