어떤 레시피를 보고 음식을 만든다고 해보자. 그런데 레시피가 고대 그리스 언어로 적혀있다. 이 때, 누가 이미 한국어로 번역해놓은 레시피를 보는 것은 Compiled
, 고대 그리스 언어를 아는 사람이 바로 옆에서 한 줄씩 동시에 통역해주는 것은 Interpreted
이다.
Examples of pure compiled languages are C, C++, Erlang, Haskell, Rust, and Go.
Compiled languages는 곧바로 machine code로 변환되기 때문에 프로세서가 코드를 실행할 수 있다. 그래서 Interpreted languages보다 더 빠르고 효과적으로 실행되는 경향이 있다. memory management, CPU usage와 같은 hardware aspects를 개발자가 컨트롤할 수 있다.
Compiled languages에는 build
step이 있는데, 수동적으로 (사람이 직접) 컴파일을 해줘야 하고, 변경사항이 생길 때마다 rebuild
해줘야 한다.
Examples of common interpreted languages are PHP, Ruby, Python, and JavaScript.
프로그램을 통해 실행되는 interpreter는 각각의 command를 한 줄 한 줄 실행한다. 변경 사항이 생긴다면 그 즉시 변경 사항을 해석(?)해준다. Interpreted languages는 Compiled languages보다 현저히 느렸으나, just-in-time compilation의 발전으로 인해 속도 차이가 줄어들고 있다.
자바스크립트 언어는 script 언어 형태인데, 다양한 방식의 프로그래밍 패러다임을 가진 멀티패러다임 언어이다. 위키피디아를 보면 각각의 프로그래밍 패러다임에 어떤 프로그래밍 언어가 속하는지 표로 잘 정리되어 있다.
VSC에서도 디버깅 툴 사용이 가능하고, 크롬 브라우저에서도 사용이 가능하다. 크롬에서는 한 줄 실행될 때마다 코드 바로 옆에 실행된 결과값이 나와서 좀 더 보기 편한 것 같기도..?
Step Over
다음에 호출되는 함수로 이동한다.
Step Into
호출된 함수 안으로 들어가 한 줄씩 읽는다.
Step Out
현재 실행 중인 함수에서 벗어난다. 해당 함수가 리턴된 곳으로 이동!
나름 js파일을 쪼개어 처음으로 html
에 여러 개의 js파일을 등록해본 적이 있다. 이 때 아무 생각 없이 다른 js파일에서 함수나 변수를 가져다 썼었는데, 이렇게 마구 가져다 쓰면 프로젝트가 커지고 협업하는 개발자가 많아질수록 다양한 문제 상황에 노출되기가 쉽다고 한다. 그래서 함수나 변수, 객체 등을 모듈화시켜서 필요한 것에만 접근이 가능하도록 할 수 있다.
모듈은 두 가지 방법으로 사용할 수 있는데, exports/require
과 export/import
이다. 전자는 node.js의 CommonJS 방식이고 후자는 ES6에서 도입된 방식이다. CommonJS 방식으로 사용하다가 이후에 ES6에서 자바스크립트 모듈이 정식으로(?) 도입되었다. ES6 문법이 좀 더 최신 스펙이니 import
를 주로 사용하면 되겠지만, CommonJS 방식도 쓸 일이 있을 수 있으므로 익혀둘 필요가 있다. 자세한 내용과 사용법은 쓰기 귀찮아서 링크로 대신하겠음...
잘 보고갑니다~