Научная статья на тему 'Психология программирования: цели, проблемы, перспективы'

Психология программирования: цели, проблемы, перспективы Текст научной статьи по специальности «Психологические науки»

CC BY
5912
537
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПСИХОЛОГИЯ ПРОГРАММИРОВАНИЯ / ПРОГРАММИРОВАНИЕ / РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ / ПСИХОЛОГИЯ / PSYCHOLOGY OF COMPUTER PROGRAMMING / PROGRAMMING / SOFTWARE DEVELOPMENT / PSYCHOLOGY

Аннотация научной статьи по психологическим наукам, автор научной работы — Рожников Василий Андреевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Psychology of computer programming: purposes, issues, perspectives

This article describes the current state of one of the areas of psychology the psychology of programming. The author provides a brief account of the history of this area; describes the subject, purposes and methods of the computer programming psychology. Domestic and foreign approaches are considered. The problems and perspectives of work in this direction are discussed.

Текст научной работы на тему «Психология программирования: цели, проблемы, перспективы»

УДК 159.99

Рожников Василий Андреевич

Rozhnikov Vasily Andreevich

ПСИХОЛОГИЯ

ПРОГРАММИРОВАНИЯ:

ЦЕЛИ, ПРОБЛЕМЫ, ПЕРСПЕКТИВЫ

PSYCHOLOGY OF COMPUTER PROGRAMMING: PURPOSES, ISSUES, PERSPECTIVES

Аннотация:

Summary:

В статье описано текущее состояние одного из направлений психологии - психологии программирования. Дано краткое изложение истории данного направления; описаны предмет, цели и методы психологии программирования. Рассмотрены отечественные и зарубежные подходы. Выведены проблемы и перспективы работы в данном направлении.

This article describes the current state of one of the areas of psychology - the psychology of programming. The author provides a brief account of the history of this area; describes the subject, purposes and methods of the computer programming psychology. Domestic and foreign approaches are considered. The problems and perspectives of work in this direction are discussed.

Ключевые слова:

психология программирования, программирование, разработка программного обеспечения, психология.

Keywords:

psychology of computer programming, programming, software development, psychology.

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

Для изучения этих вопросов существует отдельная область психологического знания - психология программирования. Это направление психологии появилось в 70-х гг. ХХ в. в США благодаря Джеральду Вайнбергу. Его известная монография «Психология компьютерного программирования» [1], первое издание которой вышло в 1971 г., считается классикой психологии программирования. В ней описаны проблемы и перспективы исследований в данном направлении. К сожалению, данная книга за 40 лет так и не была переведена на русский язык.

Еще одним известным ученым, который внес большой вклад в психологию программирования, является Бэн Шнейдерман [2]. Его работа «Психология программирования: человеческие факторы в вычислительных информационных системах» содержит детальное описание целей, возможностей и проблем психологии программирования. Его монография вобрала в себя почти все исследования по данной тематике, проведенные до 1980 г.

Эпиграф к 1-й главе, где Шнейдерман говорит о психологии программирования как об отдельном разделе психологии, содержит цитату из статьи А.П. Ершова «Эстетика и человеческий фактор в программировании» [3]. Именно Ершов был первым, кто в СССР заговорил о применении психологии в улучшении практики программирования. В данной статье он поднимает те же вопросы, что и Вайнберг за год до этого в Psychology of Computer Programming, которые не имеют окончательного ответа до сих пор [4]:

- возможна и нужна ли организация разработки программного обеспечения (ПО) по принципу конвейерной линии?

- кого и почему труднее найти дли реализации проекта по разработке ПО - руководителя или исполнителя?

- как сочетать элитарность системного программирования с его массовостью?

- как воспитывать программиста - через мировоззрение (университет) или путем профессиональных навыков (технический институт)?

- что такое индивидуальные способности в программировании, специфичны ли они и нужны ли?

- можно и нужно ли отделять проектирование большой программы от ее изготовления?

То, что ученые с разных концов планеты поднимают схожие вопросы, подтверждает необходимость существования отдельного раздела науки, который занимается изучением психологии разработки ПО. На Западе, как уже было сказано выше, данное направление существует и активно развивается. Начиная с 1986 г. вышло семь сборников Empirical Studies of Programmers [5],

- 1B -

в которых детально описано множество психологических исследований программистов и деятельности программирования. Кроме того, ежегодно в США и Европе проходит конференция «Psychology of Programming Interest Group» (PPIG) [6], где с докладами выступают психологи, социологи и программисты.

