본문 바로가기

카테고리 없음

(번역) 소프트웨어 개발 용어집: Node.js와 그 외의 개발 커뮤니티에서 자주 사용되는 용어들

소프트웨어 개발을 하다 보면 다양한 약어와 전문 용어를 접하게 됩니다. 최근 node.js 오픈소스에 기여하다보니 다양한 약어를 접하게 되었는데, 공식 docs 에 glossary.md 용어집 마크다운이 있어 해당 내용을 옮겨 보았습니다.

 

A

  • ABI (Application Binary Interface): 애플리케이션 바이너리 인터페이스는 두 바이너리 프로그램 모듈 간의 인터페이스를 정의합니다. ABI는 함수 호출 규약, 데이터 형식, 시스템 호출 인터페이스 등을 포함하며, 서로 다른 소프트웨어 컴포넌트가 상호작용할 수 있도록 합니다.
  • AFAICT (As Far As I Can Tell): 내가 아는 한. 주로 온라인 커뮤니티나 메신저에서 자신이 알고 있는 정보의 정확성을 표현할 때 사용됩니다.
  • AFAIK (As Far As I Know): 내가 알기로는. 사용자가 자신이 알고 있는 정보에 대해 확신하지 않을 때 사용합니다.
  • API (Application Programming Interface): 애플리케이션 프로그래밍 인터페이스는 서로 다른 소프트웨어 애플리케이션 간의 통신을 가능하게 하는 규칙과 프로토콜의 집합입니다. API는 다양한 시스템 간의 통합을 가능하게 하며, 개발자가 특정 기능을 쉽게 사용할 수 있도록 합니다.
  • ASAP (As Soon As Possible): 가능한 한 빨리. 주로 업무나 프로젝트에서 긴급한 작업의 우선 순위를 나타낼 때 사용됩니다.

B

  • BE (Big Endian): 빅 엔디언은 가장 큰 비트가 먼저 오는 바이트 순서입니다. 예를 들어, 32비트 정수 0x12345678은 빅 엔디언 시스템에서 0x12 0x34 0x56 0x78로 저장됩니다. 이는 리틀 엔디언의 반대입니다.
  • Bootstrap: 부트스트랩은 Node.js 프로세스 시작 초기 단계를 의미합니다. 이 단계에서는 실행 환경을 설정하고 내부 모듈을 로드하여 애플리케이션의 실행 준비를 합니다.

C

  • CI (Continuous Integration): 지속적인 통합은 코드 변경 사항을 자주 공유 저장소에 병합하는 개발 관행입니다. CI는 자동화된 테스트와 빌드를 통해 통합 문제를 조기에 발견하고, 개발 속도를 향상시키며, 소프트웨어 품질을 높이는 데 도움을 줍니다.
  • CITGM (Canary In The Gold Mine): 금광의 카나리아는 인기 있는 npm 패키지로 코드 변경을 테스트하는 스모크 테스트입니다. 이를 통해 새로운 변경 사항이 중요한 패키지와의 호환성을 깨지 않는지 확인합니다.
  • CJS (CommonJS): CommonJS는 자바스크립트 모듈에 대한 표준이며, 대부분의 경우 CommonJS 모듈을 의미합니다. CommonJS 모듈은 require() 함수와 module.exports 객체를 사용하여 모듈을 가져오고 내보냅니다.
  • CLDR (Common Locale Data Repository): 공통 로케일 데이터 저장소는 소프트웨어 엔지니어링에 사용되는 로케일 데이터를 저장하는 저장소입니다. CLDR은 날짜, 시간, 숫자 형식 및 언어 번역을 포함한 다양한 국제화 데이터를 제공합니다.
  • CLI (Command Line Interface): 명령 줄 인터페이스는 텍스트 명령을 사용하여 컴퓨터 프로그램과 상호 작용하는 방법입니다. CLI는 그래픽 사용자 인터페이스(GUI)와 달리 명령어를 직접 입력하여 프로그램을 제어합니다.
  • Code cache: 코드 캐시는 컴파일된 자바스크립트 코드와 그 메타데이터를 저장하는 바이트 청크입니다. 이는 재컴파일 시간을 줄이고 애플리케이션의 성능을 향상시키는 데 사용됩니다.
  • CVE (Common Vulnerabilities and Exposures): 공통 취약점 및 노출은 보고된 보안 취약점을 유지 관리하는 데이터베이스입니다. CVE 시스템은 각 보안 취약점에 고유한 식별자를 부여하여 보안 문제를 추적하고 관리하기 쉽게 만듭니다.

