Выбор языков программирования и средств проектирования для обучения специалистов по направлению «Прикладная информатика»

№ 4 (46) 2013

В. В. Бабенко, канд. геол.-минерал. наук, зав. кафедрой Информационных систем

Сыктывкарского государственного университета Ю. В. Гольчевский, канд. физ.-мат. наук, доцент Сыктывкарского государственного университета

выбор языков программирования и средств проектирования для обучения специалистов по направлению «Прикладная информатика»

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

введение

Проблема оптимизации учебного процесса при подготовке специалистов любого профиля становится в настоящее время особенно актуальной в связи с принятием новых стандартов высшего образования и встающими задачами в области интеграции экономики России в мировые рынки. Если еще 6-7 лет назад задачи такого характера можно было обсуждать в сослагательном наклонении, без необходимости формирования достаточно четких выводов [1], то к сегодняшнему дню появилась потребность наличия гораздо большей конкретики. Российские специалисты в области информационных технологий (ИТ) вполне способны вносить существенный вклад в развитие мировой компьютерной индустрии и экономики. Помочь им в этом могут правильно построенные образовательные процессы, поскольку сами по себе такие специалисты не появятся — их надо «выращивать» с помощью грамотно построенных образовательных программ высшего профессионального образования.

Популярность языков программирования

На сегодняшний день существует более 2 тысяч языков программирования, и постоян-

Стоит отметить, что этот список остается неизменным уже долгое время, практически с 2007 г. (языки лишь меняют позиции в рейтинге). Но анализ проводится на основании определения частотности запросов в поисковых системах, т. е. его результаты не могут претендовать на высокую точность, а выводы — на абсолютность. Те же языки входят в топ-лист популярных и востребованных и по версиям других источников, например, [3, 4]. В [4] приведены рейтинги самых популярных языков программирования в запросах работодателей (на сайте HeadHunter.ru) в крупных городах России (Москва, Санкт-Петербург, Новосибирск), в Казахстане и Белоруссии. Интересна и информация о том, какие языки программирования используют в поисковых запросах

-N ПРИКЛАДНАЯ ИНФОРМАТИКА

№ 4 (46) 2013 ' -

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

