IT/프로그래밍 용어사전

자주 쓰는 IT/프로그래밍 용어가 궁금하신가요?

인터프리터 언어 interpreted language

고급 언어를 중간 형태로 먼저 번역을 한 다음에 실행하는 언어로 컴파일러를 사용하여 실행하는 것보다는 느리게 실행된다.

컴파일 언어 compiled language

컴파일 언어는 구현체들이 일반적으로 컴파일러이면서 인터프리터가 아닌 프로그래밍 언어를 말한다.

자바스크립트 javascript

자바스크립트는 초기에 웹페이지에 생동감을 불어넣기 위해 만들어진 프로그래밍 언어로 자바스크립트로 작성한 프로그램을 스크립트(script) 라고 한다. 자바스크립트는 브라우저뿐만 아니라 서버에서도 실행할 수 있으며, 이 외에도 V8 등의 자바스크립트 엔진(JavaScript engine)이라 불리는 특별한 프로그램이 들어 있는 모든 디바이스에서도 동작이 가능한 언어이다.

VBA visual basic for applications

Visual Basic for application의 약어로 마이크로소프트의 윈도 오피스 응용 프로그램을 위한 매크로 언어이다.

바이트 코드 byte code

바이트코드는 특정 하드웨어가 아닌 가상 컴퓨터에서 돌아가는 실행 프로그램을 위한 이진 표현법으로 하드웨어가 아닌 소프트웨어에 의해 처리되기 때문에 보통 기계어보다 더 추상적이다.

파이썬 python

C언어를 기반으로 한 오픈소스 고급 프로그래밍 언어로 1991년 귀도 반 로섬에 의해 설계 및 개발된 언어이다.

파이썬 가상 머신 python virtual machine

파이썬 컴파일러는 명령어를 바이트코드 명령문으로 번역하고 이를 하드 디스크의 .pyc 파일에 저장한다. 그리고 파이썬 인터프리터는 .pyc 파일을 번역하여 인터프리터 방식으로 기계어로 번역하는데, 이러한 인터프리터를 파이썬 가상머신이라고 한다.

인터프리터 interpreter

프로그램을 해석하는 방법 중 하나로, 사람이 이해할 수 있는 고급언어로 작성된 코드를 한 단계씩 해석하여 실행시키는 방법을 말한다.

컴파일 compile

고급언어(COBOL, FORTRAN 등 인간이 구분하기 쉬운 언어)로 작성된 프로그램을 기계어로 번역하는 것을 컴파일이라고 한다.

환경 변수 environment variable

시스템의 속성을 기록하고 있는 변수로 OS의 셸 등에 설정되어 있다. 변수의 이름과 의미는 미리 정해져 있기 때문에 환경변수를 읽으면 시스템의 설정 내용을 어느 정도 파악할 수 있다.

변수 variable

값이 특정지어지지 않아 임의의 값을 가질 수 있는 문자를 뜻한다.

상수 constant

변하지 않고 항상 같은 값을 가지는 수를 말한다.

인터렉티브 셸 Interactive Shell

컴퓨터와 상호 작용하는 공간으로 한 마디씩 서로 주고 받는 것처럼 대화한다고 해서 대화형 셸이라고도 하는데, 간단한 코드 테스트의 용도로 사용하며 긴 코드를 작성하는 경우에는 상당히 불편하기 때문에 프로그래밍 언어를 쉽게 작성할 수 있도록 도와주는 텍스트 에디터를 주로 사용한다.

서브라임텍스트 sublimetext

파이썬 API용으로 작성된 클로즈드 소스 소프트웨어로 크로스 플랫폼 소스 코드 편집기로, 수많은 프로그래밍 언어와 마크업 언어를 네이티브로 지원하며 플러그인을 사용하여 기능을 확장할 수 있다.

이클립스 eclipse

IBM에 의해 개발된 통합 개발 환경(IDE)으로 오픈소스이며, 주로 자바 언어로 작성되었다. 컴퓨터 프로그래밍에서 사용되는 통합 개발 환경(IDE) 중 자바 프로그래밍을 위한 IDE로 가장 널리 사용된다.

IDE Integrated Development Environment

IDE는 프로그래밍을 위한 통합 개발 환경으로 에디터, 컴파일러, 디버그 등 프로그래밍에 필요한 툴이 하나의 인터페이스로 통합되어 사용 가능한 개발 환경을 말한다.