D

  • Deps (Dependencies): 의존성은 이 프로젝트가 의존하는 상위 프로젝트를 의미합니다. Node.js 프로젝트에서는 package.json 파일을 통해 의존성을 관리하며, 이는 애플리케이션이 제대로 작동하기 위해 필요한 외부 라이브러리나 패키지를 포함합니다.
  • DOM (Document Object Model): 문서 객체 모델은 웹 문서용 프로그래밍 인터페이스입니다. DOM은 문서의 구조를 객체 트리로 표현하여 프로그래머가 웹 페이지의 내용과 구조를 동적으로 조작할 수 있게 합니다. 이를 통해 자바스크립트를 사용하여 웹 페이지의 요소를 추가, 삭제 또는 수정할 수 있습니다.

E

  • ECMA (Ecma International): Ecma International은 국제 표준을 개발하고 발표하는 비영리 표준 조직으로, ECMA-262를 포함합니다. ECMA는 정보와 통신 기술(ITC) 분야의 표준을 개발합니다.
  • ECMA-262: ECMAScript를 위한 Ecma의 사양 문서로, TC39에 의해 유지 및 업데이트됩니다. ECMAScript는 자바스크립트의 표준 사양입니다.
  • ECMAScript: ECMAScript는 자바스크립트를 포함한 스크립팅 언어를 위한 표준입니다. ECMAScript 사양은 언어의 문법, 키워드, 데이터 타입 등을 정의합니다.
  • EOF (End-of-File): 파일의 끝을 나타내며, 파일 또는 스트림의 끝을 표시하는 데 사용됩니다. 파일을 읽을 때 EOF는 더 이상 읽을 데이터가 없음을 나타냅니다.
  • EOL (End-of-Life): 프로젝트 문서 내에서는 수명 종료를, 프로그램 내에서는 줄의 끝을 나타냅니다. 수명 종료는 특정 소프트웨어 버전에 대한 지원이 종료되는 시점을 의미합니다.
  • ESM (ECMAScript Module): ECMAScript 모듈은 ECMA-262 모듈 시스템의 구현입니다. ESM은 import 및 export 구문을 사용하여 모듈을 가져오고 내보내며, 이는 모듈 간의 의존성을 명확히 하고 코드의 재사용성을 높입니다.
  • ETW (Event Tracing for Windows): Windows 이벤트 추적은 Windows 시스템에서 이벤트를 추적하는 방법을 제공합니다. ETW는 성능 모니터링, 디버깅 및 로깅에 사용됩니다.

F

  • FFDC (First Failure Data Capture): 최초 오류 데이터 캡처는 프로그램 오류 시 기본적으로 생성되는 로그, 추적 및 덤프입니다. FFDC는 문제의 원인을 신속히 분석하고 해결하는 데 도움을 줍니다.
  • FIPS (Federal Information Processing Standards): 연방 정보 처리 표준은 비군사 정부 기관 및 정부 계약자가 사용하는 컴퓨터 시스템을 위한 표준 세트입니다. FIPS는 보안 및 상호 운용성을 위해 중요한 기술 표준을 제공합니다.
  • FS (File System): 파일 시스템은 데이터를 저장하고 관리하는 방법을 정의합니다. Node.js에서 fs 모듈은 파일 시스템 작업을 위한 API를 제공합니다.

G

  • Godbolt: 컴파일러 익스플로러는 웹 브라우저에서 대화형으로 컴파일러를 실행하는 도구입니다. 이를 통해 다양한 컴파일러와 옵션을 사용하여 코드를 컴파일하고, 생성된 어셈블리 코드를 비교할 수 있습니다.

