Javascript & Node.js

EenSung Kim·2021년 9월 17일
0
post-thumbnail

Javascript === "프로그래밍 언어"

자바스크립트는 프로그래밍 언어입니다. 상호간에 약속된 문법에 기초한, 사람이 이해할 수 있는 언어라고 할 수 있죠. 프로그래밍 언어는 그 자체로 컴퓨터가 이해할 수 있는 언어인 것은 아닙니다.

그렇기 때문에 프로그래밍 언어로 작성된 코드를 변환해서 컴퓨터가 이해할 수 있는 기계어로 만들어주는 과정이 필요합니다. 일종의 번역 작업인데요. 이 과정은 컴파일러, 또는 인터프리터를 통해 이루어집니다. 컴파일러 또는 인터프리터가 중간에서 번역 작업을 해주기 때문에, 프로그래밍 언어로 작성한 코드가 기계어로 번역되어 컴퓨터가 이해할 수 있는 명령이 됩니다.

컴파일러 vs. 인터프리터

프로그래밍 언어는 컴파일러를 거치는지, 인터프리터를 거치는지에 따라 컴파일러 언어, 또는 인터프리터 언어로 나뉜다고 합니다. 컴파일러는 코드 전체를 컴파일이라는 과정을 통해 한 번에 기계어로 변환한다면, 인터프리터는 코드가 실행되는 단계에서 한 줄씩 변환하고 실행하는데요. 비유하면 컴파일러가 번역가, 인터프리터가 동시통역가인 셈이라고 할 수 있습니다.

나무위키의 인터프리터 문서 에 따르면 고급 프로그래밍 언어의 70% 정도가 인터프리터 언어 라고 하는데요. 자바스크립트도 이에 해당합니다. 위키백과의 컴파일러 항목 을 보면 현대에 들어 많은 인터프리터가 JIT 컴파일 등의 기술로 실시간 컴파일을 수행하므로, 컴파일러와 인터프리터 사이의 기술적 구분은 사라져 가는 추세 라고 되어있긴 합니다만, 자바스크립트는 별도로 컴파일 과정을 거치거나 실행파일을 생성하지 않기 때문에 두 기술적 구분이 모호해지는 것에도 불구하고 인터프리터 언어로 보는 편이 아직은 맞지 않나 싶습니다.


Node.js === "자바스크립트 런타임 환경"

Node.js 는 브라우저 밖에서도 자바스크립트를 활용할 수 있게끔 크롬의 V8 엔진을 바탕으로 개발된 자바스크립트 런타임 환경입니다.

( Node.js 메인 홈페이지에서도 스스로를 "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine." 이라고 정의하고 있습니다. )

런타임 환경이란 프로그래밍 언어로 작성된 프로그램이 실행되는 환경입니다. 브라우저 밖에서 자바스크립트라는 프로그래밍 언어로 만든 프로그램을 구동하기 위해서는 Node.js 라는 런타임 환경이 필요한 것이죠.

초창기의 자바스크립트는 브라우저에서만 사용되었다고 합니다. 그러다가 Node.js 의 등장으로 비로소 자바스크립트는 프론트와 백 모두를 아우르는 강력한 언어로 자리 잡을 수 있었습니다.


outro

자바스크립트와 Node.js 는 어떻게 다른 걸까요? 간단하게 말해서 하나는 프로그래밍 언어이고 다른 하나는 그 프로그래밍 언어가 실행되는 런타임 환경인 셈입니다만, 막상 이런 질문을 받게 될 때 무엇이 다른지 말로 풀어내려니 막막한 것 같아 나름대로 정리해보았습니다.

어제는 면접의 여파로 도저히 생산적인 활동이 어려워 블로깅을 하루 건너뛰었습니다. 본격적인 추석 연휴의 시작인 만큼, 가족들과 소중한 시간 되시길 바라겠습니다.

profile
iOS 개발자로 전직하기 위해 공부 중입니다.

0개의 댓글