CS에 대한 지식이 너무나 부족한 것 같아서, 애매하거나 모르는 정의가 있으면 velog에 모두 정리해 두려고 한다. 최근 Django를 공부하려고 했는데, 프레임워크라는 개념이 나왔다. 프레임워크와 라이브러리에 대해서 잘 구분을 못했기 때문에 둘의 개념을 살펴보고, 차이점을 알아보자.
먼저 위키피디아에 있는 정의를 살펴보자.
애플리케이션 프레임워크는 프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모임이다. 간단하게 프레임워크라고도 부른다.
(https://ko.wikipedia.org/wiki/%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC)
프레임워크=frame(틀)+work(일)
프레임워크는 제공받은 일정한 요소와 틀, 규약을 가지고 무엇을 만드는 일이라고 할 수 있다.
장난감 키트를 예로 들면, 장난감에 필요한 부품, 틀 등 키트를 제공해주는 것은 장난감 제조사이다. 즉, 장난감을 만들기 위한 요소들은 누군가가 제공해주는 것이다.
IT에서는 요소들을 제공해주는 프로그램이 있는데, 이것을 프레임워크라고 하고 이는 Spring, Django, Ruby 등이 있다.
라이브러리는 소프트웨어 개발에 쓰이는 하부 프로그램들의 모임이다.
(https://ko.wikipedia.org/wiki/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC)
라이브러리는 소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구들. 즉, 도구의 모음이라고 할 수 있다. 장난감을 만들 때, 자기 손으로 만들든, 망치를 사용하든, 못을 사용하든 상관이 없다. 그냥 자기 편한대로 만들면 되는 것이다. 이때 편한 도구가 바로 라이브러리라고 할 수 있다. 파이썬 라이브러리만 해도 Pandas, Beautifulsoup, Datetime 등등 수 없이 많은 라이브러리가 있다.
프레임워크 : 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램
라이브러리 : 프로그램을 개발하기 위해 쓰는 공구와 같은 도구들
공통점 : 프로그램을 쉽게 만들 수 있게 하는 공통된 목적.
차이점 : 프레임워크는 꼭 써야되는 것과 지켜야되는 룰이 있음. 라이브러리는 쓰든 안 쓰든 자기 마음
라이브러리: 내가 필요로 할 때 도서관에서 자료 찾듯이 마음대로 빌려 쓰는 것. (내가 주체)
프레임워크: 정해진 프레임 내에서 작업을 해야 하는 것 (프레임워크가 주체)
하지만 그 둘의 경계가 항상 뚜렷한 것은 아니다.
(by 노마드코더)
Reference
https://engkimbs.tistory.com/673
https://www.youtube.com/watch?v=t9ccIykXTCM