Модели познания
Отдельные эксперименты могут оказать помощь в изучении некоторых аспектов разработки языков программирования, стиля программирования или стратегии разработки програм-
Таблица 1.9. Типы ошибок в программах обучаемых 152J
. Количество
Характер ошибки ошибок, %
Ошибки отсутствуют 31
21 10 |
Ошибки исполнения программы 33
При вводе — выводе в описаниях
Арифметические 2
9 |
Ошибки трансляции 36
В операторах присваивания
В операторах формата 8
В идентификаторах 5
11 |
В операторах типа DO 3
прочие
Таблица 110. Типы ошибок в программах профессиональных программистов (9]
|
Много обеспечения, но в то же время они вносят вклад в построение теории поведения программиста. Значение каждого отдельного экспериментального результата само по себе мало и смысл его достаточно ясен, однако в совокупности эти эксперименты и их повторяющиеся результаты должны привести к углублению теоретических концепций моделирования поведения программиста.
Приемлемой можно считать теорию, которая не только объясняет полученные результаты, но также позволяет делать предсказания ожидаемых результатов в новых ситуациях. К сожалению, таких теорий, касающихся работы программистов, не так уж много. Брукс [14] попытался моделировать поведение программиста программным способом. Была разработана программа [2], моделирующая изучение языка Лисп. Авторы работы [74] предложили модель познания теории программирования и соответствующих процессов. Дальнейшее изложение материала здесь будет основано именно на этой син - таксическо-семантической модели, в которой различаются два вида семантических знаний.
Таблица l. lil. Выводы по результатам отладки программ
_ Литературный
Результаты экспериментов источник
Для опытных и начинающих программистов процентное соотношение различных типов ошибок примерно одинаково [91 ] И начинающие, и опытные программисты имели примерно одинаковое количество ошибок при первом пуске программы, но профессионалы устраняли ошибки быстрее [91] Опытные программисты не использовали интерактивные средства отладки [33] Указание программисту Номераї программной строки, содержащей ошибку, уменьшало среднее время ее устранения с 6,5 [33] до 3 мин
Использование автоматизированных отладочных средств не уменьшало времени, затрачиваемого на отладку [33]
Ошибки в операторах присваивания отыскивать труднее, чем в итерационных операторах или в операциях с массивами [33]
Студенты-выпускники при использовании языков со статическим определением типов данных допускали меньше ошибок, чем пря использовании языков, не предусматривающих определение типов [31} Программисты допускали большее количество ошибок при использовании языков без средств определения типов данных, даже если подобная программа прежде разрабатывалась на языке, имеющем такие средства [31] При отладке программы программисты сосредоточивают внимание на логически связанных группах операторов, называемых «слоями» [88]
Удачная модель поведения программиста способна помочь в анализе многочисленных аспектов процесса программирования. К таким аспектам относятся:
Разработка новой программы;
Составление программы на базе принятых проектных решений;
Освоение неизвестной программы; отладка программы;
Модификация существующей программы в соответствии
С новыми требованиями;
Изучение новых методов программирования;
Обучение начинающего программиста.
Удачная модель должна описывать как структуру человеческих знаний, так и процесс познания. Структурные элементы знаний хранятся в долговременной памяти человека и могут изучаться путем опроса субъектов, в рамках которого им предлагается описать свои знания, путем наблюдений за работой программистов или с помощью специальных тестовых задач, выявляющих структурные элементы знаний. В процессе изучения программ человеком используется кратковременная память, а при решении задач, связанных с разработкой, составлением, отладкой или модификацией программ, подключается еще и рабочая область памяти, через которую долговременные знания, влияя на способ восприятия информации, координируют и упрощают процесс решения конкретной задачи (рис. 1.3).