구슬이네 IT & Media / IT 와 미디어를 바라봅니다



출처 :http://www.dbguide.net/knowledge.db?cmd=view&boardUid=127563&boardConfigUid=20&boardStep=&categoryUid=574

실시간 운영체제로의 영역 확장
PHP

많은 오픈소스 프로젝트와 마찬가지로 웹 프로그래밍 언어로 시작한 PHP 역시 실시간 운영체제로 확장되는 등 점차 영역을 넓혀 나가고 있다. 이 글에서는 플랫폼을 뛰어 넘어 다양하게 활용되고 있는 PHP의 현재 모습을 살펴보고 앞으로 어떻게 나아갈지를 예상해 본다.

용영환 xenonix@gmail.com

1995년 태어난 PHP는 2000년에 PHP 4에 와서 전성기를 맞이하게 된다. 웹 프로그램 개발에 최적화되어 있는 PHP는 쉬운 문법과 다양하면서 강력한 기능, 그리고 우수한 성능으로 현재까지도 전 세계적으로 가장 많은 웹서버에서 사용되고 있는 인기 프로그래밍 언어이다.
하지만 PHP는 웹 프로그래밍 언어라는 인식으로 인해 자바, Python 등에 비해 다양한 분야에 활용되지 못하고, 단지 웹에만 주로 국한되어 쓰이는 게 오늘의 현실이다.

PHP의 현주소

PHP는 2002년에 공개한 버전 4.3.0에서 CLI(Command Line Interface)를 지원하게 됨으로써 웹서버 없이 리눅스의 쉘이나 윈도우의 Cmd 상에서 PHP 프로그램을 구동할 수 있게 됐다. 다시 말해 PHP가 웹서버를 벗어나 독립적인 응용프로그램을 만들 수 있게 된 것이다.

<그림1> PHP의 활용 분야

웹 프로그램

PHP는 웹2.0이라 불리는 지금의 웹 환경이 만들어지는 데 큰 영향을 미쳤다. 동적인 웹사이트를 구현하기 위해 사용되던 CGI를 PHP가 대체했고, 그로 인해 웹 사이트 개발에 드는 비용이 크게 줄었다. 특히 PHP는 무료이면서 오픈소스라는 특징 때문에 누구나 접할 수 있었고, 사용자들이 직접 또는 간접적으로 PHP 발전에 공헌함으로써 다른 웹 프로그래밍 언어에 비해 빠르게 성장할 수 있었다.

이처럼 PHP는 그 태생 목적이 웹이다 보니 웹서비스에서 만큼은 매우 우수한 성능을 보여준다. 하지만 대규모의 웹서비스를 위한 기반 기술이 부족하다 보니 금융과 같은 대규모의 트랜잭션이 필요한 웹서비스에서는 자바에 자리를 내주어야만 했다.

<화면1> PHP로 개발된 PHP.net 웹사이트

GUI 프로그램

