기능적 언어는 Android에서 얼마나 잘 수행됩니까?


10

이것은 내가 생각하는 이 질문 의 특별한 경우입니다 .

Android 용 게임을 만들고 있는데 libgdx와 함께 Scala를 사용할 계획입니다. 퍼포먼스 게임을 만들 계획이지만 꼭 퍼포먼스 게임은 아닙니다. Garbage Collection에 대한 libgdx의 문서를 보았 으므로 다음 과 같이 생각합니다.

  1. 함수형 프로그래밍은 많은 불변 개체를 의미합니다.
  2. 따라서 객체를 변경하려면 새 객체를 만들어야합니다.
  3. 따라서 많은 개체가 가비지 수집되어 성능이 저하됩니다.

이것은 극복 할 수없는 문제입니까? Android의 기능적 스타일과 관련하여 다른 중요한 문제가 있습니까?

답변:


3

Scala를 사용하면 문제가 없지만 새 객체를 너무 자주 할당하고 싶지는 않습니다 . 일시 중지가없는 GC는 여전히 안드로이드에 대한 신화가 아니며 게이머는 게임이 고장 나면 싫어합니다. 그러나 이것이 더 심각한 언어를 사용함으로써 아무런 혜택을 얻을 수 없다는 것을 의미하지는 않습니다. 그리고 메인 게임 루프에서 일어나지 않는 "기능적 스타일"로 괜찮을 것입니다. 또한 Android의 Scala 자체는 몇 가지 추가 빌드 문제와 싸워야하지만 일단 배우면 견딜 수 있습니다. 그리고 Scala를 함수형 언어로 명명하는 것은 그리 정확하지 않지만 함수형 프로그래밍과 관련된 일부 기능이 있습니다.


2

게임? 기능적 언어를 피하십시오. 그들의 전체 패러다임은 게임과 잘 맞지 않습니다. 절차 적, OOP 언어는 빈번한 상태 변경, 명시 적 메모리 및 리소스 관리, 여러 장소에서 유용한 데이터 및 모델 추상화, 일부 시스템의 데이터 지향 디자인 등에 대한 게임의 요구에 더 잘 맞습니다. 기능적 요소 는 하나, 진정한 기능적 언어는 또 다른 것입니다.

Android 용으로 최고의 성능을 발휘하는 언어는 여전히 Java 또는 C ++보다 개발 환경이 더 나쁩니다. 언어가 주변에 더 나은 언어가 아니라 특정 작업에 더 적합하기 때문입니다. 작업에 적합한 도구입니다.

이것은 모바일, PC, 콘솔 등에서 마찬가지입니다. 아무도 게임에 기능적 언어를 사용하지 않습니다. Naughty Dog는 스크립팅에 LISP를 사용 하지만 핵심 게임 코드 는 사용 하지 않습니다. 그들은 할 수 없습니다. 그들이 시도하면 작동하지 않습니다.

가장 가까운 사람들은 셰이더를 사용합니다. 셰이더는 몇 가지 방식으로 작동하지만 HLSL 또는 GLSL과 같은 매우 절차적인 언어로 작성되었습니다.


> 게임? 기능적 언어를 피하십시오. 2010 구글 AI 챌린지가 리스프 봇이 이겼다는 점에 흥미가 있습니다. 게임을 작성하는 데 좋지 않을 수도 있지만 게임을 할 때 매우 편리합니다. semanticweb.com/…

확실한. 다른 사용 사례. LISP는 게임 AI와 거의 관련이없는 실제 AI에 일반적입니다. 게임 AI는 플레이어가 지능을보고 재미있는 게임을하도록 속이는 선택을 효율적으로하는 것입니다. 실제 AI는 실제로 현명한 결정을 내리고 인간의 견해를 훼손하는 것입니다.
Sean Middleditch 2013

2
For gaming? Avoid functional languages. Their entire paradigm fails to mesh well with games.실제로 저는 기능성 프로그래밍에 대한 관심을 표현하는 유명한 게임 개발자의 기사를 읽었습니다. Tim Sweeney scribd.com/doc/5687/에 의해 하나가 있었고 John Carmack은 기능적 언어를 평가하는 데 적극적으로 관심이있는 것으로 보이며 현재 하스켈 (Haskell)에있는 Wolfenstein 3d 포트, tinyurl.com/cnzx57u
James McMahon

또한 스크립팅에 Lisp 만 사용하는 Naughty Dog에 대한 인용이 있습니까? 나는 그들이 PS2 하드웨어를 대상으로하는 커스텀 컴파일러와 함께 Lisp의 커스텀 사내 방언을 가지고 있으며, 대부분의 Jax와 Dexter 시리즈를 작성했다는 인상을 받았다. 편집 : 전혀 마음은 그것을 발견 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)
제임스 맥마흔
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.