Главная страница Visual 2000 · Общий список статей
Системы программирования — проблемы обученияАндрей Колесов
© 1997, Андрей Колесов
Самое удивительное в дискуссии о выборе средств разработки, которая заняла заметное место прошедшим летом на страницах PCWeek (N 18, 24, 27-31 за 1997 г.), заключается в том, что это обсуждение почему-то свелось к теме "Си или Delphi?", как будто нет других, не менее популярных систем. Другая странность состояла с том, что в одну кучу оказались свалены языки программирования и их конкретная реализация в виде законченных инструментов.
Впрочем, как отмечали некоторые участники этого обсуждения, сравнение разных систем программирования действительно имеет в значительной степени чисто академический интерес. В конце концов, решение принимают профессионалы, которые сами за него и отвечают. Но совершенно иначе выглядит ситуация с обучением в системе образования — здесь подобные вопросы решают преподаватели, а отдуваться за них приходится будущим специалистам. Поэтому проблема эта, несомненно, достойна публичного обсуждения.
В целом складывается впечатление, что сегодня сколь-нибудь определенного подхода к обучению программированию у нас в стране вообще не существует. И это четко просматривается в упомянутых выше статьях. Прежде всего не следует смешивать в одну кучу проблемы преподавания на разных стадиях обучения, в частности в средней и высшей школах. А говоря о студентах, нужно четко разделить вопросы обучения программированию для компьютерных и некомпьютерных специальностей.
В последние годы мы как-то совершенно упустили из виду, что кроме профессиональных разработчиков, существует еще и значительное число людей, которые все же занимаются программированием. Причем этот слой многочисленных "непрофессионалов" на самом деле очень важен для всей компьютерной отрасли. Следствием такой забывчивости стало то, что если еще лет десять назад мы бросились в одну крайность, обучая программированию всех подряд, то теперь попали в другую ситуация, считая, что оно нужно лишь избранным. Мне кажется, именно последний мотив присутствовал в одном из писем в PC Week/RE (N 28-29/97), где говорилось о том, что для непрограммистов даже Бейсик не нужен. К сожалению, именно для этой категории студентов наиболее характерным подходом было и остается обучение по принципу "что знаем, то и преподаем", особо не заботясь о вопросе, "а зачем это нужно". В результате большинство студентов забывает о программировании на следующий же день после сдачи экзаменов.
За последние несколько лет технология разработки программ претерпела революционные изменения (визуальное программирование, событийная логика программы, компонентная технология, использование макросредств и пр.), что должно отразиться на методике обучения, но это заметно далеко не всегда. В этом плане схема "типичного пути начинающего программиста: Бейсик->Паскаль->Си++->программирование под Windows", приведенная в другом письме (N 24/97), при всей своей несовременности, является весьма характерной.
Возникает вопрос: а что же делается на первых трех этапах? Программирование в DOS или просто изучается теория языков? Если же речь идет о практической работе, то не понятно, что имеется в виду, например, под словом "Бейсик" — GW, Turbo, Quick, Visual? Ведь это — совершенно разные системы! Которая из них уступает Паскалю и какому Паскалю? Вопросы эти являются отнюдь не праздными, так как даже в последние два-три года у меня было немало контактов с преподавателями школ и вузов, которые говорили о негибкости Бейсик, имея, оказывается, в виду систему GW времен эпохи PC (даже еще не XT) начала 80-х годов.
Начинать сразу с разработки
Классическая схема обучения программированию раньше выглядела следующим образом: сначала теоретическое изучение языка, а уже потом выполнение практических заданий. Сегодня же для написания первых программ для Windows вообще не нужно знать об особенностях языка — нужно понимать общую логику разработки приложения и уметь работать в среде инструмента. И только после этого можно переходить к изучению языка для "изысканного программирования" на уровне кода. Какое средство разработки годится для решения подобной задачи? Мой ответ — Visual Basic. Во-первых, это позволит в максимальной степени абстрагироваться от языковых проблем. Во-вторых, — познакомиться со средой программирования, характерной для всех средств разработки Microsoft (возможно, они представляют собой не самые лучшие достижения в этой области, но их так много...). В-третьих, не нужно быть пророком, чтобы предсказать, что именно эта система будет наиболее массовой в нашей стране в ближайшее время. И что к программированию на VBA приобщатся многие разработчиков и "продвинутые" пользователи. Разумеется, для будущих профессионалов курс типа "твое первое Windows-приложение" может быть только началом для дальнейшего обучения программированию. Ответ на вопрос "Си или Паскаль или Бейсик?" в отношении компьютерных специалистов представляется очевидным — и то, и другое, и третье! Основной же упор должен быть сделан именно на сравнительное изучение языков, дополненное соответствующим сопоставлением разных сред разработки. Такой подход не нацеливает на доскональное изучение конкретного инструмента, но разве это является целью образования в вузе? Ведь целью института является подготовка не программистов, а специалистов в области компьютерных наук. И задачей высшего образования является не столько предоставление конкретных знаний, сколько подготовка фундамента для дальнейшего становления специалиста. Профессиональное же освоение своего инструмента возможно только в ходе практической работе и самообучения. Можно сразу предвидеть вопрос: а что делать, если у нас есть только 286-е компьютеры? Ответ на него, возможно, покажется резким — поменять их на что-то более современное. Представьте себе, что при подготовке водителей автобусов их сначала будут в течение года обучать езде на собачьих упряжках... По собственному опыту могу сказать — детальное знание систем Basic/DOS очень мало помогает (скорее, даже мешает) изучению VB для Windows. Но если даже брать за основу программирование в DOS, то акценты нужно делать на тех моментах, которые могут реально пригодится в будущем. Кстати, Visual Basic 1.0 и Windows 3.х, хотя и с трудом, но работают даже на 286-х.