1. М.В.Булгаков, А.Д.Иванников, М.С.Ковальский, В.П.Носов, А.А.Рогачев, А.Н.Таран. Федеральный портал по научной и инновационной деятельности. В сб. научн. ст. "Интернетпорталы. Содержание и технологии", вып.4, М.: Просвещение, 2007, с. 323-345.
2. Грегер С.Э. Реализация инструментальной среды семантического моделирования учебного процесса. Объектные системы - 2011: материалы III Международной научно-практической конференции, (Ростов-на-Дону, 10-12 мая 2011 г.) / Под общ. ред. П.П. Олейника. - Ростов-на-Дону, 2011. - С.58-61.
3. Грегер С.Э., Сковородин Е.Ю. Построение онтологического портала с использованием объектной базы // Объектные системы - 2010: Материалы I Международной научнопрактической конференции. Россия, Ростов-на-Дону, 10-12 мая 2010 г / под общ. ред. П.П. Олейника. - Ростов-на-Дону, 2010. С. 74-78.
4. Загорулько Ю.А. Подход к построению интеллектуальных информационных систем на основе
семантических сетей // Международная научно-техническая конференция «Открытые семантические технологии проектирования интеллектуальных систем» (Open Semantic Technologies for Intelligent Systems)— OSTIS-2011, 10-12 февраля 2011 года, Минск,
Белоруссия, Белорусский государственный университет информатики и радиоэлектроники.
5. Тихонов А.Н., Иванников А.Д., Гридина Е.Г., Куракина Н.И., Симонов А.В., Чиннова И.И. Комплексный анализ системы федеральных образовательных порталов. // В сборнике научных статей "Интернет-порталы: содержание и технологии". Выпуск 2. / Редкол.: А.Н. Тихонов (пред.) и др.; ГНИИ ИТТ "Информика". - М.: Просвещение, 2004. - С. 192-226.
6. Beck H., H. S. (2002). Overview of approach, methodologies, standards, and tools for ontologies. Материалы Third Agricultural Ontology Workshop. Food and Agricultural Organization of the United Nations. Получено из http://aims.fao.org.
7. Guarino. (1998). Formal Ontology and Information Systems. N. Guarino (ed.) Formal Ontology and Information Systems. (стр. 3-15). Amsterdam: IOS Press.
8. Hruby, P. (б.д.). Ontology-Based Domain-Driven Design. Получено из SoftMetaWare: www.softmetaware.com/oopsla2005/hruby.pdf
9. Knublauch, H. O. (March 2006 r.). A semantic web primer for object-oriented software developers. Получено из W3C Working group note: http://www.w3.org/TR/sw-oosd-primer/
10. OWL2 Web Ontology Language Structural Specification and Functional-Style Syntax. http://www.w3.org/2007/OWL/wiki/Synta
11.Stephane JEAN, Y. A.-A. (б.д.). An Object-Oriented Based Algebra for Ontologies and their Instances, Advances in Databases and Information Systems (ADBIS’07), Varna Bulgaria,2007, http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.82.68
УДК 004.43
ПРОБЛЕМА ВЫБОРА ЯЗЫКА ПРИ ИЗУЧЕНИИ ОБЪЕКТНО-РИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ В ВЫСШИХ УЧЕБНЫХ ЗАВЕДЕНИЯХ
Синельникова Ирина Владимировна, преподаватель, ЦК «Информационные технологии», Воронежская государственная технологическая академия, Россия, Воронеж, Irsa2008@,inbox.ru Калинникова Людмила Алентиновна, преподаватель ЦК «Информационные технологии», Воронежская государственная технологическая академия, Россия, Воронеж, [email protected]
Объектно-ориентированное программирование в настоящее время занимает ведущее место в разработке профессиональных программных средств. Качественная разработка программных продуктов обеспечивается в первую очередь использованием объектных технологий. [1]
При обучении началам программирования немаловажную роль играет первый язык, во многом определяющий дальнейший стиль программирования.
Задачи обучения на начальном этапе связаны, прежде всего, с выработкой алгоритмического мышления. Эти задачи многообразны и достаточно сложны. Требуется понимание новых понятий: переменных и типов данных. Требуется умение описывать процесс вычислений ограниченным набором управляющих структур - выбора, циклов,
28
рекурсии. Требуется знание основ представления данных и классических алгоритмов. И с первых шагов программирования нельзя забывать об эффективности и корректности разрабатываемых программ. [2]
Процесс обучения студентов объектным технологиям в высших учебных заведениях в той или иной мере осложнен рядом факторов.
Объектно-ориентированное программирование ориентировано в первую очередь на создание сложных программ, а студент, выполняя лабораторные работы, решает простые задачи. В курсовых работах студент чаще всего решает локальные задачи. Ответственность за проект лежит на преподавателе, соответственно учащиеся, по сути, не являются руководителями разрабатываемого программного продукта. В результате, большая часть студентов не получает опыт создания сложных программ и, тем более, руководства процессом их разработки.
Следует отметить, что объектно-ориентированное программирование создает хорошие возможности модификации программ, но эти возможности закладываются еще на этапе проектирования программы. У студента отсутствует мотивация обеспечения модифицируемости программы, т.к. основной его задачей остается получение зачета по предмету, и мало ли кто задумывается, как и где изученное может «пригодиться в жизни».
Большинство преподавателей высших учебных заведений являются представителями старшего поколения и используют технологии структурного проектирования программ, основанной на алгоритмической декомпозиции больших систем. Поэтому примеры, которые используются на занятиях, рассматриваются с точки зрения технологии структурного проектирования. Следовательно, обучение объектно-ориентированному программированию в той или иной степени находится под (объективным и субъективным) влиянием идей структурного проектирования программ. Накопление полезного опыта объектноориентированного программирования в этом случае становится делом самостоятельным на основе метода проб и ошибок.
Наука программирования настолько быстро развивается, что полученные обычно на начальных курсах знания приемов программирования к моменту окончания обучения в значительной мере устаревают [7]. В результате учащиеся начальных курсов, по сути, находятся в более выгодном положении относительно тех, чье обучение практически завершено. В этом смысле парадоксальным является даже само преподавание объектноориентированного программирования, поскольку оно просто может устареть (как это произошло со структурным программированием) в связи с появлением новых идей, новых методов и возможностей. Именно поэтому учебный процесс должен прививать специалисту качества оперативной реакции на новые идеи и технологии программирования.
Молодой специалист, получив представление об одном уровне сложности программных систем, попадает в условия следующего уровня сложности. Здесь неизбежен этап адаптации к новым условиям, что требует от выпускника качества оперативного реагирования на стремительно изменяющиеся условия работы.
На практике часто возникает ситуация, когда разработанная программа передается другому программисту для ее сопровождения и развития, работа этого программиста начинается с изучения программы. Поэтому не стоит забывать, что качественная программа помимо своего основного назначения, должна быть легко читаемой и понимаемой. Использование хороших правил именования идентификаторов и аналогичных методических приемов существенно повышает преемственность [5]. Следовательно, доступность понимания программы является, прежде всего, практическим принципом. При отладке программ большая часть времени тратится на чтение исходного текста. У программиста, который пишет программу, создается иллюзия ее ясности [7]. С целью экономии времени студенты используют заложенные в систему программирования правила именования идентификаторов, и если проходит определенный промежуток времени между занятиями, то приходится восстанавливать в памяти то, что написано на более раннем этапе. Помощь в
29
чтении программы оказывает применение правил именования идентификаторов, однако студенты часто пренебрегают этими правилами.
Особенность организации учебного процесса в высшем учебном заведении состоит в том, что студент должен изучить большое число общеобразовательных, общетехнических и специальных дисциплин. Как правило, освоение разных дисциплин осуществляется под руководством разных преподавателей, в результате чего у студентов возникают затруднения в осознании целостности распределенного по разным дисциплинам учебного материала [4].
Объектно-ориентированное программирование подразумевает создание сложных программ, вследствие этого преподавателю приходиться преодолевать серьезные трудности при выборе адекватных средств контроля или упрощать картину. Контроль знаний на уровне синтаксиса конструкций языка программирования трудно назвать удовлетворительным для объектно-ориентированного программирования [6].
Создатели программных средств, как правило, считают реализацию программ коммерческой тайной, подробно раскрывается только внешняя логика программы. Поэтому хорошие примеры реализации объектно-ориентированных программ с комментариями по выбору решений фактически отсутствуют. По этой причине, предлагая примеры программ студентам, преподаватель действует субъективно, а студенты находятся в зависимости от профессиональных пристрастий конкретного преподавателя.
Таким образом, в условиях учебного процесса студент не всегда имеет возможность в полной мере ощутить потребность в использовании рекомендаций объектноориентированного программирования и оценить их по достоинству. Выпускник ВУЗа, получивший образование в области информатики и вычислительной техники на примере простых программ, под руководством «структурно-ориентированных» преподавателей и на примере успешных «структурно-ориентированных» программ вынужден во время получения образования и на начальном этапе профессиональной деятельности самостоятельно отфильтровывать идеи структурного проектирования программ, несовместимые с идеями объектно-ориентированной технологии. Утверждать, что эти идеи были плохими, конечно же, нельзя, но не стоит забывать, что они уже сыграли свою роль и на смену им пришли новые. Кроме того, современные системы программирования уже не содержат средства поддержки структурного проектирования программ [3].
Все образовательные учреждения сегодня обучают, как правило, лишь одному из подходов к реализации алгоритмов, а преподаватели владеют одним в лучшем случае двумя языками программирования. Это, часто приводит к тому, что выбор методов и технологий решения конкретной практической задачи студентом-выпускником не зависит от типа решаемой задачи. А преподаватель использует тот подход в программировании, которому его научили.
Все же одной из главных проблем, остается проблема выбора языка и метода программирования. Эта проблема гораздо шире, чем проблема обучения нескольким языкам программирования. Как правило, зная один или два языка программирования, преподаватель изучит третий лишь в том случае, если он относится к той же парадигме, в противном случае изучение другого языка программирования вызовет определенный ряд сложностей. Так как при переходе к программированию на другом языке преподаватель обязан изменить не только подход к решению поставленной задачи, но и перестроить мыслительную деятельность относительно новых понятий и принципов работы.
Сейчас насчитывается более двух тысяч языков программирования высокого уровня. Большинство этих языков возникло на основе конкретных требований некоторой предметной области. Каждый новый язык позволял решать все более сложные задачи [7].
Объектно-ориентированные языки в настоящий момент являются развивающимися. Большинство из этих языков являются версиями процедурных и проблемных языков.
Чаще всего при выборе объектно-ориентированного языка для изучения рассматривают:
1. Visual Basic (~ Basic);
30
2. Delphi (~ Pascal);
3. C++ (~ C).
По сути, все эти языки имеют свои положительные и отрицательные стороны.
Если рассматривать Visual Basic, то главным его достоинством является простота языка. Этот язык достаточно легко воспринимается учащимися и его вполне реально можно изучить за несколько месяцев. Кроме того, среда позволяет достаточно быстро и просто создавать достаточно сложные оконные приложения. Дополнительное преимущество Visual Basic состоит в том, что он является встроенным языком программирования для Microsoft Office (Word, Exel) и скриптовым языком для браузера Microsoft Explorer. Однако главный недостаток Visual Basic - это отсутствие полноценной поддержки объектноориентированной парадигмы.
Если у большинства учащихся базовым школьным языком программирования был Pascal, то обучение объектно-ориентированному программированию лучше начинать с Delphi, это поможет освоить в первую очередь создание Windows-приложений. Затем можно будет перейти к C++, который в первую очередь поможет освоить "внутренние" возможности Windows. Такой порядок изучения не случаен, язык C++ чрезмерно сложен. Это признают все без исключения. Он сложен для изучения и в использовании.
Delphi - это чрезвычайно мощная и удобная интегрированная среда (IDE), заслуживающая самых высоких похвал. Ни один компилятор C++, включая Visual C++, не предоставляет нам столь дружественной, интуитивно понятной, простой в использовании и вместе с тем столь многофункциональной оболочки как Delphi. Выполнение задания, над которым в C++ вы промучаетесь пару часов, в Delphi отнимет не более минуты. К тому же эффективность кода, сгенерированного компилятором Delphi, в большинстве случаев не хуже, чем у его конкурента C++. Исходя из этих соображений, многие ВУЗы отдают предпочтение изучению Delphi.
Нужно отметить, что в последнее время все чаще для обучения объектноориентированному программированию выбирают язык C# (сишарп). Язык имеет Си-подобный синтаксис, включает большой набор конструкций и мощную стандартную библиотеку. Среда Visual Studio.NET позволяет объединять в одной программе модули на Visual Basic и C#.
Таким образом, программирование стало одновременно и простым (относительно), и сложным, а учебный процесс по изучению объектно-ориентированного программирования накопил целый ряд противоречий объективного и субъективного характера.
Литература
1. Mosley P. A taxonomy for learning object technology / Pauline Mosley // Journal of Computer Science in Colleges. - 2005. -V. 20, Issue 3. - P. 204-216.
2. В. А. Биллиг, «Основы программирования на C#», Изд. Интернет - Университет ИТ, БИНОМ, Москва 2006 г.
3. В. Ю. Добрынин, Технологии компонентного программирования.— Санкт-Петербург, Изд. Санкт-Петербургского университета, 2004 г.- 216 с.
4. Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К., Объектно-ориентированное программирование: Учеб. для вузов/ Под. Ред. Г.С. Ивановой. — М.: Изд. МГТУ им. Н.Э.Баумана, 2001. - 320 с.
5. Дал У., Дейкстра Э., Хоор К. Структурное программирование. - М. Мир, 1975. - 247с.
6. Т. Кормен, Ч. Лайзерсон, Р. Ривест. Алгоритмы: построение и анализ: Москва; МЦМНО, 2001. -960с.
7. Г. Буч, Объектно - ориентированный анализ и проектирование с примерами приложений на С++, изд.: Бином, 1998 г. - 560 с.
31