능히 해낼 수 있다
230130 컴퓨터지식: 프레임워크와 라이브러리 차이 본문
✍️✍️✍️ 위 글은 작성자의 지식습득에 따라 추후 퇴고 될 수 있음을 알려드립니다(피드백 환영).
개발 용어 중에는 결국엔 같은 거를 설명하고 있는거라 할지라도
언어에 따라 달라질 때가 있는데, 그게 프레임워크, 라이브러리, 패키지 이다.
이런게 뭔가 언어에 따라 저기선 저렇게 여기선 이렇게....
귀에걸면 귀걸이 코에걸면 코걸이 식으로 자꾸 다르게 불린다😵💫
초보자이고 배경지식이 너무 조구맣고 소중한 나에겐 너무헷갈리고 열받는다
알고있는 바로는.. API를 모은게 라이브러리, 그 라이브러리를 모은게 프레임워크 인게 아니냐..!
라고 생각을 '정립'하고있었는데, 또 어디에선 아니라고 하니까 알다가도 모르겠다
암튼 더이상 적당히 헷갈리고 싶은마음에 기록을 해본다....⭐
기록이라도 해두면 헷갈리더라도 다시 읽어보고 🤭앗찻차🤭 하면서 리마인드하면 되는거니까..!!
1. 프레임워크는 무엇인가
프레임워크는 '뼈대'라는 뜻을 갖고 있다.
뱃사공이 많으면 산으로 가듯,
프로젝트에 일하는 손이 많아지면 그에 필요한 통합과 일관성이 요구될 수 밖에 없다.
왜냐하면 다양한 사람이 개발을 하기 때문에 각자의 시선과 개발방법이 다르기 때문.
그래서 자유도가 높은 개발 환경이 되버린다면 메모리 누수나, 트러블슈팅 등이 어려워질 수 있다.
이를 보수하기 위해 일정한 규칙 안에서 일관된 유지보수를 위해 도와주는 것이 프레임 워크의 역할이다.
프레임워크는 개발자들이 따라야하는 가이드라인, 한정된 개발범위, 다양한 도구지원을 특징으로 갖고있다.
a. 뼈대의 장점
1.유지보수에 능함
2. 보장된 코드품질
3. 좁힐 수 있는 오류의 폭
4. 개발편의성 증진, 물리적 시간 소요 감소
b. 뼈대의 단점
1. 의존도에 따른 개발능력 저하
2. 개발자의 자유도 감소
개인적인 생각으론 프레임워크는 단점보단 장점이 더 많기도하고
솔직히 현재 실력으론 프레임워크의 규칙에 따른 자유도가 감소하든 증가하든 상관이 없다.
그냥 개발지식과 실력만 늘어나면 좋겠는 소망을 갖고있기 때문에, 잘 다룰수만 있다면 감지덕지하다
2. 라이브러리는 무엇인가
개발을 진행하다보면 특정기능이 반복되어 사용될 때가 있다.
그럴때마다 코드 복붙하는것도 한계가 있고, 미묘~하게 플젝에 원하는 기능과 다르게 구현되기도한다.
이를 위해 입맞에 맞춰서 기능을 구현할 수 있도록 도와주는 모듈화된 코드모음을 라이브러리 라고 한다.
(그래서 이름이 라이브러리인걸까?
필요한 책을 모아둔 곳을 도서관이라 불러서 그거에 비유해 컴퓨팅 용어로 명명이 된건가 궁금해졌다.
추후 찾아서 퇴고해야겠다.)
원하는 곳에 사용할 수 있는게 라이브러리의 특징중 하나인데,
이점이 API와 굉장히 헷갈리게 한다.
API와 라이브러리의 차이점
API는 Application Programming Interface의 약어로,
실제로 실행되는 기능을 담당하는 것이 아닌, 다른 목적으로 개발된 프로그램이나 라이브러리등의
특정 기능을 '호출(call)'하기 위해 인터페이스를 노출 시킨 것이다.
때문에 특정부분만을 API로만 사용자(User/Client)가 뭘 직접적으로 해볼 순 없다.
이말이 무엇이냐,
사용자가 직접적으로 코드를 조작해서 뭔가를 바꾸고 기술을 사용하는 것이 아니라,
API라는 것을 통해 간접적으로 기능을 바꾸고 적용하며 일부 기능을 호출 할 수 있는 것이다.
예를 들면, 뭔가를 구매할 때 상품데이터와 관련된 코드를 조작할 순 없지만
상품관련 API를통해 서버와 소통된 내용이 사용자의 화면에 보여지고,
해당 기능들로 간접적인 조작을 할 수 있다.(상품 삭제, 수량변경 등)
3. 그래서 프레임워크와 라이브러리의 차이점은
미묘하지만 다른건 확실히 알겠다. 더 나아가 이 둘의 더 뚜렷한 차이점이 있다면,
프레임워크는 개발자들의 환경을 제한하는 대신, 정해진 환경을 제공하고,
라이브러리는 원하는 곳에 원하는 기능을 가져다 사용하면된다. 정해진 환경도 없고 걍 적용 할 수 있다.
위 글에서 언급만하고 다뤄지진 않았지만,
package또한 library와 같은맥락인데, 살짝 프레임워크에 발을 담군 느낌이다.
원하는 곳에 원하는 기능으로 사용하지만, 그 안에 정해놓은 규칙이 있다(속성 적용방법 등).
그래서 원하는 곳에 사용할 순 있지만 프레임워크안에서 사용하니 라이브러리 같기도하지만
정해진 규칙이있으니 프레임워크같기도하고... 알아 갈 수록 어렵다. 쉽지않다
결론은 다음에 이 글에 패키지 내용도 추가해야겠다.
'개발🌐 > CS지식' 카테고리의 다른 글
230317 CS지식습득을 위한 메모: 팩토리 패턴 편 (0) | 2023.03.17 |
---|---|
230316 CS지식 습득을 위한 메모: 싱글톤 패턴 편 (0) | 2023.03.16 |
230127 네트워크: 컴퓨터의 이해 소프트웨어공학 배경지식 편 (0) | 2023.01.27 |
230125 개발지식: JSON 편 (0) | 2023.01.25 |
230125 알고리즘, 자료구조: 배열, 연결리스트, 큐, 스택 편 (0) | 2023.01.25 |