프레임워크
프레임워크는 소프트웨어 개발을 위한 구조적인 틀이다. 파이썬의 라이브러리와 비슷한 느낌이다. 둘을 비교해보자.
라이브러리는 특정 기능을 수행하는 코드 묶음으로, 필요할 때 호출해서 사용하는 도구다. 개발자가 원하는 기능을 골라서 가져다 사용한다. 라이브러리의 예로는 numpy는 수학 계산, matplotlib는 그래프 그리기에 사용된다. 개발자가 무엇을 어떻게 쓸지 직접 결정한다.
프레임워크는 개발의 기본 틀과 구조를 제공한다. 미리 설계된 구조 위에서 코드를 작성하도록 돕는 도구다. 프레임워크가 제공하는 규칙과 흐름에 맞춰 개발을 진행한다. 프레임워크의 예로는 Django(웹 개발), Flask(웹 서버 개발), TensorFlow(딥러닝)이 있다. 프레임워크가 프로그램의 흐름을 통제하며, 개발자는 그 틀에 맞춰 필요한 기능을 작성한다. 이를 제어의 역전(Inversion of Control)이라고 부른다.
차이점을 표로 나타내보겠다.
특성 | 라이브러리 | 프레임워크 |
역할 | 도구를 제공 | 개발의 구조와 틀 제공 |
제어 권한 | 개발자가 제어 | 프레임워크가 흐름 제어 |
유연성 | 필요한 기능만 선택적으로 사용 가능 | 정해진 규칙과 틀에 맞춰 개발 진행 |
라이브러리는 필요한 재료(부품)를 가져다 조립하는 레고 블록이라고 할 수 있다. 프레임워크는 조립 설명서와 기본 틀이 있는 레고 키트로 틀에 맞춰 조립해야 한다.
오늘은 컨디션이 좋지 못해 강의를 들어도 내용이 머릿 속에 남지 않고 흘러나갔다. 약국 가서 약을 구해와야겠다. 내일부터는 집중하자! 약 먹으면 힘 나겠지!