용어 (개발용어)

    증분 컴파일 (incremental compile) 이란?

    증분 컴파일 (incremental compile) 이란? 프로그램의 수정된 부분만 다시 컴파일하는 기술이다. 일반 컴파일러는 소위 클린 빌드(clean build) 라는 것을 수행하는데 이는 모든 프로그램의 모듈을 재빌드하는 것을 말한다. 증분 컴파일러는 프로그램의 수정된 부분만 다시 컴파일한다.

    프로그래밍에서 말하는 애드혹 (ad-hoc, adhoc) 이란?

    프로그래밍에서 말하는 애드혹 (ad-hoc, adhoc) 이란? 라틴어로 "for this particular purpose" 이다. 특정 상황에서만 정답이 되고 일반화될 수 없는 해답을 말한다. 그러므로 재사용되는 것이 거의 불가능하다. 개발 기간이 촉박할 때 급하게 요구사항을 맞추는데 사용된다. 베스트 프랙티스가 아니며, 장기간 사용을 위해 최적화가 필요하다. 소위 '하드코딩' 이라 불리는 방법으로 코딩하여 만든 솔루션이다. ad-hoc public class AdHocExample { public static void main(String[] args) { int num1 = 5; int num2 = 10; int sum = num1 + num2; System.out.println("..

    프로그래밍 언어에서 말하는 의미론 (Semantics, 시멘틱) 이란?

    의미론 (Semantics)이란? 프로그래밍을 배우기 어렵게 만드는 용어 중 하나이다. 영어로는 semantics 로 불린다. 어떤 요소를 어떠한 위치에 두어야 하는가가 아니라 어떤 요소를 어떠한 위치에 두면 어떤 의미를 갖는지를 말한다. 의미론 (Semantics)의 사전적 정의 출처: 네이버 사전 정보·통신 구문론에 따른 문자 나열로부터 어떤 의미를 결정하는 규칙. 언어는 일반적으로 구문론과 의미론의 두 가지 측면을 가지고 있으며, 프로그램 언어도 마찬가지로 두 개의 측면에서 규정된다. 프로그램이 컴퓨터상에서 어떤 처리를 해야 하는가를 정하는 것이다. 위의 설명처럼 언어는 구문론과 의미론 두가지 측면을 가진다고 한다. 그렇다면 구문론이란 무엇일까? 구문론 (Pronunciation) 이란? 출처: 네..

    빅 엔디언 (big endian) 과 리틀 엔디언 (little endian) 이란?

    빅 엔디언과 리틀 엔디언이란? 바이트를 어떻게 읽을 것인지에 대한 방식을 말하는 것이다. CPU 벤더사마다 쓰는 방식이 다르다. Intel 과 AMD 같은 대형 벤더사가 리틀 엔디언을 써서 이게 주류다. 예제 값 읽어보기 빅 엔디언 25 C7 39 21 01 02 5F 9B A1 03 33 FA B6 62 97 5D 빅 엔디언에서는 0x0102 를 표현할 때 01 02 로 그대로 순서대로 표현한다. 리틀 엔디언 C7 25 21 39 02 01 9B 5F 03 A1 FA 33 62 B6 5D 97 리틀 엔디언에서는 0x0102 를 표현할 때 02 01 로 반대 순서대로 표현한다.

    2의 보수란?

    보수 기초 개념 익히기: n 의 보수란? n 진수를 표현할 때 n 의 제곱이 되기 위해 더해주는 수 10 진수로 예제 들어보기 13 에 대한 10 의 보수는 87 이다. 가장 가까운 n 의 제곱이 100 이다. 133 에 대한 10 의 보수는 867 이다. 가장 가까운 n 의 제곱이 1000 이다. n-1 의 보수 구해보기 n-1 의 보수는 n 의 보수에서 1 을 빼면 된다. 즉, 133 의 9 의 보수는 866 이다. n-1 의 보수는 왜 구하는가? n-1 의 보수를 구하는 법은 알겠는데 왜 구하는지에 대한 감을 잡긴 어렵다. 8 진법에서 423(8) 의 8 의 보수를 구하려면 어떻게 해야 할까? 1000(8) = 423(8) + x(8) 여기서 x 를 구해야 한다. 여기서 우리는 자릿수의 변화와 또 ..

    IEEE 754 부동소수점이란?

    IEEE 754 부동소수점을 표현하는 표준이다. 부동소수점은 가수부(유효 숫자)와 지수부(소수점의 위치)를 나눠 소수를 표현하는 것이다. IEEE 는 전기전자공학자협회 (Institute of Electrical and Electronics Engineers, IEEE) 를 말한다. IEEE 754가 정의하는 것들 위키피디아 에 나와있으나 이것들을 몰라도 개발자가 적당히 IEEE 754 를 이해하는데는 큰 문제가 없다. 산술 형식 압축 인코딩 방식 반올림 규칙 작동 방식 예외처리 구조 총 3가지 부분으로 나뉜다. 부호 비트 1 비트 지수부 (Exponent bits, e 비트) 8 비트 가수부 (Fraction bits 혹은 Mantissa, f 비트) 23 비트 예제1: -118.625 표현해보기 총 ..

    클램프 (Clamp) 란? feat. 컴퓨터 과학, 그래픽스 용어

    클램프 (clamp) 란? 컴퓨터 과학에서 사용하는 용어이다. 값의 집합이나 범위를 한정하는 연산 혹은 함수이다. 보통 최소, 최대 값을 받아 값의 범위를 한정시킨다. 보통 컴퓨터 그래픽에서 많이 사용된다. 예로 게임의 캐릭터가 화면 밖으로 나가지 않도록 만든다. 예제 코드 1 function clamp(value, min, max) { return Math.min(Math.max(value, min), max); } console.log(clamp(999999, 1, 10)); // 10 console.log(clamp(-1929, 1, 10)); // 1 예제 코드 2 const arr = new Uint8ClampedArray([256, -1, 100]); console.log(arr[0]); //..

    UTF (Unicode Transformation Format) 인코딩이란?

    UTF 란? 약자를 해석하자면, Unicode Transformation Format 즉, 유니코드 변환 포맷을 말한다. 쉽게 설명하자면, 유니코드를 변환할 때 그 기준이 되는 표를 말하는 것이다. ex) U+0041 는 대문자 A 로 치환되고, U+0042 는 대문자 B 로 치환될 수 있도록 표를 제공하는 것이다. 유니코드가 생겨난 이유 요약하자면, 컴퓨터는 모든 것을 비트로 받아들이기 때문에 생겼다. 숫자에 의미부여를 해서 문자로 만들 수 밖에 없었다. 초기엔 알파벳 대소문자와 숫자정도만 만들어놨다. 이것이 바로 ascii (아스키 코드) 영문 말고 다른 문자를 쓰는 국가들이 등장했다. euc-xx 라는 인코딩이 등장했다. euc-xx 는 해당 국가 언어에서는 잘 동작하나, 제3외국어가 끼면 이상해졌..

    이스케이프 시퀀스 (Escape Sequence) 란?

    이스케이프 시퀀스 (Escape Sequence) 란? 과거에 프린트 할 수 없는 특수한 문자를 표현하려고 사용하기 시작됐다. 초기 ASCII 코드에는 글자나 숫자같은 프린트 가능한 문자만 다뤘다. 종이에 쓸 수는 없어도 분명 개념상 있는 문자를 다룬다. 이를테면 개행 (new line), 탭 (tab), 캐리지 리턴 등이 있다. 프로그래밍에서 문자열을 취급할 때 역 슬래시(\)를 이스케이프 캐릭터로 사용한다. 이스케이프 캐릭터는 이스케이프 시퀀스의 시작을 알리는 용도이다. 자바스크립트 예제 \n: 개행 \t: 탭 \b: 백스페이스 \r: 캐리지 리턴 \': 작은 따옴표 \": 큰 따옴표 console.log(String.raw`원본: a\nb`); console.log("a\nb"); conso..

    함수형 프로그래밍, 모나드(Monad) 란?

    모나드란? 함수형 프로그래밍에서 자주 등장하는 디자인 패턴 중 하나이다. 일련의 연산 과정들을 감싸주는 컨테이너 혹은 래퍼이며, 예측 가능하고 구성 가능한 방식으로 이 단계들을 함께 연결(chaining) 하는 방법을 제공한다. 사이드 이펙트를 핸들링하거나, 불확실한 상태를 이용한 연산, 비동기 연산 등 평범하게 동기적으로 흘러가지 않는 연산을 처리할 때 코드가 복잡해지기 쉬운데, 이를 간단히 처리할 수 있게 해준다. 자바스크립트의 Promise 객체, 자바의 Optional 객체의 역할과 같다. 코드의 작성 시점에는 내부의 결과를 모르는데도 결과의 케이스에 따른 로직을 작성할 수 있다. Promise 객체는 비동기 연산을 캡슐화하고 체이닝한다. Optional 객체는 있을지 없을지 모르는 값에 대한 연..

    시멘틱 버저닝 (Semantic Versioning) 이란? (feat. package.json 표현 방식)

    시멘틱 버전(semantic versioning) 시멘틱 버저닝 이란 패키지의 일반적인 버전의 표현 방식을 이야기한다. 숫자 3자리로 버전을 표현한다. 이를테면 노드의 package.json 에서는 "react":"16.8.6" 와 같이 리액트 버전 표기가 가능하다. .으로 구분된 3개의 숫자는 각각의 숫자마다 의미를 갖고 있다. 첫번째 숫자, Major Digit (16.8.6) 첫번째 숫자는 이전 버전들과의 호환성을 나타낸다. 이번 업데이트에 이전 버전과 호환되지 않는 큰 변화가 있었다면, major digit이라 불리는 가장 앞의 숫자를 올린다. 이를테면 1.0.1 버전을 업데이트해서 더이상 이전 버전과 호환되지 않으면 2.0.1 버전이 된다. 두번째 숫자, Minor Digit (16.8.6) 두..

    루프백 아이피 (loopback ip) 란?

    루프백 아이피 (loopback ip) 란?

    개요 루프백 아이피 (loopback ip) 란 자기 자신을 가리키는 아이피 주소이다. 로컬호스트 주소 (localhost) 라고도 한다. ipv4 에서는 127.0.0.0 ~ 127.255.255.255 대역을 루프백용으로 예약해둔다. ipv6 에서는 ::1/128 단 하나의 주소만 사용한다. /etc/hosts 파일에 localhost 를 127.0.0.1 로 연결시켜두고, 호스트 이름에 localhost 를 입력하면, DNS 를 타지 않고 바로 로컬로 연결된다.

반응형