본문 바로가기

카테고리 없음

컴파일 언어 vs 인터프리터 언어 둘의 차이점을 왜 알아야 할까? 자바와 자바스크립트는 어떤 관계?

java 와 javascript는 무슨 친척관계로 되는 것처럼 느껴지는 네이밍을 하고 있는 프로그래밍 언어이지만, 

이둘은 아무관계 없다.

 

java는 흔히, 객체지향 프로그래밍 언어라고하는데.. 사실 javascript도 객체지향 언어이기는 마찬가지이다.

 

자, 그럼 둘의 차이점은 뭘까?

번역본 책 vs. 동시통역

프로그래밍 언어라는 것은 사실, 컴퓨터 기계 0과 1로 이루어진 명령에 대해 

사람이 이해하기 쉽도록 고차원으로 바꾼 고급 언어이다.

 

만약, java 에서 "hello world" 를 출력해줘~라고 명령을 하면

 

이걸 해석해야하는데, 해석/통역을 맡은 프로그램이 compiler 이다.

 

java는 compiler로 코드를 다 번역을 해놓고, 이 번역본을 컴퓨터에게 넘겨준다.

당연히 이 번역본은 0과 1의 무수한 나열로 이루어진 파일이다.

어떤 프로그램에 대해 원본코드(소스코드)를 모두 번역해 놓은 다음 그 번역본을 들고 있는다.

 

그런데 javascript는 한꺼번에 번역을 하지 않고, 코드를 한줄씩 읽고 바로 바로 동시통역을 해준다.

 

 

굳이, 알아야하는 이유는?

컴파일 언어냐, 인터프리너 언어이냐.

이건 도대체 왜 알아야할까?

 

항간에서는 파이썬이 C보다 느리다. 뭐 이런 성능 측면에서만 얘기를 하고 끝나지만

사실상 더 중요한 이슈는 "보안"이다.

 

보안에서는 상당히 중요한 이슈이다.

인터프리터언어는 다양한 취약점을 유발할 수 있기 때문이다. 

 

SQL Injection의 경우는 대표적인 인터프리터 언어의 취약점이다.

컴파일 언어에서는 발생할 수 없는 취약점이겠지?

 

중간에 끼어들어 명령어에 이상한 문구룰 추가할 수 있으니, 해커에게 이만큼 흥미로운 먹잇감이 없는것이다.

와우..

내가 코드를 끼워넣을 수 있네~?!

 

통번역된 책에다가 내 이야기를 끼워넣을 수는 없지만.

동시통역 중에 내 목소리를 끼워넣을 수는 있으니깐.

뭐 그런 얘기.