Структура знаний в долговременной памяти
В соответствии с синтаксическо-семантической моделью различают долговременные знания трех типов:
РЖГ"[1]---------------------- ІЧїї""!
Память м---------------------------------- мят
---- f---- ' L-fT
Иа и в отношении небесной механики, и в отношении других прикладных областей. Представление о иерархическом, структурированном по уровням знании является реалистической моделью организации знаний человека. Квалифицированные специалисты четко представляют, когда они занимаются изучением деталей, а когда обсуждают планы верхнего уровня, тогда как начинающие подчас увлекаются деталями, забывая о проблемах верхнего уровня.
2. Семантические знания концепций (принципов) программирования. Знания этого типа охватывают практику программирования, алгоритмы, структуры файлов, структуры данных,
Г"
"1
І------ I----- '------------ І |
L. |
1 |
"І _J |
H- |
Долговременная память
Рис. 1.4. Структура долговременных знаний в рамках синтакснческо-семан - тической модели.
Языки программирования, операционные системы, текстовые редакторы, а также дисковые библиотеки программ. Приобретение таких знаний также может потребовать значительного времени, но они не зависят от конкретной области, для которой разрабатывается каждая отдельная программа.
Семантические знания не зависят и от алгоритмического языка, т. е. не связаны с какими-либо конкретными принципами программирования. Это значит, что принцип, изученный в рамках одного алгоритмического языка (например, поиск максимального значения элемента массива), может легко применяться впоследствии в другой языковой среде.
Семантические знания приобретаются посредством «содержательного обучения», при котором подлежащая изучению
концепция включается в обширную базу знаний программиста. Для передачи семантических знаний могут использоваться аналоги, специфические примеры или общие теории. Полученные однажды семантические знания довольно стабильно сохраняются в долговременной памяти программиста.
Семантические знания концепций программирования структурированы по уровням в диапазоне от простых семантических элементов на нижних уровнях до связных концепций программирования на высших уровнях. Элементами нижнего уровня могут быть знания принципов действия операторов присваивания, условных операторов или операторов умножения. Эти элементы группируются в структуры знаний, соответствующие схемам их использования; примерами могут служить прием, позволяющий осуществлять обмен значений двух переменных с помощью трех операторов присваивания; использование вложенных условий или применение арифметических выражений. Эти схемы среднего уровня вплетаются друг в друга, образуя схемы и планы программ или их фрагментов, например, применительно к выполнению операций сортировки, использованию таблиц решений или выполнению численного интегрирования.
3. Синтаксические знания. Этот тип знаний характеризует способы выражения семантических концепций средствами определенного алгоритмического языка. Синтаксис подобных алгоритмических концепций может быть разным из-за различий в языках программирования. Ключевые слова часто произвольны, и поэтому их трудно удерживать в памяти без многократного повторения. Например, SQR обозначает функцию извлечения квадратного корня из числа в языке Бейсик, но квадрат числа — в языке Паскаль, a SQRT — функцию извлечения квадратного корня в языке Фортран. Выражения WRITE, PUT, PRINT и OUTPUT являются ключевыми словами для вывода строки символов или значений переменных в разных языках программирования. Специальные символы, такие, как обозначение оператора присваивания, могут меняться от простого знака равенства и комбинации двоеточия и знака равенства до символа «стрелка влево». Синтаксис выражений, определяющих циклы, также сильно варьирует в разных языках программирования.
Зависимые от конкретного языка программирования синтаксические правила произвольны, их необходимо заучивать наизусть, кроме того, без частого употребления они забываются. Программисты, не работавшие с конкретным алгоритмическим языком всего несколько месяцев, могут испытывать трудности, вспоминая синтаксис используемого языка при составлении программ, а при чтении программ синтаксис служит ключом к семантике языка. Имитируя синтаксис читаемой программы, программист освежает знание ее синтаксиса в своей памяти.
Границы между семантическими знаниями прикладной области и концепций программирования, а также синтаксическими знаниями не всегда настолько отчетливы, как это представлено на рис. 1.4, но такое разделение знаний может оказаться полезным. Синтаксическо-семантическая модель предполагает при обучении программированию использовать примеры из прикладной области, т. е. описывать алгоритмы с помощью программных средств, их реализующих, с рассмотрением синтаксических деталей в конце обучения. При рассмотрении примеров из знакомой прикладной области обучаемые лучше усваивают концепции программирования, чем при использовании в качестве примеров программ, не имеющих практического значения.
Программистам, изучающим новый язык программирования, нет необходимости вновь постигать концепции программирования, поскольку предполагается, что языки имеют сходную семантическую структуру. Простое сопоставление синтаксиса— вот все, что требуется для организации логической связи между известным языком и изучаемым. Разумеется, однако, что если у языков имеется семантическое различие, то на это следует обращать самое пристальное внимание.
От программистов, осваивающих новую прикладную область, могут потребоваться существенные усилия для достижения высокой эффективности работы. Квалифицированные программисты, выяснив, что являются новичками в какой-либо прикладной области, не жалеют времени на изучение деталей нижнего уровня и основных целей верхнего уровня перед составлением программы.