Наскільки добре функціональні мови працюють на Android?


10

Це особливий випадок цього питання, який я вважаю особливо доречним.

Я працюю над грою для Android, і я планую використовувати Scala з libgdx. Я планую створити виконавську гру, але не обов'язково гіпер-виконавську гру. Я побачив документацію libgdx про збирання сміття , і це змушує задуматися:

  1. Функціональне програмування передбачає безліч незмінних об'єктів.
  2. Тому мутування об'єкта вимагає створення нового об’єкта.
  3. Таким чином, багато предметів збирають сміття, що погіршує продуктивність.

Це непереборна проблема? Чи є якісь інші значні проблеми з функціональним стилем на Android?

Відповіді:


3

З Скалою ви можете добре, але ви не хочете занадто часто виділяти нові об’єкти . GC без пауз все ще не є міфом (на Android), а геймерам не подобається, коли ваша гра глючить. Але це не означає, що ви не можете скористатися більш серйозною мовою - адже ви можете. І ви будете в порядку з "функціональним стилем", який не відбувається в основному циклі гри. Крім того, Scala на Android вимагає боротьби з деякими додатковими проблемами побудови, але коли ви це навчитеся, це нестерпно. І не дуже точно називати Scala функціональною мовою, проте у неї є деякі особливості, пов'язані з функціональним програмуванням.


2

Для ігор? Уникайте функціональних мов. Вся їх парадигма не вдається добре поєднатися з іграми. Процедурні мови, мови OOP краще відповідають потребам ігор у частих змінах стану, явній управлінні пам’яттю та ресурсами, абстрагуванні даних та моделей, корисних у багатьох місцях, орієнтованому на дані дизайні в деяких системах тощо. Функціональні елементи - це одне, справжня функціональна мова - інша.

Найкраще функціональна мова для Android все ще дасть гірший досвід розвитку, ніж Java або C ++. Не тому, що це кращі мови навколо, а тому, що вони краще для конкретного завдання. Правильний інструмент для роботи та все таке.

Це стосується мобільних пристроїв, ПК, консолей тощо. Ніхто не використовує функціональні мови для ігор. Naughty Dog використовує LISP для сценаріїв , але не основний ігровий код. Вони не можуть. Не буде працювати, якби вони спробували.

Найбільш близькими до них є шейдери, які є певними функціональними способами, але написані на високопроцедурних мовах, як HLSL або GLSL.


> Для ігор? Уникайте функціональних мов. Цікаво, що 2010 AI Challenge Google виграв бот Lisp. Можливо, це не буде корисним для написання ігор, але це, мабуть, досить зручно, коли справа стосується їх гри. semanticweb.com/…

Звичайно. Різні випадки використання. LISP є загальним для справжнього AI, який мало стосується ігор AI. Ігри AI - це все про те, щоб ефективно робити вибір, який змушує гравця бачити інтелект та робити веселу гру. Справжній ШІ полягає у прийнятті насправді розумних рішень, думки людини прокляті (розумний може і виглядає німим часом, оскільки люди-спостерігачі часто не бачать усієї картини, як це робить ШІ).
Шон Міддлічч

2
For gaming? Avoid functional languages. Their entire paradigm fails to mesh well with games.Насправді я прочитав кілька статей від гучних розробників ігор, які виражають зацікавленість у функціональному програмуванні. Був один Тім Свіні scribd.com/doc/5687/…, і Джон Кармак, схоже, має активну зацікавленість в оцінці функціональних мов і в даний час робить порт Wolfenstein 3d в Haskell, tinyurl.com/cnzx57u
James McMahon

Також у вас є цитування про Naughty Dog, який використовує лише Lisp для сценаріїв? У мене було враження, що у них був звичай в домашньому діалекті Lisp, причому спеціальний компілятор, орієнтований на обладнання PS2, і що вони написали більшість серій Jax і Dexter. EDIT: Нічого не знайшли, gamasutra.com/view/feature/131394/… Practically all of the run-time code (approximately half a million lines of source code) was written in GOAL (Game Object Assembly Lisp)
Джеймс Макмахон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.