IT/프로그래밍 용어사전

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

딥 러닝 Deep Learning

다층구조 형태의 신경망을 기반으로 하는 머신 러닝의 한 분야로, 다량의 데이터로부터 높은 수준의 추상화 모델을 구축하고자 하는 기법이며 데이터를 컴퓨터가 처리 가능한 형태인 벡터나 그래프 등으로 표현하고 이를 학습하는 모델을 구축하는 연구를 포함한다.

인공지능AI Artificial Intelligence

컴퓨터가 인간의 지능 활동을 모방할 수 있도록 하는 것을 말하며, 인간의 지능이 할 수 있는 사고·학습·모방·자기 계발 등을 컴퓨터가 할 수 있도록 연구하는 컴퓨터공학 및 정보기술 분야를 포함한다. 인공지능은 1959년에 MIT AI연구소를 설립한 맥카시와 마빈 민스키, 카네기멜론 대학에 인공지능 연구소를 만든 앨런 뉴웰과 허버트 사이먼과 같은 개척자들에 의해 1950년도에 실험학문으로 시작되었다.

프로그램 program

컴퓨터를 실행시키기 위해 일련의 순차적으로 작성된 명령어의 모음으로 프로그램이란 말은 ‘미리 쓴다’라는 라틴어에서 유래된 용어이다.

애플리케이션 application

특정한 업무를 수행하기 위해 고안된 일련의 컴퓨터 프로그램 집합을 말한다.

프로그래머 programmer

컴퓨터 프로그램의 논리나 알고리즘을 설계하고, 코드를 작성하여 테스트하는 사람을 말한다.

소프트웨어 개발자 software developer

컴퓨터에서 사용하는 소프트웨어를 여러 가지 개발도구를 사용하여 만드는 사람을 말한다.

인터프리터 언어 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.js 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 Virtual DOM

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

비교 알고리즘 Diffing Algorithm

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

보일러플레이트 Boilerplate

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

바닐라 JS Vanilla JS

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

오버헤드 Overhead

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

Yarn is a 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)은 자바스크립트를 사용하여 브라우저에서 직접 페이지를 렌더링하는 것을 말한다.

답글 남기기