대부분 콘솔프로그래밍으로 시작해서 '내가 기계와 직접 대화한다' 라는 착각 속에 구시대 프로그래밍의 향취를 좀 느끼고
이후 winapi 든 비주얼베이1직이든 본격적으로 그래픽 곁들인 프로그래밍으로 넘어오게 되는데
착각하면 안되는게, 지금 님이 하는건 'os에 요청' 이지 님이 컴퓨터를 다루고 있는게 아님.
이 사실을 알고 학습하느냐 모르고 학습하느냐에서 이해도 차이가 확 벌어진다고 나는 생각함.
만약 이 사실을 모른 채 '내가 기계와 대화중이다' 라는 착각을 하면
자꾸 '이건 왜이러지? 이건 무슨 이유지? 어떻게 작동하는거지?' 라는 의문을 품고 토끼굴을 파게 됨.
그게 그런 이유는 '마이크로소프트가 그러기로 했기 때문' 임.
님은 지금 마이크로소프트가 제공하는, 윈도우가 허용한 기능을 os에 요청하고 있을 뿐임.
기계와 님 코드 사이에 중간유통업자가 한트럭임.
즉 '이건 왜 이런걸까?' 라는걸 이해하려는 시도는
1.알 수 없다. (공개되지 않았기 때문에)
2.왜 이렇게 쓰냐면, 그렇게 쓰기로 마이크로소프트가 결정했기 때문이다.
c#뿐 아니라 심지어 c++도 컴파일러 선에서 님 코드 엄청 수정 들어감.
쓸데없는 함수 싹다 치우고 복붙으로 대체한다던지, 불필요한 코드는 합치거나 지운다던지,
중요한건 '구현하려는 것을 구현' 이고, 그 외엔 알 수도 없고 알 필요도 없음.
c#까지 와서는 이제 메모리해제 조차도 언제 무슨원리로 해제하는지 모르는데 뭐는 알 수 있겠음.
다 보안이고 비밀임.
만약 '왜?' 를 이해하려는 본질적인 시도가 있다면
님은 컴퓨터의 역사부터 A언어가 어떻게 C까지 왔는지 과정 속에서 프로그래밍 철학을 이해하는 수밖에 없음.
그 변천사 속에 '왜 이런 구조인가?' 를 이해할 단서들이 있음.
근데 거기까지 가고싶음? 어차피 좋은게임 내놓기 전까지 플래시겜만도 못한거 잔뜩 만들거고, 그 과정에서 님의 프로그래밍 지식은 싹 잊혀질텐데?
할 거 하자. 시간낭비 하지 말고.
어웨이크에 참조 함수를 나두면 좆된다는 건 누군가 알려줬으면 했어...
너무 자세히는 알 필요 없다는 거군 - dc App
더 정확히 말하자면 '알 수가 없다' 임. 콘솔프로그래밍의 직관적이고 단순한 모습에 마치 내가 구시대 프로그래밍처럼 하드웨어를 직접 다룬다는 착각을 하기 쉽지만, 그런거 없음. 이젠 하드웨어에서도 보안으로 한번 거르는데 os는 말할것도 없음. 님이 하드웨어를 직접 만지고 싶다면 아두이노를 하는게 좋음. 그럼 님이 알던 '데이터란 무엇인가?' 에 대해 크게 한 번 흔들릴거임. 데이터를 저장했다면, 그 데이터가 정말 거기 있을까? 정답은 '모른다' 임. 알려면 직접 검증해야됨. 검증이 필요 없으려면 전력이 그 데이터를 유지하는 구조를 님이 설계해야 함. 그렇지 않으면 거기 충분한 전력이 공급되지 않아 있을거라 믿었던 데이터가 없거나 망가져있을거임.
거기까지 내려가고 싶다면 해도 되는데, 그거에 통달할 즈음이면 님이 얼마나 게임개발에 관심이 있든 게임개발쪽으로 가진 않을거임. 그 능력을 쓸 더 크고 복잡한 분야가 있을거고 거기서 도전의식을 느낄테니까.
왜 메모리해제를 언제 무슨원리로 해제하는지 모름?
알 필요 없다면 몰라도 알 수는 있는데?
이건 왜 이런걸까? 에 대한 대부분의 의문은 누군가 이미 문서화를 했음 알 수 없다의 경우는 거의 없을거임 잘 찾아보면 왜 이런식으로 만들었고 왜 이런 작동을 하고 간략하게라도 어떤식으로 작동하는지 찾을 수 있을거임
당장 위에서 말한 컴파일러 최적화도 대부분 문서화가 되어있음 정확하게 어디서 어떤 최적화를 할지 휴리스틱 결정 기준까지는 몰라도 대충 이런 최적화를 하겠구나 정도는 문서화가 되어있음 GCC, Clang등은 오픈소스니까 방대하고 복잡해서 봐도 모를 수는 있어도 소스 확인하면 다 알 수 있다는거임
유니티는 문서 부족한게 한트럭이던데
알 수 없는건 아닌데... 글의 요점은 알겠어요
그뤠잇 프로그래머가 되려면 그래서 어셈을 해야되죠~ 말에 뉘양스는 인디개발자면 동의하겟지만 플머들한테 저소리하면 뚝빼기맞을듯 ㅋㅋ
근데 요즘 환경에서 플밍 배우는 사람이 '하드웨어와 직접 대화한다' 라는 생각을 하긴 할까..?
토끼굴 파보는 게 다 문제해결력이 되는기라
기계어 컴파일러 개념은 그냥 c언어 초보도 아는 거 아니냐
난 ai와 대화함
인디 갤의 최대 단점이 본인의 수준을 모르고 무언가에 통달한거마냥 글을 쓰는 애들이 있는데 말하는걸 들어보면 본인 수준이 어디인지 밑천 다 드러나는 분야니까 뻘글들은 좀 안썼으면 좋겠음. 컴퓨터 공학, 소프트웨어, 프로그래밍에서 가장 중요한건 왜? 라는 본질적인 호기심임 이건 알수없으니 몰라도됌이 아니라. 컴퓨터는 나도 모르게 마법처럼 동작하는게 아님 왜 이렇게 동작하는지 본질을 알아가면서 성장해나가는거고 플래쉬 게임 만드는 님 수준에서는 없긴하겠지만.
일반 게임프로그래머면 매우 맞말이나 인디 게임 프로그래머면 ‘컴퓨터는 왜 동작할까?’ Vs ‘플레이어는 왜 재밌어할까?’ 간에 시간을 두고 경쟁하는 관계가 있고, 역사적으로 후자 택한 쪽이 승리하고 있긴 함. 근데 만일 ‘그거 기획자가 다 해야하는거 아님?이라고 생각한다면 매우 축복 받은 프로그래머라고 생각함…