학교서 배울땐 메모리 어떻게 하고, 값 어떻게 저장하고 이런거 배우는데


실제 프로젝트 시작해보면


일단 기초되는 프레임워크(게임이면 게임엔진) 정하고 그 엔진 생리에서 엔진 문법을 사용함


그래서 기본적으로 엔진 차원에서 대부분 구현되어있는거 실제로 만듬. 물론 문법이야 어느정도 언어와 일맥상통하지만


가령 유니티 엔진은 모노비헤이비어 라이프 사이클 위에서 프로그래밍하고, Awake(), Update() 유니티 라이프 사이클 생각하면서 코딩하듯이


실제로 학교서 배우는 프로그래밍은 클래스-구조체 이런 구조로 하나하나 생각하는데, 실제로는 프레임워크가 권장하는 사이클과 컨벤션에 따라서 조립하게됨


그리고 여기서 유니티의 경우 에셋, 언리얼의 경우 플러그인 현업에서 주로 쓰는거 가져와서 코딩함


오히려 자기가 직접 짜는 경우 실제 버그 테스트 하는 경우가 많아서 더 오래걸림


실제로 유니티 쓰면 A* 알고리즘 자기가 직접 쓰는것보다 일반적으로 A* PRO 더 많이 쓰고, 비헤이비어 도 비헤이비어 디자이너 주로씀(최근엔 Unity6에 내장된 비헤이비어 트리로 바꾸는 추세지만)


나는 직접 다 짰긴한데, 생각해보면 실제 배우는 프로그래밍은 조금 저수준 레이어라면


웹도 그렇고 게임 엔진도 그렇고 실제로는 저수준 레이어에서 래핑된 상대적 고수준 레이어에서 코딩하는 경우가 대부분이고, 이게 더 생산성이 더 좋음


가령 UniTask, Rx,R3 이런 유니티에서 유명한 비동기 프로그래밍도 일반적으론 직접 구현 안하고 빌려와서 쓰듯이


그런의미에서 실제 현업 프로그래밍과 학교 프로그래밍의 괴리가 좀 있음.


물론 저 일반적 프레임워크를 벗어나는 범위를 코딩하기위해서는 고통이 필요한데, 사실 대부분의 경우 소비자는 그런 것을 잘몰라주긴함.


그런의미에서 적절한 균형이 필요한거고