Is PHP A Bad Programming Langauge? (Part 1)

Introduction

PHP는 매우 널리 퍼져있는 프로그래밍 언어다. TPC Index에서 10% 가량의 비율로 4위를 차지하고 있으며, Apache Module Report에서는 apache web server들의 50%에서 mod_php를 사용하고 있다는 점이 그 사실을 증명해준다.

반대로, PHP를 미워하거나 싫어하는 사람들도 많다. 회사에서도 PHP 대신 다른 언어를 쓰자는 의견도 자주 언급된다. 이러한 주장을 하는 사람들의 의견을 직접 들어보면, 합리적이거나 설득력 있는 이유를 제시하는 경우는 매우 드물다.

정말로 PHP는 나쁜 언어인가?

Philosophy and History of PHP

어떤 프로그래밍 언어든지, 그 언어를 만든 사람의 철학이 그 언어에 담겨있고, 그 언어의 발전방향을 결정하기 마련이다. PHP가 정말로 나쁜 언어인가를 판단하기 위해서는 PHP의 철학은 무엇인가를 알아둘 필요가 있다.

PHP Manual에서는 PHP를 다음과 같이 소개하고 있다.

PHP, which stands for “PHP: Hypertext Preprocessor” is a widely-used Open Source general-purpose scripting language that is especially suited for Web development and can be embedded into HTML. Its syntax draws upon C, Java, and Perl, and is easy to learn. The main goal of the language is to allow web developers to write dynamically generated webpages quickly, but you can do much more with PHP.

즉, PHP는 general-purpose이긴 하지만, Web development를 위해 특화된 언어이며, 쉽게 배울 수 있고, 빠르게 개발할 수 있는 (agile) 언어라는 점을 선언하고 있다.

PHP의 역사를 보면 왜 PHP가 이러한 철학을 가지고 있는지는 확연하게 드러난다. PHP의 원래 이름은 “Personal Home Page Tools”였으니 말이다.

Why PHP?

왜 PHP 였는가? 왜 여러 language alternative들 중 PHP가 “Web language”의 자리를 차지했는가? 답은 PHP 언어의 철학안에 있다. PHP는 웹 개발에 특화되어있었으며, 쉽게 배울 수 있고, 빠르게 개발할 수 있으며, open source였기 때문이다. 언어 외적인 중요한 factor 중 하나는 PHP가 빠르게 성장하고 있던 Apache의 module 기능을 처음으로 적용한 middleware solution이라는 것이었다. (“처음으로” 라는 사실은 중요하지 않다. “초기에”라는 말이 적합할 것이다. 3개월 정도 후에, Perl도 modperl을 내놓았기 때문이다.)

“Is PHP A Bad Programming Langauge? (Part 1)”의 3개의 댓글

  1. aglie가 아니라 agile이 맞겠죠? 스펠링이 틀리신것 같은데요.
    php가 personal home page tools이라는 것은 비하하는 표현이라고 알고 있었는데요. 그런가요?

  2. dududu/스펠링 지적 감사합니다. Personal Home Page Tools는 PHP를 비하하는 표현이 아니라, PHP의 초기버전의 공식적인 이름이었습니다.

  3. php를 웹 마크업 언어로 비유하자면 html 4.0과 비슷하다는 생각이 듭니다. 스크립트 언어의 특징 중 하나이기도 하지만, 그 중에서도 타입이라던가 문법이 그렇게 딱딱하지 않고 느슨하다는 점, 그러면서도 웬만한 어플리케이션을 만들기엔 크게 부족하지 않다는 점.. 마치 브라우저 마다 보이는 건 제각각이지만 어쨌든 보여지고 이해하는 것엔 무리가 없는 마크업처럼 느껴집니다.

댓글 달기

이메일 주소는 공개되지 않습니다.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.