IDLE Integrated Development Environment

파이썬을 설치할 때 기본으로 설치되는데, 파이썬 프로그램 작성을 위한 통합 개발 환경을 말한다.

주석 annotation

프로그램이나 문서에 덧붙여진 기술적, 설명적 주해를 의미하며, 프로그램 소스 내에 특정한 패턴으로 삽입 또는 추가되는 기술에 대한 참조 또는 설명의 내용을 포함한다.

연산자 operator

프로그램을 짤 때 변수나 값의 연산을 위해 사용되는 부호를 말한다. 연산자는 수학, 물리학, 공학에서 함께 쓰이는 용어로, 연산 실행에 있어서 여러 식이나 값에 수학적·논리적인 움직임을 지시한다.

비교 연산자 comparing operator

비교 연산자는 크기를 비교할 때 사용하며 결과값은 참(1)과 거짓(0)의 논리 값만을 가지는 연산자이다.

논리 연산자 logical operator

컴퓨터는 논리연산이라는 과정을 통해 상황을 판단하고 명령을 수행하는데 이 논리 연산에 사용되는 기준이 되는 연산자를 말한다.

부울 연산자 boolean operator

논리(logical) 연산자의 다른 말을 말한다.

기수법 Numeral System

임의의 수 0, 1, 2, 3, …, 과 같이 p-1의 p개의 아라비아숫자를 사용하여 표현하는 방법으로 일반적으로 십진법이 사용된다.

정수 Integer

양의 정수와 0, 음의 정수를 통틀어서 부르는 말로 자연수에 +부호를 붙이거나 -부호를 붙이거나 심지어는 0까지도 포함하는 수를 말한다.

보수 Complement

반대로 세어 가는 수를 뜻하는데, 밑수 n의 보수란, 주어진 수치의 각 자리의 값을 n-1에서 뺄셈하고 그 결과의 최하위 자리에 1을 더하여 구하는 수치이다. 10진수 100에서 25는 1에서 25번째의 수이지만, 반대로 100에서 세면 75번째의 수가 된다.

클라이언트 사이드 client-side

프론트엔드라고도 하며 클라이언트(사용자) 측에서 처리하는 것을 말한다. 즉 클라이언트가 입력한것을 수신해서 HTML로 만들어서 크롬과 같은 어플리케이션이 해석하여 표시하는 방식이며, 대표적인 언어로 자바스크립트(Javascript)가 있다.

서버 사이드 server-side

백엔드라고도 하며 서버(제공자) 측에서 처리하는 것을 말한다. 서버 사이드는 클라이언트로 보낼 웹 페이지(HTML, JavaScript 등이 담긴)를 만들며, 다른 중요한 작업들(사용자 유효성, DB 관련 등)을 수행한다. 대표적인 언어로 Java, PHP, Ruby, Python, Node.js 등이 있다.

프론트엔드 front-end

사용자들이 웹사이트에서 보고 상호작용하는 모든 것들이 프론트엔드 개발 분야에 속하는 것으로 프론트엔드 개발은 주로 웹 및 모바일 솔루션의 사용자 인터페이스(UI)와 사용자 경험(UX)을 만드는 데 초점을 맞추고 있다. 슬라이더, 드롭다운(drop-down), 레이아웃, 폰트, 컬러 등 모든 요소들이 프론트엔드 개발을 이루는 부분으로, 시선을 사로잡는 프론트엔드를 만드는 데 있어서는 HTML, CSS, 자바스크립트(Javascript)가 중요한 역할을 한다.

백엔드 back-end

백엔드는 소프트웨어 개발 프로세스에서 서버 측을 담당하는 개발 분야로 백엔드에서는 데이터를 저장하고 관리하며, 웹사이트의 클라이언트(client-side)에서 모든 것이 매끄럽게 작동할 수 있게 한다. 백엔드는 사용자들이 직접 보거나 상호작용을 하는 것은 아니지만, 중요한 소프트웨어 개발의 일부분이며, 백엔드 개발에는 시스템 컴포넌트 작업, API작성, 라이브러리 생성, 데이터베이스 통합 등 다양한 활동이 포함된다.

모듈 module

