[면접 질문] Framework와 Library (Feat. ChatGPT)

TraceofLight·2023년 6월 3일
1

InterviewStudy

목록 보기
5/11
post-thumbnail

서론

이번에 이에 대한 질문을 면접에서 처음으로 마주하게 되었는데 솔직히 안다고 생각했던 내용이었지만 명확하게 대답하지 못하고 우물쭈물하다가 동문서답을 해버리고 말았다... 그래서 다음에 마주했을 땐 그러지 말아야지 하는 생각으로 조금 더 확실하게 알고자 내용을 적어본다!

Library

개발 시 공통으로 사용할 수 있는 기능들을 모듈화한 것으로 특정 기능을 수행하도록 제작된 프로그램

Framework

여러 기능을 가진 클래스, 라이브러리가 특정한 결과물을 구현하기 위해 합쳐진 형태

ChatGPT의 대답

위 정의들은 여러 글들을 읽어보고 개인적으로 정답에 가깝다고 생각해본 결과들이다. 하지만 뭔가 부실한 느낌이 있고 자세하게 정의된 응답이 듣고 싶어져서 ChatGPT를 활용해보기로 했다!

  • Library의 정의

  • Framework의 정의

그래서 뭐가 다른데?

위 대답을 통해 다시 Framework와 Library를 파악해보면

  • Library

    재사용 가능한 코드와 리소스의 모음
    함수, 클래스, 메서드, 데이터 유형 등으로 구성

  • Framework

    소프트웨어의 개발을 위한 구조적인 틀 혹은 플랫폼
    미리 정의된 코드와 라이브러리로 구성

이 내용을 보면서 궁금한 점이 안 생길 수 없다. 프레임워크는 라이브러리를 포함할 수 있는데 라이브러리는 프레임워크를 포함할 수 없는 것일까?

예상대로 프레임워크가 라이브러리를 포함할 수 있지만 그 역은 불가능하다는 점을 확인할 수 있었다. 또한, 해당 내용을 통해서 프레임워크와 라이브러리의 중요한 차이점을 확인할 수 있는데..

바로 코드 흐름의 제어권이다. 라이브러리의 경우는 개발자가 라이브러리의 기능을 호출해서 사용하는 형태이지만 프레임워크의 경우, 프레임워크에 의해 개발자의 메서드가 호출되는 형태라는 점이 큰 차이점이 있다고 할 수 있다.

프레임워크에서 나타나는 형태를 IoC (Inversion of Control), 제어의 역전이라고 한다. Dependency Injection과 관련이 있는 내용이니 따로 적을 일이 있을 것이라고 생각해서 크게 내용을 담진 않을 것이다.

결론

  • 라이브러리는 재사용 가능한 코드와 리소스의 모음, 프레임워크는 개발을 위한 구조적인 틀 혹은 플랫폼이다. 일반적으로 기능적인 측면에서 비슷하게 작동하므로 굳이 차이점을 찾자면 사용 방식에서 찾을 수 있다.
  • 프레임워크는 라이브러리를 포함할 수 있지만 라이브러리는 프레임워크를 포함할 수 없다. 코드 흐름의 제어권의 경우 프레임워크는 프레임워크가, 라이브러리의 경우는 개발자가 가진다. 따라서 프레임워크의 경우 개발자가 프레임워크를 수정하는 것이 일반적으로 불가능하며 라이브러리의 경우는 필요에 따라 개발자가 커스터마이징하는 것이 가능하다.

참고

카레유님의 Blog
ChatGPT 3.5

profile
24시간은 부족한 게 맞다

0개의 댓글