В СССР и в России психология программирования так и не стала отдельным направлением. По данной тематике можно найти разрозненную информацию у таких ученых, как А.П. Ершов, Г.А. Звенигородский, О.К. Тихомиров, Т.В. Корнилова, А.Е. Войскунский, Д.А. Поспелов, Я.И. Фет, И.В. Потоссин, Л.В. Городняя, Е.А. Орёл. В нескольких университетах (нам известны два таких вуза: Санкт-Петербургский государственный университет [7] и Новосибирский государственный университет [8]) - для программистов ведется специальный курс «Психология программирования». Существенной проблемой для развития психологии программирования в России является то, что крайне мало работ зарубежных коллег переведено на русский язык.

Каковы же цели и методы психологии программирования?

Психология программирования - это «наука о действиях человека, работающего с вычислительными и информационными системами» [9, с. 12]. Предметом исследования психологии программирования является деятельность программиста, психологические закономерности приема и переработки информации, функционирование психических приемов памяти и мышления у программиста, его работоспособности, вопросы профессионального отбора [10]. Применение методов и возможностей психологии программирования к вычислительным и информационным системам может повысить продуктивность работы программистов и сократить число ошибок. Вычислительные машины - это только инструменты, и психология программирования сконцентрирована не на производительности машины, а на эффективности работы человека [11].

Конкретные цели психологии программирования следующие:

1. Усовершенствование практики программирования. Возможные области усовершенствования:

а) стандарты на использование языков программирования с применением комментариев, форматов, мнемонических имен, структур управления и структур данных;

б) руководства по документированию, регламентирующие внутренние комментарии, внешние описания и блок-схемы;

в) организация коллективной работы, как, например, в виде бригады главного программиста, совместного тестирования, чтения кодов и структурированных просмотров;

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

д) принципы разработки эффективных человеко-машинных интерфейсов.

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

3. Усовершенствование обучения программистов и пользователей ЭВМ.

4. Разработка методов оценки качества программного обеспечения.

5. Оценка способностей и возможностей программиста [12].

В психологии программирования используются следующие методы исследования:

- интроспекция;

- наблюдение;

- эксперимент;

- качественный анализ [13].

Опираясь на вышеперечисленные методы, зарубежные психологи делают упор в основном на практические выгоды исследований по психологии программирования. В связи с этим большинство исследований и докладов на PPIG носят эмпирический характер, и их авторы пытаются найти ответы, к примеру, на такие вопросы:

- может ли MTL [14] заменить преподавателя при обучении студентов-третьекурсников базовым понятиям в программировании (цикл, массив, арифметические функции и пр.) [15]?

- насколько эффективно использовать роботов (настоящих и / или виртуальных) в обучении программированию новичков [16]?

- какова роль периферийного зрения в программировании [17]?

- как влияет структура класса на понимание программы [18]?

В отдельных монографиях и докладах авторы, пытаясь дать теоретическое обобщение, часто приходят к тому, что программирование - это ремесло и, чтобы ему научиться, нужно вначале побыть подмастерьем [19; 20; 21].

В зарубежной психологии явно выделяется только одна теория, за авторством Шнейдермана

[22], о том, какова психологическая структура деятельности программиста. Она состоит из мыслительных структур и мыслительных процессов. Мыслительные структуры - это то, что должно храниться в памяти программиста, а мыслительные процессы применяются, когда используются или расширяются знания из памяти. Мыслительные структуры - это сложные и многоуровневые знания о понятиях и методах программирования, которые Шнейдерман делит на 2 категории:

1. Семантические знания - общие существенные для программирования понятия, которые не связаны с каким-то конкретным языком программирования. Все эти знания получены из опыта работы, но хранятся они в виде общих содержательных наборов информации, более или менее не зависящих от конкретных языков программирования. В семантических знаниях он выделяет 4 уровня:

а) определение понятий нижнего уровня, например, что такое оператор присваивания, массивы и какие бывают типы данных;

б) понятия среднего уровня (стратегии поиска большего из двух значений, суммирование массива);

в) понятия высокого уровня (двоичный поиск, использование стека для организации рекурсии, методы сортировки и слияния);

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

2. Синтаксические знания - конкретные практические знания, относящиеся к синтаксису языков программирования. Они точнее, подробнее и легче забываются, чем семантические знания. В синтаксические знания входят такие элементы, как: условный оператор, оператор присваивания, правильные наборы символов и имена библиотечных функций. Эти знания в значительной мере приобретаются в процессе осмысленного обучения, включающего решение задач и изучение описательных руководств, помогающих закрепить и усвоить новые понятия совместно с имеющимися семантическими знаниями или «мыслительными структурами». Синтаксические знания, являющиеся относительными и носящие инструктивный характер, заучиваются механически и не слишком хорошо стыкуются с уже имеющимися системами семантических знаний.

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

