기능적 언어는 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.