본문 바로가기

프로그래밍 고찰

(12)
[질문과 답변] 인터페이스가 뭔가요? / 추상클래스와 인터페이스차이가 뭐예요? 매번 카톡으로만 답해주기 아까워서 정리하는 컨텐츠 140% 뇌피셜 (뇌피셜 주도개발) [백후배] 아래로 바뀔때 B변경에 영향을 받지 않는다는데 [백후배] 이해가 안가요 인터페이스 썻으니까 영향을 안받지 아우터페이스였으면 받음 ㅇㅇ [백후배] methodB 바뀌면 인터페이스도 수정해야되는거 아니에요? [백후배] 선언부가 바뀌면 아예 메쏘드B라는 인터페이스자체가? [백후배] 넹 그럼 설계를 잘못한거지 바꿔야지 [백후배] 그럼 먼차이예요? 걍 인터페이스 나오면 Cloneable 만 생각해 [백후배] clonable이 머에요 자바에서 객체는 A = B 하면 A 에 B 레퍼런스가 들어가잖아 그래서 A.name = "kiki"; 하면 B.name 도 키키 되잖아 근데 A는 B의 복사복은 가지고싶어 [백후배] 그게 ..
[질문과 답변] 다형성이 뭐예요? 매번 후배가 물어보는거, 카톡으로만 답해주기 아까워서 정리하는 컨텐츠 140% 뇌피셜 (뇌피셜 주도개발) [후배] Parent p = new Child() 이거는 어느 경우에 하는거에요? 저게 다형성인디 ㅜ [후배] 걍 parent면 parent로 만들고 [후배] child면 child로 만들면 안되나 예를 들어 니가 FPS 게임을 만들꺼야 캐릭터가 있고 캐릭터에 맴버변수로 Weapon이 있겠지 그리고 총은 종류가 많으니까 [후배] 그쵸 AK47: Weapon, M16:Weapon, 이렇게 있어 Weapon을 상속받아서 [후배] Weapon w = new AK47() [후배] 이런식으로 만드나 Weapon에 Attack 이라는 매쏘드가있고 각 Ak47, M16 은 Attack 을 구현 해서 각각 다르게 ..
[고찰] 비동기 기술의 추상화 본글은 140% 뇌피셜 입니다. (뇌피셜 주도 개발) CPU는 멀티코어를 가지고 있고, 우리는 쓰레드를 생성하여, 멀티코어를 활용한다. 그러나 실제 우리가 코어를 직접 컨트롤 하지 않는다. 쓰레드 자체 일종의 추상화이기 때문이다. 여기서 쓰레드의 복잡성을 낮추기위하여 보다 높은 추상을 적용한것이 CSP(Communicating Sequential Processes) 와 Actor 모델들이라고 본다. 이것들은 low-level abstraction 이다. 즉 내가 (비동기를 위해서) 동시성 프로그래밍을 할건데.. 귀찮은게 넘 많아.. 이렇게 쓰면 편할꺼같은데? 에서 나온 "동시성 프로그래밍을 쉽게 구현할수있는 모델의 설계" 에 목적을 둔 추상이다. Go의 고루틴, Clojure의 core.async 등이 ..
[고찰] 언어 철학 학습 필자는 다른 프로그래밍 언어를 공부하는것을 좋아한다. 흔히들 언어는 도구에 불과하다고 말하고, 필자 본인조차도 기초지식 글에서 쓸데없이 언어를 확장하지 말라고 하기도 했다. 그러나 그럼에도 불구하고 본인은 프로젝트에서 쓰지않는, 타 언어를 공부하는것을 좋아한다. 그리고, 내가 주로 사용하는 언어와 다르면 다를수록 좋다. 이 글에서는, 내가 기술스택을 공부하는거보다 언어 공부를 선택하는 이유를 포스팅 하고자 한다. 필자는 왜 프로그래밍 언어를 학습하는것을 좋아할까? 프로그래밍 언어는 그자체로써 수준높은 프로그램이다. 흔히 프로그래밍 실력을 늘리기 위해서는 좋은 코드를 많이 보라고 말한다. 좋은 코드를 많이 보다보면 자연스럽게 그런식으로 프로그래밍하도록 노력하게 되기때문이다. 좋은 코드는 좋은 프로그램을 만..