프로그래밍이란?
"알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술"
기계어
- CPU가 직접 이해할 수 있는 비트 단위로 쓰인 컴퓨터 언어
저수준 언어(Low-level language)
- 컴퓨터에 보다 가까운 언어
- 기계어, 어셈블리어
고수준 언어
- C, C++ 등 보다 사람이 이해하기 용이한 언어
컴파일(Compile)
- 사람이 이해 가능한 프로그래밍 언어(C, C++)를 기계어로 변환하는 것
컴파일 언어
- 실행을 위해 컴파일이 필요한 언어
- C, C++, Java 등
인터프리터 언어(Interpreter language)
- 크롬 브라우저는 내장 번역장치가 있어 사람이 컴파일을 하지 않아도 됨
- 사람이 컴파일 명령을 하지 않아도 실행되는 환경에서 쓰이는 언어
- Javascript, Python 등
서버(Server)
- 원격지에 위치한 물리적 컴퓨터
- 서버 자체 + 서버 프로그램 SW
- 유저가 다시 시작할 수 없으므로 무중단 서비스를 구현하는 것이 중요
백엔드(Back-end)
- 데이터베이스에 담겨있는 정보를 불러오는 기능 구현
- 사진, 동영상 등 저장된 정보를 불러오는 기능 구현
- 회원가입 등 화면에서 입력된 정보를 데이터베이스에 저장하거나 트래픽을 처리하는 등의 작업 진행
프론트엔드(Front-end)
- 홈페이지, 모바일 앱, 게임 등 실제 유저가 접하는 화면을 구현하는 것
클라이언트(Client)
- 프론트엔드를 뜻하기도 함
- 핸드폰, PC 등 프론트엔드 결과물이 보여지는 단말기를 의미하기도 함
데이터가공
- 수집된 데이터를 기계학습이 가능하도록 가공하는 것
- 이미지 유사도를 분석하기 위해 각 픽셀의 RGB를 추출하거나 벡터화 하는 것 등
AI모델링
- 머신러닝, 딥러닝 등 AI의 방법을 활용해 결과를 예측하는 알고리즘 구현
프레임워크
- 일반적으로 사용되는 기능들을 재사용, 반복사용 가능하게 구현해 놓은 것
Javascript가 실행되는 환경
1) NodeJS
2) Browser
NodeJS 설치
Visual Studio Code(에디터) 설치
https://code.visualstudio.com/
NodeJS란?
- JS V8엔진 : Google이 개발한 Javascript 컴파일러
- NodeJS = Javascript runtime : JS 앱을 만들고 실행할 수 있도록 제공된 환경
- JS를 웹브라우저 바깥에서도 사용할 수 있게 해줌. 기존 홈페이지 개발에만 사용되던 JS를 서버나 모바일앱 개발 등에서 활용 가능해짐. JS 한 가지 언어로 서버, 웹페이지, 모바일앱 등 다양한 적용처에 활용 가능해짐(각 언어별 개발자가 불필요해짐)
NodeJS 개발 사례
- Netflix : 기존 Java 기반 서버에서 NodeJS 기반 서버로 이전하는 과정에서 웹사이트의 퍼포먼스가 상승. 서버수 75% 감소
- Trello : 이벤트드리븐, 논블락킹
- Paypal
- Uber
NodeJS 장점
- 앱 퍼포먼스 우수
- 생산성
- 방대한 NPM 생태계 https://www.npmjs.com/