서버 사이드 렌더링 (SSR: Server Side Rendering)작동 방식서버에서 HTML을 완전히 생성한 뒤, 클라이언트(브라우저)에 전달합니다.브라우저는 서버에서 받은 완성된 HTML을 그대로 화면에 렌더링합니다.특징요청마다 서버에서 HTML을 생성하기 때문에 페이지 로딩 시 서버와의 통신이 중요합니다.서버가 모든 렌더링 작업을 처리하므로 클라이언트의 부담이 적습니다.장점빠른 초기 화면 표시: 사용자는 HTML이 완성된 상태로 받아보기 때문에 페이지 로딩 속도가 빠르게 느껴집니다.SEO(검색 엔진 최적화)에 유리: 검색 엔진이 HTML을 바로 크롤링할 수 있어 검색 노출이 용이합니다.구형 브라우저 호환성: 자바스크립트 처리 능력이 약한 브라우저에서도 동작이 안정적입니다.단점서버 부하: 모든 요청..
절차형 프로그래밍절차형 프로그래밍은 로직이 수행되어야 할 연속적인 계산 과정으로 이루어져 있다. 일이 진행되는 방식으로 그저 코드를 구현하기만 하면 되기 때문에 코드의 가독성이 좋으며 실행 속도가 빠르다. 그렇기 때문에 계산이 많은 작업 등에 쓰인다. 대표적으로 포트란(fortran)을 이용한 대기 과한 관련 연산 작업, 머신 러닝의 배치 작업이 있다. 단점으로는 모듈화하기가 어렵고 유지 보수성이 떨어진다는 점이 있다. 예를 들어 자연수로 이루어진 배열에서 최대값을 찾으라고 한다면 다음과 가팅 로직을 구성한다.const ret = [1, 2, 3, 4, 5, 11, 12]let a = 0for (let i = 0; i
객체지향 프로그래밍객체지향 프로그래밍(OOP, Object-Oriented Programming)은 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식을 말한다. 설계에 많은 시간이 소요되며 처리 속도가 다른 프로그래밍 패러다임에 비해 상대적으로 느리다. 예를들어 자연수로 이루어진 배열에서 최댓값을 찾으라고 한다면 다음과 같이 로직을 구성한다.const ret = [1, 2, 3, 4, 5, 11, 12]class List { constructor(list) { this.list = list this.mx = list.reduce((max, num) => num > max ? num : max, 0) } get..
선언형과 함수형 프로그래밍선언형 프로그래밍이란 '무엇을' 풀어내는가에 집중하는 패러다임이며, "프로그램은 함수로 이루어진 것이다." 라는 명제가 담겨있는 패러다임이기도 하다. 함수형 프로그래밍은 선언형 패러다임의 일종이다. 지금부터 함수형 프로그래밍에 대해 알아보게보겠다. 예를 들어 자연수로 이루어진 배열에서 최댓값을 찾으라고 한다면 다음과 같이 로직을 구성한다const ret = [1, 2, 3, 4, 5, 11, 12].reduce((max, num) => num > max ? num : max, 0)console.log(ret) // 12 위 코드에서 reduce()는 '배열'만 받아서 누적한 결과값을 반환하는 순수 함수이다.함수형 프로그래밍은 이와 같은 작은 '순수 함수'들을 블록처럼 쌓아 로직을..
프로그래밍 패러다임프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 예를들어 객체지향 프로그래밍은 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 하는 반면에, 함수형 프로그래밍은 상태값을 지니지 않는 함수 값들의 연속으로 생각할 수 있게 해준다. 어떤 언어는 특정한 패러다임을 지원하기도 하는데, jdk 1.8 이전의 자바는 객체지향 프로그래밍을 지원하는 반면에, 하스켈은 함수형 프로그래밍을 지원한다. 여러 패러다임을 지원하는 언어로는 C++, 파이썬, 자바스크립트가 있으며 자바의 경우 jdk 1.8부터 함수형 프로그래밍 패러다임을 지원하기 위해 람다식, 생성자 레퍼런스, 메서드 레퍼런스를 도입했고 선언형 프로그래밍을 위해 스트림(st..