본문 바로가기

안드로이드/알아두기

[CS] 프레임워크와 라이브러리

안드로이드 개발자 면접이라고 안드로이드 질문만 한다는 보장은 없다. 그래서 그동안 궁금했는데 귀찮아서 알아보지 않았던 CS에 대한 상식도 몇 가지 공부해본다.

 

사진 출처 : https://laradevsbd.com/story/the-difference-between-a-framework-and-a-library

 

차이점을 알기전에 무엇인지 알아보자

 

- Framework(프레임워크)

먼저 프레임워크에 대해서 설명해본다. 프레임워크는 Frame과 work의 합성어이다. 여기서 Frame은 다들 알다시피 구조, 틀, 일정한 규격으로 완성되어있거나, 그것을 완성시킬 수 있는 요소들의 집합이다. 그리고 그 정해진 구조와 틀, 규격을 준수하며 일하는 것이 프레임워크의 뜻이다.

 

아래 글 참조에 링크를 걸어둔 새로비님이 찰떡같은 비유를 해주셨는데, Framework를 일종의 레고에 대입해보자. 레고에는 일정한 형태와 틀, 그리고 Description이 있고, 그것들을 가지고 다양한 결과물을 만들 수 있다.

 

그리고 레고의 부품들은 레고라는 제조사에서 나오게 되는데, 프로그래밍 적으로 옮겨 생각하면, 이 레고라는 제조사가 Framework가 되는 것이다. 물론 Framework Provide Program 이라는 표현이 더 맞긴 하지만, 그냥 Framework라고 하자. 그리고 이러한 예시들이 Angular JS, Ruby on rails 등이 있다.

 

위 예시들은 전부 웹에 관련된 프레임워크 들이며, 웹(혹은 웹 어플리케이션)을 만들 때 쉽고 간단하게 만들도록 도와주기 위해서 특정 요소와 규칙등을 사용자에게 제공하여 효율성과 생산성 향상에 도움을 준다.

 

- Library

라이브러리를 직역하면 도서관이다. 좀더 이 뜻을 물고 늘어져 보자. 도서관에 가면 수많은 책들이 있을것이다. 그리고 내가 원하는 책을 고르면, 그 책에는 내가 알고싶어하던 내용들이 있다. 이렇게 알게된 것들을 나는 추후에 사용할 수 있고 사용하지 않을 수 있게 된다. 어쨌든 이런 일련의 상황들을 프로그래밍적인 부분과 연결시켜 보자.

 

일상생활적 접근 프로그래밍적 접근
원하는 도서관을 간다. 사용하고자 하는 라이브러리를 import 한다.
도서관에서 원하는 책을 골라서 빌린다 라이브러리에서 사용하고자 하는 클래스를 선언한다.
빌린 책에서 원하는 부분을 읽는다. 이러한 내용은 추후에 사용하게 된다. 선언한 클래스의 메소드, 매개변수 등을 사용하여 프로그래밍 한다.

 

(뭔가 다른걸 써보고 싶어서 표를 써봤다)

위의 표와 같이 접근하면 라이브러리일종의 지식모음(수학 공식 모음), 도구 모음과 같은 결론에 도달하게 된다. 그리고 그 예시는 Android에서 Glide, Retrofit2 등과 같은 느낌이다.

 

공통점과 차이점

결론적으로 프레임워크나 라이브러리는 사용자가 프로그램을 만들 때 더 쉽고 간편하게 만들도록 도와준다는 공통점이 있다. 하지만 자율성에서 프레임워크와 라이브러리는 차이점을 보이게 된다. 특정 프레임워크를 사용한다는 가정하에 개발자는 지켜야할 룰들이 반드시 존재한다. 가령 C언어를 사용하면 문장의 끝맺음의 의미로 '; (세미콜론)을 사용해야 한다'라는 룰이 있다. 반면, 라이브러리는 프레임워크의 룰이 지켜진다는 전제아래 사용해도 그만 사용하지 않아도 그만이라는 자유도가 있다. 

 

쉽게 얘기해서, Angular JS라는 프레임워크의 틀 안에서 내가 코딩을 한다면, 나는 Angular JS에서 제시한 규칙을 따라서 그 틀에 맞춰서 코딩을 해야 한다. 반면 라이브러리는 특정 라이브러리의 사용법만 안다면, 어떤 방식으로 코딩을 해도 상관이 없다. 단 프로그래밍 언어적 규칙은 꼭 지켜야 한다.

 

글 참조

https://laradevsbd.com/story/the-difference-between-a-framework-and-a-library

 

The difference between a framework and a library?

The difference between a framework and a library

laradevsbd.com

 

https://engkimbs.tistory.com/673

 

프레임워크(Framework)? 라이브러리(Library)? 둘의 차이점? 이것만 알면 됩니다.

막 프로그래밍을 배우기 시작했거나 프로그래밍을 모르는 분들에게 저 두 개념은 아주 헷갈리는 개념일 것입니다. 사실 어느정도 숙달된 프로그래머라도 일반인에게 저 두 개념을 쉽고 확실하

engkimbs.tistory.com