언어의 인기는 기술적 완성도만으로 결정되지 않는다. 그렇다면 PHP는 왜 20년이 넘는 세월 동안 끊임없이 “죽었다”는 말을 들어야만 했을까? 그리고 왜 그토록 많은 개발자가 PHP를 외면하면서도, 여전히 웹의 70% 이상이 이 언어로 만들어져 있을까? 문제는 단순히 성능이나 문법이 아니다. 더 근본적인 무언가가 이 언어를 둘러싼 편견과 오해를 낳고 있다.
PHP의 가장 큰 문제는 “진화의 딜레마”에 갇혀 있다는 점이다. 초기 설계의 한계는 시간이 지남에 따라 점점 더 뚜렷해졌지만, 하위 호환성을 유지해야 한다는 압박은 언어의 발전을 가로막는 족쇄가 되었다. 예를 들어, 함수 이름의 일관성 없는 규칙(예: strpos vs str_replace)이나 전역 네임스페이스의 남용은 언어가 성숙해지면서 자연스럽게 해결되었어야 할 문제들이다. 하지만 PHP는 이런 문제를 근본적으로 해결하기보다는 “점진적 개선”이라는 명목 하에 미봉책을 반복해왔다.
이 딜레마는 언어 설계자들에게도 큰 부담으로 작용한다. 새로운 기능을 추가할 때마다 하위 호환성을 고려해야 하고, 이는 종종 언어의 복잡성을 높이는 결과를 낳는다. PHP 8에서 도입된 속성(Attributes)이나 이름 있는 인자(Named Arguments)는 현대적인 기능을 제공하지만, 동시에 언어의 일관성을 해치는 요소로 작용하기도 한다. 이런 모순은 개발자들에게 혼란을 주기에 충분하다. “PHP는 이제 괜찮아졌다”는 말은 자주 들리지만, 그 “괜찮음”의 기준이 모호한 탓에 여전히 많은 이들이 PHP를 기피한다.
PHP는 마치 오래된 집을 리모델링하는 것과 같다. 벽지를 바꾸고 페인트를 새로 칠해도, 집의 구조가 근본적으로 바뀌지 않는 한 사람들은 여전히 “낡았다”고 말한다.
더 큰 문제는 PHP가 가진 “이미지”다. PHP는 오랫동안 “초보자를 위한 언어”로 치부되어왔고, 이는 전문 개발자들에게는 일종의 낙인처럼 작용했다. 실제로 PHP로 작성된 코드 중에는 객체지향 원칙을 무시한 절차적 코드나 보안 취약점이 가득한 스크립트가 적지 않았다. 하지만 이런 문제는 PHP 자체의 문제가 아니라, PHP가 너무 쉽게 접근 가능했기 때문에 발생한 부작용이다. 누구나 쉽게 시작할 수 있다는 장점은, 반대로 말하면 누구나 쉽게 나쁜 코드를 양산할 수 있다는 뜻이기도 하다.
그렇다면 PHP는 정말 나쁜 언어일까? 결코 그렇지 않다. PHP 8.0 이후의 성능 향상은 놀라운 수준이며, JIT 컴파일러의 도입은 이 언어를 완전히 새로운 차원으로 끌어올렸다. 또한, 프레임워크 생태계(라라벨, 심포니 등)의 성숙도는 PHP가 여전히 강력한 경쟁력을 갖추고 있음을 증명한다. 문제는 이런 발전이 외부에 제대로 전달되지 않는다는 점이다. PHP의 이미지는 여전히 “예전 그대로”라는 편견에 갇혀 있으며, 이는 언어의 진화를 가로막는 또 다른 장벽이 되고 있다.
언어의 인기는 결국 “사람”에 의해 결정된다. PHP가 가진 문제의 본질은 기술적인 한계를 넘어, 커뮤니티와 문화의 문제로 확장된다. PHP 개발자들은 종종 “우리끼리만 쓰는 언어”라는 고립감에 시달리며, 이는 새로운 개발자를 끌어들이는 데 큰 걸림돌이 된다. 반면, 파이썬이나 자바스크립트는 활발한 커뮤니티 활동과 교육 자료의 홍수를 통해 끊임없이 새로운 사용자를 유입시키고 있다. PHP가 이런 생태계를 구축하지 못한 것은 단순히 언어의 문제라기보다는, 커뮤니티의 역동성 부족에서 기인한다.
PHP의 미래는 어떻게 될까? 이 질문에 대한 답은 이미 나와 있다. PHP는 죽지 않을 것이다. 웹의 기반이 PHP로 이루어져 있기 때문에, 이 언어는 앞으로도 오랫동안 살아남을 것이다. 하지만 “사랑받는 언어”가 될 수 있을지는 여전히 의문이다. 기술적 완성도와 커뮤니티의 역동성이 조화를 이룰 때, 비로소 PHP는 현재의 편견을 극복할 수 있을 것이다. 그때까지 PHP는 “웹의 숨은 공로자”로 남을 것이다. 어쩌면 그 편이 더 어울릴지도 모른다.
이 에세이의 영감은 PHP’s Biggest Problem에서 얻었다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.