"Профессиональное программирование. Системный подход." И.Одинцов
Подход на основе рекомендаций ACM/IEEE
Итак, рассмотрим методологический подход на уровне следования рекомендациям ACM/IEEE.
Первая группа рекомендаций основывается на том факте, что в программировании присутствуют одновременно математические, естественно-научные и инженерные корни. Обучающиеся должны познакомиться с тремя различными подходами, используемыми в своей профессиональной деятельности исследователями и специалистами-практиками.
? Первый из этих подходов — теория — присущ математике и включает
в себя следующие элементы:
- определения и аксиомы;
- теоремы;
- доказательства;
- интерпретацию результатов.
Этот подход применяется в собственно математических дисциплинах и при изучении теоретических основ информатики.
? Второй подход — абстракция — присущ естественным (эксперименталь
ным) наукам и включает в себя следующие элементы:
- сбор данных и выработку гипотез;
- моделирование и предсказание;
- планирование эксперимента;
- анализ результатов!
В программировании постоянно создаются модели, определяются структуры данных, предлагаются новые архитектуры и т. д. Формулируются гипотезы относительно этих моделей, проверяются альтернативные проектные решения и даже теоретические построения.
? Третий подход — конструирование — присущ инженерным дисциплинам,
заключается в создании системы или устройства для решения поставлен
ной задачи и включает в себя следующие элементы:
- определение требований;
- написание спецификаций;
- разработку и реализацию;
- тестирование и анализ.
Обучающиеся должны не только создавать самостоятельные разработки (по возможности, реальных систем), но и изучать разработки других. От них нужно требовать оценки производительности и стоимости, а также изучения альтернативных решений.
Вторая группа рекомендаций советует обучающимся получать подготовку в следующих трех направлениях по каждому предмету:
П курс лекций;
- практические занятия с преподавателем;
- практикум (самостоятельная работа).
Подход Г. С. Цейтина
Методологический подход Григория Самуиловича Цейтина исходит из того, что целью курса программирования следует считать переход от непонимания программирования к его пониманию. Тогда для формирования навыков программирования нужно изучить их структуру у подготовленных програм-
мистов и определить содержание курса в соответствии с выделенными элементами. Предполагая, что программирование — это переход от знания о задаче, выраженного в обычной, не программной форме, к выражению этого знания (точнее, части его) в форме программы, предлагается выделить три элемента программирования по такому преобразованию знания.
- Первый элемент — переход от знания в математической форме к знанию
в форме программы. Ему соответствует программирование математиче
ских формул, программирование рекуррентно решаемых задач посредст
вом рекурсивных процедур (во всех этих случаях не требуется даже при
сваивания) и элементы доказательного программирования, в частности,
использование инвариантов цикла.
- Второй элемент — моделирующий, включает построение последовательно
сти действий в программе по образцу последовательности действий в мо
делируемой реальной системе или моделируемом поведении человека,
решающего задачу стандартным способом (именно здесь нужна память и
присваивания). Примерами такого подхода могут быть задачи моделиро
вания физических процессов. В рамках этого же подхода можно научить
ся использованию стандартных элементов программ, например, циклов
для суммирования.
- Третий элемент программирования — преобразования, программ. Они вклю
чают сборку сложной программы из элементарных программ и эквива
лентные преобразования. Конструкции используемого языка программи
рования излагаются не по логике описания этого языка, а в связи с их
конкретным использованием (например, массив как представление век
тора или матрицы в линейной алгебре и массив как способ хранения
промежуточных результатов с целью избежать повторного вычисления
рассматриваются порознь).
Роль наставника в процессе обучения
Эмпирически найденные правила хорошего программирования передаются от мастера к ученикам. Наставничество существовало и существует практически во всех специальностях, в том числе и в программировании.
Классическое обучение любому делу состояло в том, что ученик в течение многих лет выполнял вспомогательные операции, перенимая основные приемы у более опытных работников. Постепенно на него возлагались более серьезные обязанности, и после формальной проверки навыков он получал свидетельство о своей профессиональной компетентности. Бывший ученик становился ремесленником, сам получал заказы и выполнял работу. Рано или поздно он представлял на суд гильдии свои лучшие работы и мог подняться на высшую ступень профессиональной иерархии, становясь мастером.
Наиболее развита традиция наставничества в России и в Японии. Японцы в целом расположены к помощи друг другу. Они не привыкли держать свои методы и приемы работы в тайне, а предпочитают учиться друг у друга. Эта традиция называется "минарай" — наблюдение за опытными рабочими с целью освоения их навыков [Психология 2000]. Интересно то, что многие японцы не доверяют официальному обучению в ВУЗах, поскольку оно построено по западным образцам. Они считают, что официальное обучение дает только основы специальности и развивает общие способности, но научиться тому, что им действительно нужно, можно только в процессе работы и через индивидуальное обучение.
Вверх