В отечественной психологии есть собственная модель структуры деятельности пользователя компьютера (в эту категорию входят и программисты), которая носит название «модель принятия интеллектуальных решений в диалоге с компьютером» О.К. Тихомирова и Т.В. Корниловой

[23]. Согласно этой модели, деятельность в диалоге с ЭВМ специфична уже в силу своей особой структуры: она состоит из последовательного чередования этапов «запроса» (пользователь обращается к компьютеру) и «ответа» (компьютер выдает пользователю результат обработки пользовательского запроса).

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

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

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

1) «язык» диалога как форма организации «запросов-ответов»; им задаются как возможности, так и ограничения деятельности пользователя в диалоге;

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

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

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

Выводы по проделанному нами обзору.

1. Наиболее активная исследовательская работа по психологии программирования ведется на Западе. В США самая высокая концентрация исследований по данному направлению. В России психология разработки ПО развивается медленнее, и отчасти это связано с тем, что множество работ по данной тематике не переведено на русский язык, включая основополагающую монографию Вайнберга.

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

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

Ссылки и примечания:

1. Weinberg G.M. The Psychology of Computer Programming. New York, 1971. 299 p.

2. Шнейдерман Б. Психология программирования: человеческие факторы в вычислительных и информационных системах / пер. с англ. М., 1984. 304 с.

3. Ершов А.П. О человеческом и эстетическом факторах в программировании // Ершов А.П. Избранные труды. Новосибирск, 1994.

4. Там же.

5. Interaction Design Foundation [Электронный ресурс]. URL: http://www.interaction-design.org/references/conferences/em-pirical_studies_of_programmers_-_seventh_workshop.html (дата обращения: 25.05.2014).

6. Psychology of Programming Interest Group (PPIG) [Электронный ресурс]. URL: http://www.ppig.org (дата обращения: 25.05.2014).

7. Белая О.А., Новиков Б.А. Психология программирования: человеко-машинный аспект информационных технологий [Электронный ресурс]. URL: http://it-education.ru/2004/reports/odintsov.htm (дата обращения: 25.05.2014).

8. Городняя Л.В., Мурзин Ф.А. Психология программирования [Электронный ресурс]. URL: http://www.computer-mu-seum.ru/books/n_collection/psychology.htm (дата обращения: 25.05.2014).

9. Шнейдерман Б. Указ. соч.

10. Белая О.А., Новиков Б.А. Указ. соч.

11. Шнейдерман Б. Указ. соч.

12. Там же.

13. Weinberg G.M. Op. cit.

14. MTL (Memory Transfer Language) позволяет визуализировать состояние памяти на каждом шаге выполнения программы.

15. Missele L.J. Learning Programming by using Memory Transfer Language (MTL) without the Intervention of an Instructor [Электронный ресурс]. URL: http://www.ppig.org/papers/24/4.Paper%204-Leonard%20J.%20Mselle-won't%20attend-bra-zil.pdf (дата обращения: 25.05.2014).

16. Major L. Teaching Novices Programming Using a Robot Simulator: Case Study Protocol [Электронный ресурс]. URL: http://www.ppig.org/papers/24/10.Teaching%20Novices%20Programming%20Using%20a%20Robot%20Simulator%20-%20Case%20Study%20Protocol%20-%20PPIG%202012-Louis%20Major.pdf (дата обращения: 25.05.2014).

17. Bednarik R., Orlov P.A. Investigating the role of programmers' peripheral vision: a gaze-contingent tool and an experiment

proposal [Электронный ресурс]. URL: http://www.ppig.org/papers/24/16.%20Bednarik_0rlov_PPIG_03112012-Ro-

man%20Bednarik%20Paul%20A.%200rlov.pdf (дата обращения: 25.05.2014).

18. Alardawi A., Khazaei B. The influence of class structure on program comprehension [Электронный ресурс]. URL: http://www.ppig.org/papers/23/25%20Alardawi.pdf (дата обращения: 25.05.2014).

19. Weinberg G.M. Op. cit.

20. Ollis G. In search of practitioner perspectives on «good code» [Электронный ресурс]. URL: http://www.ppig.org/pa-pers/24/5.PPIG2012_%20workshopPaper_revised-Gail%200llis.pdf (дата обращения: 25.05.2014).

21. Goodliffe P. Code craft: the practice of writing excellent code. San Francisco, 2006. 580 p.

22. Шнейдерман Б. Указ. соч.

23. Корнилова Т.В., Тихомиров О.К. Принятие интеллектуальных решений в диалоге с компьютером. М., 1990.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

24. Орел Е.А. Диагностика особенностей мыслительной деятельности специалистов в области информационных технологий (программистов) : дис. ... канд. психол. наук. М., 2007. 168 с.

i Надоели баннеры? Вы всегда можете отключить рекламу.