Scala Processing – цікавий спосіб вивчити нову мову

Нещодавно мені довелося на власному досвіді переконатися: щоб навчитися застосовувати якісь нові технології, недостатньо прочитати пару книг на тему, бо без практики теорія миттєво випаровується з голови.

Але що можна зробити такого цікавого на Scala? Насправді вибір не надто великий. Я якось вигадав невелику тулзу, неквапливо написав її, і «забив». А за кілька місяців, на свій сором, гуглив синтаксис «for loop»…

processing
Я вирішив, що далі так справа не піде, і треба знайти якісь невеликі проектики на основні можливості мови. Тут мені й у нагоді Processing. Нудні навчальні проекти він будь-якому новачкові (начебто мене) допоможе перетворити на візуальні інсталяції. А далі можна вибрати, що покопати поглиблено, наприклад, генерацію фракталів, рендеринг частинок або візуалізацію даних.

Я переписав на Scala і виклав на GitHub кілька прикладів. На скрині якраз один із них — MSA Fluids. Тих, хто зацікавився, прошу під кат.

Колись я познайомився зі Scala, і ця мова мені сподобалася. Я перегорнув кілька книг, у тому числі Programming in Scala, яку рекомендую рішуче всім. Навіть лише теорія дозволила мені по-іншому поглянути світ програмування. На превеликий жаль, моя основна робота зі Scala ніяк не пов'язана, та й взагалі мова, якою я найкраще володію, в деяких місцях досить сильно від неї відрізняється. І мова ця не Processing.

Processing

Отже, тут чудовий час уявити Processing, тому що мало хто про нього чув, а вже руками торкалися взагалі одиниці. Processing – це DSL для Java зі своїми мікро IDE та різними бібліотеками. Використовується так званими Visual Artists для генерації будь-якогогарний трешак.

Щоб не повторюватися, на Хабре вже публікувалися кілька цікавих статей про Processing:

  • Знайомство з Processing 1.0
  • Processing 1.0 та майже закон всесвітнього тяжіння
  • Мій візуалізатор музики
А я лише коротко резюмую все в них написане своїми словами. Пам'ятаєте, у дитинстві вчили програмування на Бейсику чи Logo, там черепашка лінії малювала? Ясний пень, кожен тут може навернути ще й не таку красу своєю улюбленою мовою. Та ще в тридцять шарів абстракції оберне дорогою. А простим людям складно зрозуміти, що за ОВП, класи, бібліотеки такі, та й не потрібно це їм.

Ось і вирішили зробити таку просту мову на базі Java, щоб допомогти звичайним Visual Artists втілювати свої ідеї в імперативному стилі. Мовляв, намалюй лінію, а тут квадратик. І пішло-поїхало. Зараз Processing вже сильно розрісся і його важко ігнорувати. Для нього написано безліч відмінних бібліотек, а так як це Java по суті, можна використовувати і вагон Java бібліотек.

А Scala також виконується на JVM… ну ви зрозуміли, так?

Насправді є проект на основі Processing IDE, який дозволяє писати на Scala – Spde. І про нього вже писали scala-lang.org. Але цей IDE мені здається маленьким і несерйозним. Спробуй написати щось велике і почнуться головняки. Тож давайте зупинимося на чомусь зручнішому.

Встановлення та налаштування

Швидше за все, якийсь IDE для розробки на Scala у Вас вже стоїть, так що не загострюватиму на цьому увагу. Я використовую intelliJ IDEA зі Scala плагіном.

Спочатку потрібно завантажити та встановити Processing.

Далі Scala проект підключити основну Processing бібліотеку. На Windows шлях приблизно аналогічний.

Тепер створюємо новий mainклас. Я назвав його просто Test.

У Processing більшість функціонала зашито до класу PApplet. Його, до речі, запускати можна і AppletViewer'ом, якщо виставити профіль у Run Configurations. Тоді метод main не потрібен.

Цей код поки що мало що робить, але вже видно звичайну структуру програм на Processing (які називаються скетчі). Далі я трохи розширюю цей код. Він буде чорнобілі рандомні квіточки малювати за курсором. Ось приблизно так:

Що далі?

Я як експеримент переклав на Scala кілька цікавих прикладів (зокрема і знамениті Fluids від MSA Visuals) і виклав їх на GitHub: scala-processing-examples. Зараз там лише два приклади, але вони досить цікаві.

Також Вам напевно знадобиться довідка за доступними методами. Її (і ще безліч корисних матеріалів) завжди можна знайти на веб-сайті processing.org.

Особисто мій план взяти книжку, сісти і на кожну тему вигадувати невеликий скетч, щоб цю тему візуалізувати та запам'ятати.

Ще кілька зауважень.

Для того, щоб запустити приклади з GitHub, потрібно імпортувати opengl бібліотеки. І (важливо!) розархівувати кудись вміст .jar архівів з нативними реалізаціями цих бібліотек

processing
А потім у Run Configuration прописати до них шлях Інакше, програма буде сипатися з помилкою, мовляв, бібліотека jogl не знайдена.

Я так і не зрозумів, як у IDEA підключити нативні бібліотеки більш правильно. Можливо ніяк.