이 알고리즘의 세계는 얼마나 신기한 것인지 크롬 구글에 학습 관련 검색을 자주 했더니 구글 아이디를 연동해놨던 유튜브에도 코딩 관련 영상들이 자주 뜨는데 라이브러리와 프레임워크의 차이를 알려주는 짧은 6분 내외의 영상을 발견해서 정리하고자 글을 쓴다. 둘 다 어떤 건지는 알고있지만 바로 설명해보라고 하면 선뜻 대답이 안나오기에..나도 애매하게 알고 있는게 아닌가 싶다.
사전적 정의는 이러하다. (위키백과 참고)
- 라이브러리 : 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 집합으로, 개발자가 필요한 도구들을 호출하여 사용하는 방식.
- 프레임워크 : 프로그래밍에서 특정 운영체제를 위한 응용 프로그램 표준 구조를 표현하는 클래스와 라이브러리의 모임.
이렇게만 봐서는 한 번에 이해가 가지 않는다. 조금 더 쉬운 말로 표현해보자면 일단 라이브러리, 프레임워크는 다른 누군가가 쓴 코드를 우리가 가져다 쓰는 것이다. 이 둘의 차이점은 아주 심플하다. '누가 누구를 컨트롤 하는가!' 이다. 내가 코드를 컨트롤 하는 것인가, 아니면 누군가 정해준 규칙을 따라하고 있는 것인가? 코드의 흐름 (flow) 을 누가 쥐고 있는가?
라이브러리의 좋은 예시는 JQuery 이다. 제이쿼리는 웹사이트를 만들 때 HTML 의 엘리먼트들을 효율적으로 다룰 수 있게 도와주는 자바스크립트용 라이브러리이다. 만약 내가 웹사이트를 코딩하고 있다면, "내가" 필요할 때 제이쿼리를 소환하고 코딩을 해나간다. 라이브러리는 쉽게 대체될 수 있다. 내가 원하면 제이쿼리를 다른 라이브러리로 대체할 수 있고 대체한다고 해서 프로젝트가 손상되거나 하지는 않는다. 사용 여부는 코드 작성자의 선택 사항이며 새로운 라이브러리를 제작 한다고 해도 엄격한 규칙이 존재하지 않는다.
하지만 프레임워크는 다르다. 내가 직접 프레임워크를 부르는 것이 아니라 "프레임워크가" 나의 코드를 제어한다. 프레임워크로 작업을 할 때는 내가 코드의 규칙을 정하는 것이 아니고, 반대로 내가 프레임워크의 규칙을 따라야 한다. 원하는 기능 구현에만 집중하여 빠르게 개발 할 수 있도록 기본적으로 필요한 기능을 갖추고 있는 프레임워크는 위에서 설명한 라이브러리도 포함하고 있다.
간단하게 한 문장으로 표현해보자면 프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣으면 되는 반면에 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있다.
프레임워크는 '제어의 역전' 이라는 개념과도 연관이 있는데, 라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측, 즉 사용자에게 전적으로 주도성이 있지만 프레임워크는 그 틀안에 이미 제어 흐름에 대한 주도성이 내재되어 있다. 다시 말해 우리는 프레임워크에게 제어의 권한을 넘기는 것이다.
참고한 영상 :
'TIL' 카테고리의 다른 글
Gradle 이란? (22.09.07 TIL) (0) | 2022.09.07 |
---|---|
replace() 와 replaceAll() 의 차이 (22.09.06 TIL) (0) | 2022.09.06 |
리프레쉬 하기 (22.09.04 TIL) (0) | 2022.09.04 |
페이스 유지하기 + getter 지양하기 (22.09.03 TIL) (0) | 2022.09.03 |
고민의 늪 (22.09.02 TIL) (0) | 2022.09.02 |
댓글