Абигайл Новик: «Вы говорите компьютеру, что вы хотите, и он это делает именно так как вам нужно»

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

«Итак, мои мысли о Матлабе. Не то чтобы очень глубоко и философски, но все же

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

— На сайте Матлаба есть огромное количество примеров и демонстраций. Используйте их!http://www.mathworks.com/academia/student_center/tutorials/launchpad.html

— Начинать лучше с установки Psychtoolbox и ознакомления с их примерами. Используйте код, написанный кем-то другим, или демонстрационные примеры в качестве основы для ваших собственных программ. Вы можете взять демо-код и попробовать немного его изменить так, чтобы программа делала то, что ВЫ хотите чтобы она делала! Это один из лучших способов научиться программировать, потому что вам не понадобится начинать с нуля. Вместо этого вы можете просто упасть кому-то на хвост;)

— Если вы застряли — погуглите. Вы не поверите, сколько советов доступны онлайн. Например, предположим, вы используете Psychtoolbox и вам нужно поменять цвет текста на экране, но вы не знаете, как это сделать. Наберите в поисковике «psychtoolbox change color text displayed on screen matlab» и вся нужная документация окажется в ваших руках.

— Две важнейшие вещи, которым нужно научиться начинающим программировать — условия и циклы. Этому может бесплатно и просто обучить Code Academy (http://www.codecademy.com/)

— Матлаб — очень, очень буквальный язык. Вы говорите компьютеру, что вы хотите чтобы он сделал, и он делает это ИМЕННО так, как вы описали. Придется научиться очень точно формулировать!"

Катерина Плацек: «MATLAB это не магия»

#горячихюныхкогнитивных много по всему миру, и проблемы у них на самом деле не такие разные, как это может показаться. #thinkcognitive попросил Катерину Плацек (ассистент лаборатории, факультет психологии University of Texas at Austin) рассказать о своем опыте общения с Matlab:

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

Следующая глава саги об изучении Матлаба открылась, когда передо мной встала задача создания бихевиоральной экспериментальной парадигмы с использованием пакета PsychToolbox — дополнения к Матлабу для психологического экспериментирования. В этот раз я училась по книге «Matlab for Behavioral Scientists» (автор David A. Rosenbaum). Книга оказалась спасением — основы программирования и инструкции для Матлаба были объяснены понятным не-техническим языком, и адаптированы для начинающих. Так я стала понимать «как» и «почему» программирования.

Но тем не менее, простое чтение учебника и выполнения упражнений не продвинули бы меня особенно далеко. Как я слышала от многих, и как я понимаю теперь сама, единственный способ учиться — сделать самостоятельный проект. Это не значит, что вы будете сидеть перед экраном компьютера и расстраиваться от каждого сообщения об ошибке (и думать, что вы необучаемы — я точно так думала, когда начинала). Вместо этого, используйте свои знания, пополняйте их, и просите помощи! Лучшие учителя — это ваши коллеги, которые скорее всего в свое время преодолевали те же самые трудности. Матлаб — это не магия. Это компьютерная программа, помогающая вам в проведении исследований, которые вы умеете делать. Я не могу назвать себя ни экспертом в Матлабе, ни человеком которому нравится программировать, но сейчас я могу редактировать и чинить и создавать собственный код. Будьте к себе снисходительны — не все (как я) от природы способны программировать, и вы обязательно научитесь — просто будьте упорны и не вешайте нос!

Александра Чистопольская: «можно отметить легкость освоения программы»

Мы продолжаем публиковать рассказы студентов и аспирантов о своих первых самостоятельно сделанных на компьютере экспериментах. Сегодня — рассказ Саши Чистопольской, аспиранта факультета психологии ЯрГУ, о том, как она делала свой первый эксперимент на PsychoPy:

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

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

Наталья Андриянова: «Можно делать эксперименты, не имея навыков программирования»

#thinkcognitive продолжает публиковать истории. Сегодня — Наталья Андриянова о первых экспериментах и друзьях-программистах:

«Я провожу эксперименты в программе PsychoPy и очень рада, что такая программа есть у нас в доступе. Ей довольно легко пользоваться и можно делать некоторые эксперименты, даже не имея навыков программирования, хотя, конечно, умея программировать, там можно сделать гораздо больше. Научиться пользоваться программой мне помогло обучающее видео (https://www.youtube.com/watch?v=VV6qhuQgsiI), а так же мой коллега Иван Иванчей который объяснил мне ее возможности на примере моего эксперимента. Сейчас я сделала уже несколько экспериментов в PsychoPy. Конечно, отсутствие навыков программирования ограничивает для меня сферу ее использования, поэтому я считаю, что данный навык является важным для психологов. Можно, конечно, пойти другим путем и иметь друзей программистов, которые помогут вам делать эксперименты, но тогда вы начинаете зависеть от них, ведь вам придется постоянно обращаться к ним, если нужно что-то исправить или дополнить. А умение самостоятельно делать эксперименты делает вас свободными, дает большее понимание и уверенность в себе.»

Гена Спиридонов и видео с тем парнем

Воскресная история о первом эксперименте от Гены Спиридонова, студента ЯрГУ, и видео с «тем парнем», про которое пишет Гена:

«Самостоятельно научился» — в данном случае слишком громко сказано, т.к. принес все это дело и показал нам С. Ю. Коровкин, чем, собственно и заинтересовал. Главный мотиватор — это посмотреть на готовый, уже работающий знакомый эксперимент. Хотя впечатление, что «это все легче и проще», чем при обычном проведении слегка обманчиво, но интерес вызывает и показывает, чем это вообще полезно, и зачем в это все лезть. А что до научиться, то лучший способ, как со всеми IT и около штуками — потратить пару выходных на создание работающего проекта. Опять же, можно попытаться перенсти в пай что-то уже знакомое и работающее, заодно подсмотреть какие еще возможности есть и в каких местах возникают новые трудности. а дальше уже планировать, писать и спрашивать у всех «почему оно не работает»,)

Из ресурсов — зис http://www.psychopy.org/coder/tutorial1.html энд зис

http://www.youtube.com/watch?v=VV6qhuQgsiI

Вообще, лучше по всякими комьюнити тусовкам смотреть. например

https://groups.google.com/forum/?fromgroups#!forum/psychopy-users

Сюда же пишет тот парень из видео.

Вообще, комьюнити очень удачное в плане того, что как правило «решение уже найдено», нужно только своровать.

https://www.youtube.com/watch?v=VV6qhuQgsiI

Иван Иванчей: «не бояться учиться совсем не знакомому»

#thinkcognitive продолжает публиковать рассказы о первых самостоятельно сделанных на компьютере экспериментах. Программировать — это не сложно и интересно =) Сегодня — рассказ Ивана Иванчея, аспиранта СПбГУ, занимающегося изучением имплицитного научения:

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

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

Вскоре оказалось, что у меня всё-таки есть запросы к программе, не предусмотренные разработчиками с самого начала. Сначала я приставал с вопросами к Андрею Четверикову, потом решил освоить язык python, на котором написан PsychoPy. Ника Адамян дала в твиттере ссылку на учебник: «Non-Programmer's Tutorial for Python 3» (http://en.wikibooks.org/wiki/NonProgrammer's_Tutorial_for_Python3/Print_version). Я его проштудировал, выполняя несложные упражнения. Это уже позволило мне не только более полно использовать Psychopy, но и написать несложные программы для других своих исследовательских нужд. Потом я прошёл курс на coursera.org «Learn to Program: the Fundamentals» (https://www.coursera.org/course/programming1), чуть более обширный, но тоже для новичков. На самом деле, чтобы решать конкретные задачи, достаточно ознакомиться с самыми основами программирования и конкретного языка. Зная эти основы, большинство простых задач можно решить, немного погуглив. Кажется, общие основы и понятия я более или менее усвоил, так что за новые языки, если возникает необходимость, берусь без страха.

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

Анастасия Федорова: «не бояться и представлять себе конкретную цель»

#thinkcognitive продолжает публиковать истории о том, как психологи учатся программированию и разработке экспериментов на компьютере. Сегодня — рассказ Анастасии Федоровой, ранее студента РГГУ, а ныне — инженера-исследователя лаборатории нейроэргономики и интерфейсов мозг-компьютер Курчатовского института. Это еще и хороший пример огромного поля возможностей для работы когнитивных психологов — например, они могут работать в сотрудничестве с нейрофизиологами и инженерами над расширением возможностей нашего тела. От инсайтных задач к управлению робо-рукой движениями глаз =)

«Свой первый эксперимент я сделала 1,5 года назад на платформе Flash 8 с помощью языка ActionScript 2.0. Я продолжала исследование Андрея Четверикова и сначала использовала его программу, но затем решила попробовать сделать что-то сама. Flash я выбрала, так как в моем эксперименте нужно было много работать с графикой. Училась я так: читала документацию, учебники и форум flasher.ru. Через пару недель была готова первая нормально работающая программа для моего диплома.

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

Неделю назад я закончила курс по R, который проходил на сайте coursera.org (https://class.coursera.org/compdata-004). Рекомендую всем студентам этот замечательный сайт: совершенно за бесплатно можно пройти крутейшие курсы ведущих мировых университетов. Курс был достаточно сжатый, но познавательный, мне очень понравились домашние задания, в которых нужно было писать небольшие программы, производящие сортировку и статистическую обработку данных. В апреле будет еще один курс от того же преподавателя (https://www.coursera.org/course/rprog), очень рекомендую всем, кто хочет изучать R, но не знает с чего начать :)

Сейчас я делаю программу для управления компьютером с помощью движений глаз. Разработчики айтрекера, который стоит у нас в лаборатории, предоставили библиотеки и примеры на Питоне и Си. Я решила начать с Си и сделала программу, распознающую движения глаз и позволяющую с их помощью управлять графическими объектами на экране. Инженер нашей лаборатории объединил мою программу со своей, которая осуществляет управление роботизированной рукой, и сейчас мы делаем эксперимент, в котором пользователь управляет роботом с помощью движений глаз! Это безумно круто и я горжусь тем, что моя программа стала частью этого эксперимента :)

Мне кажется, что главное в программировании — не бояться и представлять себе конкретную цель. Это безумно интересно и очень вдохновляет! Нет ничего приятнее, чем видеть, как твоя программа работает и приносит пользу! :) Я еще только начинаю программировать и собираюсь осваивать новые языки и платформы, ведь столько всего полезного можно сделать самому, имея только время, желание и компьютер! XD"

Друзья, если у вас есть по этому поводу истории или соображения, которыми вы хотели бы поделиться, мы будем рады их опубликовать.

Учитесь программировать и участвуйте в конкурсе NERD! grant.cogitoergo.ru/#nerd

https://www.youtube.com/watch?feature=player_embedded&v=WlxbDnv27dc

Testimonials: Eлена Горбунова

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

Сегодня мы публикуем первый полученный нами ответ =)

Елена Горбунова, аспирант МГУ:

«Разумеется, с первого раза у меня ничего не получилось, и при попытке запустить первый скрипт система тут же выдала ошибку».

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

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

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

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

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

Учитесь программировать и участвуйте в конкурсе NERD! http://grant.cogitoergo.ru/#nerd

1p6TJgQ7fWo