Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
GBP
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
>
Текстовая трансляция подкаста CppCast 2…

Текстовая трансляция подкаста CppCast 281: Креативное программирование

17 Мар 2021
Автор:

Выпуск 281 подкаста CppCast был записан 6 января 2021 года. Ведущие Роб Ирвинг и Джейсон Тернер обсудили с Заком Либерменом, профессором Медиа Лаборатории Массачусетского технологического института, итоги 2020 года, которые Херб Саттер опубликовал в своем блоге, и декабрьскую рассылку от ISO. Затем они обсудили Open Frameworks, набор инструментов для C++, в создании которого 10 лет назад участвовал Зак. Они также поговорили про различные техники и инструменты креативного программирования.

Спонсором этого выпуска CppCast стал Visual Assist. Visual Assist - хорошо известное расширение для Visual Studio. Visual Assist ускоряет разработку с помощью интеллектуальной навигации, проверки кода, подсказок, мощных команд рефакторинга и многого другого. Visual Assist даже проверяет орфографию в комментариях.

Скачайте бесплатную пробную версию Visual Assist на wholetomato.com.

0813_cppcast-281_ru/image1.png

Введение

Роб: Добро пожаловать на 281 выпуск подкаста CppCast. В начале каждого выпуска мы обсуждаем обратную связь. Мэтт Фернандез прокомментировал наш последний подкаст с Патрисией Аас: "Я полностью согласен с тем, о чем говорила Патрисия. Часто бывает, что после проверки, в проекте можно обнаружить несколько колес, изобретенных без нужды." Мы также получили много статей о людях, которые поделились проблемами, возникшими при создании Chromium.

Джейсон: Chromium. Да.

Роб: Мы всегда хотим знать, что вы думаете о наших подкастах. Вы можете связаться с нами через Facebook, Twitter или по адресу feedback@cppcast.com. Не забудьте оставить нам отзыв в iTunes или подписаться на наш канал YouTube.

Наш гость сегодня - Закари Либерман. Зак - художник, исследователь и преподаватель с простой целью. Он хочет, чтобы его работа и произведения удивляли. Он создает инсталляции и цифровые представления, которые считывают человеческие жесты и усиливают их разными способами, оживляя рисунки; показывая, как мог бы выглядеть голос, если бы был видимым; трансформируя человеческие силуэты в музыку. Он был назван одним из самых креативных людей Fast Company, а его проекты были отмечены золотой наградой Nica от Ars Electronica и Interactive Design от Лондонского музея дизайна, а также включены в список лучших изобретений года по версии журнала Time.

0813_cppcast-281_ru/image2.png

Он создает произведения искусства путем написания программного обеспечения и как один из создателей Open Frameworks (набор инструментов для C++), а также стал соучредителем Школы Поэтических Вычислений, изучающей лирические возможности кода, и преподает там. Он также является профессором Медиа Лаборатории Массачусетского Технологического Института, где он руководит группой "Эскизы Будущего".

Зак, добро пожаловать.

Зак Либерман: Спасибо. Очень рад быть здесь.

Джейсон: Ваша биография такая богатая и интересная! Давайте начнем с Медиа Лаборатории Массачусетского Технологического Института.

Зак Либерман: В Медиа Лаборатории учатся студенты по программам магистратуры и аспирантуры. В последние два года я был там адъюнкт-ассистентом и создал там группу "Эскизов будущего". Это - программа для студентов магистратуры. В этом году я принимаю своих первых студентов.

Джейсон: Могут ли слушатели подать заявку, если им понравится сегодняшний выпуск?

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

Джейсон: Вы говорите об интерактивных художественных объектах. Вы имеете ввиду те, в которых меняют плитки или генерируют музыку в ответ на движение?

Зак Либерман: Иногда. Часто такие инсталляции откликаются на движения тела или ваше расположение в пространстве. Это может быть, например, развлекательная ситуация, когда от участника требуется что-то выполнить.

Джейсон: Правильно ли я понимаю, что интерактивные объекты, которые вы создаете, работают на базе Open Frameworks?

Зак Либерман: Да, в основном, для своих работ я использую Open Frameworks.

Итоги 2020 года от Херба Саттера

Роб: Начнем с обсуждения нескольких новостных статей.