프로그래밍에서 모듈이란 프로그램을 구성하는 구성요소의 일부로, 개발하는 애플리케이션의 크기가 커지면 확장성과 유지보수 측면에서 파일을 여러 개로 분리하는 시점이 온다. 이때 분리된 각각의 파일을 '모듈'이라고 하며, 보통 클래스 하나 혹은 특정한 목적을 가진 복수의 함수, 메서드, 프로시져 등으로 구성된다.

ES6 ECMA Script 6

ECMA 스크립트(ECMA Script, 또는 ES)란, Ecma International이 ECMA-262 기술 규격에 따라 정의하고 있는 표준화된 스크립트 프로그래밍 언어로 자바스크립트를 표준화하기 위해 만들어졌으며, 액션스크립트와 J스크립트 등 다른 구현체도 포함하고 있다. ECMA스크립트는 웹의 클라이언트 사이드 스크립트로 많이 사용되며 Node.js를 사용한 서버 응용 프로그램 및 서비스에도 점차 많이 쓰이고 있는데, 6판(ES6)이 발표된 2015년부터는 버전이 아닌 해당 연도로 구분하고 있으며, 10판(ES10)인 ES2019 표준에 대한 작업은 2019년 6월에 마무리됐다.

ECMA유럽 컴퓨터 제조업자 협회 European Computer Manufacturer’s Associates

스위스 제네바에 본부를 두고 있으며, 컴퓨터 관계 각종 공업 규격의 표준화에 앞장서고 있는 단체로 ECMA 규격은 ISO에 제안되는 경우가 많은데, 대표적인 예로 웹 브라우저와 XML에 표준으로 채용된 Java Script는 ECMA Script에 근간하고 있다.

AJAX비동기식 자바스크립트 XML Asynchronous Javascript And XML

HTML만으로 어려운 다양한 작업을 웹페이지에서 구현해 이용자가 웹페이지와 자유롭게 상호 작용할 수 있도록 하는 기술로, 별도 프로그램을 설치하거나 웹페이지를 다시 로딩하지 않고도 메뉴 등 화면상의 객체를 자유롭게 움직이고 다룰 수 있으며, 비슷한 기능의 액티브X나 플래시 등에 비해 가볍고 속도가 빠르다.

DHTML dynamic HTML

동적인 작용을 할 수 있는 HTML 문서를 말하는데, 기존의 정적인 웹 페이지에 동적인 기능을 추가하고자 하는 뜻에서 만들어진 HTML 언어이며, 이전 버전의 HTML에 비해 레이아웃 기능이 강화되고, 사용자 상호작용에 좀더 민감한 웹 페이지를 만들 수 있게 해준다.

콘텐츠 전송 네트워크CDN Content Delivery Network

CDN은 Content Delivery Network(콘텐츠 전송 네트워크)의 약자로 사용자의 위치, 콘텐츠 원본 서버, 에지 서버의 위치를 기준으로 콘텐츠(웹페이지, 동영상, 이미지)를 최종 사용자에게 전송할 수 있는 분산 노드로 구성된 네트워크이다. CDN 노드는 콘텐츠를 캐싱할 수 있는 캐시 기능을 갖추고 있으며 최종 사용자와 가까운 위치에서 사용자에게 콘텐츠를 제공할 수 있으며, CDN 제공업체에 의해 여러 지역에 구축되고 여러 ISP(인터넷 서비스 제공자) 네트워크에 걸쳐 배포될 수 있다.

식별자 identifier

식별자(identifier)는 어떠한 값(value)이나 다른 코드의 일부분을 담거나 참조할 수 있는 수단으로 변수, 상수, 함수명 혹은 특정 코드루프에 대한 레이블을 생성 및 지정하기위하여 자료형(data type)이나 자료저장 메커니즘과 함께 사용하거나 혹은 독단적으로 사용하는 텍스트를 말한다.

Node.jsNodejs javascript runtime

Node.js는 자바스크립트 런타임(특정 언어로 만든 프로그램들을 실행할 수 있는 환경)으로 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작을 더 많이 통제할 수 있도록 구현되어 있다.

즉시 실행 함수IIFE Immediately Invoked Function Expression

즉시 실행 함수는 정의되자마자 즉시 실행되는 Javascript 함수를 말하는데, 이는 Self-Executing Anonymous Function으로 알려진 디자인 패턴으로 크게 괄호((), Grouping Operator)로 둘러싸인 익명함수(Anonymous Function)와 즉시 실행 함수를 생성하는 괄호()의 두 부분으로 구성된다.

