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

Я переписав на 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 та майже закон всесвітнього тяжіння
- Мій візуалізатор музики
Ось і вирішили зробити таку просту мову на базі 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 архівів з нативними реалізаціями цих бібліотек

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