자바를 공부하면서 어렵다고 느끼는게 뭐냐고 물어보면 가장 먼저 제네릭을 떠올릴 것입니다. 물론 람다도 있긴하지만 람다 같은 경우는 몰라도 API를 읽는데는 그리 문제가 되지 않죠. 왜냐하면 람다가 아닌 버전도 알려주기 때문입니다. 람다를 사용하는 이유가 함수형 처럼 사용하기 위해서인데 자바는 함수형 언어가 아니기 때문이죠.. (하지만 람다도 반드시 알아야 하는 것 중 하나죠) 하지만 제네릭 같은 경우는 다릅니다. 이걸 모르면 API를 읽는데 어려움이 있죠. 근데 제네릭이라는게 쉽게 와닿지가 않습니다. 왜냐하면 이걸 굳이 써야 하는지 의문이 들때가 많기 때문이죠. 그래서 곰곰히 생각했습니다. 어떻게 하면 제네릭을 더 잘 이해할 수 있을까? 일단 제네릭에 대한 뜻을 알아 봅시다. 네 일반적이라는 뜻입니다. ..
*주의 : 이 글은 CODE라는 책을 읽고 영감을 받아 작성한 글입니다. 일반적인 프로그래밍 추상화에 대해서는 설명하지는 않습니다. 저는 프로그래밍 추상화와 다른 추상화에 대한 미묘한 차이를 이해하고자 이 글을 작성하였습니다. 이 글을 읽으면 추상화에 대한 대략적인 감을 익힐 수 있을지는 모르겠지만, 프로그래밍 추상화에 대한 이해는 어려울지도 모릅니다. 프로그래밍을 공부하다 보면 추상화라는 단어가 눈에 많이 들어옵니다. 하지만 이 단어가 쉽게 와닿지가 않습니다. 우리가 흔히 알고 있는 추상화는 다음 과 같은 그림들일 것 입니다. 그렇다면 프로그래밍에서는 어떻게 사용될까요? 흔히 우리가 프로그래밍상에서 알고있는 추상화는 구현체가 없는 메소드입니다. 그런데 위 그림과 프로그래밍에서 말하는 추상화는 전혀 다른..
프로그래밍 공부를 하다보면 얕은 복사와 깊은 복사가 나옵니다. 얕은 복사는 값만 복사하고 주소값은 복사하지 않고 값만 복사입니다. 그리고 깊은 복사는 주소값과 값 둘다 복사하는 방법입니다. 그런데 이건 알겠는데 막상 이것을 설명하려고 하면 무엇이 다른지 햇갈릴때가 많았습니다. 얕은 복사, 깊은 복사 이 두개가 있는 건 알겠는데... 뭐가 다른건지... 코드를 봐도 뭐가 다른건지... 제가 자바를 처음 공부했을때 이랬습니다. 사실 지금부터 설명하는 방법이 프로그래밍적으로 봤을때는 맞지 않을 수 있습니다. 하지만 적어도 이해가 될겁니다. 나중에 프로그래밍에는 뭐가 더 추가 되는지도 설명할 예정입니다. 검정 검정 위 두개의 글자를 읽어 보세요. 두개다 검정이라는 글자를 가지고 있습니다. 이제 두개의 단어는 각..