문서 객체 모델DOM Document Object Model

문서 객체 모델(The Document Object Model, 이하 DOM)은 HTML, XML 문서의 프로그래밍 interface로, DOM은 문서의 구조화된 표현(structured representation)을 제공하며 프로그래밍 언어가 DOM 구조에 접근할 수 있는 방법을 제공하여, 프로그래밍 언어가 문서의 구조, 스타일, 내용 등을 변경할 수 있게 돕는다. DOM은 구조화된 nodes와 property 와 method 를 갖고 있는 objects로 문서를 표현하는데, 이들은 웹 페이지를 스크립트 또는 프로그래밍 언어에서 사용될 수 있게 연결시켜주는 역할을 담당한다.

가상 DOM가상DOM Virtual DOM

가상 DOM은 말 그대로 가상으로 만들어진 돔(DOM)을 의미하는데, 가상이 아닌 돔 API를 계속 호출하면 리페인팅, 리플로우로 인해 렌더링이 계속 발생하고, 성능이 떨어지게 되는 문제가 있기 때문에, Vue 및 React와 같은 프레임워크에서는 가상돔을 사용하여 바뀐 부분만 변화시키는 방식을 사용한다.

비교 알고리즘 Diffing Algorithm

DOM에서 요소 하나하나를 바꾸다보면 수십만번의 비교가 이루어져야하는데(React에서 1000개의 요소를 바꾸려면 10억 번의 비교가 필요), 이 작업은 상당히 비싼 방식이기 때문에, React에서는 요소에는 두 개의 트리가 나온다는 것과 개발자들이 key 속성을 통해 바뀌었다는 것을 명시할 수 있다는 가정을 통해 해당 문제를 해결하는 알고리즘을 구현, 이를 Diffing 알고리즘(Diffing Algorithm)이라고 한다.

보일러플레이트 Boilerplate

컴퓨터 프로그래밍에서 최소한의 변경으로 여러곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드를 말한다.

바닐라 JS바닐라JS Vanilla JS

프레임워크 또는 라이브러리가 적용되지 않은 순수한 자바스크립트를 의미하는데, 바닐라(Vanilla)는 향신료 중 하나로 스페인어 'Vainilla'에서 나왔는데, 작은 꼬투리, 콩을 뜻하는 말이다. 바닐라 JS는 '바닐라'라는 단어에서 유추할 수 있듯이 '핵심, 근본이 되는' 이라는 의미를 비유적으로 표현한 것으로 추정된다.

오버헤드 Overhead

오버헤드란 프로그램의 실행흐름에서 나타나는 현상 중 하나로 프로그램의 실행흐름 도중에 다른 위치에 있는 코드를 실행시키는 경우, 추가적인 시간과 메모리, 자원 등이 사용되는 현상을 말한다. 이 현상은 특히 프로그래밍 시에 외부 함수를 사용하는 경우에 주로 확인된다.

Yarn yarn package manager

java의 gradle, php의 composer와 같이 의존성 관리를 위한 자바스크립트 패키지 매너저로 npm 보다 속다와 안전성 면에서 조금 더 우수한 것으로 알려져있다.

NPM Node Package Manager

NPM은 전 세계의 자바스크립트 라이브러리를 저장하고 있는 공개 저장소, 즉 공개 레지스트리이며 많은 오픈 소스 개발자가 NPM을 사용하여 패키지를 공유하거나 사용하고 있고, 많은 조직에서 NPM을 사용하여 개발 프로젝트를 관리하고 있다.

CLI command line interface

명령 줄 인터페이스(CLI, Command line interface) 또는 명령어 인터페이스는 텍스트 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻하는데, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다.

모노레포 mono-repo

두 개 이상의 프로젝트 코드를 하나의 레포지토리에서 관리하는 기법으로, 여러 패키지에서 하나의 설정을 공유하거나, 코드 재사용을 위한 쉬운 의존성 관리 등의 장점을 가진다.

MVVM Model-View-ViewModel

Model, View, ViewModel로 UI와 비지니스 로직을 분리하는 것을 목표로 하는 소프트웨어 아키텍쳐로, 소프트웨어 아키텍처에는 MVC, MVP, MVVM이 가장 많이 사용되고 있으며, 이중에서 MVVM이 가장 진보된 형태라고 할 수 있다.

