도대체 개발에서 말하는 바인딩이란 뭘까?

"WebDataBinder, BindingResult, initBinder ...... 바인드... 그게 머선 말이고???????"

1. 본디 태초부터 돌아가 그 뜻을 알라!

영어 bind 의 사전적 의미

- (기본적으로) 묶다.

- (정보통신) 두 개의 정보를 서로 연결하는 작업.

- (오픈사전) 지정된 시간 동안 두 개 이상의 프로그래밍 개체 간에 연결을 만드는 것.

 

그러니까 본디 그 뜻을 보아하니.. 뭔가 연결시키고, 연관시키고, 하나로 꽉 묶고, 결합시키고 하는 건가보네?

 

개발적 언어의 의미

속성과 개체 사이 또는 연산과 기호 사이와 같은 연관이다. ( -_- 무슨 말? )
즉, 바인딩(binding) 이란 프로그램의 어떤 기본 단위가 가질 수 있는 구성요소의 구체적인 값, 속성을 확정하는 것(줄로 꽉 묶는다는 뜻 연상)을 말한다. ( 오케이, 앞에거 모르겠고. 일단 느낌은 "값을 매긴다, 확정한다"  요거 구먼. )

2. 예를 들어보자면~

프로그램의 기본 단위인 변수를 예로 들면,

int num = 123;

여기서 int 는 변수의 자료형, num 은 변수 이름, 123 은 변수의 자료값이다.

즉, 데이터 타입이 int 라는 것으로 바인딩되고,
a 라는 변수명에 바인딩 되고,
1 이라는 값이 바인딩 되는 것이다.

(아하 ~~ 너낌 와쒀. 한마디로 정리해서)

이름, 자료형, 자료값에 각각 num, int, 123 이라는 구체적인 타입, 이름, 값이 정해지고
메모리 할당하는 것 각각의 과정을 바. 인. 딩. 이라고 한다.

3. 두가지 바인딩

조금 더 깊이 들어가자면, 일반적으로 바인딩은 일어나는 시간에 따라 크게 정적 바인딩, 동적 바인딩으로 분류한다.

 

정적 바인딩(Static Binding)

컴파일 시간에 일어나며, 실행 중 변하지 않고 유지된다.

- 함수의 정적 바인딩은 컴파일 시간에 호출될 해당 함수의 주소가 결정되어 바인딩 된다.
 즉, 실행 파일에 호출할 함수가 위치한 메모리 주소가 이미 확정 기록된 것이다.

 

동적 바인딩(Dynamic Binding)

- 실행시간 (run time) 중에 일어나며, 프로그램 실행 도중에 변경이 가능하다.

- 말그대로, 실행 파일을 만들때 호출할 함수의 메모리 주소가 확정되지 않고, 이후 실제로 실행되는 그 시간에 호출할 함수의 주소가 결정된다. 

- 그렇기 때문에 이 주소를 저장할 공간을 미리 확보해둔다.

- 실행될지 안될지 확정되지 않았기에 일단, 해당 함수를 위해 저장공간을 할당해야한다는 점에서 메모리 관리에 비효율적이다.

(쏼라~쏼라~~ 메모리 관리에 효율적이냐 비효율적이냐를 말한것이군.. 아무튼 한줄 요약하자면~~)

실행 이전(컴파일될때)에 값이 확정되면 정적 바인딩 ,
 이후(진짜 코드가 실행될때)에 값이 확정되면 동적 바인딩인 것이다.

4. 결론

아주 쉽고 간단하게 말해서, 개발에서 말하는 바인딩은 값이 확정되어 최종적으로 값이 매겨지는 것을 말하는 것이다.

 

 

출처 : https://medium.com/pocs/%EB%B0%94%EC%9D%B8%EB%94%A9-binding-4a4a2f641b27

 

+ Recent posts