[저작권 문제에 대해 앞으로 절대 선처해 드리지 않습니다.]
최근에 제 강의를 수강하셨던 분이, 제 강의 자료의 "메모리구조"부분을 그림 내용을 거의 그대로 베껴서 본인이 무료 강의를 제작해서 다른 분들에게 알려주고 계신것을 (제보를 통해) 알게되었습니다. 그 영상을 유튜브에도 무료 강의로 올리기도 하셨었고요.
클래스/구조체 관련 메모리 구조의 내용을 거의 그대로 사용하셨기에, 당연히 저작권의 문제가 있어 연락을 드렸더니, 코드-데이터-힙-스택의 메모리 구조는 원래부터 그런 것인데 그게 왜 문제가 되느냐(?)는 식의 기적의 논리를 펴면서 말씀하시더라고요. 그 그림에 대해 제게 권한이 있냐(?)고 오히려 따져물으시기도 하셨고요. (물론 그 분과는 다행히도 일단 원만히 설득하여 해결했고, 해당 강의 업로드를 내리는 것으로, 더이상 문제 삼지 않기로 했습니다.)
그래서.. 혹여나 또 오해하시는 분도 계실지 모르고, 저의 교재 제작 과정에 대해 모르실 수도 있기에 다시 한번 제대로 안내를 드립니다.
코드-데이터-힙-스택이라는 메모리 구조는 원래 그런게 맞습니다. 하지만, 제 강의 자료에는 실제 메모리 구조를 추상화해서 더 쉽고, 직관적이고 (굳이 알지 않아도 되는 부분들을 제 논리에 의해 제외하고) 설명드리는 부분이 있습니다. 다른 말씀으로 드리자면, 지금 현재 제 교재에서 설명드리고 있는 그림은, 실제 메모리 구조를 저 만의 방식대로 다시 설계하고, 추상화해서 제가 처음부터 다 그린 그림이기 때문에 엄연히 저에게 저작권이 있습니다. (동일한 방식으로 저작된 자료는 다른 언어를 포함하고, 국내/해외 자료를 찾아도 없습니다. 제가 직접 설계하고 만든 것이기 때문에요.)
제가 처음부터 함수가 그런 방식으로 동작하는 것을 알았던 것도 아니고, 처음부터 메서드 디스패치 테이블이 데이터영역에서 어떤 방식으로 존재하는 것을 알았던 것도 아닙니다. 스태틱, 다이내믹 디스패치의 단어만 가지고 그 것이 실제 어떤 방식으로 동작하는지 알고 싶어서, 수백개의 자료들을 봤습니다. 때로는 러시아어로된 자료의 내용을 너무 알고 싶어서 그냥 구글에서 번역기로 다 돌려서 그렇게 해외 자료들도 수십가지 찾아봤고, 스위프트로 된 자료들이 없어서 일부러 (그나마 메모리 관련 자료들이 많았던) Java언어로 된 자료를 읽고 싶어서, Java의 기본적인 문법들을 공부하기도 했습니다.
지금 여러분들에게 설명드리는 교재 자료는 처음부터 그런 형태 였던 것이 아닙니다. (3년여쯤 전) 제가 과외를 하던시절의 교재는 또 지금하고 약간 다른 형태의 그림이었고, 그때 당시엔 저에게도 풀리지 않던 궁금증들이 남아있기도 했었지만, 후에 컴퓨터 구조 관련 책들, 운영 체제 관련 책들도 여러권 학습하게 되면서 풀리지 않던 메모리 구조적인 내용들을 지금과 같은 형태로 깨닫게 되었습니다.
그래서 제가 자신 있게 말씀드릴 수 있는 것은 제가 설명드리는 그림과 방식이 어디에서도 일절의 베낀 자료 없이 제가 학습하면서 여러가지로 궁금했던 부분들..
(1) 함수가 어떻게 동작하고, 왜 외부에서 함수 내부의 변수에 접근이 안되는지
(2) 함수 실행후 CPU는 어떻게 다시 원래 위치로 돌아가서 동작할 수 있는지
(3) 메서드 디스패치의 메모리 구조가 어떻게 되는지
(4) 클래스나 구조체의 인스턴스는 왜 자신이 직접적으로 메서드 주소를 가지지 않는지
(5) 왜 저장속성이 재정의가 안되는지
(6) 클래스 상속은 도대체 내부 구조가 어떻길래, (상속형식으로) 인스턴스 생성이 되는지
(7) 프로토콜의 메모리 구조는 어떻게 되는지
(8) 프로토콜의 메모리 구조는 클래스의 메모리 구조와 어떤 상관 관계가 있는지
(9) 클로저가 어떤 방식으로 힙에 저장되는지, 캡처 데이터는 어떤 방식으로 저장되는지
(10) 멀티쓰레드일때 메모리 구조가 어떤 방식으로 동작하는지
(11) 비동기방식에서 CPU는 어떻게 값을 주고 받는지.. 등등
실제로 위와 같은 내용들을 지속적으로 궁금해 하면서, 하나 하나 깨달아가면서 알게되었던 것을 다시 메모리 구조와 매칭시켜보면서 그림을 그려보고... 했던 내용들이 반영된 것이 제 교재입니다. 여러분들에게는 단순히 한장의 교재일지 몰라도, 어떤 한장의 그림을 완성 시키기 위해 몇달을 고민한적도 있습니다. 제발 어설프게 어디서 비스무리한 자료로 공부하시거나 본적이 있는 것 같아서, 제가 만든 자료가 어디서 베껴서 만든 것이라는 오해를 하지 말아주시길 바랍니다. 단언코 말씀드릴 수 있는 것은 어딜가셔도 비슷한 수준의 자료는 없습니다. 다 제 머리에서 직접 그리고 설계한 자료 입니다.
(OT때 말씀드렸지만, 실제로 모든 교재를 완성하고 수정하면서 진행하는데.. 주말을 쉬지않고 1년 이상의.. 시간으로 따지면 실제 수천시간이 들어가서 만든 자료입니다.)
그리고, 저는 단언하고 이 모든 자료를 제가 직접 설계하고 만들었기 때문에, 그 부분에서 만큼은 제 수강생 분들에게 자신있게 말씀드릴 수 있습니다. 그래서 어쨌든 제가 깨달은 내용을 여러분들에게 공유하면서, 그에대한 일정 비용을 지불 받고, 강의를 진행하고 있는 것입니다.
저작권을 침해하는 행위는 저에대한 기만 행위이고, (돈을 지불하고 강의를 듣는) 제 다른 수강생분들에게 피해를 주는 행위입니다. (본인이 강의를 만들어 무료로 배포하는 것이 의도가 아무리 좋다고 하더라도 남이 만든 자료를 그대로 베껴서 만들면.. 그건 좋은 일을 하는 것이 아닙니다.)
음악계에도 표절문제가 있죠. 어떤 작곡가/가수가 어떤 음악을 베껴서 만들면, 심각한 사회적인 문제로 일컬어지죠. 제 교재를 베낀다는 것이 단순하게.. 뭐 다 원래있는건데 괜찮겠지(?)라고 생각하질 말아주시길 부탁드립니다. 누군가 수천 시간을 들여 (처음부터 강의가 잘될 것이라는 일말의 기대없이) 인생을 걸어, 누군가에게 진심을 다해 알려주고 싶었던 저에 대한 배신이자, 뒷통수이고, 범죄행위 입니다.
앞으로 메모리 구조 관련된 내용을 사용하시면, 저작권 문제에 대해 선처없이 민사, 형사건으로 동시에 진행하도록 하겠습니다.
제가 여러분들의 학습을 위해 코드를 올리는 것, 기타 요약 자료를 올리는 것들에 대해서 어느정도 허용을 해드리고 있지만, 메모리 구조 관련해서는 2차 저작 등 어떠한 내용도 허락해드리지 않습니다. 유의를 부탁드립니다.