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

GUK·2023년 12월 6일
0

기타

목록 보기
1/2
post-thumbnail

프레임워크와 라이브러리

시작하기에 앞서 인터넷에서 검색한 프레임워크와 라이브러리는 각각 어떻게 표현되고 있는지 알아보겠습니다.





개요

프레임워크란 ?

컴퓨터 프로그래밍에서 소프트웨어 프래임워크는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조, 프레임워크라고도 한다.

라이브러리란 ?

주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 함수, 클래스 값, 자료형 사양을 포함할 수 있다.

출처 위키백과



간단하게 얘기하자면

프레임워크는 말 그대로 frame(틀)과 work(일하다)가 합쳐진 단어로, , 뼈대를 가지고 일하다. 즉, "제공받은 일정한 요소와 틀, 규약을 갖고 무언가를 만드는 일"이라고 생각하면 됩니다.

라이브러리는 "도구의 모음", 소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구들이라 할 수 있습니다.




이로써 이 둘의 차이점이 보이는데 프레임워크와 라이브러리의 차이점은 뭐가 있을까요??


프레임워크와 라이브러리의 차이점

1. 제어 흐름 :

  • 프레임워크는 애플리케이션의 흐름을 제어합니다. 개발자는 프레임워크에 따라야 할 규칙구조(틀) 를 따라가야 합니다. 프레임워크는 개발자에게 어떤 부분에서 어떤 코드를 작성해야 하는지 지시하면서 개발의 틀을 제공합니다.
  • 라이브러리는 개발자가 필요할 때 호출 할 수 있는 도구의 모음 이지만, 개발자는 애플맄케이션의 제어 흐름을 직접 관리합니다. 라이브러리는 단순히 기능을 제공하고, 언제 호출할지는 개발자가 결정합니다.

2. 역할 :

  • 프레임워크는 애플리케이션의 전체 구조를 정의하고 제공합니다. 주로 애플리케이션의 뼈대 를 형성하며, 이에 따라 개발자는 특정한 기능을 구현하게 됩니다.
  • 라이브러리는 특정 기능이나 작업을 수행하기 위한 코드의 모음 입니다. 라이브러리를 사용하면 개발자는 필요한 부분만 가져다 사용할 수 있습니다.

3. 제어 권한 :

  • 프레임워크는 정해진 규칙에 따라 작성해야 하므로 개발자의 일부 자유도가 제한될 수 있습니다.
  • 라이브러리는 개발자가 언제든지 필요한 시점에 라이브러리를 호출하거나 무시할 수 있으므로 더 큰 자유도를 가집니다.


요약하자면

프레임워크는 애플리케이션의 전반적인 구조와 흐름을 제공하며 개발자는 그 안에서 필요한 부품을 채워넣는 반면, 라이브러리는 개발자가 필요한 부분을 직접 선택하여 사용할 수 있는 도구의 집합입니다. 즉, 프레임워크는 정해진 틀과 규칙에 맞게 프로그래밍을 해야하고, 라이브러리는 개발자가 프로그래밍을 하는데 필요한 자원을 제공해줍니다.



자주 사용되는 프레임워크, 라이브러리

프레임워크

1. 웹개발 :

  • Django : Python 기반의 웹 애플리케이션 프레임워크로, 안정성과 생산성에 중점을 둡니다.
  • Ruby on Rails : Ruby 언어를 기반으로 하는 웹 개발 프레임워크로, 개발의 간소화와 빠른 개발에 초점을 둡니다.
  • Express.js : Node.js 기반의 웹 애플리케이션 프레임워크로, 경량이면서도 유연한 웹 애플리케이션을 개발할 수 있습니다.