렉시컬 lexical

모듈 A의 문장들이 원시 프로그램 리스트 상에서 모듈 B의 문장 내에 위치하는 경우 모듈 A는 모듈 B에 사전식으로(lexically) 포함되는데, 렉시컬(lexical)은 이렇게 프로그램 문장들이 쓰여진 순서와 관련된 용어를 가리킨다.

리팩토링 refactoring

리팩토링이란 결과의 변경 없이 코드의 구조를 재조직하는 것을 뜻하며, 주로 가독성을 높이고 유지보수를 편하게 하기 위해 사용된다. 버그를 없애거나 새로운 기능을 추가하는 것과는 다른 개념이다.

관심사 분리 separation of concerns

컴퓨터 과학에서 관심사 분리(separation of concerns, SoC)는 컴퓨터 프로그램을 구별된 부분으로 분리시키는 디자인 원칙으로 각 부문은 개개의 관심사를 해결하는데, 관심사란 컴퓨터 프로그램 코드에 영향을 미치는 정보의 집합을 말한다.

문법적 설탕 syntax sugar

사람이 이해하고 표현하기 쉽게 디자인된 프로그래밍 언어 문법으로, 프로그래밍 언어를 쉽게 사용할 수 있도록 도와주는 문법을 말한다. 문법적 설탕은 일반적으로 기존 문법에 비해 더욱 간결하고 명확하게 표현이 가능한 특징이 있다.

정적 사이트 생성SSG Static Site Generation

정적 사이트 생성(SSG)은 raw 데이터와 템플릿 세트를 바탕으로 완전히 정적인 HTML 웹 사이트를 생성하는 방법을 말한다.

서버 사이드 렌더링SSR Server-Side Rendering

서버 사이드 렌더링(SSR)은 브라우저에서 웹 페이지를 렌더링하는 대신 서버에서 웹 페이지를 생성하는 방법을 말한다.

점진적 정적 재생성ISR Incremental Static Regeneration

점진적 정적 재생성(ISR)은 전체 사이트를 재빌드할 필요 없이 페이지별로 정적 생성을 사용할 수 있는 방법으로, 정적 사이트의 이점을 유지하면서 수많은 페이지로 확장할 수 있다.

클라이언트 사이드 렌더링CSR Client-Side Rendering

클라이언트 사이드 렌더링(CSR)은 자바스크립트를 사용하여 브라우저에서 직접 페이지를 렌더링하는 것을 말한다.

React reactjs.org

React.js는 사용자 인터페이스를 구축하기 위한 무료 오픈 소스 프론트엔드 자바스크립트 라이브러리로, 사용자 인터페이스를 만들기 위해 사용된다.

Svelte svelte.dev

Svelte는 Rich Harris가 제작한 새로운 접근 방식을 가지는 프론트엔드 프레임워크이다.

Vue vuejs.org

Vue.js는 Angular가 가지고 있는 데이터 바인딩의 장점과 React가 가지고 있는 Virtual DOM의 장점을 모두 수용하여 개발된 프론트엔드 프레임워크이다.

Solid solidjs.com

2021년에 출시된 프론트엔드 프레임워크로 React와 거의 유사한 문법을 가지면서, 버츄얼돔을 쓰지 않아 Svelte 만큼의 성능이 나오는 것으로 알려져 있다.

Astro astro.build

Astro는 아일랜드 아키텍처를 활용한 멀티 프레임워크 정적 사이트 빌더(SSG)이다.

Marko markojs.com

마르코(Marko)는 이베이의 후원을 받아 개발되고 있는데, 이베이는 자체 전자상거래 사이트에 이 프레임워크를 사용 중이다.

Fresh fresh.deno.dev

Fresh는 JS, TS 개발자를 위한 모던 웹 프레임워크로, Fresh는 높은 질, 성능을 가지고 웹 어플리케이션을 만들도록 디자인되었다.

Next nextjs.org

Next.js는 React의 SSR(Server Side Rendering)을 쉽게 구현할 수 있게 도와주는 프레임워크다.

Remix remix.run

Remix는 사용자 인터페이스에 집중하고 웹 표준으로 빠르고, 탄력적인 사용자 경험을 제공하는 풀스택 웹 프레임워크이다.