PHP-GTK( http://gtk.php.net)는 GTK+라는 GUI (Graphic User Interface) 라이브러리를 사용해 PHP로 GUI 프로그램을 개발할 수 있게 하는 PHP 확장 모듈이다.

GTK+(http://www.gtk.org/)는 윈도우, 리눅스, MacOS 등의 다양한 운영체제에서 구동되므로 PHP-GTK 기반으로 개발된 PHP 프로그램은 운영체제에 상관없이 동일한 화면으로 구동할 수 있다. 비슷한 프로젝트로는 Python을 위한 PyGTK가 있다. <화면 2>는 PHP-GTK2로 개발된 프로그램을 실행한 모습이다.

<화면2> PHP-GTK2 데모 프로그램

아쉬운 점은 PHP-GTK 프로그램을 쉽게 개발할 수 있는 Visual IDE가 없는 탓에 개발 과정이 그다지 쉽지는 않다는 사실이다. 그럼에도 불구하고 PHP 코드를 이용해 GUI 프로그램을 개발할 수 있다는 것이 큰 특징이다. 더 자세한 내용은 다음의 링크를 참고하길 바란다.

- 위키백과 PHP-GTK : http://en.wikipedia.org/wiki/PHP-GTK
- PHP-GTK 커뮤니티 & 소스 코드 제공 : http://en.wikipedia.org/ wiki/PHP-GTK
- WinBinder : http://winbinder.org/

시스템 관리 스크립트

원활한 시스템 관리를 위해 쉘 스크립트나 Perl 등을 써서 자동화 스크립트를 작성한 후에 사용하게 되는데 여기에서도 PHP는 강점을 보이고 있다. 우선 PHP가 CLI를 지원함으로써 콘솔에서 바로 실행할 수 있게 된 데다, 익숙한 PHP 문법과 방대한 라이브러리를 사용해 원하는 프로그램을 빠르게 만들 수 있기 때문이다. Perl이나 Python의 장점은 방대한 라이브러리를 갖고 있다는 것. PHP 역시 오픈소스 프로젝트이다 보니 PEAR나 PECL, 그리고 인터넷을 통해 손쉽게 필요한 라이브러리를 구해 사용할 수 있으므로 원하는 기능을 구현하는 데에는 불편함이 없다. <그림 2>에서 보는 바와 같이 sh나 Perl 등과 마찬가지로 PHP를 CLI 상에서 스크립트 언어로 사용할 수 있다.

<그림2> CLI 상에서 스크립트 언어로 사용 가능

현재는 CentOS와 MacOS 등의 일부 운영체제에서만 CLI용 PHP가 기본으로 설치되고 있지만, 앞으로 PHP를 기본 탑재하는 운영체제가 늘어날 것으로 기대한다.

서버 프로그램

PHP로 서버 프로그램을 개발할 수 있다는 것이 다소 생소하게 들릴지도 모른다. PHP는 프로세스 관련 함수와 네트워크 관련 함수 등을 이용해 독립실행형(Standalone)으로 동작하는 서버 프로그램을 개발하는 데에도 사용되고 있다. 따라서 PHP를 서버 프로그램을 개발하는 데 사용한다면 플랫폼에 상관없이 PHP 인터프리터만 설치하는 것으로 충분하다. 이와 관련된 더 자세한 내용은 다음의 웹페이지를 참고하길 바란다.

- 웹 서버 : http://nanoweb.si.kz/
- FTP 서버 : http://nanoftpd.sourceforge.net/
- IRC 봇 : http://phpbots.org/

PHP 속의 자바와 COM

과거에 필자는 ‘Power Basic’이라는 프로그래밍 언어를 공부했다. 이는 사용자가 극히 드문 비주류의 언어였음에도 불구하고, 함께 공부하던 이들의 내공은 매우 높았다. 당시 한글 라이브러리가 없었던 터라 모임의 어느 한 개발자가 직접 어셈블리로 그것을 만들었고, 이를 계기로 그래픽 라이브러리, 통신 라이브러리 등 필요한 라이브러리를 모두 C 언어로 만들어 사용하게 되었다.

Power Basic에서 제공하지 않는 라이브러리를 만들어 사용할 수 있었던 것은 다른 언어를 호출해 사?처럼 제공하지 않거나 구현이 불가능한 요소를 다른 언어의 힘을 빌려 해결할 수 있는 것은 언어적 한계를 뛰어넘어 확장성을 극대화할 수 있게 한다.

<그림3> 자바와 COM으로 구현된 컴포넌트 객체의 사용

앞서 말한 Power Basic과 마찬가지로 PHP에서도 자바나 COM으로 구현된 컴포넌트 객체를 그대로 사용할 수 있다. <그림 3>은 그런 관계를 잘 보여준다.

RIA 플랫폼을 위한 PHP

어도비(Adobe)사는 Flex SDK를 공개하면서 http://www. adobe.com/devnet/flex/flex_php.html 페이지를 통해 PHP를 지원하고 있다.
또한 볼랜드사는 최근에 RAD 개발 툴인 Delphi for PHP 2.0을 공개했다. Delphi for PHP 는 Delphi for Win32처럼 드래그 앤 드롭(Drag & Drop) 방식으로 웹사이트를 개발할 수 있는 PHP 통합개발환경이다. 지난해 1.0을 발표하면서 차세대 PHP IDE로 관심을 모았는데 이번에 발표한 Delphi for PHP 2.0에서는 Ajax 기술과 다양한 컴포넌트를 추가함으로써 더 빠르게 최신 웹 기술을 구현할 수 있도록 했다. Delphi for PHP 2.0에 대한 더 자세한 설명은 다음의 링크를 참고하자.

- Delphi for PHP 2.0 Overview : http://www.codegear.com/ products/delphi/php

PHP 바이너리 컴파일러

앞서 살펴본 내용 가운데 PHP-GTK와 서버 프로그램 등은 독립실행형 프로그램이다. 이런 독립실행형 프로그램을 위해 PHP 컴파일러가 존재한다. PHP 컴파일러를 사용하면 윈도우인 경우에 exe 파일과 같은 바이너리 형태의 실행 파일로 만들 수 있다. 실행 파일 안에 PHP 인터프리터를 포함해서 바이너리 형태로 만들기 때문에 용량이 다소 클 수는 있으나 제작한 PHP 프로그램을 배포하거나 간편하게 실행하기 위해서는 괜찮은 방법이다. <화면 3>은 Bambalam PHP Compiler와 WinBinder로 만든 윈도우용 계산기의 예이다.

<화면3> PHP 계산기

다음의 링크에서 컴파일러와 관련된 더 자세한 내용을 확인할 수 있다.

- Bambalam PHP Compiler : http://www.bambalam.se/ bamcompile/
- PHP .Net Compiler : http://www.php-compiler.net/doku.php

PHP 컨버전스

지금까지 오늘에 이르는 PHP의 변화 과정을 살펴봤다. 앞서 설명한 바와 같이 PHP는 꾸준히 발전하면서 자신의 활용 분야를 넓혀온 것으로 이해할 수 있다. 하지만 다양한 형태의 프로그램을 개발할 수 있음에도 불구하고, 웹 프로그래밍을 제외한 분야에서는 활용이 저조한 실정이다.

가능성의 구현

PHP로 멀티미디어 파일 재생기나 텍스트 에디터, 이미지 뷰어, 게임 등을 개발할 수 있으면 얼마나 좋을까. 실제로 PHP-GTK와 COM 컴포넌트 객체를 사용해 간단한 MP3 플레이어를 구현한 경우도 있고 무선 랜 검사기, 바이러스 백신을 만든 경우도 있다. 그 실제적인 모습은 다음의 링크에서 확인할 수 있다.

- 호박도령님의 간단한 MP3 재생기 : http://blog.naver.com/cyberuls /110021582426
- 윈도우용 무선 랜 검사기 : http://sourceforge.net/projects/ vistawlanlister/
- PHP 바이러스 백신 : http://sourceforge.net/projects/phpantivirus/

PHP 6에 대한 기대

PHP는 우리가 생각했던 것보다 훨씬 강력한 언어이다. 오픈소스의 장점을 통해 계속 발전하고 있으며 그만큼 우리가 PHP를 통해 할 수 있는 일도 늘어나고 있다. 현재 개발 중인 PHP 6에서는 언어적 측면에서 많은 발전이 이뤄질 것으로 예상된다. 또한 PHP 확장 라이브러리들도 함께 발전하면서 PHP로 개발된 다양한 프로그램들이 나타나 줄 것이라 기대된다.

어떤 프로그래밍 언어를 공부할지를 고민하는 이가 있다면 필자는 PHP를 추천하고 싶다. 그리고 현재 PHP를 공부하고 있다면 이 글에서 살펴본 PHP의 가능성을 모두 실험해 보길 바란다. 그러면 PHP 하나로 어떤 프로그램이든 만들어 낼 수 있지 않을까 싶다.

제공 : DB포탈사이트 DBguide.net