네트워크란 노드(node)와 링크(link)가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미한다.여기서 노드란 서버, 라우터, 스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미한다. 처리량과 지연시간네트워크를 구축할 때 '좋은' 네트워크로 만드는 것이 중요하다. 좋은 네트워크란 많은 처리량을 처리할 수 있으며 지연시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크를 말한다. 처리량처리량(throughput)이란 링크를 통해 전달되는 단위 시간당 데이터양을 말한다.단위로는 bps(bits per second)를 쓴다. 초당 전송 또는 수신되는 비트 수라는 의미이다.처리량은 사용자들이 많이 접속할 때마다 커지는 트래픽, 네트워크 장치 간의 대역폭, 네트워크 중간에 발생하는 에러,..
절차형 프로그래밍절차형 프로그래밍은 로직이 수행되어야 할 연속적인 계산 과정으로 이루어져 있다. 일이 진행되는 방식으로 그저 코드를 구현하기만 하면 되기 때문에 코드의 가독성이 좋으며 실행 속도가 빠르다. 그렇기 때문에 계산이 많은 작업 등에 쓰인다. 대표적으로 포트란(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..
MVVM 패턴MVVM 패턴은 MVC의 C에 해당하는 컨트롤러가 뷰모델(view model)로 바뀐 패턴이다. 여기서 뷰모델은 뷰를 더 추상화한 계층이며, MVVM 패턴은 MVC 패턴과는 다르게 커맨드와 데이터 바인딩을 가지는 것이 특징이다. 뷰와 뷰모델 사이의 양방향 데이터 바인딩을 지원하며 UI를 별도의 코드 수정 없이 재사용할 수 있고 단위 테스팅하기 쉽다는 장점이 있다. MVVM 패턴의 예: 뷰MVVM 패턴을 가진 대표적인 프레임워크로는 뷰(Vue.js)가 있다. Vue.js는 반응형이 특징인 프런트엔드 프레임워크이다. 예를 들어 watch와 computed 등으로 쉽게 반응형적인 값들을 구축할 수 있다.함수를 사용하지 않고 값 대입만으로도 변수가 변경되며 양방향 바인딩, html을 토대로 컴포넌..