Today I Learned
1. 스크립트 언어와 컴파일 언어의 차이에 대해서 배웠다.
자바에서는 세미콜론이라도 안찍으면 에러가나면서 그 라인에서 걸려 컴파일 자체가 되지 않는다.
거기에 익숙해져서 에러가 나면 php에서도 당연히 실행이 안될거리고 무의식적으로 생각하고 있었다.
심지어 웹페이지에 php에러가 연달아나는 것을 보고도 생각치 못했다.
로그를 파일에 저장해주는 함수들, php의 MVC 프레임워크인 코드이그나이터의 log_message()
나 php의 error_log()
를 찍어줄때 계속 의아했다. 이걸 아무데나 찍어줘도 지정해준 에러레벨에따라 로그가 찍힌다는 게 말이다.
php는 서버 사이드 스크립트 언어이다. 스크립트 언어라는 말은 컴파일을 거치지 않고 인터프리터를 통해서 한줄씩 바로 실행되는 언어를 말한다. 서버 사이드라는 말은 그 인터프리트를 서버에서 해준다.
요점은 php같은 스크립트 언어는 에러가나도 끝까지 인터프리트하고 결과를 출력한다. 코드 읽기를 중단 시키는 함수를 넣어도 중단된 지점까지의 결과는 출력이 된다.
자바같은 컴파일 언어는 IDE에서 컴파일할 때 여러가지 이유로 잘못된 코드가 있다면 에러를 출력한다. 그것을 고치지 않으면 아예 다음 단계로 넘어갈 수 없다.
php 같은 스크립트 언어가 자바만 배운 사람의 입장에서 본다면 굳이 error_log()
를 가지는 이유를 이런 차이점을 짚고 넘어가지 않으면 이해할 수 없다.
python도 스크립트 언어라고 한다. 새로운 언어를 배울 때 스크립트 언어인지 컴파일 언어인지 먼저 구분해서 생각해보지 않는다면 약간 길을 잃을 수도 있겠구나라고 생각했다.
그런 의미에서 새로운 언어를 배울 때는 언어가 어떤 특징을 가지고 있는데 어떤 배경으로 탄생했는지 이해하는 게 중요하다고 느꼈다. 다른 예로, 나는 무작정 타입스크립트를 배우겠다고 일단 튜토리얼부터 따라하고 봤는데 언어에 대한 배경지식이 없어서인지 전혀 이해가 되지 않았다.
언어자체를 배우기 전에 어떤 배경으로 새로 배우려는 언어가 사람들이 왜 사용하려하고 왜 인기가 있고 왜 마이너한 언어인지 혹은 주로 어디에서 쓰이는지 등을 먼저 이해해야한다.