Edit Files
Login Register

초보자라도 PHP를 쓰면 안되는 이유

PHP

PHP는 1995년에 만들어진 웹프로그래밍을 위한 언어이다. 대충 JAVA만큼 오래된 셈인데 그래서 인지 여기저기서 쓰이고 있고 이 언어로 쓰여진 각종 툴들도 많은 편이다. 그러다 보니 웹을 처음 시작하는 사람이 고르는 언어이기도 한데, 특히나 PHP가 Facebook에 사용됬다는 소문을 듣고서 수많은 사람들이 PHP를 배우기 시작한다1.

하지만 PHP는 이미 수많은 사람들 사이에서 가루가 되도록 까일 만큼 좋지 않은 언어기도 하다. PHP를 쓰지 말아야 할 이유에 대해 수십개의 이유를 든 PHP:잘못된 디자인의 프랙탈은 이미 알만한 사람은 다 아는 유명한 글이다. 물론 이 글에서 스치듯이 언급한 문제인 커뮤니티의 문제는 실제로는 더 큰데, 이글에서도 말하듯 PHP를 쓰는 사람의 대부분은 그들이 늘 주장하듯 “도구를 가지리 않고 잘쓸사람”이 아니다.

이쯤되면 아직도 PHP를 옹호하는 사람이 있다는게 더 신기할 정도인데, 안타깝게도 종종 PHP를 단순히 간편하다는 이유만으로 선택하는 사람들이 있다.(그리고 그게 맞는 선택이라고 주장하는 사람도 있다.) 일반적으로 그들이 하는 주장은 다음과 같다.

  • 간편하고 배우는데 드는 비용이 적다.
  • 웹호스팅이 간편하고 비용이 적게 든다.
  • CMS의 1,2,3위는 다 PHP다. CMS를 수정해서 쓰는게 좋은 퀄리티를 금방 뽑아낸다.
  • PHP가 수정하기 쉽다.

그러나 안타깝지만 위에 주장들은 잘못 되었다. 정말이다!

  • PHP를 배우는데 드는 비용은 결코 적지 않다. 언어 디자인이 잘못되어 있어서 어딘가 버그생기면 반드시 그 버그 찾는데 시간 다간다. usleep 대신에 sleep을 쓰면 어떤 문제가 생기는 지, “133” == “0133”이지만 133 != 0133 인건지 다 알려면 오히려 시간이 더 든다.
  • Heroku를 보기나 했나? 명령어 한방이면 deploy는 물론이고 호스팅도 해준다. 물론 공짜다!
  • CMS를 쓰는 이유는 코드를 모르는 사람이 그냥 쓰기 위해서이다. 절대로 수정하기 위해서가 아니다. 2000줄짜리 php코드를 처다보고 바로 수정할수 있는 사람은 아무도 없다.
  • “수정” 하기는 쉽다. “수정”한 뒤에 어디서 버그가 터질지 알수 없어서 문제지.

초보 웹 프로그래머가 PHP를 선택하면 안되는 이유

PHP는 처음 웹 어플리케이션을 짜보는 사람이 절대 쓰면 안된다. 잘못된 언어 디자인과 잘못된 커뮤니티가 파멸의 길로 인도하기 때문이다. 대표적으로 PHP가 Web Application 학습에 미치는 악영향은 다음과 같다.

  • PHP는 Server 측 코드와 HTML, JavaScript를 한군데 뭉쳐버리게 만든다.
    • redirect를 위해 location.href = “google.com”;을 사용하는 것과 같은 미친 코드를 양산한다.
    • 이게 왜 잘못인지 모르는 PHP사용자가 더 많다.
  • PHP는 진입점이 여러군데라서 웹의 본질을 이해하기 어렵게 만든다.
    • Web Application은 http 요청에 응답하는 프로그램이지만, PHP개발자에겐 “그냥 .php 코드 썼더니 되더라”다.
  • PHP에서 AJAX와 RESTFUL API를 이해시키기 매우 어렵다.
    • 왜냐고? 그들은 한번도 이걸 프로그램의 응답이라고 생각해본적 없어서 HTML이 아닌 다른걸 내려줄수 있다고 상상조차 하지 못한다.
  • PHP 코드는 안타깝지만 “왜 동작하는지”를 말해주지 못한다.
    • 당연히 나중에 동작하지 않으면 왜 동작하지 않는지 찾을수 없다.
    • 이유를 찾지 않고 코딩하는 습관은 대개의 경우 좋지 못하다.
  • 나쁜 디자인 패턴을 강요한다.
    • CamalCase와 _의 혼용
    • 도무지 이해할수 없는 함수들
      • usleep/sleep
    • 어떤 함수는 return을 어떤 함수는 참조자를 통한 전달을 어떤 함수는 전역변수를 바꿈(뭐라고요?)
    • 반드시 전역변수를 써야만 하도록 만듬 \(\_SESSSION이라던가 \)_GET이라던가….
    • 글로벌과 슈퍼글로벌의 차이는?

그럼 뭘 써야 하는가?

Web Application의 학습을 위해서라면, PHP는 절대 선택해서는 안된다. 그렇다고 처음부터 JAVA와 Spring같은 거대한 프레임워크를 쓰는 것도 별로 현명한 선택은 아니다. 다행이도 학습에 좋은 가벼운 프레임워크들이 근래에 많이 있다. PHP를 첫번째 웹언어로 고려하고 있는 사람이라면 차라리 다음 언어와 프레임 워크를 살펴보기를 권장한다.

ps. nodejs/express는 초보자에게 그닥 추천할만하지는 않다..


  1. 다행히도 Facebook은 PHP를 버렸다. 주크버그가 남겨둔 쓰레기를 100명이 넘는 개발자가 드디어 치웠다.