View

프로그래밍 용어 01

jaeeH 2022. 1. 7. 09:20

 

 

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

>> Property 더 알아보기

 

 

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
Share Link
reply
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31