Е. А. МИЛОВА

Сибирский политехнический колледж НИЯУ МИФИ, Новосибирск

МЕТОДИКА ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ

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

Предлагаемая методика обучения программированию заключается в разделении изучения теории программирования и практического программирования. Теория программирования предполагает изучение процесса разработки программного обеспечения (сокращенно ПО). Часто задаваемый студентами вопрос: для чего нам необходимо изучать процесс разработки ПО, почему нельзя сразу приступить к разработке ПО?

Разработка ПО – это сложный и трудоемкий процесс, требующий затрат денежных, временных и человеческих ресурсов. Для оптимизации процесса разработки ПО необходимо разделить его на логические этапы и каждый из этих этапов досконально проработать. Такое разбиение описано в государственном стандарте «Единая система программной документации»[1], но достаточно поверхностно, российским разработчикам многое приходится додумывать самостоятельно, исходя из своего опыта работы. Студенты таким опытом не обладают, а значит, этот документ для них становится практически бесполезен.

Наиболее походящим материалом для изучения процесса разработки ПО является "Основы программной инженерии" на базе IEEE Guide to SWEBOK (русский перевод Сергей Орлик при участии Юрия Булуя)[2], в котором емко и глубоко проработаны основные этапы разработки ПО такие как: требования к ПО; проектирование ПО; конструирование ПО; тестирование ПО; поддержка и эксплуатация ПО, вплоть до снятия ПО с использования.

НЕ нашли? Не то? Что вы ищете?

На первом этапе разработки ПО перед разработчиком встает вопрос выбора среды разработки, а этот выбор невозможно осуществить осознанно, если обучение программированию происходило через изучение какой либо среды программирования «навязанной» студентам педагогом, а не в результате выбора более подходящей парадигмы программирования для данной области задач.

Любая среда программирования поддерживает узкий круг парадигм программирования, некоторые парадигмы могут поддерживаться слабо или не поддерживаться вообще. Вопросы многообразия парадигм поднимал еще Роберт Флойд, американский учёный в области теории вычислительных систем.

С точки зрения Роберта Флойда, как начинающие, так и практикующие программисты имеют недостаточно глубокие представления о существующих парадигмах программирования и их многообразии. Как следствие, не используют некоторые парадигмы программирования в работе, несмотря на то, что они заслуживают внимания [3].

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

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

Преподаватель должен ознакомить студентов как можно с большим количеством парадигм программирования.

На практике студенты должны прорешать как можно больше тривиальных задач с использованием различных языков программирования и сред разработки, чтобы на своем опыте ощутить целесообразность своего выбора и такой методики обучения в целом [4].

Список литературы

1.  ГОСТ 19.001-77. ЕСПД. Общие положения

2.  "Основы программной инженерии" на базе IEEE Guide to SWEBOK

3.  Robert W Floyd, Turing Award Lecture, 1978: “The Paradigms of Programming,” Communications of the ACM

4.  Себеста "Основные концепции языков программирования"