H

  • HTTP (HyperText Transfer Protocol): 하이퍼텍스트 전송 프로토콜은 분산 협업 하이퍼미디어 정보 시스템을 위한 애플리케이션 프로토콜입니다. HTTP는 웹 브라우저와 웹 서버 간의 데이터 통신의 기초입니다.

I

  • ICU (International Components for Unicode): 국제 유니코드 구성 요소는 유니코드를 지원하는 라이브러리입니다. ICU는 다국어 텍스트를 처리하고 변환하는 데 사용됩니다.
  • IDE (Integrated Development Environment): 통합 개발 환경은 소프트웨어 개발을 위한 포괄적인 기능을 제공하는 소프트웨어 애플리케이션입니다. IDE는 코드 편집기, 디버거, 컴파일러 등을 포함하여 개발자가 효율적으로 작업할 수 있도록 돕습니다.
  • IETF (Internet Engineering Task Force): 인터넷 엔지니어링 태스크 포스는 인터넷 표준을 개발하고 홍보하는 국제 커뮤니티입니다. IETF는 인터넷 프로토콜, 라우팅, 보안 등 다양한 분야에서 표준을 설정합니다.
  • IIRC (If I Recall Correctly): 내가 기억하기로는. 사용자가 기억에 의존하여 정보를 제공할 때 사용합니다.
  • IIUC (If I Understand Correctly): 내가 이해하기로는. 사용자가 자신이 이해한 내용을 확인하거나 명확히 할 때 사용합니다.
  • IMHO (In My Humble/Honest Opinion): 내 겸손한/솔직한 의견으로는. 사용자가 자신의 의견을 표현할 때 겸손함이나 솔직함을 나타내고자 할 때 사용합니다.
  • IMO (In My Opinion): 내 의견으로는. 사용자가 자신의 의견을 표현할 때 사용합니다.
  • IPC (Inter-Process Communication): 프로세스 간 통신은 프로세스 간의 통신을 가능하게 하는 메커니즘입니다. IPC는 데이터를 교환하거나 자원을 공유할 수 있게 합니다.

J

  • JIT (Just In Time): 즉시 실행은 런타임 중 컴퓨터 코드를 실행하는 방법입니다. JIT 컴파일러는 프로그램 실행 시 코드를 동적으로 컴파일하여 성능을 향상시킵니다.
  • JS (JavaScript): 자바스크립트는 ECMAScript 사양을 준수하는 고수준의 인터프리터 프로그래밍 언어입니다. 자바스크립트는 웹 브라우저에서 동작하며, 클라이언트 측 스크립팅에 널리 사용됩니다.
  • JS/C++ 경계: JS/C++ 경계는 V8의 런타임과 JS 코드 실행 간의 경계로, C++ 링크로 JS 함수를 호출할 때 자주 넘나듭니다. 이는 자바스크립트와 네이티브 코드 간의 상호작용을 가능하게 합니다.
  • JSON (JavaScript Object Notation): 자바스크립트 객체 표기법은 사람이 읽고 쓰기 쉽고 기계가 구문 분석하고 생성하기 쉬운 경량 데이터 교환 형식입니다. JSON은 서버와 웹 애플리케이션 간의 데이터 전송에 일반적으로 사용됩니다.

L

  • LE (Little Endian): 리틀 엔디언은 가장 작은 비트가 먼저 오는 바이트 순서입니다. 예를 들어, 32비트 정수 0x12345678은 리틀 엔디언 시스템에서 0x78 0x56 0x34 0x12로 저장됩니다. 이는 빅 엔디언의 반대입니다.
  • LGTM/SGTM (Looks/Sounds Good To Me): 좋아 보여/들려. 다른 사람이 제안한 내용이나 변경 사항에 동의할 때 사용됩니다.
  • LTS (Long Term Support): 장기 지원은 소프트웨어 버전에 대해 오랜 기간 지원을 제공하는 것입니다. Node.js의 LTS 버전은 보안 업데이트와 버그 수정을 장기간 받을 수 있습니다.

M

  • MDN (Mozilla Developer Network): Mozilla 개발자 네트워크는 웹 개발자를 위한 리소스입니다. MDN은 HTML, CSS, JavaScript 및 웹 API에 대한 자세한 문서를 제공합니다.
  • MVC (Model-View-Controller): 모델-뷰-컨트롤러는 사용자 인터페이스 개발에 일반적으로 사용되는 소프트웨어 설계 패턴입니다. 애플리케이션을 데이터(모델), 표현(뷰), 논리(컨트롤러)로 분리합니다.

N

  • 네이티브 모듈/애드온: 네이티브 모듈/애드온은 C 또는 C++와 같은 비자바스크립트 언어로 작성된 네이티브 코드로 컴파일되어 자바스크립트에서 호출 가능한 인터페이스를 노출하는 모듈입니다. 이러한 모듈은 성능을 높이거나 특정 시스템 기능에 접근할 때 사용됩니다.
  • npm: npm은 Node.js 프로젝트에서 의존성을 관리하고 다른 사람과 코드를 공유하는 데 널리 사용되는 패키지 관리자 및 레지스트리입니다. npm을 통해 패키지를 설치, 업데이트 및 관리할 수 있습니다.

O

  • OOB (Out Of Bounds): 범위를 벗어남은 배열 접근 시 사용됩니다. 배열의 유효한 인덱스 범위를 벗어난 접근을 시도할 때 발생합니다.
  • OOM (Out Of Memory): 메모리 부족은 컴퓨터 프로그램이 메모리 할당을 초과하는 상황입니다. OOM 오류는 프로그램이 더 이상 메모리를 할당할 수 없을 때 발생합니다.
  • OOP (Object-Oriented Programming): 객체 지향 프로그래밍은 데이터와 해당 데이터를 조작하는 코드를 포함하는 "객체" 개념에 기반한 프로그래밍 패러다임입니다. OOP 언어는 캡슐화, 상속 및 다형성과 같은 기능을 포함합니다.

P

  • PPC (PowerPC): PowerPC는 일종의 마이크로프로세서 아키텍처입니다. PowerPC는 다양한 컴퓨터 시스템에서 사용되며, RISC(Reduced Instruction Set Computer) 아키텍처의 일종입니다.
  • PTAL (Please Take A Look): 확인해 주세요. 다른 사람에게 작업물이나 변경 사항을 검토해 달라고 요청할 때 사용합니다.
  • Primordials: Primordials는 프로토타입 오염의 영향을 받지 않는 자바스크립트의 원시 내장 객체입니다. 이는 보안과 무결성을 유지하는 데 중요합니다.
  • 프로토타입 오염: 프로토타입 오염은 사용자 객체 프로토타입을 변경하여 다른 코드에 영향을 미치는 과정입니다. 이는 보안 문제를 일으킬 수 있습니다.

R

  • RAII (Resource Acquisition Is Initialization): 리소스 획득은 초기화입니다. C++에서 리소스를 관리하는 데 사용되는 프로그래밍 관용구입니다. 객체가 생성될 때 리소스를 획득하고, 객체가 파괴될 때 리소스를 해제합니다.
  • REPL (Read Evaluate Print Loop): 읽기 평가 출력 루프는 대화형 프로그래밍 환경입니다. REPL은 사용자가 입력한 코드를 즉시 실행하고 결과를 출력합니다.
  • RFC (Request For Comments): 의견 요청은 표준화 프로세스에서 사용되는 문서입니다. RFC는 새로운 인터넷 표준을 제안하고 논의하는 데 사용됩니다.
  • RSLGTM (Rubber-Stamp Looks Good To Me): 대충 괜찮아 보여. 전체 코드 검토 없이 승인하는 것을 의미합니다.
  • RSS (Resident Set Size): 상주 세트 크기는 RAM에서 프로세스가 차지하는 메모리 양입니다. 이는 프로세스의 메모리 사용량을 나타냅니다.

S

  • SMP (Symmetric Multi-Processor): 대칭 멀티 프로세서는 여러 프로세서가 동일한 메모리를 공유하는 아키텍처입니다. SMP 시스템에서는 모든 프로세서가 메모리와 I/O 장치에 동등하게 접근할 수 있습니다.
  • 스냅샷: 스냅샷은 V8 힙에서 직렬화된 데이터를 포함하는 바이트 청크입니다. 스냅샷은 애플리케이션 시작 시간을 줄이고 메모리 사용 효율을 높이는 데 사용됩니다.

T

  • TBH (To Be Honest): 솔직히 말해서. 사용자가 솔직하게 자신의 의견을 표현할 때 사용합니다.
  • TC39: TC39는 ECMAScript를 관장하는 Ecma 기술 위원회 39입니다. TC39는 자바스크립트 언어 사양을 개발하고 유지합니다.
  • TSC (Technical Steering Committee): 기술 운영 위원회는 프로젝트 내의 관리 기구입니다. TSC는 프로젝트의 방향을 설정하고 주요 결정을 내립니다.

U

  • UI (User Interface): 사용자 인터페이스는 사용자와 컴퓨터 프로그램 간의 상호 작용 지점입니다. UI는 버튼, 메뉴 및 소프트웨어와 상호 작용할 수 있는 기타 그래픽 요소를 포함합니다.
  • URL (Uniform Resource Locator): 통합 자원 위치 지정자는 컴퓨터 네트워크에서 웹 리소스를 참조하고 HTTP 또는 HTTPS 프로토콜을 사용하여 해당 리소스를 검색하는 메커니즘을 지정합니다.
  • UTF-8 (Unicode Transformation Format - 8-bit): 유니코드 변환 형식 - 8비트는 바이트 지향 시스템에서 유니코드 문자를 효율적으로 나타내기 위해 널리 사용되는 가변 폭 문자 인코딩입니다.

V

  • V8: V8은 Node.js와 Chrome 브라우저에 동력을 공급하는 자바스크립트 엔진입니다. V8은 자바스크립트 코드를 고성능으로 실행할 수 있도록 설계되었습니다.
  • 베더링: 베더링은 외부 소프트웨어를 프로젝트에 통합하여 해당 소스 코드를 복사하는 것입니다. 이는 외부 종속성을 관리하고 유지하는 데 도움이 됩니다.
  • VM (Virtual Machine): Node.js VM 모듈은 V8 가상 머신 컨텍스트 내에서 코드를 실행할 수 있는 방법을 제공합니다. 이를 통해 격리된 실행 환경을 만들 수 있습니다.

W

  • W3C (World Wide Web Consortium): 월드 와이드 웹 컨소시엄은 웹 생태계의 다양한 측면에 대한 표준과 지침을 개발하는 국제 커뮤니티입니다. W3C는 HTML, CSS 및 웹 기술 표준을 개발합니다.
  • WASI (Web Assembly System Interface): WebAssembly 시스템 인터페이스는 WebAssembly에 대한 인터페이스입니다. WASI는 WebAssembly 모듈이 운영 체제 기능에 접근할 수 있도록 합니다.
  • WASM (Web Assembly): 웹 어셈블리는 스택 기반 가상 머신을 위한 이진 명령어 형식입니다. WASM은 브라우저에서 네이티브 성능에 가까운 속도로 코드를 실행할 수 있습니다.
  • WG (Working Group): 작업 그룹은 특정 집중 영역을 가진 프로젝트 내의 자율 팀입니다. WG는 특정 주제나 기능에 대해 집중적으로 작업합니다.
  • WHATWG (Web Hypertext Application Technology Working Group): 웹 하이퍼텍스트 애플리케이션 기술 작업 그룹은 웹 표준을 개발하는 커뮤니티입니다. WHATWG는 HTML과 관련된 표준을 개발합니다.
  • WIP (Work In Progress): 진행 중인 작업은 초기 검토 가치가 있을 수 있는 미완성 작업입니다. WIP는 아직 완료되지 않았지만, 공유하여 피드백을 받을 수 있습니다.
  • WPT (web-platform-tests): 웹 플랫폼 테스트는 웹 플랫폼 API에 대한 테스트 스위트입니다. WPT는 브라우저 간 호환성을 확인하고, 웹 표준을 준수하는지 테스트합니다.

 

출처: https://github.com/nodejs/node/blob/main/glossary.md