Computer Science

프레임워크(Framework)와 라이브러리(Library)

닉네임못짓는사람 2021. 12. 15. 15:08
반응형

프레임워크와 라이브러리는 프로그래밍 빼놓을 수 없는 요소들이다.

이 글에서는 프레임워크와 라이브러리가 무엇인지에 대해서 확인해보자.

라이브러리(Library)


라이브러리는 특정한 기능들을 모듈화한것이다.

간단하게 말하면 어떤 기능을 수행하기 위한 코드들의 집합이라고 할 수 있다.

.

프로그래머는 사전에 만들어진 라이브러리들을 프로그래밍을 할 때 불러와서

자신이 원하는 곳에 적절이 활용하기만 하면 된다.

 

Python에서 사용하는 NumPy, Pandas, Tensorflow등이 라이브러리에 속한다.

 

프레임워크(Framework)


프레임워크는 프로그래밍에서 틀, 뼈대를 말하며,

어떠한 기능을 완성하기 위한 클래스, 인터페이스들의 집합이라고 할 수 있다.

 

프레임워크는 말그대로 뼈대이기 때문에 프로그래밍에 있어서 구체적인 방향성을 제시해주며,

아직 완성된 것이 아니기 때문에 작업을 수행하기 위해선 프로그래머가 이를 완성해주어야한다.

 

이런 뼈대의 제공을 통해 프로그래머에게 방향성을 제시해주기 때문에

객체지향 개발에 있어 일관성 부족 드으이 문제를 해결해 줄 수 있다.

 

프레임워크의 예는 Spring, Django, Apache등이 있다.

 

프레임워크와 라이브러리


그럼 이 둘의 차이점은 무엇일까?

그건 바로 "흐름(Flow)"를 누가 가지고 있느냐이다.

 

위에서 말했듯이 프레임워크의 경우 뼈대로서 프로그램의 구체적인 방향성을 제시한다.

때문에 이를 사용하는 프로그래머는 이 방향성에서 벗어나지 못하고, 그 안에서 코드를 작성해야한다.

즉, 흐름을 프레임워크가 가지고 있다고 할 수 있다.

 

반면, 라이브러리의 경우 전체적인 흐름을 프로그래머가 정의하며,

자신이 원하는 곳에 원하는 라이브러리를 가져다 쓰기만하면 된다.

제어의 역전(IoC, Inversion of Control)


이렇게 프레임워크가 프로그램의 흐름을 쥐고있는 것을 "제어의 역전이 적용되어있다."고 한다.

전통적인 프로그래밍 방식에선 프로그래머가 프로그램의 흐름을 쥐고있기 때문에

어떤 코드가 어떤 시점에 실행될지를 프로그래머가 지정한다.

 

반면, 제어의 역전이 적용된 프레임워크에선 프로그램의 흐름을 프레임워크가 쥐고있기 때문에

프로그래머는 코드를 작성하고, 이 코드가 어느 시점에 실행될지는 프레임워크가 결정한다.

 

이러한 흐름을 프레임워크에게 건내줌으로써 프로그래밍시에 프로그래머가 신경쓸 부분을 줄여주는 전략이다.

즉, 프레임워크가 "이 코드를 언제 어떻게 쓸지는 내가 알아서할테니 넌 코드나 작성해!"라고 하는것과 같다.

반응형