Как профессиональный Java-программист с опытом разработки программных обеспечений для таких компаний, как «Яндекс. Маркет» и Дойче Банка, обычно я выступаю на конференциях и рассказываю об этом языке. Но, помимо профессиональный карьеры, я с детства увлекаюсь и занимаюсь музыкой: окончил музыкальную школу по классу фортепиано, освоил гитару, играл в различных коллективах на некоммерческой основе. С опытом профессиональной деятельности и хобби я пришел к выводу, что музыка и программирование очень похожи.

Чем похожи программист и музыкант

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

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

Источник: shutterstock.com
Источник: shutterstock.com

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

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

В чем еще схожесть музыкантов и программистов? И тем, и другим очень важно рабочее окружение. Мы очень придирчивы к тому, с кем мы будет играть, делать музыку или писать программы. В одной из компаний я работал в одной комнате с 16 людьми на протяжение трех лет. За это время в коллективе образовалось четыре пары, и три из них поженились. Настолько нам важно окружение.

Общие проблемы

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

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

Лекция Владимира Красильщика «Программирование музыки на Sonic Pi»
Лекция Владимира Красильщика «Программирование музыки на Sonic Pi»

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

Как можно решить проблему?

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

Хочется дать людям что-то простое и понятное, как пульт от квадрокоптера. На этом устройстве всего два джойстика и несколько кнопок. Любой ребенок спустя полчаса уже полетит. Конечно, полет не совсем настоящий, но опыт какой-никакой уже есть, и дальше можно наращивать сложность.

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

Сэм Аарон. Источник: cc.au.dk
Сэм Аарон. Источник: cc.au.dk

В 2016 году участвовал в конференции по Java и познакомился с Сэмом Аароном. Он приехал в Петербург и показывал инструмент для программирования музыки Sonic Pi. На вечеринке в честь закрытия мероприятия Сэм работал как диджей в течение двух часов, используя только Sonic Pi. После того дня я и захотел научиться работать в программе.

Что из себя представляет программа

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

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

Владимир Красильщик
Владимир Красильщик

Междисциплинарный подход

В какой стране лучшее образование в мире? Это сложный вопрос, но в последние годы все часто говорят о Финляндии — в скандинавской стране недавно отменили школьные предметы. Как теперь проходят занятия для детей и подростков? Ученики приходят не на уроки, а участвуют в проектах – к примеру, приготовление особого блюда. Вместе с ними в процессе приготовления участвуют разные учителя, и каждый из них рассказывает о своей в теме в контексте проекта: где растут ингредиенты, какая это почва, когда придумали блюдо, что это за национальная кухня. В результате, дети получают множество знаний в разных областях и учатся работать вместе с ними. Это современный междисциплинарный подход к образованию.

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

Будущее программы

Создатель программы Сэм Аарон ушел из Кембриджа, чтобы посвящать все свое время инструменту. В данный момент он продолжает улучшать программу, записывает с ее помощью музыку и готовит первый альбом. Совсем недавно состоялось знаковое событие — в лондонском Альберт-холле оркестр играл программу на тысячу инструментов, и одним из них был Sonic Pi. Еще одну амбициозную цель поставили себе юзеры — они хотят создать целый оркестр из пользователей и играть музыку одновременно.

Лекция Владимира Красильщика «Программирование музыки на Sonic Pi»
Лекция Владимира Красильщика «Программирование музыки на Sonic Pi»

Скачать Sonic Pi можно бесплатно по ссылке.