Первая статья от Херба Саттера. Она посвящена итогам 2020 года и называется "Нововведения в 2020 году (или, Небольшая порция хороших новостей)". Он написал о том, что ему понравилось в мире C++ в 2020 году. Например, виртуальные встречи комитета ISO проходили очень хорошо.

0813_cppcast-281_ru/image3.png

Он также отметил, что релиз C++ 20 - первый в истории релиз, после которого стандарт уменьшился. Из стандарта ушло 20 страниц. Я думаю, это - значительное изменение.

Джейсон: Если вы обратитесь к любому контейнеру стандарта, вы увидите следующую запись: "Добавлено в C++ 20: оператор трехстороннего сравнения; удалено из C++ 20: все операторы сравнения."

Вот как появилась разница в 20 страниц: они убрали все операторы сравнения и заменили их оператором трехстороннего сравнения.

Зак Либерман: Вы знаете, я был просто в восторге от оператора трехстороннего сравнения, когда щелкнул по ссылке. Я всегда радуюсь, когда что-то в программировании становится короче.

Джейсон: Да, я полностью согласен. Я хочу еще отметить еще кое-что. Херб указывает, что это - первая версия C++, которая имеет все функции, описанные Бьярне в его "Дизайне и эволюции C++" в 1994 году.

Зак Либерман: Хотя он и отмечает, что одна незначительная черта стала исключением.

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

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

Рассылка ISO за декабрь 2020 года

Роб: Теперь мы обсудим рассылку ISO за декабрь 2020 года.

0813_cppcast-281_ru/image4.png

ISO ввели электронные опросы, чтобы не свою останавливать деятельность, а продолжать ее виртуально. Также, они постараются создать официальный чат, которым будет управлять WG-21. Они больше не хотят использовать канал C++ в Slack.

Зак Либерман: Я тоже сразу обратил внимание на эти новости, потому что мне действительно интересно, как работают организации в эпоху COVID.

Джейсон: Меня заинтересовали несколько тем. Первое, что я заметил, - это удаление поддержки сборки мусора. Она была добавлена в C++11, и ни один компилятор так ее и не реализовал. Второе, что обратило на себя мое внимание, было std::filesystem::path_view.

Кстати, Бен Крейг продолжает работать над независимым материалом, и объемы его работы растут. Я всегда интересуюсь изменениями в независимом материале.

Креативное программирование

Роб: Хорошо. Зак, мы перечислили много этапов вашей биографии. Для начала расскажите нам о том, что такое креативное программирование.

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

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

Часто креативное программирование - это работа с программным обеспечением с целью художественного выражения.

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

Зак Либерман: Да, мне не нравится термин "креативное программирование", потому что он почти подразумевает, что некоторые другие формы программирования не являются творческими. Мне часто кажется, что нужен более удачный термин. Однако, если вы скажете людям, что занимаетесь креативным программированием, они вас поймут.

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

0813_cppcast-281_ru/image5.png

Рисунок 1. Скриншот цифровой инсталляции "Колоказия" (Elephant Ear Plants), созданной hsiangyun на сайте shadertoy.com.

Зак Либерман: Я думаю, что программный код выразителен, податлив, мягок и регулируем - я думаю, что это действительно интересный инструмент для творчества. В ShaderToy люди берут код и меняют его, меняют, меняют. Они разговаривают друг с другом с помощью программного обеспечения. Результатом являются действительно богатые и разнообразные визуальные формы.

Джейсон: Не могли бы вы объяснить мне и нашим слушателям, что такое ShaderToy?

Зак Либерман: По сути, ваш графический процессор - это машина, которая превращает треугольники в пиксели и рисует их на экране. Между программным кодом и пикселями несколько шагов. Они представляют собой единую систему (pipeline). Эти шаги включают этап шейдера Vertex, где вы можете изменять геометрию, а также этап фрагментного шейдера и этап для изменения пикселей.

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

Если кто-то из вас интересуется шейдерами, я бы порекомендовал книгу под названием "Книга Шейдеров" моего бывшего ученика Патрисио Гонсалеса Виво.

Open Frameworks

Роб: Не могли бы вы рассказать нам немного об Open Frameworks?

0813_cppcast-281_ru/image6.png

Зак Либерман: Конечно. Open Frameworks - набор инструментов для C++, предназначенный для художников и дизайнеров. Он существует уже более 10 лет. По сути, это - библиотека, которая является оболочкой набора библиотек и облегчает начало работы в сфере креативного программирования.

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