Qwik qwik.builder.io

퀵(Qwik)은 리액티브 UI에 대한 과감한 발상의 전환으로 개발된 웹 프레임워크로, 핵심 아이디어는 HTML과 함께 최소한의 자바스크립트, 필요에 따라 상호작용성을 구현하는데 충분한 만큼의 자바스크립트만을 제공하도록 프레임워크를 새로 구축하는 것이다.

CGI common gateway interface

서버와 응용프로그램 사이에 데이터를 주고 받기 위한 표준화된 방법 또는 규약들을 말하며, 외부 프로그램을 실행하는 표준 방식으로 자리잡았지만, 서버에서 많은 프로그램을 수행하기 때문에 서버에 무리를 주는 단점도 가지고 있다.

Perl practical extraction and report language

프로그래밍 언어의 일종으로 텍스트 처리를 위한 스크립트 언어이며, CGI 스크립트를 쓰는데 사용되기도 하는데, 이름은 Practical Extraction and Reporting Language(실용적인 데이터 취득 및 리포트 작성 언어)의 약자이다.

PHP Hypertext Preprocessor

HTML에 포함되어 동작하는 스크립팅 언어로 별도의 실행 파일을 만들 필요 없이 HTML 문서 안에 직접 포함시켜 사용한다. C, 자바, 펄 언어 등의 많은 문장 형식을 채용하고 있어 동적인 웹 문서를 빠르고 쉽게 작성할 수 있다.

HTML Hyper Text Markup Language

웹 문서를 만들기 위해 사용하는 기본적인 웹 언어의 한 종류로, 가장 단순한 형태의 웹 언어이다. 웹 서버는 HTML 문서를 저장하고, 클라이언트가 특정 HTML 페이지를 요청하면 해당 HTML 문서를 클라이언트로 전송하게 되며, 클라이언트는 이 문서를 해석하여 웹 브라우저에 표현한다.

jQuery제이쿼리 jquery.com

존 레식(John Resig)에 의해 2006년뉴욕 시 바캠프(Barcamp NYC)에서 공식적으로 소개되었으며, 웹브라우저에 포함되어 있는 클라이언트 사이드 스크립트 언어(Javascript)를 단순화하도록 설계된 라이브러리로서, 다양한 브라우저에 대한 호환성을 가진다.

Prototype프로토타입 prototypejs.org

프로토타입은 2005년 2월에 Sam Stephenson이 Ruby on Rails의 Ajax를 지원하기 위해 만든 JavaScript 라이브러리로, 독립 실행형으로 배포되지만 Ruby on Rails, scr과 같은 대규모 프로젝트의 일부로도 배포된다.

API application programming interface

운영체제와 응용프로그램 사이의 통신에 사용되는 언어나 메시지 형식을 말하며, 프로그램 내에서 실행을 위해 특정 서브루틴에 연결을 제공하는 함수를 호출하는 것으로 구현된다.

MVC Model-View-Controller

소프트웨어 설계에서 세 가지 구성 요소인 모델(Model), 뷰(View), 컨트롤러(Controller)를 이용한 설계 방식으로 코드의 재사용성을 향상시킬 수 있는데, 모델은 소프트웨어 내에서 데이터를, 뷰는 사용자에게 보이는 화면 내용을 의미하며, 이러한 모델과 뷰의 상호 작용을 관리하는 것이 컨트롤러이다.

Git git-scm.com

git은 형상 관리 또는 버전 관리를 위해 사용하는 시스템으로, 어떤 파일 또는 시스템을 개발할 때, 해당 파일 또는 시스템에 대한 개발 상황을 버전별로 기록하여 git을 통해 버전을 관리하면서 필요할 때 과거의 버전으로 돌아가 코드를 수정하거나 가져올 수 있다.

Jamstack잼스택 javascript-api-markup stack

Jamstack은 Javascript, API, Markup Stack의 약자로 2015년 Netlify의 CEO인 Mathias Biilmann에 의해 처음 만들어졌다. 서버없이 배포 운영되는 모던 웹 개발 구조로, 높은 안정성과 빠른 성능, 확장성, 낮은 비용, 쉬운 자동화 등이 장점이다.

MPA Multi Page Application

