"깊이"가 다른 게임개발자 허민영

유저에서 게임까지, 철학에서 코딩까지, 본질을 보는 게임개발

소프트웨어 공학/프로그래밍 패러다임

프로그래밍 패러다임(Programming paradigm) 간략소개

허민영 2024. 12. 27. 19:26
  • 프로그래밍 패러다임이란?
    • 프로그래밍 패러다임은 코딩을 하는 개발자의 코드에 대한 철학 및 존재론이라 표현할 수 있다. 글에 비교를 하자면 서술태도, 관점, 일관적인 표현방식, 세계관이라고 할 수 있다. 어떤 방식으로 서술하는 지에 따라 그 효율성은 천차만별로 달라질 수 있다.
  • 어떤 패러다임이 있는가?
    • 객체지향 프로그래밍(Object-oriented programming) : 현대의 개발자라면 가장 맨처음 익숙해져야 할 프로그래밍 패러다임이다. 클레스와 메소드간에 메시지를 주고받는다는 개념으로 동작을 해석하는 명령형 프로그래밍.
    • 함수형 프로그래밍(functional programming) :  로우레벨에서 또는 오히려 프론트레벨에서 각광받고있는 프로그래밍 패러다임이다. 상태와 가변 데이터로 인한 side-effect를 철저하게 관리하는 람다계산을 중심으로한 선언형프로그래밍.
    • 절차적 프로그래밍(Procedural programming) : 컴퓨터 처리구조와 유사한 프로그래밍 패러다임으로 과거 널리쓰였다. 모듈과 프로시저간에 콜을 주고받는다는 개념으로 동작을 해석하는 명령형 프로그래밍.
    • 반응형 프로그래밍(Reactive programming) : 데이터 스트림과 이벤트의 전파를 중심으로 해석하는 패러다임. 다른 패러다임에 비해 크게 조명받고 있진 못하지만 개인적으로 주목해야 할 패러다임이라 생각함.
  • 게임에 적합한 프로그래밍 패러다임
    • 게임은 GameWorld, Simulator, Player, GamePlay가 존재하는 매우 복잡하여 설계하기 어려운 거대한 응용소프트웨어이다. 무엇이 더 게임에 적합한 프로그래밍 패러다임인지 따지는 것은 무의미할 수 있다. 각각의 프로그래밍 패러다임은 각각의 위치에서 강력한 효율성을 보이기 때문에 하나를 선택해서 채용할 정도로 게임은 만만하지 않다. 여기적힌 모든 패러다임을 적절히 녹여 이 거대한 소프트웨어를 설계할 때 우리는 유지관리 가능한 게임을 만들 수 있을 것이다.
    •  광활한 GameWorld를 구현하기 위해서는 객체지향 프로그래밍은 매우 중요하고 퍼포먼스 높고 오류없는 Simulator를 위해서는 함수형 프로그래밍도 중요하다.  또한 Player가 이것저것에 상호작용하고 게임룰에 부합하여 조작되기에는 절차적프로그래밍이 매우 적하바다. 마지막으로 GamePlay에는 수없이 많은 데이터흐름과 이벤트들이 의미를 갖고 있기에 반응형 프로그래밍이나 이벤트 기반 프로그래밍(Event driven programming)이 중요하다. 결국 이 다양한 프로그래밍 패러다임을 어떻게 게임에 녹여낼 것인가가 게임개발의 핵심이라 할 수 있겠다.