Поэтому мы обернули такие библиотеки, а затем придумали простой API для взаимодействия с ними.

Мы используем OpenGL, и у нас есть функция настройки, функция обновления и функция рисования.

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

Роб: Приведите, пожалуйста, пару примеров проектов, выполненных с помощью креативного программирования, которые легко сделать?

Зак Либерман: Один из ранних проектов, созданных с помощью Open Frameworks, - проект под названием L. A. S. E. R. Tag. В проекте использовался яркий проектор, яркий потенциально нелегальный лазер и камера. Когда человек рисовал лазером, программное обеспечение следило за перемещениями лазера и обновляло рисунок, а проектор проектировал рисунок на строение.

0813_cppcast-281_ru/image7.png

Рисунок 2. Граффити, созданное как часть проекта L.A.S.E.R. Tag.

Хочу отметить еще один проект, который мне нравится - я делал его в сотрудничестве с New York Times. Я выполнил работу для статьи про опиоидную зависимость. Автор опросил сотни зависимых, и мы наняли танцовщицу, которая интерпретировала эти цитаты в танце. Затем я написал программное обеспечение, которое обработало ее движения, и создал графику, которая выражает то, что эти люди нам говорили.

Джейсон: Как в итоге выглядела эта графика?

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

0813_cppcast-281_ru/image8.png

Figure 3. Скриншот, изображающий зависимость и изолящию – из проекта "Визуальное путешествие через зависимость" (A Visual Journey Through Addiction).

Для раздела под названием "Лечение" я изобразил частицы, которые скачут внутри контура тела. Получается, вы видите тело, состоящее из скачущих объектов. Почти как если вы выпьете таблетки и попытаетесь представить, как это выглядит визуально.

Джейсон: Хорошо.

Зак Либерман: Я занимаюсь разнообразной деятельностью. Я ежедневно выкладываю скетчи в Instagram. Я создаю эти короткие анимации на основе стихов с помощью Open Frameworks на C++.

0813_cppcast-281_ru/image9.png

Рисунок 4. Один из ежедневных скетчей Зака Либермана – "Цветная медитация" (Color Meditation).

Джейсон: Похоже, Open Frameworks поддерживает машинное зрение.

Зак Либерман: Главное в Open Frameworks - это набор инструментов для креативного программирования. Инструмент также содержит оболочки для OpenCV и облегчает работу с машинным зрением.

Однако, существует целый набор инструментов для креативного программирования. Например, Processing, который изначально был написан на Java, p5.js - его версия на JavaScript и TouchDesigner, который сейчас популярен.

Джейсон: Интересно.

Зак Либерман: Одна из причин, почему Open Frameworks - мощный инструмент - это большое число доступных дополнений. На сайте ofxAddons есть сотни дополнений. Допустим, вы работаете над проектом и вам нужно использовать какой-то датчик или библиотеку. Кто-то уже создал для них обертку, и тогда вы можете добавить ее в свой проект.

Роб: Ранее вы упомянули, что участвовали в создании Open Frameworks. Расскажите, пожалуйста, что изначально вдохновило вас на создание набора инструментов?

Зак Либерман: Для этого нужно вернуться в прошлое. Я изучал искусство и у меня было мало опыта в области программирования. Я изучал Logo, когда был маленьким.

Когда я получил диплом бакалавра, я влюбился в Flash. Большинство художников, работающих в технике креативного программирования, начинают с Flash и ActionScript.

Я поступил в магистратуру в колледж Парсонс на программу дизайна. Там использовали программу Macromedia Director. В ней нужно было работать на языке Lingo, который я до сих пор очень люблю. Так я выучил Lingo. Я выучил Java.

После того, как я выпустился из колледжа Парсонс, один из моих профессоров пригласил меня работать с ним. Тем первым летом он дал мне гигантскую книгу по C++. И он сказал, что мне нужно выучить С++, потому что этот язык нужен нам для этого проекта. И в первое лето после моего выпуска, мы работали над проектами в Ars Electronica. Это место является большим фестивалем электронного искусства в Линце.

И я писал корявый сетевой код и изучал UDP-пакеты. В это время мы использовали библиотеку ACU. Это - не открытая библиотека. Она была разработана в Массачусетском Технологическом Университете.

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

Таким образом, Open Frameworks зародились как способ запечатлеть и опубликовать наш опыт - и продемонстрировать его в классе. Затем библиотека росла по мере того, как студенты двигали ее в разные стороны - MAC, Linux, Raspberry PI, iOS, Android.

