티스토리 뷰

728x90
반응형

배경

친한 동생과 대화하다가 포스팅을 하게 되었습니다.
대화의 핵심내용은 텐서플로우 가 라이브러리 인가 프레임워크 인가 입니다.

자료조사 중, 참조한 논문에서 '텐서플로우는 오픈소스 딥러닝 프레임워크'라고 정의되어 있고
라이브러리이긴한데 플로우 그래프 구조를 사용하는 프레임워크 이며
발표했을 당시에 지도교수님이 별말씀없으셨어요.

 

동생은 이를 근거로 '텐서플로우는 프레임워크'다 라는 주장을 합니다.

부끄럽게도 프레임워크와 라이브러리 의 차이점이 무엇인지 바로 떠오르지 못했습니다.
구글에 검색해본 결과 텐서플로우는 라이브러리 라고 정의되어있고
대학생 때 잠깐 발만 담근 경험이지만, 텐서플로우는 패키지를 통해서 다운로드를 해야되며
임포트해야만 텐서플로우 관련 함수를 불러다 쓸 수 있는걸로 알고 있습니다.

저는 단순히 제 경험을 근거로
라이브러리를 함수의 집합, import 시켜서 쓰는 오픈소스 소프트웨어 라고만 생각했고
프레임워크는 개발자가 애플리케이션 API 를 만들수 있도록 뼈대를 제공해주는 소프트웨어 라고 생각했고
프레임워크의 룰을 지켜야하는 것이라고만 생각했지만, 뭔가 애매모호해서 알아볼 필요성이 있었습니다.

이번 대화를 기회로
'라이브러리'와 '프레임워크'의 개념을 확실하게 알고 싶었고, 차이점이 무엇이고
프레임워크 는 어떤게 있고, 라이브러리는 어떤게 있는지를
제 주장인 '텐서플로우는 프레임워크가 아닌 라이브러리이다.' 라는 주장이 옳은지를 판단하고 싶었습니다.

"프레임워크 와 라이브러리 차이가 무엇인가요?" 라는 면접질문이 나올 때 당황하지 말고 덤덤하게 답하고 싶습니다 :)
긴 서두를 마무리하고 본론 들어가보겠습니다.

제가 포스팅에 기록한 내용이 옳지않거나, 설명이 부족하거나, 위의 배경에 관련된 자유로운 의견을 코멘트로 남겨주시면 감사하겠습니다 🙇🏻‍♀️


라이브러리

간단히 말하면 함수들의 집합 입니다.
소프트웨어를 개발하기 쉽게 기능을 제공해주는 도구들 을 의미합니다.

라이브러리 예

  • Browser 환경에서 script src로 불러들이는 js파일 
    • JQuery: HTML의 클라이언트 사이드 조작을 단순화 시킵니다.
  • node.js 환경에서 npm으로 설치한 모듈
  • Python 환경에서 pip 으로 설치한 패키지/모듈
  • Java 환경에서 설치한 jar
  • C++ 의 표준 템플릿 라이브러리 STL

 

React 는 프론트엔드 웹프레임워크 아니에요?

React 공식 사이트를 방문하면 "사용자 인터페이스를 만들기위한 자바스크립트 라이브러리" 라고 정의되어 있습니다.

 


프레임워크

frame(구조) + work(일하다) 👉 일정하게 짜여진 틀을 가지고 일을 한다

프레임워크는 제공받은 일정한 요소와 틀, 규약을 가지고 무엇인가를 만듭니다.
특정 애플리케이션 을 개발하기 위한 여러 요소들과 규칙을 갖는 프로그램 입니다.


원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 틀/뼈대/골격/구조 을 의미합니다.
프레임워크는 앱/서버 등의 구동, 메모리관리, 이벤트 루프 등 과 같은 공통된 부분은 프레임워크가 관리합니다.
사용자(개발자)는 프레임워크가 정해준 규칙을 지켜야하며, 구현하고자 하는 기능의 핵심코드 작성에 집중하도록 합니다.

 

