대부분 콘솔프로그래밍으로 시작해서 '내가 기계와 직접 대화한다' 라는 착각 속에 구시대 프로그래밍의 향취를 좀 느끼고


이후 winapi 든 비주얼베이1직이든 본격적으로 그래픽 곁들인 프로그래밍으로 넘어오게 되는데


착각하면 안되는게, 지금 님이 하는건 'os에 요청' 이지 님이 컴퓨터를 다루고 있는게 아님.


이 사실을 알고 학습하느냐 모르고 학습하느냐에서 이해도 차이가 확 벌어진다고 나는 생각함.




만약 이 사실을 모른 채 '내가 기계와 대화중이다' 라는 착각을 하면


자꾸 '이건 왜이러지? 이건 무슨 이유지? 어떻게 작동하는거지?' 라는 의문을 품고 토끼굴을 파게 됨.


그게 그런 이유는 '마이크로소프트가 그러기로 했기 때문' 임.


님은 지금 마이크로소프트가 제공하는, 윈도우가 허용한 기능을 os에 요청하고 있을 뿐임.


기계와 님 코드 사이에 중간유통업자가 한트럭임.




즉 '이건 왜 이런걸까?' 라는걸 이해하려는 시도는


1.알 수 없다. (공개되지 않았기 때문에)

2.왜 이렇게 쓰냐면, 그렇게 쓰기로 마이크로소프트가 결정했기 때문이다.




c#뿐 아니라 심지어 c++도 컴파일러 선에서 님 코드 엄청 수정 들어감.


쓸데없는 함수 싹다 치우고 복붙으로 대체한다던지, 불필요한 코드는 합치거나 지운다던지,


중요한건 '구현하려는 것을 구현' 이고, 그 외엔 알 수도 없고 알 필요도 없음.


c#까지 와서는 이제 메모리해제 조차도 언제 무슨원리로 해제하는지 모르는데 뭐는 알 수 있겠음.


다 보안이고 비밀임.




만약 '왜?' 를 이해하려는 본질적인 시도가 있다면


님은 컴퓨터의 역사부터 A언어가 어떻게 C까지 왔는지 과정 속에서 프로그래밍 철학을 이해하는 수밖에 없음.


그 변천사 속에 '왜 이런 구조인가?' 를 이해할 단서들이 있음.


근데 거기까지 가고싶음? 어차피 좋은게임 내놓기 전까지 플래시겜만도 못한거 잔뜩 만들거고, 그 과정에서 님의 프로그래밍 지식은 싹 잊혀질텐데?




할 거 하자. 시간낭비 하지 말고.