Легко заметить, что безусловными лидерами выступают универсальные С-подоб-ные языки и разновидности самого С, а также языки, ориентированные на разработку s веб-ресурсов. Здесь к уже перечисленным | языкам добавляется еще и очень востребо-I ванный в России язык программирования & для технологической платформы 1С (от 1-й "Ц до 8-й позиции в рейтингах). § В данном контексте весьма уместна сле-^ дующая постановка вопроса: каким языкам | программирования и проектирования следует обучать студентов — будущих IT-спе-g циалистов? Вопрос особенно значим при | организации профессионального обучения <§ по соответствующим специальностям и на-g правлениям, поскольку правильность отве-g та во многом определяет итоговое качество во и конкурентоспособность выпускников, У а также эффективность вуза. § У многих профессиональных програм-Ц мистов есть «свой» язык, тот, которому от-£ дается явное предпочтение. Как правило, g это универсальное средство написания кода и удобная среда для отладки. Но тезис,

« что один язык можно использовать во всех S.

Л* случаях, не подтверждается практически

i никем. Особенно сомнительной такая по-S

<§ становка вопроса оказывается в контексте | обучения, когда нужно определить, какой же о язык программирования следует изучать ^ первым и нужно ли изучать что-либо еще, кроме С++ (Java, Python и т. д.).

Какие же факторы определяют популяр* ность конкретного языка программирова-| ния? Их достаточно много. Не претендуя § на полноту анализа, отметим следующие Ц факторы:

• Востребованность на рынке труда — о по-видимому, главный критерий для будущих ^ программистов-профессионалов, поскольку | интегрально учитываются сразу несколько 8 параметров: емкость рынка вакансий, типи-^ зация программистских задач и регионально ная специфика.

• Тренды эволюции информационных технологий вообще и методологий разработки и программных сред в частности — фактор, во многом задающий главные закономерности использования языков программирования и определяющий востребованность в тех или иных специалистах. Например, смещение задач, требующих специализированного программного обеспечения, в Интернет предсказуемо вывело на передний план языки, удобные для разработки веб-ресурсов. Аналогичная картина наблюдается в связи с резким ростом рынка мобильных коммуникативных устройств. Например, растет популярность среды разработки Eclipse и языков, оперативно предоставляющих интерфейсы и библиотеки для таких разработок. Также очень существенно влияют изменения парадигм программирования — от процедурной через объектную к функциональной (табл. 1), появление интегрированных средств быстрой разработки, весьма успешное рыночное продвижение технологии^ЕТ и стремительный рост рынка облачных решений.

Таблица 1

Процентное соотношение популярности языков, сгруппированных по типам парадигм

Языки Рейтинг на февраль 2013 г., % Изменение с февраля 2012 г., %

Объектно-ориентированные 60,1 +2,6

Процедурные 35,0 -1,4

Функциональные 3,3 -0,9

Логические 1,6 -0,3

• Универсальность — чем больше задач способен решать язык, чем большее количество операционных платформ поддерживают работу с ним, тем лучше.

• Легкость в освоении — фактор, который, по-видимому, сильно влияет на статистику (для учебных языков количество свя-

№ 4 (46) 2013

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

• Стоимость владения — языки, подпадающие под свободные от платы лицензии (свободные или открытые), значительно популярнее на первой стадии обучения. Уже несколько лет наблюдается тенденция, когда производители проприетарных средств разработки или моделирования и проектирования предоставляют учебным заведениям, студентам и преподавателям свободный доступ к своим продуктам (естественно, в учебных целях).

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

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

навыки программирования для прикладного информатика

По целевому назначению следует различать несколько видов программирования:

• Математическое и системное программирование — поиск оптимальных алгоритмов, создание программ системного уровня, акцентированных на высокопроизводительный и устойчивый в работе код.

• Бизнес-программирование — разработка и настройка бизнес-ориентированных программ разного уровня сложности. Сюда же следует добавить и средства проектирования (например, UML, который не яв-

ляется языком программирования, но необ- | ходим грамотному разработчику информа- | ционных систем и т. п.). g

• Программирование игр и мультиме- ¡2

диа — разработка игровых интерфейсов g и алгоритмов, а также новых способов ра- g-боты с информацией: аудио- и видеопроигрывателей, трехмерной графики и т. п. и§

Все направления могут быть выделены ^ в применении к любым платформам, а противопоставление в достаточной степени условно — как правило, в реальных проектах эти подходы способны в разной степени сочетаться. Наибольшую значимость для специальности «Прикладная информатика» имеет бизнес-программирование.

Целевая профессиональная спецификация направления 230700 — «Прикладная информатика» описана в ФГОС недостаточно конкретно [5] и требует уточнения путем анализа фактического трудоустройства выпускников и уточнения формулировок компетенций [6, 7]. В большинстве случаев квалификация специалистов данного профиля интерпретируется как способность участвовать в проектах по разработке и внедрению бизнес-ориентированного программного обеспечения и в процессах эксплуатации и сопровождения управленческих программных систем.

В классификации авторитетной некоммерческой международной профессиональной организации «Институт инженеров по электротехнике и электронике» (IEEE, Institute of Electrical and Electronics Engineers) точного соответствия российскому квалификационному направлению «Прикладная информатика» нет (рис. 1). Сопоставление стандарта и структуры рынка труда позволяет сделать вывод, что это направление ближе всего к блокам SE (программная инженерия) и IT (информационные технологии) [8].

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

• Анализ особенностей организации бизнес-процессов фирмы с последующей

№ 4 (46) 2013

I ! IT I

I

I

I

I s

0 с со

s

1

I I

I

о t s

s

<u

о &

u

! =s

i

s 00 О

r &

о &

CO

Si Ü

f 00

Рис. 1. Классификация направлений подготовки бакалавров группы Computing

выработкой предложений по оптимизации (с акцентом на использование компьютерно-коммуникационных технологий). Наиболее типичные должностные позиции: бизнес-аналитик, менеджер по ИТ.

• Выявление требований к проектам разработки и внедрения прикладных информационных систем. Должностные позиции: руководитель (участник) проектов внедрения и эксплуатации информационных систем.

• Участие в проектировании информационных систем в различных ролях (менеджер, аналитик, тестировщик, разработчик и т. д.).

• Администрирование и управление эксплуатацией прикладных информационных систем. Должностные позиции: директор по ИТ (СЮ — Chief Information Officer).

• Управление информационными ресурсами и администрирование баз данных в интересах фирмы. Должностные позиции: администратор баз данных, начальник отдела информационного обеспечения бизнеса.

Эти роли выделены также из практического опыта трудоустройства выпускников кафедры Информационных систем Сыктывкарского государственного университета (СыктГУ), с учетом профессиональных стандартов, представленных в [9, 10].

Как правило, информатик-прикладник не обязан владеть навыками высокопроизводительного программирования в классической трактовке этого термина — «написание и отладка программного кода». На передний план выходит опыт алгоритмизации и формального описания процессов, умение выявлять, формализовать, систематизировать и документировать

требования заказчика. Весьма ценными оказываются навыки макетирования (про-тотипирования) эргономичных интерфейсов и моделирования структуры баз данных, приложенные к решению конкретных задач разработки программного обеспечения для организации-заказчика или к созданию унифицированной коробочной версии продукта. В наиболее общем виде можно сказать, что особая роль прикладного информатика — выступать квалифицированным посредником между потребляющим информационные сервисы бизнесом (а также другими профессиональными аудиториями пользователей) и разрабатывающими эти сервисы программистами.

Тем не менее, программистские навыки остаются для прикладного информатика одним из важнейших инструментов профессиональной деятельности. В таблице 2 приведен единый перечень навыков (сопряженных с типовыми профессиональными задачами), которые можно в расширенном толковании отнести к таковым.

Данный список не претендует на полноту и единственность — большинство перечисленных задач могут решаться и альтернативными средствами. Но он вполне отчетливо задает навыковые потребности, актуальные в настоящее время для решения задач прикладной информатики в бизнесе.

Обучение бизнес-программированию

На сегодняшний день «оптимального» языка программирования, пригодного для всех программистских задач, не существует. К грамотному специалисту предъявля-

46

№ 4 (46) 2013

Таблица 2 Ц

Ьс

Обобщенные навыки программирования и алгоритмического анализа g

Типовая задача Использование навыков проектирования и языков программирования

Моделирование бизнес-процессов Алгоритмизация

Макетирование эргономичных интерфейсов Визуальное конструирование форм

Моделирование структуры предметной области Объектное конструирование

Управление корпоративными информационными системами 1С, ABAP SAP

Моделирование и проектирование систем хранения данных SQL в сочетании с любым процедурным языком

Решение задач автоматизации «частных» программных продуктов Макроязыки и «частные» языки

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

Таким образом, возникает необходимость выбора наиболее полезных для учебного процесса языков программирования, которые будут включены в учебный план, и формирования оптимальной траектории обучения: порядок изучения, формы взаимодействия между различными учебными курсами, логика практического закрепления знаний и контроля навыков. Значительный опыт обучения бизнес-программированию в рамках программы подготовки по направлению «Прикладная информатика» в СыктГУ показывает необходимость наличия в программе следующих основных компонент (базовых учебных дисциплин, формирующих осно-выне группы «программистских» навыков), приведенных в табл. 3.

Перечисленный набор учебных курсов складывался в течение десяти лет, и на се-

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

Зачастую возникает вопрос: почему мы начинаем обучение с Pascal, а не с С++, Java или Python? Достаточно общепризнанным (на территории России и СНГ) является тот факт, что Pascal (в его современных версиях) простой и удобный инструмент для обучения алгоритмическим конструкциям и основам программирования. Можно, наверное, согласиться с тем, что, с одной стороны, этот язык не является достаточно востребованным. Но с другой — он не «загрязнен» излишним количеством

№ 4 (46) 2013

Таблица 3

Базовые учебные дисциплины

Основные итоговые навыки Название курса, язык, RAD1

Начальные навыки программирования и алгоритмизации; простейшее системное программирование Прикладная информатика и программирование, PascalABC, PascalABC.Net, написание командных файлов

Высокопроизводительное программирование; макетирование бизнес-интерфейсов; работа с базами данных Высокоуровневые методы информатики и программирования, Delphi, Code Gear

Проектирование и программирование баз данных Базы данных, MS Access

Объектно-ориентированное программирование Программирование на C++, DevC++, wxDevC++, Visual Studio

Навыки разработки корпоративных веб-ресурсов и сервисов Программирование на PHP, PHP

Навыки программирования прикладных финансово-экономических задач Комплексная информационная система управления на базе 1С: Предприятие 8, 1C

Алгоритмизация бизнес-процессов Типология бизнес-процессов, IDEF, ErWin BP Modeler

I ! t I

I

I

5

I lg

0

с «

s

1

I

s

t 43

0 g

s

s

1

о

6

u

i =s

s

s 00 О

r &

о &

«

Si Ü

t •i 00

дополнительных возможностей. Синтаксис достаточно прост и понятен даже начинающим программистам, что обеспечивает легкость изучения. Так, например, система программирования PascalABC.NET достаточно хорошо ориентирована на обучение современному программированию. Язык системы ObjectPascal для платформы Microsoft.NET содержит практически все основные элементы современных языков программирования: модули, классы, интерфейсы, исключения и др., а также некоторые средства параллельного программирования в виде директив OpenMP. Встроенный в среду разработки дизайнер форм помогает быстро создавать оконные приложения, осваивая приемы работы визуального программирования. PascalABC.NET предоставляет также ряд модулей, направленных именно на помощь в обучении. С некоторыми другими плюсами системы можно ознакомиться на официальном сайте проекта [11].

А обладая алгоритмическими навыками, понимая основные принципы и понятия программирования, далее проще изучать «более полезные практические» (и более богатые функционалом) языки, применяемые в объектно-ориентированном и визуальном программировании, библиотеки и фреймворка Альтернативным «первым» языком может быть С++ с выходом на другие популярные С-подобные языки, но для «первого» учебного языка он недостаточно строг в синтаксисе.

Начинать с объектно-ориентированных или функциональных языков (Java или Python), популярных в вузах США и Европы, также, наверное, не совсем целесообразно. Причина — возможные в дальнейшем проблемы с фундаментальными понятиями

1 RAD (от англ. rapid application development) — концепция создания средств разработки программных продуктов. — Прим. ред.

48

№ 4 (46) 2013

и практическими аспектами программирования. Хотя, бесспорно, они удобны в обучении и использовании и востребованы для практического применения.

Некоторым недостатком приведенного в табл. 3 списка можно считать то, что не уделяется должного внимания актуальным тенденциям программирования для мобильных устройств (телефонов, планшетов и др.). Но этот недостаток может (и будет) устранен корректировкой учебных планов и/или на уровне рабочих программ отдельных дисциплин.

В качестве систем программных средств разработки в этом случае могут рассматриваться, например, AndroidStudio [12], MicrosoftVisualStudio, Xcode, продукты Xamarin [13] или другие в зависимости от лицензионных и иных условий.

Заключение

В заключение особо подчеркнем, что основная идея предлагаемого алгоритма обучения специалистов по прикладной информатике — перенос программирования в бизнес-плоскость (либо другую предметную область), а не подготовка системных программистов, что является целью других специальностей и направлений обучения. Умение не уходить в программные абстракции и математизированные модели, а тренировать и применять умения на конкретных бизнес-объектах, описываемых программами, — это и есть специфика обучения профессии «Прикладная информатика».

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

1. Задорожный В. Н., Бабенко В. В. Позиционирование выпускников специальности «Прикладная информатика» на рынке труда // Высшее образование сегодня. 2007. № 12. С. 22-27.

2. Сайт фирмы TIOBE Software [Электронный ресурс] URL: http://www.tiobe.com/index. php/ content/paperinfo/tpci/index.html (дата обращения: 20.02.2013).

3. Programming Language Popularity [Электронный II ресурс] URL: http://langpop.com (дата обраще- |S ния: 10.02.2013).

ig

4. Самые востребованные языки програм- ^ мирования [Электронный ресурс] URL: g http://habrahabr.ru/company/hh/blog/156803/ (да- g" та обращения: 20.02.2013).

5. ФГОС (Федеральный государственный образо- 'S вательный стандарт) Высшего профессиональ- ^ ного образования по направлению подготовки 230700 прикладная информатика (квалификация (степень) «БАКАЛАВР») [введен приказом

№ 783, от 22.12.2009]: офиц. текст.

6. Бабенко В. В. Проблемный анализ профессиональных компетенций Федерального государственного образовательного стандарта направления 230700 — Прикладная информатика // Вестник ИТАРК. 2012. № 2 (4). С. 7-11.

7. Переход российских вузов на уровневую систему подготовки кадров в соответствии с федеральными государственными образовательными стандартами: нормативно-методические аспекты / В. А. Богословский, Е. В. Караваева, Е. Н. Ковтун и др. М.: Университетская книга, 2010. — 249 с.

8. Computing Curricula 2005. The Overview Report — IEEE Computer Society, 2005. Copyright © 2006 by ACM and IEEE.

9. Требования профессионального стандарта. Специалист по информационным системам: должностные обязанности, умения и навыки // Прикладная информатика. 2008. № 1 (13). С. 32-67.

10. Требования профессионального стандарта. Специалист по информационным системам: должностные обязанности и основные знания // Прикладная информатика. 2008. № 3 (15). С. 28-75.

11. PascalABC. Net. Сайт проекта. [Электронный ресурс] URL: http://pascalabc.net/ (дата обращения: 20.05.2013).

12. Android Studio: An IDE built for Android // Android Developers Blog [Электронныйресурс] URL: http://android-developers.blogspot.ru/2013/05/ android-studio-ide-built-for-android.html (дата обращения: 20.05.2013).

13. Creating Cross-platform iOS, Android, and Windows Mobile Apps in C# — Xamarin [Электронныйресурс] URL: http://xamarin.com/products (дата обращения: 20.05.2013).