자바스크립트가 무엇인지 공부하다가 '스크립트언어'에 대해 알게 되었고 공부하다보니, 스크립트 언어와 인터프리터 언어, 컴파일 언어를 비롯한 기본 용어에 대해 정리하고 싶어졌다.
개발을 하다보면 우리가 작성한 코드를 컴퓨터가 알아듣게 하기 위해서, 프로그래밍 언어를 기계어(0,1)로 번역하는 과정이 필요하다. 그 번역하는 과정을 언어에 따라 compile 혹은 interpret이라고 하는데, 이 때, 번역을 실행하는 변환기를 컴파일러와 인터프리터라고 한다.
즉, 컴파일러를 통해 번역하는 과정을 거치는 언어를 컴파일 언어, 인터프리터를 통해 번역하는 과정을 거치는 언어를 인터프리터 언어 혹은 스크립트 언어라고 한다. (스크립트 언어는 인터프리터 방식에서 나온 언어이다.)
개발자가 작성한 코드를 바로 실행하는 프로그래밍 언어이다.
코드가 작성될 때마다 인터프리터가 한 줄씩 해석해서 바로 명령어를 실행한다. 빌드 시간이 필요가 없다. 한 문장씩 명령어를 검사하다보니 언어 속도가 빠르지 않고 번역과 실행을 순차적으로 동작 시킨다. 프로그래머가 짠 코드가 그대로 노출된다.
Ex) R, Python, PHP, Javascript
반드시 기계어로 컴파일(기계어로 변환)되어야만 코드를 실행시킬 수 있는 프로그래밍 언어이다.
코드를 기계어로 번역(컴파일)해 목적(object)파일을 만드는 시간이 필요하다.(목적 파일은 컴파일러나 어셈플러가 소스 코드 파일을 컴파일 또는 어셈블해서 생성하는 파일로, 기계어나 혹은 이에 준하는 RTL과 같은 이진코드로 이루어져 있다.) 작성한 코드나 명령어를 한꺼번에 모아서 한 번에 실행한다.처음에는 오래 걸릴 수 있으나, 컴파일 이후에는 실행이 빠르다. 컴파일할 때 오류가 있다면, 기계어 번역을 통해 빌드되지 않아 실행도 되지 않는다.
실행 전에 번역이 필요하기 때문에 번역과 실행, 코드를 실행시키기 위해 총 2개의 액션이 동작한다.
Ex) C, C++, Java, Rust, Go
인터프리터 방식을 사용하는 인터프리터 언어의 한 종류로, 수정이 빈번하게 일어나는 응용 소프트웨어를 제어하기 위해 사용하는 프로그래밍 언어이다.
예를 들어, JavaScript는 스크립트 언어인데, 이를 통해 개발자는 웹 브라우저(응용 프로그램)를 보다 쉽게 수정할 수 있다. 수정이 빈번한 방식에서는 전체 수정과 컴파일 필요 없이 해당 부분만 수정하여 배포하면 되므로 인터프리터 방식을 사용한다.
A. 자바스크립트를 보완하기 위한 타입스크립트란 언어가 있습니다. 자바스크립트에 더 다양하고 강력한 기능들을 넣은 언어인데요.
프로그래머가 타입스크립트로 코드를 짜도 이를 돌릴 환경은 자바스크립트 전용이라 해당 코드를 읽지 합니다.
그래서 실행할 때는 자바스크립트로 번역, 컴파일을 해 줘야 합니다.
그렇게 자바스크립트로 번역이 되면 다시 컴퓨터의 언어로 인터프리트가 되면서 프로그램이 실행됩니다. 자바스크립트는 인터프리터 언어니까요.
총 두 번 번역되는거죠. (컴파일 - 인터프리트)
타입스크립트와 같이 컴파일 언어와 인터프리터 언어의 구분이 모호한 것들도 있습니다.
소스 코드 파일을 실행 가능한 소프트웨어 산출물로 만드는 일련의 과정을 말한다. 가장 중요한 단계들 가운데 하나는 소스 코드 파일이 실행 코드로 변환되는 컴파일 과정이다. 즉, 빌드의 단계 중 컴파일이 포함되어 있는데, 컴파일은 빌드의 부분집합이라고 볼 수 있다. 빌드 과정을 도와주는 도구를 빌드 툴이라고 한다.
코드들을 모아 하나의 실행파일을 만들기도 하고 코드 파일들의 크기를 줄여 더 적은 용량의 파일들로 만들기도 하고 남들이 코드를 알아보지 못하도록 난독화하기도 한다.
배포란 말 그대로, 프로그래머가 코딩한 소프트웨어를 사용자들이 쓸 수 있도록 배포하는 과정을 말한다.
웹사이트의 경우, 작업한 결과를 사용자들이 도메인으로 접속해서 브라우저로 볼 수 있도록 반영하는 작업을 말한다.
컴퓨터가 이해하고 사용하는 언어 (CPU가 해독할 수 있는 유일한 언어)
전기적 신호인 0과 1로만 표현하고, 비트 단위를 사용한다.
숫자나 데이터는 아니고 있음/없음 낮음/높음 역방향/정방향 과 같은 이분법적인 상태를 표현한다.
디버깅이란 소프트웨어에서 발생하는 문제의 원인을 찾아 해결하는 과정이다.
물론, 프로그램에 실제 오류가 발생했을 때도 당연히 디버깅을 하지만 코드를 짜는 시간의 상당부분은 디버깅에 할애된다.
코딩 프로그램들, IDE들에서는 이를 도와주기 위한 강력한 디버깅 기능들을 제공한다.
환경변수란 소프트웨어가 돌아가는 환경(소프트웨어가 깔린 컴퓨터 등)마다
특정 변수명에 지정된 값을 말한다.
환경변수를 사용하는 소프트웨어들은, 각자의 환경에 지정된 이 변수들을 기준으로 동작하게 된다.
각 컴퓨터의 조건이나 용도에 맞게 소프트웨어가 돌도록 하거나 보안상 민감한 정보들을 코드로부터 분리하는 등 환경변수도 다양한 목적과 형태로 활용된다.
프로그래머 혼자서 모든 코드를 다 작성하는 경우는 드물다. 보통은 신뢰할 만한 기업이나 단체, 개인이 작성한 양질의 코드들을 소프트웨어를 만드는 데 가져다 활용한다.
이처럼 누군가 가져다 필요에 맞게 사용할 수 있도록 특정 기능들을 코드로 작성해놓은 것을 '라이브러리'라고 한다.
라이브러리가 내가 만들고 있는 소프트웨어에 갖다붙일 수 있는 것이라면 프레임워크는 이미 특정 형태의 소프트웨어가 기본 틀이 갖춰져 있고 그 위에 내 코드를 덧붙여넣어 만들 수 있도록 되어있는 것들을 말한다.
구조가 복잡하고, 널리 사용되는 형태의 소프트웨어인 경우 이와 같은 프레임워크들이 제공되어 이를 기반으로 제품을 만든다.
프로그래머가 이를 처음부터 다 만들려면 해야 할 것이 너무 많다. 소프트웨어를 만들 때는 일반적으로 이러한 프레임워크를 다운받아 이를 기반으로 코딩하면서 필요한 라이브러리들을 덧붙여 작업하게 된다.
예시 : React / Vue.js / Angular
출처:
https://www.yalco.kr/37_devterms/
https://nyangnyangworld.tistory.com/23
https://ryusm.tistory.com/105