java 와 javascript는 무슨 친척관계로 되는 것처럼 느껴지는 네이밍을 하고 있는 프로그래밍 언어이지만,
이둘은 아무관계 없다.
java는 흔히, 객체지향 프로그래밍 언어라고하는데.. 사실 javascript도 객체지향 언어이기는 마찬가지이다.
자, 그럼 둘의 차이점은 뭘까?
번역본 책 vs. 동시통역
프로그래밍 언어라는 것은 사실, 컴퓨터 기계 0과 1로 이루어진 명령에 대해
사람이 이해하기 쉽도록 고차원으로 바꾼 고급 언어이다.
만약, java 에서 "hello world" 를 출력해줘~라고 명령을 하면
이걸 해석해야하는데, 해석/통역을 맡은 프로그램이 compiler 이다.
java는 compiler로 코드를 다 번역을 해놓고, 이 번역본을 컴퓨터에게 넘겨준다.
당연히 이 번역본은 0과 1의 무수한 나열로 이루어진 파일이다.
어떤 프로그램에 대해 원본코드(소스코드)를 모두 번역해 놓은 다음 그 번역본을 들고 있는다.
그런데 javascript는 한꺼번에 번역을 하지 않고, 코드를 한줄씩 읽고 바로 바로 동시통역을 해준다.
굳이, 알아야하는 이유는?
컴파일 언어냐, 인터프리너 언어이냐.
이건 도대체 왜 알아야할까?
항간에서는 파이썬이 C보다 느리다. 뭐 이런 성능 측면에서만 얘기를 하고 끝나지만
사실상 더 중요한 이슈는 "보안"이다.
보안에서는 상당히 중요한 이슈이다.
인터프리터언어는 다양한 취약점을 유발할 수 있기 때문이다.
SQL Injection의 경우는 대표적인 인터프리터 언어의 취약점이다.
컴파일 언어에서는 발생할 수 없는 취약점이겠지?
중간에 끼어들어 명령어에 이상한 문구룰 추가할 수 있으니, 해커에게 이만큼 흥미로운 먹잇감이 없는것이다.
와우..
내가 코드를 끼워넣을 수 있네~?!
통번역된 책에다가 내 이야기를 끼워넣을 수는 없지만.
동시통역 중에 내 목소리를 끼워넣을 수는 있으니깐.
뭐 그런 얘기.