3-1) 프로그래밍 패러다임
3-2) 백엔드 개발 언어
3-3) 백엔드 프레임워크
3-4) 백엔드 개발 언어와 프레임워크 선택 방법
먼저 프로그래밍 패러다임이란, 프로그래밍에 있어서 문제를 해결하는 데 사용하는 기본적인
철학
이나접근방식
을 말한다.
다양한 방법론들이 나온 가운데, 대표적으로는 아래 4가지가 있다.
명령형 프로그래밍
절차지향 프로그래밍
: 위에서 아래로 흐르는 것 처럼 모든 코드가 정해진 순서대로 실행된다.
- 장점 : 실행속도가 빠르다.
- 단점 : 유지보수 , 디버깅이 어렵다. (10만 줄짜리 코드에 새로운 기능을 추가하려면 하나씩 추적해야함..!)
- 언어 : C
객체지향 프로그래밍
: 실세계를 모델링하여 프로그램을 개발하는 방법론. 사물의 본질을 속성과 기능으로 정의한다.
- 장점 : 재사용성 / 생산성 향상 / 유지보수 쉬움 / 자연적 모델링
- 단점 : 개발속도 더딤 / 실행속도 느림 / 코딩난이도 상승
- 언어 : JAVA / Python / C++ / C# 등
함수형 프로그래밍
: 요즘 하드웨어의 발전에 따라, 떠오르는 방법론이다.
주요 특징은 크게 아래 4가지다.
추상화
: 공통적인 속성과 기능을 추출하여 이름을 붙이는 과정이다.캡슐화
: 속성과 기능을 하나의 캡슐로 묶는 것을 의미하며, 외부로의 노출을 제어하기 위함이다.
즉 필요한 인터페이스만 노출시키는 것을 의미한다.(정보 은닉)상속
: 기존 상위 클래스의 속성과 기능을 가져다가 하위 클래스에서 재사용하는 것을 의미한다.다형성
: 상속과 연관이 있는 개념으로 한 객체가 다른 여러형태(객체)로 재구성 되는 것을 말한다.
소스 코드를 기계어로 변환하여 실행하는 방식에는 인터프리터, 컴파일 2가지 방식이 존재한다.
인터프리터 방식
은 소스코드를 한 줄씩 읽고 그 즉시 기계어로 변환하여 실행하고,
컴파일 방식
은 소스 코드를 한꺼번에 읽고 한번에 변환시켜 실행파일을 따로 저장해서 실행한다.
크게 4가지가 특징이 될 수 있다.
1. 자바 가상 머신인 JVM을 통해서 실행된다. -> 다양한 운영체제 환경에서 실행가능하다.
2. 대부분의 데이터를 객체로 구성한다.
3. 모든 메모리의 접근을 자바 시스템이 관리하고 제한한다. -> 가바지컬렉션
4. 멀티스레드를 쉽게 구현 가능하다.
먼저 라이브러리는 개발하는데 필요한 기능을 미리 구현해놓은 코드의 모음이라 볼 수 있으며,
프레임워크는 이름그대로 뼈대를 의미하며, 개발에 필요한 뼈대와 같은 일정한 형태와 기능을 제공하는 틀을 의미한다.
둘이 비슷해보이지만 프로그래밍 작성 방식에 차이를 두고있다.
- 라이브러리 : 개발자가 코드의 흐름을 직접 제어 가능하다. (개발자가 직접 틀을 구성하고 필요한 기능 호출)
- 프레임워크 : 개발자가 주어진 코드의 흐름속에서 프로그래밍 가능하다. (이미 짜여진 틀 안에서 활동)
Express.js
: JavaScript+node.jsNestJS
: TypeScriptSpring / Spring Boot
: JAVADjango / Flask / FastAPI
: Python
IDE(Integrated Development Environment)는 통합 개발 환경을 뜻하며 IDE는 소스 코드 편집기를 내포하고 있다. 즉 IDE에는
소스 코드 편집기
/빌드 자동화 도구
/디버거
등이 포함되어있다.