2. 자바스크립트 프레임워크 :

  • React : Facebook(현 Meta)에서 개발한 사용자 인터페이스를 구축하기 위한 자바스크립트 라이브러리로, 단일 페이지 애플리케이션을 만들 때 많이 사용됩니다.
  • Angular : Google에서 개발한 프론트엔드 프레임워크로, 대규모 웹 애플리케이션을 구축하는 데 도움을 줍니다.
  • Vue.js : 가볍고 유연한 자바스크립트 프론트엔드 프레임워크로, 간단한 프로젝트부터 복잡한 애플리케이션까지 다양하게 사용됩니다.

3. 모바일 앱 개발 :

  • Flutter : Google에서 개발한 모바일 앱을 위한 UI 프레임워크로, Dart 언어를 사용합니다.
  • React Native : React 기반의 모바일 앱 개발 프레임워크로, 자바스크립트와 React를 사용해 iOS 및 Android 앱을 개발할 수 있습니다.



라이브러리

1. 데이터 과학 및 머신러닝 :

  • NumPy : 과학 및 수학 연산을 위한 Python 라이브러리로, 다차원 배열과 행렬을 다루는 데 특화되어 있습니다.
  • TensorFlow,PyTorch : 딥러닝 및 머신러닝 모델을 구축하기 위한 강력한 라이브러리로, 각각 Google, Facebook(현 Meta)에서 개발되었습니다.

2. 웹 개발 :

  • jQuery : 자바스크립트 라이브러리로, HTML 문서 조작과 이벤트 처리를 쉽게 처리할 수 있도록 도와줍니다.
  • Bootstrap : 웹 디자인을 쉽게 구축하기 위한 HTML, CSS, JS 기반의 프론트엔드 프레임워크로, 반응형 웹 디자인을 지원합니다.

3. 일반적인 프로그래밍 및 유틸리티 :

  • Requests : Python 에서 HTTP 요청을 간편하게 처리하는 라이브러리로, API 호출 등에 많이 사용됩니다.
  • Lodash : 자바스크립트 유틸리티 라이브러리로, 배열 조각, 객체 조작, 함수형 프로그래밍과 같은 기능을 제공합니다.



위처럼 프레임워크와 라이브러리에는 다양한 종류가 있습니다. 개발자는 자신이 하고 있는 혹은 하고자 하는 프로젝트에 맞게끔 프레임워크와 라이브러리를 잘 고려하여 선택하면 됩니다.






여기서 질문

리액트는 프레임워크가 아닌 라이브러리가 맞는 거 아닌가요?

맞습니다. 리액트는 원래 Facebook 팀에서 UI를 구축하기 위한 라이브러리로 시작되었습니다.
그러나 리액트는 시간이 지남에 따라 기능이 확장되고, 커뮤니티의 지속적인 기여와 지원으로 더 많은 프레임워크적인 특징을 갖추게 되었는데, 이는 리액트가 단순한 뷰 레이어 라이브러리에서 더 복잡하고 강력한 프레임워크로 발전하게 된 이유 중 하나라고 볼 수 있습니다.

자세히 보기

리액트는 컴포넌트 기반의 아키텍처를 통해 재사용이 가능한 UI 조각을 만들고 관리하는데 초점을 맞추고 있으며, 상태 관리, 라우팅, 테스팅, 서버 사이드 렌더링 등 다양한 기능을 제공합니다. 이로 인해 리액트를 사용하는 개발자들 중에서는 리액트를 라이브러리가 아닌 프레임워크로 간주하는 사람들도 있습니다.

그러나 끝까지 이견이 있을 수 있는데, 어떤 사람들은 여전히 리액트를 라이브러리로 취급하며 이는 리액트가 다른 기능들을 직접적으로 제공하는 것이 아니라 컴포넌트 기반의 UI를 빌드하는 데 주로 중점을 둔다는 견해에서 비롯됩니다. 개발자들 간의 이러한 용어 사용의 차이는 어떤 면에서는 주관적이며 맥락에 따라 다를 수 있습니다.




이로써 프레임워크와 라이브러리에 대해 알아보았습니다. 감사합니다.

profile
Hello, World !

0개의 댓글