Web언어/PHP

PHP란?

IT록흐 2021. 6. 21. 08:33
반응형

 

PHP가 무엇인가?

PHP는 '서버사이드 스크립트 언어'이다.

 

인터넷에 돌아다니는 PHP의 가장 흔한 정의이다. 그러면 왜 PHP가 서버사이드 스크립트 언어라고 불리우는지 핵심 키워드인 '서버'와 '스크립트 언어'를 통해 알아보자.

 

서버 사이드 (Server Side)

 

Unsplash

 

파일철에 종이 문서를 관리하던 인간은 컴퓨터에 문서를 저장할 생각을 하게 된다. 그리고 더 나아가, 문서가 저장된 컴퓨터가 다른 컴퓨터에게 문서를 제공하는 방식을 생각하게 되는데, 이가 바로 웹(Web)과 HTTP 프로토콜의 시작이다.

 

 

 

이렇듯 초기 웹환경은 웹서버(Sever)가 클라이언트(Client)에게 단순히 문서(html)를 제공하는 방식이 전부였다. 하지만 단순히 문서만 주고 받기에는 웹이 가진 잠재성은 무궁무진했다. 웹의 발달로 클라이언트의 요청이 다양해지자, 클라이언트의 요청에 따라 다양한 대응을 할 수 있는 Sever 개발이 필요했다. 그렇게 탄생한 언어가 PHP이다.

 

 

 

 

간단하게 네이버 홈을 예로 들어보겠다. 클라이언트가 네이버 마크를 클릭하면 웹브라우저에는 네이버 홈페이지 문서가 출력된다. 이 웹문서는 특별한 기능을 갖고 있다. 빨간 상자를 보면 현재의 기온과 날씨를 알려주고 있음을 알 수 있다. 날씨나 기온 정보는 미리 준비되어있는 정적인 정보가 아니다. 클라이언트가 네이버 마크를 클릭한 시간에 따라 동적으로 바뀌는 정보이다. 이렇듯 서버는 요청정보를 동적으로 처리할 수 있어야 한다.

 

이때 어떤 언어로 동적인 요청이 들어오느냐에 따라서 서버사이드 언어가 달라진다. 대표적으로 PHP, JSP, ASP, Django 등등이 있다. 다양한 종류의 언어가 존재하지만 이들 대부분 공통적인 특징이 하나있다. 바로 스크립트 언어라는 점이다.

 

스크립트 언어

 

서버사이드 언어가 대부분 스크립트 언어인 이유는 서버는 클라이언트의 다양한 요청을 처리해야하기 때문이다. 스크립트 언어와 반대격은 컴파일 언어이다. 대표적으로 C와 C++이 있다.

 

스크립트 언어는 소스 코드가 그대로 Disk에 저장되어 있다가 필요한 부분만 구문분석(파싱) 과정을 거쳐 번역기(인터프리터)로 실행된다. 이렇게 인터프리터는 필요한 부분의 코드만 한 단계씩 해석하여 실행한다.

 

컴파일 언어는 Disk에 소스 코드가 저장되는 것이 아닌 실행파일(.exe)이 저장된다. 실행파일은 10010001.. 같은 기계어로 이루어진 파일이다. 그러므로 실행파일은 번역과정 없이 바로 CPU가 처리하여 실행속도가 빠르다.

 

그럼 이제 웹문서 파일을 보자.

 

 

웹문서는 정적인 문서 바탕에 동적인 기능을 추가한 형태이다. 다시 말해서 HTML 언어에 PHP를 곁들인 문서가 웹문서이다. 그리고 어떤 페이지를 요청하느냐에 따라 PHP코드는 제각각 다르다.

 

서버는 요청(Request)에 반응(Response)하는 일을 한다. 요청(Request)이 서버에 들어오면 그때 그때 필요한 PHP 코드만 번역해서 결과만 리턴하면된다. 그러므로 컴파일 언어보다는 인터프리터를 사용하는 스크립트 언어가 서버사이드 언어로 적합하다.

 

서버사이드 언어의 한 가지 단점은 느리다는 것이다. 소스코드 요청이 들어오면 그제서야 번역기(인터프리터)가 파싱하고 번역한다. 미리 기계어로 변환시켜놓는 컴파일 언어보다 느릴 수 밖에 없다. 하지만 웹환경에서 어느정도의 느림은 감안이 된다. 웹페이지 새로고침을 눌러보면 잠시 백지상태가 된 후, 문서가 출력된다. 이를 두고 불만하는 사람은 거의 없다.

 

그러나 만약 게임이라면 어떨까? 왼쪽이동 요청을 하는데 잠시 끊겼다가 진행되면 그건 게임이 아니다. 그러므로 게임은 실행파일(.exe)로 만들어져 CPU가 바로바로 처리할 수 있도록 되어있다. 이렇듯 어떤 환경에서 사용할 프로그램이냐에 따라 사용되는 언어가 달라진다. 서버사이드에서 동적요청을 처리하는 언어는 대부분 스크립트 언어가 사용되고 PHP는 그중 가장 역사가 깊은 언어라고 할 수 있다.

 

 

 

 

 

 

 

 

 

반응형

'Web언어 > PHP' 카테고리의 다른 글

[PHP] "(큰 따옴표) 와 ' (작은 따옴표) 차이  (0) 2021.06.21
Visual Studio Code에서 PHP 개발하기  (0) 2021.06.21