Джейсон: Эти платформы активно поддерживаются?

Зак Либерман: Да, поддерживаются. Сейчас, например, Apple выпустила компьютеры Silicon Mac, и поэтому нам приходится перекомпилировать большое число библиотек.

Кроме того, часто возможность работать с одним и тем же кодом на разных платформах оказывается очень полезной.

Роб: Здорово.

Джейсон: Есть ли какая-то конкретная цель, к которой стремится Open Frameworks?

Зак Либерман: Когда мы начинали, ядро Open Frameworks было очень маленьким. Затем оно стало больше, и поддерживать его стало значительно труднее. Сейчас есть реальная цель уменьшить ядро. Мы хотим создать больше подсистем или больше модулей, вытащить их из ядра.

Мы также внимательно следим за OpenGL. Система сейчас в упадке и нам, возможно, придется выяснить, как поддержать более современные графические API, допустим Meadow или что-то другое.

Джейсон: Да. Вы все еще активно участвуете в разработке Open Frameworks в качестве соавтора?

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

Джейсон: Порекомендуете ли эту книгу тем, кто хочет узнать больше об Open Frameworks?

Зак Либерман: Да, она на сайте.

Роб: Инструмент сборки, который вы упомянули, выглядит интересно. Насколько просто при его использовании начать работу в Open Frameworks?

Зак Либерман: Набор инструментов Open Framework поставляется с рядом проектов. Более ста проектов размещены в папке c примерами. Первый шаг - запустить один из этих примеров и изучить его. После этого использовать инструмент генератора проектов должно быть довольно просто.

Одна интересная возможность заключается в том, что целый набор проектов можно обновить рекурсивно. Например, вы указываете следующее: "Если этот проект выглядит как проект Open Frameworks, надо обновить его и создать новый файл проекта".

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

Джейсон: Расскажите, пожалуйста, немного больше о проектах, которые подойдут для начала работы с Open Frameworks.

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

Зак Либерман: Часто люди играют с техниками генерирования рисунков. Для этого есть дополнения, позволяющие работать с физикой, например, популярный движок box2d.

Можно поэкспериментировать с движущимися объектами и с тем, как они могут двигаться и сталкиваться.

Начинающим я бы порекомендовал обратить внимание на проекты, выполненные с помощью Open Frameworks - на социальных площадках Twitter, YouTube, Facebook, Vimeo - и спросить у авторов о том, как они создали свои работы.

Многие делятся исходным кодом и идеями.

Я также вспомнил очень хороший проект на базе Open Frameworks. Он называется "Связанные Миры" (Connected Worlds). Инсталляция расположена в Нью-Йоркском Зале Науки и была создана Тео Уотсоном и его партнером Эмили Гобил. Это - большой интерактивный проект, целью которого является показать, как связаны различные элементы в мире. Это - большая интерактивная комната: в ней водопад, можно класть предметы на землю, можно класть бревна на пол и формировать, куда потечет вода. Можно вырастить дерево. Это - очень красивый проект.

0813_cppcast-281_ru/image10.png

Рисунок 5. Фотография с инсталляции "Связанные Миры" (Connected Worlds). Источник: https://www.design-io.com/projects/connectedworlds

Роб: Я хочу прервать интервью всего на минуту, чтобы рассказать о нашем спонсоре, инструменте Visual Assist. Visual Assist используется серьезными разработчиками C++ по всему миру. Он может генерировать код. Вам нужно реализовать методы из интерфейса? А как насчет замены указателя на умный указатель?

Даже на умный указатель движка Unreal Engine. Добавить символ, который вы ввели, но не объявили? Visual Assist сделает все это и многое другое. Также доступны дополнительные возможности рефакторинга - более мощные, чем те, что входят в Visual C++. Или обнаружение ошибок в коде и предложение полезных исправлений. Или навигация - помогает вам перемещаться внутри кода и открывать или находить то, что нужно. И даже расширения для отладки.

Visual Assist написан разработчиками C++ для разработчиков C++. Включает в себя все, что вам нужно, и ничего, что вам не нужно. Visual Assist придерживается философии минималистичного пользовательского интерфейса. Он не захватит вашу IDE, но будет появляться, когда в нем возникаем необходимость. Visual Assist разработан, чтобы помогать разработчику, а не чтобы мешать и рекламировать себя. Разработчики приложений, которые вы используете - будь то офисные пакеты, операционные системы или игры - полагаются на Visual Assist. Программное обеспечение, которое вы используете, было создано с помощью Visual Assist.

