프레임워크
프레임워크란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것이다.
즉, 원하는 프로그램을 만들기 위한 기본틀 이라고 생각하면 된다
보통 Framework는 라이브러리라는 개념과 비교해서 많이 설명한다.
장점
1) 생산성 향상
- 코드를 일일이 짜는 것보다 시간과 비용이 훨씬 절약되며 생산성이 좋아진다.
- 프로그램을 빠르고 편하게 만들 수 있다.
2) Quality 향상.
- 버그 발생 가능성을 처리해줌으로써 개발자가 반복 작업에서 실수하기 쉬운 부분을 커버해 준다.
- 다수의 개발자가 사용하며 수정하다 보니 이미 검증된 코드다.
3) 쉬운 유지 보수
- 프레임워크를 쓰지 않고 일일이 코드를 짜 놓은 경우, 회사 입장에서 개발 담당자가 바뀌어버리면 곤란해진다.
- 그러나 Framework를 사용하면 코드가 보다 체계적이어서 담당자가 바뀌더라도 위험부담을 줄일 수 있으며 유지 보수에 안정적이다.
딥러닝 프레임워트 예시
프레임워크
- 사공법이 쉽고 많은 머신러닝 알고리즘이 효율적으로 구현되어 있으므로 머신러닝을 처음 배울 때 사용하기 아주 좋음
- 분산 수치 계산을 위한 매우 복집한 라이브러리
- 수백 대의 충· 그래픽 처리 장치 graph cs processing unit (GPU ) 서버에 계산을 분산하여 대규모 신경망을 효과적으로 훈련하고 실행시킬 수 있음
- 텐서플로는 구글에서 만들었고 구글의 대규모 머신러닝 애플리케이션에서 사용하고 있음.
- 2015 년 11 월에 오픈 소스로 공개되었고, 2019 년 월 2.0 버전이 릴리스되었음
- 고수준 딥러닝 API
- 매우 쉽게 신경망을 훈련하고 실행할 수 있음
- 케라스는 텐서플로 시애노 ano , 마이구쿠수IIE 코그니티브 툴킷 ic osoft Cognitive oo k” 위에서 작동.
- 텐서플로는 자체적인 케라스 API 구현을 tf.keras 란 이름으로 포함함.
- tf.keras는 텐서플로의 고급 기능을 지원함 (예를 들어 효율적인 데이터 적재 기능)
라이브러리
자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합
장점
1) 유지 보수 향상
- 코드의 중복을 줄인다
- 가독성이 좋아진다.
2) 생산성 향상
- 코드를 일일이 짜는 것보다 시간과 비용이 훨씬 절약되며 생산성이 좋아진다.
프레임워크 vs 라이브러리
- 프레임 워크: 개발 을 할 떄 지켜야하는 틀
- 라이브러리: 개발을 할 때 필요한 것들이 미리 구현되어 있는 것
이렇게 이야기를 하면 이해가 잘 안되니 예를 들어보자.
내가 자전거를 만든다고 생각하면,
1) 자전거의 본체에 바퀴를 달고
2) 페달을 달고
3) 안장을 달고
4) 손잡이를 달아야 한다
이러한 일련의 과정 즉 자전거를 만들기 위한 기본틀을 프레임워크라고 한다
그런데 이렇게 자전거를 조립하는 과정에서 우리는 바퀴, 손잡이, 안장을 직접 만들지 않고 만들어져 있는것을 가져다 쓴다.
이렇게 이미 만들어져 있는 부품들이 라이브러리이다.
추가학습
아키텍처 Architecture
간략 설명: 프로그램 주요 구조 설계
예시 설명: 자전거 도면
기획한 내용을 프로그램화했을 경우 필요한 주요 특징을 기술적으로 설계하고 명시하는 것
결과물에 필요한 모든 구성 요소를 명시하지만, 구체적인 구현 방법은 포함되어 있지 않음
비유해 설명하자면,
위의 자전거 설계로 예를 들면 자전거 바퀴가 본체 앞부분 밑과 뒷부분 밑에 존재한다고 설계하고,
안장 고정 방식이 접착제인지, 볼트인지는 명시되지 않는다고 볼 수 있다.
하지만 상황에 따라 포함될 수도 있다.
플랫폼 Platform
간략 설명: 프로그램 실행 환경
비교 설명: 자전거 주행 환경(일반 취미용, 경주용)
프로그램이 실행되는 환경이며 플랫폼은 플랫폼위에 다른 플랫폼이 존재할 수 있다.
가령, Windows에서 Python으로 개발하고 있으면 이 과정에서 이미 2개의 플랫폼을 사용하고 있는 것입니다.
플랫폼은 같은 영역에도 다양한 목적과 가치로 많이 만들어지고 있으며 모든 플랫폼에서 실행되도록 개발하기는 어렵다.
프로그램의 목적에 맞도록 플랫폼을 선택하는 것이 중요합니다.
[플랫폼 예시]
Windows, Linux, macOS등 O/S
어플을 다운받는 앱스토어, 구글플레이, 원스토어
V8 JavaScript Engine은 JavaScript에게 큰 힘이 되어주고 있는 플랫폼