새로운 페이지를 요청할 때마다 새로운 리소스가 다운로드되어 전체 페이지를 렌더링하는 방식으로 서버로부터 완성된 형태의 HTML 파일을 전달받기 때문에 검색 엔진 최적화에는 유리하지만, 사용자가 페이지를 넘어갈 때마다 자동으로 새로고침이 되어 화면의 깜빡임이 발생하며, 서버 쪽을 담당하는 백엔드와 잘 결합되어야 하고, 클라이언트와 서버 모두 프레임 워크를 사용해야 하기 때문에 웹페이지 개발이 복잡해진다.

SPA Single Page Application

현재 페이지를 동적으로 다시 작성하는 방식으로, MPA와 달리 변경되는 부분만 갱신하기 때문에 효율적인 개발이 가능하고, 프론트엔드와 백엔드의 역할을 정확하게 분리할 수 있다. 또한 페이지에서 변경된 부분만 렌더링하고, 페이지 갱신에 필요한 정보만 받기 때문에 화면전환이 빠르고, 트래픽이 줄어들어 앱처럼 자연스러운 UX를 구현할 수 있는 반면, 웹 어플리케이션 구동에 필요한 리소스 파일을 모두 받아야 하기 때문에 처음 접속 시에는 구동 속도가 느릴 수 있다.

CSS in JS css-in-js

단어 그대로 자바스크립트 코드에서 CSS를 작성하는 방식을 말하며, 2014년에 페이스북 개발자인 Christopher Chedeau aka Vjeux가 처음 소개했으며, CSS-in-JS로 글로벌 공간에 선언된 이름의 명명 규칙 문제, CSS간의 의존 관계 관리, 미사용 코드 검출, 클래스 이름 최소화, JS와 CSS의 상태 공유, CSS 로드 우선 순위 이슈, CSS와 JS의 상속에 따른 격리 필요 이슈 등을 해결할 수 있다고 주장했다.

코드 스플리팅 Code Splitting

자바스크립트로 개발하게 되면 기본적으로 하나의 파일에 모든 로직들이 들어가게 되는데, SPA의 경우 프로젝트의 규모가 커질수록 js 파일의 용량이 커지는 문제가 생긴다. 이 경우 인터넷이 느린 환경에서는 페이지 로딩 속도가 느려지는 원인이 되기 때문에, 코드 스플리팅을 통해 지금 당장 필요한 코드가 아닌 경우 따로 분리시켜 두고 나중에 필요할 때 불러오는 방식으로 페이지의 로딩 속도를 개선할 수 있다.

OOP객체 지향 프로그래밍 object-oriented programming

OOP(객체 지향 프로그래밍)이란 문제를 여러 개의 객체 단위로 나눠 작업하는 방식으로, 객체들이 서로 유기적으로 상호작용하는 프로그래밍 이론이다. Java와 C++이 대표적인 객체 지향 프로그래밍 언어이다.

메모이제이션 memoization

컴퓨터 프로그램이 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에 저장함으로써 동일한 계산의 반복 수행을 제거하여 프로그램 실행 속도를 빠르게 하는 기술로 동적 계획법의 핵심이 되는 기술이다.

아일랜드 아키텍처 The Island Architecture

아일랜드 아키텍쳐를 사용하면 서버 렌더링되는 웹 앱 내에서 작은 단위의 인터렉트에 집중한 분리된 코드 조각으로 점진적으로 향상되는 HTML을 만들어낸다. 단일 앱이 전체 페이지 렌더링을 컨트롤하는 대신, 다수의 엔트리 포인트가 존재하며, 상호작용을 위한 스크립트들은 독립적으로 클라이언트에 전송되고 hydrate되고, 그 외 나머지 페이지들은 정적 HTML로 렌더링하게 된다.

정규표현식정규식 Regular Expression

정규표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어를 말하며, 주로 Programming Language나 Text Editor 등에서 문자열의 검색과 치환을 위한 용도로 사용된다. 일반적으로 문자열의 특정한 조건을 표현할 때 정규표현식을 이용하면 매우 간단하게 표현 할 수 있지만 코드가 간단한 만큼 가독성이 떨어져 표현식에 익숙하지 않으면 이해하기 어렵다는 단점이 있으며, 크게 나누면 표준으로 인정된 POSIX의 정규 표현식과 POSIX에서 문법을 매우 확장한 Perl 방식이 있다.

답글 남기기