Получите тот же инструмент для проекта, который разрабатываете вы сами. Visual Assist поддерживает Unreal Engine 4 и многие версии Visual Studio, включая VS 2019 и Community. Скачайте Visual Assist с сайта wholetomato.com.

0813_cppcast-281_ru/image11.png

Теперь давайте вернемся к обсуждению тем, связанных с C++. Вы работаете над проектом Open Framework уже около 10 лет.

Какая версия C++ основная для этого проекта? Обновляете ли вы Open Frameworks, чтобы проект соответствовал новым стандартам?

Зак Либерман: Мы не следуем за всеми инновациями, но мы выпустили много обновлений. Например, ранее мы сильно полагались на библиотеку POCO. Она давала нам много внутренних инструментов для работы с потоками и файловой системой. Затем мы смогли отойти от этих библиотек из-за изменений в C++. Получается, Open Frameworks основывается не на самой современной версии C++, но некоторые эту версию очень поддерживают. Также ведутся дискуссии о поддержке различных функций.

Роб: Расскажите нам, пожалуйста, немного о том, как вы преподаете художникам и дизайнерам, и как это связано с Open Frameworks?

Зак Либерман: Конечно. Более 10 лет я преподавал в школе дизайна Парсонс, а затем устал от университетской деятельности.

Тогда я собрался с несколькими друзьями и основал школу под названием "Школа Поэтических Вычислений". Это - экспериментальная школа в Нью-Йорке. Она существует с 2013 года. Затем, около двух лет назад я стал профессором Массачусетского Технологического Университета. Так что преподавание для меня очень важно.

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

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

Один из моих предметов называется "Воссоздание прошлого". Каждую неделю я говорю о новом художнике или дизайнере. Например, Вера Молнар. Она венгерская художница. Она создает рисунки на перьевом плоттере с 1970-х годов. То есть, она пишет программный код и изготавливает рисунки с помощью перьевого плоттера.

0813_cppcast-281_ru/image12.png

Рисунок 6. Вера Молнар у себя дома в Париже. Фото: Galerie La Ligne. Источник: https://muda.co/announcingveramolnar/.

Роб: Я пытаюсь вспомнить, что такое перьевой плоттер.

Джейсон: Это - аппарат из прошлого. Он обычно использовался для печати чертежей CAD. Аппарат имел две оси - X и Y. Он мог брать ручку и рисовать. Затем отпускал ручку, брал следующую и рисовал другую фигуру.

Зак Либерман: Итак, она [Вера Молнар] делает эти удивительные рисунки с помощью программного кода. Я рассказываю студентам о ее работах и даю им домашнее задание воссоздать один из ее предметов искусства, используя современные инструменты. Я могу привести в пример код из Open Frameworks, но студенты могут выбрать любой инструмент. Кто-то выбирает Processing, кто-то Unity или Open Frameworks, но все примеры кода я им даю в C++.

И они воссоздают произведение искусства. Это почти как обратная инженерия. Они смотрят на произведение искусства, которое создано с помощью программного кода или на базе алгоритма, разбирают его на части и воссоздают его. А потом мы обсуждаем различия между оригиналом тем, что получилось у студентов. Эти беседы очень значимы, я думаю, что это - часть ремесла.

Или, например, мы изучаем Джона Уитни, который был художником-аниматором. В этом контексте мы обсуждаем тригонометрию и звуковой косинус в контексте анимации. Мы также можем обсуждать Мюриэл Купер и ее группу в Медиа Лаборатории - они занимались очень интересными проектами на основе набора текста и вычислений. Это было на заре использования компьютеров и набора текста.

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

Роб: Очень круто. А каково это - учить тех художников, которые не обладают сильными знаниями программирования? Легко ли ввести их в работу на C++ в Open Frameworks?

0813_cppcast-281_ru/image13.png

Зак Либерман: Для студентов, у которых вообще нет опыта, мы обычно проводим трех - или четырехдневный тренинг, потому что словарный запас очень важен. У многих студентов есть немного навыков программирования, но, возможно, они знают другой язык. Например, они раньше работали с JavaScript. Или они успели немного поизучать Processing или какую-либо другую среду разработки, и, например Python.

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

