View
1. Compile & Build & Deploy
- Compile : 사용자가 작성한 코드를 컴퓨터 언어로 번역
- Build : 컴파일 된 파일을 실제 실행시킬 수 있는 상태의 파일로 만들기
- Deploy : 실행 가능한 파일을 사용자가 접근할 수 있는 환경에 배치
2. IDE (Integrated Development Environment , 통합 개발 환경)
: 효율적으로 소프트웨어를 개발하기 위한 통합 개발 환경 소프트웨어 어플리케이션 인터페이스
- 구성 요소 : 코드 편집기, 로컬 빌드 자동화, 디버거
3. Parameter (매개변수, 변수) & Argument (전달인자, 값)
- Parameter : 함수와 메소드 입력 변수(Variable)명. Function 안의 괄호에 들어가는 값
- Argument : 함수와 메소드의 입력 값(Value). 인자에 실제로 대입 된 값
//Parameter => x, y
function addNum(x, y) {
return x + y;
}
//Argument => 1, 2
addNum(1, 2);
4. API (Application Programming Interface)
: 프로그램끼리 서로 소통하는 인터페이스
객체지향 프로그래밍(OOP = Object Oriented Programming)에서는 보통 클래스의 인스턴스를 만들어 서로 소통하므로 클래스의 property와 메소드를 통합하여 API라고 지칭함
5. Property & Attribute(속성)
: 객체가 고유하게 유지하는 데이터. 객체 내부의 속성
- Property : DOM에서 정의되는 속성
- '이름 : 값' 쌍으로 표현됨
- DOM 트리 내에 필요시 넣고 뺄 수 있고, 동적으로 변할 수 O
- Attribute : HTML에서 정의되는 속성
- HTML 요소에 고정되어 존재하고, 처음에 주어진 값이 변하지 X
6. Instance (인스턴스)
: 어떤 집합에 대해서, 그 집합의 개별적인 요소
객체 지향 프로그래밍에서 어떤 클래스에 속하는 각 객체를 인스턴스라 함
예시) 붕어빵
- 붕어빵 틀 = Class
- 붕어빵 = Object
- 각각의 붕어빵 = Instance
- 붕어빵을 굽다 = 인스턴스화 하다
붕어빵 틀 | class 이름 |
밀가루 반죽 | member variables |
팥 | |
굽다( ) | member method |
public class FishBreadTool {
//member variable
private String name; //붕어빵 이름
private int flour; //밀가루 반죽의 양
private int redbean; //팥의 양
//Constructor
public FishBreadTool (String iname, int iflour, int iredbean) {
name = iname;
flour = iflour;
redbean = iredbean;
bake();
}
//member method
public void bake() {
System.out.println(name + "붕어빵이 만들어졌습니다.");
}
}
-------------------------------FishBreadMaker.java-------------------------------
public class FishBreadMaker {
public static void main(String[] args) {
//붕어빵 틀에 밀가루 반죽, 팥 넣고 굽기
FishBreadTool a = new FishBreadTool("팥붕어", 2, 3);
FishBreadTool b = new FishBreadTool("뚱뚱붕어", 3, 4);
FishBreadTool c = new FishBreadTool("미니붕어", 1, 2);
}
}
출처 : https://victor8481.tistory.com/280
7. DOM (Document Object Model , 문서 객체 모델)
: XML이나 HTML 문서에 접근하기 위한 일종의 인터페이스
프로그래밍 언어가 DOM 구조에 접근할 수 있는 방법을 제공하여 그들이 문서 구조, 스타일, 내용 등을 변경할 수 있게 도움
DOM 구조
<!DOCTYPE HTML>
<html>
<head>
<title>DOM 예제를 보자</title>
</head>
<body>
DOM 예제는 이렇다.
</body>
</html>
DOM 트리
- 태그 : 요소 노드(element node) 또는 그냥 요소(element)
- <html> : 루트 노드
- <head>, <body> : 루트 노드의 자식
- 요소 내의 문자 : 텍스트 노드. 자식 노드 가질 수 X, 잎 노드(leaf node)가 됨
- <title> 태그는 "DOM 예제를 보자" 라는 텍스트 노드를 자식으로 가짐
출처 : https://ko.javascript.info/dom-nodes
8. Multi-thread
: 여러 작업이 동시에 진행되는 것
9. Script 언어
: 따로 컴파일 작업이 필요 없는 언어. 웹 브라우저가 컴파일링 작업을 대체해줌
10. ECMA
: JavaScript 표준 중 하나
11. JavaScript 엔진 (구글 V8)
: JavaScript를 기계가 이해할 수 있는 언어로 변환시켜주는 엔진으로 구글의 V8이 대표적
이러한 JavaScript 엔진은 주로 C++와 같은 언어로 만들어짐
12. Node.js
: Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임
- JavaScript를 서버에서도 사용할 수 있도록 만든 프로그램
- V8이라는 JavaScript 엔진 위에서 동작하는 자바스크립트 런타임(환경)
- 서버 사이트 스크립트 언어가 아닌 프로그램(환경)
- 웹서버와 같이 확장성 있는 네트워크 프로그램을 제작하기 위해 만들어짐
출처 : hanamon.kr
13. 런타임
: 특정 언어로 만든 프로그램을 실행할 수 있는 환경
14. 렌더링
: 서버로부터 HTML 파일을 받아 브라우저에 뿌려주는 과정
- 브라우저는 서버로부터 HTML 문서 다운받음
- 렌더링 엔진은 HTML 문서를 파싱해서 DOM 트리를 만듦
- ( CSS 파일이 있는 경우 CSSOM 트리를 만들고 DOM 트리와 CSSOM을 결합해 렌더링 트리 형성 )
- 렌더링 트리 형성 후 렌더링 엔진은 렌더링 트리를 화면에 그림 ( => 페인팅/래스터화 )
출처 : ru_bryunak.log
15. Compiler & Interperter
- Compile : 프로그래밍 언어를 Runtime 이전에 기계어로 해석하는 작업 방식
- 컴파일 하기 때문에 규모가 큰 프로그램의 경우 시간이 오래 걸릴 수 있지만, 실행 시간은 빠름
- 컴파일 언어 : C++, Java
- Interpreter : 런타임 이후에 Row 단위로 해석(interpret)하며 프로그램을 구동시키는 방식
- 소스 코드를 읽으며 실행하기 때문에 프로그램 실행 시간 느림
- 인터프리터 언어 => Python, JavaScript
Interpreter | Compiler | |
번역 단위 | 전체 | 행(줄) |
번역 속도 | 빠름 | 느림 |
실행 속도 | 느림 | 빠름 |
출처 : juwonkim.log
16. NameSpace (네임스페이스)
: 소속. 한 덩어리의 데이터에 이름을 붙여 충돌 가능성을 줄이고, 쉽게 참조할 수 있게 하는 개념
17. Overhead (오버헤드)
: 특정한 목표를 달성하기 위해 간접적 혹은 추가적으로 요구되는 시간, 메모리, 대역폭, 혹은 다른 컴퓨터 자원
18. Binding (바인딩)
: 프로그램의 어떤 기본 단위가 가질 수 있는 구성요소의 구체적인 값, 성격을 확정하는 것
String mango = 'lingo';
String : 변수의 자료형 , mango : 변수 이름 , 'lingo' : 변수의 자료값
위와 같이 자료형, 이름, 자료값에 각각 구체적인 값을 할당하는 각각의 과정 => 바인딩!
> Static Binding (정적 바인딩)
: 컴파일 시간에 일어나며, 실행 중 변하지 않고 유지됨
- int n; => 변수 n의 자료형은 컴파일 시간에 int로 할당, 실행 중에도 변하지 않는 변수 n의 속성
- 함수의 정적 바인딩은 컴파일 시간에 호출될 해당 함수의 주소가 결정되어 바인딩 됨. 즉, 실행 파일에 호출할 함수가 위치한 메모리 주소가 이미 확정 기록된 것
- 일반적인 함수는 정적 바인딩이 일어남
정적 바인딩은 컴파일 시간에 대부분 변수들의 속성이나 호출될 함수의 주소를 확정해놓기 때문에 실행시간의 속도가 빨라 효율적
정적 바인딩은 각 변수 값을 컴파일 시간에 정하므로, 필요한 메모리 용량이 컴파일 시간에 확정됨
이 때문에 같은 함수가 여러 번 호출 될 때마다 계속해서 또 다른 메모리 공간을 할당받아 재귀 호출의 실행 가능
ex. int array[50]; 은 컴파일 시간에 배열의 크기&위치를 결정하고, 이 때 정해진 크기는 하나의 블록(A 또는 B) 실행이 완전히 끝날 때까지 그대로 유지됨
> Dynamic Binding (동적 바인딩)
: 실행 시간(run time) 중에 일어나며, 프로그램 실행 도중 변경 가능
- 예) 인터프리터 언어 Python. num=10 과 같이 Python은 실행 시간에 변수의 자료형 결정
- 함수의 동적 바인딩은 실행파일을 만들 때 호출할 함수의 메모리 주소가 확정되지 않고 보류 상태로 둠.
- 이후 실제 실행 시간에 호출할 함수의 주소가 결정되기 때문에, 이 주소를 저장할 공간 미리 확보(4byte).
- 실행될지 확정되지 않은 함수를 위해 저장 공간을 남겨두어야 하는 점 때문에 메모리 관리에 있어 비효율적일 수 있음
- 보통 가상 함수들이 동적 바인딩
동적 바인딩의 값은 프로그램 실행 도중 변경될 수 있기 때문에 할당되는 메모리 또한 유동적
동적 바인딩 되는 변수를 동적 변수
출처 : https://medium.com/pocs/%EB%B0%94%EC%9D%B8%EB%94%A9-binding-4a4a2f641b27
'Basics' 카테고리의 다른 글
CI/CD란? (0) | 2022.04.13 |
---|---|
Static이란? (0) | 2022.03.17 |
Virtual & Abstract & Interface (0) | 2022.03.03 |