JavaScript가 낯선 이유에 대한 개인적인 고찰

sith-call.dev·2022년 7월 23일
0

컴퓨터 구조 기반의 언어

난 파이썬과 c언어를 매우 집중해서 공부한 뒤에는 다른 언어를 공부가 매우 수월해졌다. 이는 굵직한 개념은 언어들이 서로 공유했기 때문이다.

이것이 가능했던 이유는 해당 언어들이 모두 컴퓨터 구조 기반의 언어였기 때문이라 생각한다. 예를 들어서 변수를 할당하고, 변수 스코프를 기준으로 전역 변수와 지역 변수가 나뉜다. 이는 스택 메모리 안에 생성된 스택 프레임 간의 중첩 관계 또는 참조 관계에 의한 것이다. 또한 힙 메모리 영역에 개발자가 직접 메모리를 할당하여 사용하고 반납할 수도 있다. 이런 개념은 컴퓨터 구조를 기반으로 한 언어에서 대부분 공유하고 있는 개념들이다.

내가 개인적으로 정의한 컴퓨터 구조 기반의 언어는 다음과 같다. 해당 언어로 작성한 프로그램이 메모리에 상주하여 자신의 데이터를 스택 메모리와 힙 메모리에서 관리하는 것을 말한다. 즉, PCB 내부의 스택 프레임 기반의 프로그래밍 언어를 말한다.

브라우저 구조 기반의 언어

그런데 JavaScript는 위에서 서술한 컴퓨터 구조 기반의 언어와는 매우 다르다. 이는 자바스크립트가 애초에 브라우저란 응용 프로그램을 조작하기 위해서 고안된 스크립트 언어이기 때문이다. (스크립트 언어란 응용 프로그램을 조작하기 위해 고안된 언어를 말한다.)

브라우저는 여러 가지 구성요소로 이뤄져 있는데 그중에 하나가 자바스크립트 인터프리터이다. 자바스크립트 인터프리터는 크게 콜스택, WEB API, 콜백큐로 이뤄져 있다. 그리고 JS로 작성된 프로그램은 이 구조 위에서 데이터를 관리하고 함수를 실행시킨다. 말하자면 브라우저 구조 기반의 언어는 즉, 브라우저 프로세스 내부에서 실행 컨텍스트 기반의 프로그래밍 언어를 말한다. 실행 컨텍스트 안에서 데이터와 함수가 실행되기 때문에 JS 특유의 변수 호이스팅, 프로토타입, this, 비동기 처리 등에서 컴퓨터 구조 기반의 언어와 차이점이 나타난다.

profile
Try again, Fail again, Fail better

0개의 댓글