Если вы совсем запутались, то вы не сможете даже сформулировать вопрос. Но если студент изучил достаточно материала, чтобы сказать, "Я хочу сделать то-то и то-то, но я не знаю как. Я сделал вот это, а результатом стало вот то", - тогда очень просто написать пример кода и отправить его студенту.

Джейсон: Я вот что еще хотел спросить. У вас, наверное, смешанная группа, состоящая из инженеров, интересующихся искусством, и художников.

Каков состав вашей группы?

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

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

Роб: Вы отметили, что любите преподавать без компьютеров. В вашей Школе все еще проводятся занятия в условиях пандемии COVID?

Зак Либерман: Весной у нас была большая проблема. Мы отменили 10-недельную очную программу и перешли к онлайн-занятиям. У нас было насыщенное лето.

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

Роб: Хорошо. Здорово, что вы приняли участие в нашем шоу, Зак. Вы хотите что-нибудь добавить перед окончанием подкаста?

Зак Либерман: Если вас интересуют Open Frameworks, зайдите на форум, поздоровайтесь, задайте там вопросы. Я активен в социальных сетях, в Instagram я zach.lieberman, а в Twitter - @zachlieberman.

Сайт Школы Поэтических Вычислений sfpc.io.

Роб: Большое спасибо, что слушали нашу беседу о C++. Мы хотели бы узнать, что вы думаете о подкасте. Пожалуйста, дайте нам знать, интересно ли вам то, что мы обсуждаем, или предложите новые темы для подкастов.

Вы можете отправить обратную связь на feedback@cppcast.com. Вы также можете поставить CppCast лайк на Facebook или Twitter, мы будем признательны. Вы можете подписаться на меня (robirving) и Джейсона (lefticus) в Twitter. Мы также хотели бы поблагодарить всех наших спонсоров, которые поддерживают шоу через Patreon.

Если вы хотите поддержать нас на Patreon, вы можете сделать это по адресу https://www.patreon.com/CppCast. Напомню, что вы можете найти всю эту информацию в заметках к выпуску на сайте cppcast.com. Музыка для этого выпуска была предоставлена podcastthemes.com.

Ресурсы

Подкаст

Новостные статьи

Ссылки

Спонсоры

Гость

Популярные статьи по теме
PVS-Studio ROI

Дата: 30 Янв 2019

Автор: Андрей Карпов

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Мы решили оформить ответ в виде статьи и привести таблицы, которые по…
Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний

Дата: 31 Июл 2017

Автор: Андрей Карпов

После большой статьи про проверку операционной системы Tizen мне было задано много вопросов о проценте ложных срабатываний и о плотности ошибок (сколько ошибок PVS-Studio выявляет на 1000 строк кода)…
Технологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей

Дата: 21 Ноя 2018

Автор: Андрей Карпов

Краткое описание технологий, используемых в инструменте PVS-Studio, которые позволяют эффективно обнаруживать большое количество паттернов ошибок и потенциальных уязвимостей. Статья описывает реализа…
Главный вопрос программирования, рефакторинга и всего такого

Дата: 14 Апр 2016

Автор: Андрей Карпов

Вы угадали, ответ - "42". Здесь приводится 42 рекомендации по программированию, которые помогут избежать множества ошибок, сэкономить время и нервы. Автором рекомендаций выступает Андрей Карпов - тех…
Эффект последней строки

Дата: 31 Май 2014

Автор: Андрей Карпов

Я изучил множество ошибок, возникающих в результате копирования кода. И утверждаю, что чаще всего ошибки допускают в последнем фрагменте однотипного кода. Ранее я не встречал в книгах описания этого …
Любите статический анализ кода!

Дата: 16 Окт 2017

Автор: Андрей Карпов

Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.
Как и почему статические анализаторы борются с ложными срабатываниями

Дата: 20 Мар 2017

Автор: Андрей Карпов

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

Дата: 27 Июн 2017

Автор: Андрей Карпов

Проект Unreal Engine развивается - добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта - появление в коде новых ошибок, которые желательно выявлять как можно раньш…
PVS-Studio для Java

Дата: 17 Янв 2019

Автор: Андрей Карпов

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальн…
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

Автор: Андрей Карпов

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub, GitLab или Bitbucket. Им предоставляется возмо…

Комментарии (0)

Следующие комментарии

На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять