🚨 알림
알고 있던 용어부터 처음 알게된 용어까지 모두 정리했고, 중요하고 생각되는 부분에 📣를 표시해놓았다.
크래커(Cracker)
: 블랙 해커
: 크래커를 먹을 때 잘게 잘게 부서진다는 추상적인 이미지에서 유래되어 컴퓨터 시스템을 뚫고 파괴하는 행위를 하는 사람
해커(Security hacker)
: 화이트 해커
: 컴퓨터와 프로그래밍에 대한 전문 지식을 가진 사람
인공지능(AI; Artificial Intelligence)
: 인공지능에는 머신러닝과 딥러닝이 있음
: 인간의 사고와 학습같은 지적 능력을 컴퓨터로 구현하는 기술
명령문(Command Statemen)
: 컴퓨터에 각종 지시를 내리는 문구
소스코드(Source code)
: 개발자가 작업하는 작업물로 주로 실행 프로그램을 만드는 과정을 입력하는 데 이용하는 텍스트 형태의 파일
주석(Comment)
: 각 코드가 어떤 내용인지 개발자가 쉽게 알아볼 수 있도록 설명하는 글
코딩(Coding)
: 프로그래밍 언어로 된 코드를 입력하는 작업 자체
프로그래밍(Programming)
: 컴퓨터가 할 일의 절차와 알고리즘을 설계하는 것
개발(Development)
: 소프트웨어를 설계, 구현, 운영, 관리하는데 필요한 전반적인 기술 과정
소프트웨어(Software)
: 프로그램과 라이브러리, 데이터 등으로 이뤄진 시스템
시스템 프로그램(System program)
: 운영체제의 일부로서 컴퓨터 이용 환경을 조성하느 소프트웨어
애플리케이션(Application)
: PC나 모바일 기기에서 사용자가 직접 사용하는 모든 프로그램
프로그램(Program)
: 사용자 명령에 따라 그 목적에 맞는 작업을 수행하는 일련의 명령어 모음
프로그래밍 언어 (Programming language)
: 컴퓨터와 소통하기 위해 만들어진 언어
고수준 언어(High-level language)
: 사람의 언어에 가까운 언어
기계어(Machine language)
: 컴퓨터가 이해할 수 있는 숫자인 0과 1로만 구성된 언어
어셈블리어(Assembly language)
: 기계어 바로 위 단계의 저수준 언어
📣 통합 개발 환경(IDE; Intergrated Devlopment Environment)
: IDE는 개발에 관련된 다양한 기능들을 제공하는 개발용 프로그램
🚧 여기서 잠깐!
그래서 InteliJ의 IDEA의 IDE가 이런 의미였구나! 싶은 생각이 들었다.
디버그(debug)
: 오류 수정 프로그램과 그 작업 자체를 의미
: 프로그램에서 문제를 찾아 제거하는 행동
빌드(Build)
: 프로그래밍한 소스 코드를 묶어 실행 가능한 파일을 만드는 것
배포(deploy)
: 소프트웨어를 사용자들에게 전달하는 것
📣 유지보수(Maintenance)
: 소프트웨어 제품 출시 이후 계속되는 문제 해결 및 각종 업데이트 작업
🚧 여기서 잠깐!
유지보수는 소프트웨어 개발에 중요하다!
📣 리팩토링(refactoring)
: 기능을 수정하지 않으면서 코드의 질을 높이는 것
코드리뷰(Code review)
: 서로의 코드를 확인하고 피드백을 주고 받는 과정
문서화(documentation)
: 소프트웨어와 그 소스 코드를 쉽게 파악할 수 있는 문서
규칙 기반 인공지능(rule-based artificial intelligence)
: 미리 정해진 규칙이나 조건을 기반으로 작동하는 인공지능 시스템
지도학습(supervised learning)
: 컴퓨터에게 입력 데이터와 그에 해당하는 정답을 함께 제공하는 방식
비지도 학습(unsupervised learning)
: 컴퓨터에게 레이블이 없는 데이터만 제공하고 스스로 제공된 데이터 내의 숨겨진 구조나 패턴을 찾아내는 방식
강화학습 (reinforcement learning)
: 알고리즘이 특정 환경 내에서 시도와 오류를 통해 목표를 달성하는 방법을 학습
빅데이터(big data)
: 방대한 양의 데이터
인공 신경망(artificial neural network)
: 인간의 뇌를 모방한 컴퓨터 시스템
이해(understanding)
: 컴퓨터가 인간의 언어를 인식하고 그 의미를 파악하는 과정
생성(generation)
: 컴퓨터가 인간이 이해할 수 있는 언어로 응답하거나 새로운 텍스트를 만드는 과정
자연어 처리(natural language processing)
: 컴퓨터가 인간의 언어를 이해하고 해석할 수 있도록 돕는 기술
트랜스포머(transformer)
: 데이터 처리를 비롯한 다양한 분야에서 사용되는 인공지능 모델
디스코드(discord)
: 텍스트와 음성 채팅뿐만 아니라 파일 공유도 가능한 채팅 메신저 프로그램
깃허브 코파일럿(github copilot)
: 깃허브에 게시된 수많은 코드 데이터를 학습하여 개발된 서비스
프롬프트(prompt)
: 사용자가 인공지능에게 말을 걸 때 쓰는 '시작 신호'
프롬프트 엔지니어링(prompt engineering)
: 인공지능이 역량을 발휘할 수 있도록 적절한 프롬프트를 작성하는 것
서버(server)
: 정보나 서비스를 제공하는 컴퓨터 (서버 🔁 클라이언트)
클라이언트(client)
: 서버가 제공하는 것을 받아 사용하는 컴퓨터
데이터 센터(DC; Data Center / IDC; Internet Data Center)
: 수많은서버를 한 곳에서 안정적으로 관리하는 시설
서버 호스팅(server hosting)
: 서버용 컴퓨터를 임대해 주는 서비스
온프레미스(on-premise)
: 호스팅을 외부 데이터 센터에 두기에 민감한 정보를 다루는 회사들이 사내 전산실에 서버를 갖추고 관리하는 것
클라우드 컴퓨팅 서비스(cloud computing service)
: 서버를 가상화하여 각종 편의 기능과 함께 필요한 만큼 사용할 수 있는 서비스
IaaS(Infrastructure as a Service)
: 클라우드를 이용해서 서버용 인프라, 즉 가상화된 서버 컴퓨터를 대여해주는 서비스
PaaS(Platform as a Service)
: 애플리케이션을 개발하고 서비스하기 위해 필요한 서버, 운영체제, 개발 환경 등을 자동으로 설치하고 제공함으로서 사용자가 애플리케이션 개발에만 집중할 수 있도록 플랫폼을 제공하는 서비스
SaaS(Sofeware as a Service)
: 소프트웨어가 이미 완성된 형태로 사용자에게 제공되는 클라우드 서비스
웹 브라우저(web browser)
: 웹 서핑에 사용되는 소프트웨어
HTML(HyperText Markup Language)
: 웹 페이지에 요소들을 '가져다 놓는' 마크업 언어
CSS(Cascading Style Sheets)
: HTML로 올려놓은 요소들을 '꾸미는' 스타일 언어
자바스크립트(Javascript)
: 웹 페이지에 기능들을 부여해 '일을 시키는' 프로그래밍 언어
웹사이트(web site)
: 단일 또는 다수의 웹 페이지로 구성
웹 서핑(web surfing)
: 바다에서 파도를 타듯 이지저리 움직이며 웹 구석구석을 둘러본다는 뜻
반응형 웹사이트(reponsive website)
: 하나의 웹 페이지 화면 크기에 따라 내부 요소도 변경되는 웹사이트
적응형 웹사이트(adaptive website)
: 화면의 크기별로 웹페이지를 따로따로 ㅁ나든 웹사이트
📣 쿠키(Cookie)
: 사용자의 브라우저에 저장되는 정보
📣 세션(Session)
: 서버가 사용자를 기억하고 있는 상태
📣 토큰(token)
: 서버가 기억해둘 필요 없이 사용자가 스스로를 증명할 수 있는 수단
캐시(cache)
: 다시 가져오지 않아도 되도록 데이터를 가까이 저장해두는 기술
: 메인 메모리 속 데이터에 보다 더 빠르게 접근할 수 있도록 CPU에 내장되는 형태
CDN(Content Delivery Network)
: 각지에 캐시 서버를 두어 부하를 분산시키는 기술
네이티브 앱(native app)
: 동작할 운영체제에 특화된 방식으로 제작된 앱
크로스 플랫폼(Cros platform)
: 하나의 소스코드로 안드로이드와 ios 양쪽에서 모두 동작하는 앱을 만들 수 있는 플랫폼
웹 앱(web app)
: 스마트폰의 브라우저에서 접속할 수 있는 모바일 웹사이트
📣 하이브리드앱(Hybrid app)
: 네이티브 앱 안에 웹 뷰로 웹 앱을 실행하여 양쪽 방식의 장점을 취할 수 있는 앱
프로그레시브 웹 앱 (progressive web apps)
: 진보된 브라우저 기능들을 활용하여 아이콘 추가 등 편의 기능을 더한 웹 앱
프론트엔드(Frontend)
: 웹사이트 구성 요소 중 클라이언트 컴퓨터의 브라우저에서 동작하는 부분
📣 타입스크립트(Typescript)
: 자유분방한 자바스크립트에 타입을 부여해서 코딩할 때 오류의 소지를 줄이고 자동 완성 기능을 더해 생산성을 향상시킨 언어
백엔드(backend)
: 웹사이트나 모바일 앱 등 온라인 애플리케이션의 구성요소 중 서버에서 돌아가는 프로그램
프레임워크(framework)
: 프로그램의 기본 골격이 갖춰져 있어 개발자가 원하는 제품을 수월하게 만들 수 있도록 출시된 개발 도구
ex) 이클립스, 인텔리제이, 안드로이드 스튜디오, 비주얼스튜디오, 엑스코드, 스위프트, 파이참
API(Application Programming Interface)
: 여러 소프트웨어의 특정 기능들을 요청하고 호출하기 위한 약속
XML (eXtensible Markup Language)
: 데이터를 저장하고 전달할 목적으로 구성된 표기형식
📣 JSON(Javascript Object Notation)
: 데이터를 저장하고 전달할 목적으로 구성된 표기형식
YAML(YAML Ain't Markup Language)
: XML이나 JSON파일이 프로그램 간 정보 전달에 목적이 있는 것과는 달리 주로 프로그램 설정 파일과 같이 개발자가 편리하게 읽고 작성하기 위한 용도로 사용
📣 AJAX(Asynchronous Javascript And XML)
: 웹사이트에 필요한 정보를 언제든 서버로부터 받아오는 기법
IP(Internet Protocol)
: 데이터 통신 규약
📣 IP주소(Internet Protocol Address)
: PC나 스마트폰 같은 기기의 네트워크 주소
🚧 여기서 잠깐!
IP주소에는 공인IP, 사설IP, 고정IP, 유동IP가 있다!
도메인(domain)
: 사람이 기억하기 쉽도록 문자로 만들어 특정 IP에 연결한 인터넷 주소
📣 DNS(Domain Name Server)
: IP주소와 이에 해당하는 도메인의 IP 정보를 갱신하며 특정 도메인에 대한 요청이 들어오면 IP주소를 찾아 알려주는 시스템
URL(Uniform Resource Locator)
: 네트워크 상에서 특정 자료가 어디에 있는가를 나타내는 주소
WWW (World Wide Web)
: 전 세계의 사람들이 정보를 공유하고 소통할 수 있는 인터넷 공간
하이퍼텍스트(Hyper Txxt)
: 한 문서에서 다른 문서로 즉시 접근할 수 있도록 비선형적으로 연결된 텍스트
: 꼭 전체 글자를 순서대로 읽지 않아도 되는 문서를 의미
HTTP
: 클라이언트의 요청과 서버의 응답으로 이뤄지는 통신 규약
HTTPS
: 보안기능을 추가하여 보다 안전하게 만든 통신 규약
데이터(data)
: 사실을 반영하며 정보로 가공되지 않은 자료로 프로그램을 실행하는데 필요한 기초 자료
데이터베이스(data base)
: 전산 상에 구축한 데이터 집합
데이터베이스 관리 시스템
: 데이터베이스를 구축하고 관리하는 프로그램
운영체제(OS, Operating System)
: 사람이 컴퓨터를 쉽게 사용할 수 있도록 해주는 소프트웨어
인터페이스(interface)
: 두 개 이상의 시스템이나 장치가 상호작용할 수 있는 접점(경계면)
: 사람과 사물 또는 프로그램 사이에서 의사소통하도록 돕는 것은 사용자 인터페이스
GUI
: 그래픽 요소를 사용하여 직관적이고 편리하게 구성한 인터페이스
CLI(Command Line Interface)
: 콘솔
: 명령어 줄을 입력하여 사용할 수 있는 인터페이스
커널(Kernel)
: 운영체제의 핵심 기능을 담당하는 핵심 요소
오픈소스
: 누구나 소스 코드를 볼 수 있고 개발에 참여할 수 있는 소프트웨어
: 라이센스에 따라 유료버전 파생 가능
주 기억 장치(main memory)
: 컴퓨터를 고를 때 사양에서 흔히 '램 용량'으로 표기되는 부품으로 컴퓨터의 메인 메모리
CPU
: 컴퓨터를 통제하고 주어진 작업을 수행하는 장치
코어(core)
: CPU 중에서도 가장 핵심이 되는 부품
: 코어의 개수에 따라 듀얼코어(2개), 쿼드코어(4개) 등으로 부른다.
스레드(thread)
: 프로그램상에서 하나의 프로세스 안에 돌아가는 하나 이상의 작업 단위
: CPU 상에서 스레드는 하나의 코어, 즉 하나의 로봇으로 두 대의 로봇이 일하는 듯한 효율을 낼 수 있도록 하는 기술
클럭(clock)
: 2.5GHz와 같이 기가헤르츠(GHz) 단위로 표시되는 정보로 코어의 속도를 표현함
메모리(memory)
: 컴퓨터의 작업에 사용되는 데이터를 일시적 또는 영구적으로 저장하는 장치
보조 기억 장치
: 데이터를 보관하는 부품
RAM(Random Access Memory)
: 메모리 어느 위치에 있는 데이터든지 같은 속도로 읽고 쓸 수 있다는 뜻
: 메인 메모리와 같은 뜻
휘발성 메모리
: 전기가 끊겼을 때 데이터가 날아가면 휘발성 메모리
비휘발성 메모리
: 전기가 끊겨도 데이터가 유지되면 비휘발성 메모리
입출력장치(I/O)
: 컴퓨터에 신호와 정보를 보내는 입력 장치와 컴퓨터의 연산을 결과로 내보내는 출력 장치
프로세스
: 프로그램이 메모리에 올려져 CPU에 의해 실행되는 상태
병렬 처리
: 실제로 여러 작업을 동시에 실행하는 방법
병행 처리
: 하나의 코어가 여러 프로세스를 돌아가면서 조금씩 처리하는 것
컨텍스트 스위칭
: 하나의 프로세스가 CPU를 사용중인 상태에서 또 다른 프로세스가 CPU를 사용할 수 있도록 하기 위해 이전 프로세스의 상태(문맥)을 보관하고 새로운 프로세스의 상태를 CPU에 적재하는 작업
비트(bit)
: 0과 1 두 값을 가지는 것으로 컴퓨터가 다루는 데이터의 최소 단위
바이트(byte)
: 비트가 8개 모인 것
불리언(boolean)
: true(참)과 false(거짓)을 갖는 값으로 보통 '예'를 나타나내는 이진수 1과 '아니오'를 나타내는 이진수 0으로 표현함
자료형(data type)
: 프로그래밍 언어에서 여러 종류의 데이터를 저장하는 방식
유니코드
: 전 세계에서 사용되는 대부분의 뭄ㄴ자를 포함한 문자열 셋
문자열 셋
: 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 숫자로 만든 것
문자 인코딩
: 사람이 사용하는 문자를 컴퓨터가 인지할 수 있는 숫자로 바꾸는 것
컴파일 언어
: 실행되기 전 다른 형식으로 번역되는 언어
인터프리터 언어
: 작성된 코드 그대로 통역되어 실행되는 언어
컴파일
: 코드를 실행하기 전에 기계어나 다른 코드로 먼저 번역하는 것
컴파일러
: 소스코드를 다른 언어나 형태로 번역해주는 프로그램
정적 타입
: 컴파일 언어처럼 자료형이 고정된 것
동적 타입
: 인터프리터 언어처럼 자료형이 고정되지 않은 것
절차지향 프로그래밍(procedural programming)
: 물이 위에서 흐르는 것처럼 소스 코드를 위에서부터 차례대로 읽고 실행하는 방법
객체지향 프로그래밍(OOP)
: 프로그램을 객체란 단위로 나누어 프로그래밍하는 방식
객체
: 구성요소를 묶는 단위
클래스
: 기능의 스펙을 정의하는 명세서
메소드
: 특정 작업을 수행하기 위한 명령문 집합
상속(inheritance)
: 상위 클래스의 기능을 하위 클래스가 물려받아 기존 클래스에 기능을 추가하거나 재정의하는 것
함수
: 프로그래밍 언어에서 기능을 표현한 것
함수형 프로그래밍
: 함수형 기능들을 활용하여 변수의 사용을 최소화하는 프로그래밍 방식
매니지드 언어
: 언어 자체에서 메모리를 관리해주는 언어
언매니지드 언어
: 개발자가 직접 메모리를 관리해야하는 언어
자바 가상 머신(JVM)
: 자바 운영체제 사이에 존재하는 가상머신으로 어떤 운영체제에서든지 자바 파일을 실행할 수 있도록 도와주는 것
컴파일 오류
: 소스 코드를 컴파일하는 과정에서 생기는 오류
구문 오류
: 프로그래밍 언어의 사용법에 맞지 않는 코드로 인해 발생하는 오류
런타임 오류
: 프로그램 실행 중에 생기는 오류
논리 오류
: 컴파일이나 실행 자체는 성공하지만 잘못된 결과를 반환하는 오류
예외 처리
: 오류 발생 시에더 프로세스를 지속시킬 수 있는 수단
메모리 누수
: 사용하지 않는 데이터가 비워지지 않고 메인 메모리 공간에 쌓여 있는 현상
가비지 컬렉션
: 메인 메모리 상에서 불필요한 데이터를 자동으로 치우는 기능
패키지 매니저
: 라이브러리의 설치, 업데이트, 삭제 등을 관리하는 소프트웨어 도구
환경 변수
: 프로그램이 작동할 환경에 지정된 변경 가능한 값
런타임 환경
: 프로그램이 동작할 수 있도록 해주는 소프트웨어
자바 런타임 환경(JRE)
: 자바로 작성한 소스 코드를 컴파일 했을 때 생성된 자바 바이트코드를 실행할 수 있도록 해주는 소프트웨어
: 자바 API와 JVM으로 구성됨
SDK (Software Development Kit)
: 특정 언어나 환경의 소프트웨어를 개발할 수 있도록 제공되는 도구
JDK (Java Development Kit)
: 자바 코드를 컴파일하고 테스트하는 기능을 포함하는 등 자바 언어로 프로그램을 개발할 수 있는 환경까지 갖춰주는 것
라이브러리
: 하나 이상의 프로그램에 활용될 수 있는 데이터와 명령어들의 집합
: 소스 코드에 가져다 쓸 수 있음
VCS (Version Control System)
: 프로젝트 변경 내역을 관리하는 소프트웨어
커밋
: 의미있는 변경 작업들을 저장소에 기록하는 것
: 커밋의 변경 내역을 알려주는 이력을 커밋 메세지라고 함
리셋
: 특정 시점의 커밋으로 되돌아가는 행위
리버트
: 되돌리고자 하는 커밋을 거꾸로 실행해서 해당 부분만 복구하는 행위
브랜치
: 커밋 사이를 가볍게 이동할 수 있는 포인터같은 것
깃 호스팅 서비스
: 프로젝트를 관리하는 깃에 공용 저장소를 제공하는 서비스