프레임워크의 예

  • Spring, Spring Boot : Java 언어기반의 서버개발에 사용되는 애플리케이션 프레임워크
  • Express : Node.js 기반의 웹 애플리케이션 프레임워크
  • Django, Flask : Python 언어기반의 서버개발에 사용되는 프레임워크
  • Android : 안드로이드 앱 개발에 사용되는 프레임워크
  • Cocoa Touch : 아이폰 앱개발에 사용되는 프레임워크
  • Ruby on Rails : Ruby 언어 기반의 서버개발에 사용되는 프레임워크

 


프레임워크와 라이브러리의 공통점과 차이점?

 

공통점: 쉽게 소프트웨어를 만드는 것

소프트웨어를 쉽게 만들어주기 위해 만들어졌습니다.

 

차이점 : 자유도 (제어흐름의 접근권한)

프레임워크의 경우에는 규칙이 정해져있습니다. 프레임워크를 사용하는 개발자는 규칙을 지켜서 개발을 해야합니다.
반면, 라이브러리는 사용자가 직접 호출하여 사용할 수 있습니다.

 

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

프레임워크에 제어할 수 있는 권한을 위임하는 것입니다. 프레임워크의 특징중 하나입니다.
반면에, 라이브러리는 사용자(개발자)가 제어의 권한을 갖습니다.

이미지출처: https://cocoon1787.tistory.com/m/745

 


'Tensorflow 는 라이브러리 이다' 라는 주장의 근거가 무엇인데요?

[근거1] 텐서플로우 깃헙 공식 래포지토리의 README.md 에서 발췌했습니다.

1) 텐서플로우는 머신러닝을 위한 end-to-end 오픈소스 플랫폼이자, 라이브러리를 제공합니다.
Tensorflow is an end-to-end open source platform for machine learning.
It has a comprehensive, flexible ecosystem of tools, libraries, and community resources.


2) Python과 C++ 기반의 API를 제공합니다.
Tensorflow provides stable Python and C++ APIs.

+ end-to-end 가 무엇이죠?

문맥적으로는 end-to-end시작점부터 끝점까지의 모든 과정을 의미합니다.
end-to-end product는 개발과정부터 고객에게 서비스를 제공하는 과정까지의 모든 과정들을 관리하는 제품을 의미합니다.

 

[근거2] 나무위키 & 참고블로그 에서 발췌했습니다.

구글이 2011년에 개발을 시작하여 2015년에 오픈소스로 공개한 머신러닝 라이브러리 입니다.
Tensorflow는 Keras 와 같은 추상화 라이브러리를 제공하여 간단하게 딥러닝 모델을 구현할 수 있습니다.

 


[텐서플로우 공식 래포지토리]
https://github.com/tensorflow/tensorflow

 

GitHub - tensorflow/tensorflow: An Open Source Machine Learning Framework for Everyone

An Open Source Machine Learning Framework for Everyone - GitHub - tensorflow/tensorflow: An Open Source Machine Learning Framework for Everyone

github.com


[참고자료]

 

[개발상식] 프레임워크(Framework) 와 라이브러리(Library)의 차이

🚀 "프레임워크와 라이브러리의 차이를 아시나요?"" "음... 프레임워크는 뼈대이고 라이브러리는 모듈 같은 것이고....😰" "그럼 최근에 사용하신 프레임워크와 라이브러리를 알려주세요." "... ex

cocoon1787.tistory.com


👇 장난감에 비유하여 이해하기 쉽게 설명했습니다. 강추입니다.

 

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

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

engkimbs.tistory.com

 

[개발 용어] 라이브러리 vs. 프레임워크 개념과 차이

# 라이브러리(Library)란? 현실세계에서의 라이브러리(도서관)란 필요할 때마다 꺼내볼 수 있는 책(지식)들이 모여있는 곳이다. 프로그래밍에서의 라이브러리란 필요한 기능들이 모여있는 코드의

curryyou.tistory.com

 

 

Understanding End-to-End in Business

End-to-end refers to a process that takes a method or service from its beginning to its end, delivering a complete functional solution.

www.investopedia.com

 

 

[러닝 텐서플로]Chap01 - 텐서플로 란?

Chap01 - 개요 1.1 텐서플로 란? 텐서플로(TensorFlow)는 구글(Google)에서 만든, 딥러닝 프로그램을 쉽게 구현할 수 있도록 다양한 기능을 제공해주는 라이브러리다. 텐서플로 자체는 기본적으로 C++로

excelsior-cjh.tistory.com

 

728x90
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함