본문 바로가기

IT 공부104

동적 타입 언어와 정적 타입 언어의 차이점 (덕 타이핑) 0. 서론: 객체와 타입 객체지향에서 객체를 구현하는 주요 문법은 클래스다. 클래스는 많은 오해가 있다. 대표적인 예시가 바로 클래스를 붕어빵을 만드는 틀로 묘사하는 것이다. 붕어빵틀 비유는 클래스라는 문법 장치를 객체의 구현 코드로 인식하기 때문에 발생하는 오해다. 그러나 클래스는 객체를 구현하기 위한 코드가 아니라, 객체의 타입(type)을 구현하기 위한 코드다. 객체의 타입과 클래스 문법에 대한 자세한 설명은 책에서 잘 기술되어 있다. (링크) 여기서 간단히 요약하자면, 객체의 타입(type)이란 객체(object)를 분류(classify)하기 위한 추상화/일반화된 개념(concept)이며, 클래스 문법은 바로 이 개념, 즉 타입(type)을 구현하는 코드라는 것이다. 특정 클래스로 분류될 수 있는.. 2023. 12. 13.
인터페이스 분리 원칙(ISP) 제대로 이해하기 인터페이스 분리 원칙(Interface Segregation Principle)은 처음 내가 SOLID 원칙을 공부했을 때 가장 납득하기 힘들었던 원칙이었다. 대부분의 교과서와 강의가 SOLID 원칙을 변경의 용이성 관점에서만 설명하기 때문에, 객체지향이 지향하는 관점과 사고방식에 대해 몰랐던 당시의 나로선 ISP를 100% 납득할 수 없었다. "클래스가 있는데 그대로 쓰지, 왜 굳이 인터페이스를 또 만들어야 하는거지? 굳이 나누는 것이 의미가 있나?" 라고 생각했다. 물론 인터페이스를 나누는 것이 유용해 보이기는 했지만, 딱 그 뿐이었다. 유용성 이상으로 ISP를 지켜야 하는 이유를 몰랐다. "의존하지 않는 메소드가 있으면 그냥 안 쓰면 그만 아닌가?" 라고 생각했었다. 유용하다는 것은 달리 말하면 그.. 2023. 12. 11.
프레임워크와 라이브러리의 차이 (의존성 역전 원칙) 프레임워크와 라이브러리는 모두 모듈로서 제공된다. 그래서 표면적으로는 아무런 차이가 없는 것 같다. 하지만 서로 다르다. 개발자가 작성한 코드는 프레임워크가 호출한다. 반대로 라이브러리는 개발자가 작성한 코드가 호출한다. 그러나 더욱 심도 깊게 들어가면 본질적인 차이가 하나 있다. 그것은 바로 "의존성 역전(Dependancy Inversion)" 원리다. 1. 의존성 역전 (제어 역전) 의존성 역전에서 중요한 단어는 '역전'되었다는 표현이라고 나는 생각한다. 물론 내용적 측면을 다루는 단어는 "의존성" 이다. 하지만 DI는 "역전"되었다는 사실을 더욱 강조한 표현이다. 역전이라는 표현은 제어흐름과 소스코드 의존 방향에 대한 전통적인 관점을 역전시켰다는 의미로서의 역전이다. 따라서 역전이라는 단어를 이해.. 2023. 12. 9.
AI는 정말로 개발자를 대체할까? 취준생인 나의 생각.. 0. 서론: 논의를 어떻게 풀어나갈 것인가 개발자가 되기 위해 공부하는 취준생으로서 인공지능에 대한 이슈는 이제 거부할 수 없는 것 같다. 어떻게든 나름의 정리가 필요하다. 지금도 수많은 개발자와 인공지능 전문가들이 이 주제에 대해 갑론을박을 이어가고 있다. 지금까지 논의된 바에 의하면, 적어도 "현재로서는" 인공지능이 개발자를 대체할 수는 없다고 보는 것이 주류다. 문제는 이 주제 자체가 현재를 논하는 것이 아니라 미래를 논하기 위한 것임을 고려하면, 아직은 대체 못한다는 이 결론은 솔직히 맥이 빠지는 결론이다. 우리가 관심을 가지는 대상은 현재가 아니라 미래다. 개발자가 되고 싶은 나이기에, 사실 인공지능에 대한 말할 수 없는 거부감이 드는 것도 사실이다. 일종의 방어기제다. 근거를 제시하지도 않고 .. 2023. 12. 9.