제공 :
한빛 네트워크
저자 : chromatic
역자 : 박주현
원문 :
Five Features Perl 5 Needs Now
지난 해 12월 18일, 목요일은 펄이 공개된 지 21주년이 되는 날이었다. 펄5도 14년이 됐다. 1994년 이후로 많은 변화가 있었지만 아직 분주하다.
많은 멋진 기능들이 펄 5.10에 추가되었으며,
펄6에서는 프로그래밍 언어적 기반이 크게 변경될 것이지만, 이 펄5의 앞으로의 비전은 무엇인가. 현재의 상황은 어떠한가, 어떻게 그 가치를 이어 갈 것인가.
이를 위한 최고의 방법은 실제 프로젝트에서 지겹고, 차질을 유발하고, 잠재적인 에러들을 없앨 수 있도록 돕는 기능을 추가하는 것이다 – 마케팅 관점에서 일반적인 기기들 또한 물론 고려하면서, 프로그램을 쉽고, 빠르고, 능률적이며, 즐겁게 작성할 수 있게 해야 한다.
펄5에서 추가되어야 할 것들
- 정기 릴리즈
Parrot의 24번째의 월간 릴리즈가 코앞으로 다가왔다. 펄 프로젝트에서의 중요 결정사항이 있다면 바로 이것이다. 월간 릴리즈를 통해 생산적인 개발적 리듬을 찾을 수 있고, 커밋된것들의 시연을 통해 합리적인 이견들을 수용하여 자칫 치명적일 수도 있는 치명적인 설계 오류들을 찾아내 수정 할 수 있다. 힘들겠지만 3개월 간격의 핵심 릴리즈 사이클을 확보하되, (릴리즈 과정의 고능률화가 필요하다.) 이상하고 뒤죽박죽 릴리즈 된다면 기능의 추가는 다음으로 미루고, 다음 릴리즈에서 안정성과 신뢰성을 확보하면 될 것이다.
- Moose, Mouse 그리고 autobox
펄 5에서 차용된 오브젝트 시스템은 파이썬에서 차용되었는데, 이는 상대적으로 유연함을 중점적으로 최적화되어 있지만, 쓰기가 쉽지 않다. Moose 와 Mouse 는 더 향상된 오브젝트 시스템을 제공하는데, 이를 통해 원하는 만큼의 기능의 향상을 제공한다. 이 모델들을 차용하면 차후의 5.12버전에서의 이점을 갖는다 – 또한 펄6으로의 버전향상 시 더 손쉽게 이전이 가능할 것이다.
유사하게 autobox의 경우는 Ruby의 멋진 기능을 차용했는데, 이 기능은 일반 함수를 해당 인자의 클래스 Method처럼 쓸 수 있는 기능이다. (예 : %dict.keys.sort.reverse.print 같은 형태) Smalltalk의 “모든 것은 오브젝트” 라는 개념을 펄의 구조에 차용한 것 뿐이지만, 이 시도는 때때로 놀랄 정도로 코드에서 복잡성을 제거하여 준다. 때문에 무척 주요한 프로그래밍 도구이다.
- 파이썬의 Ctype
펄의 확장 시스템은 진부하고 복잡하다. 공유라이브러리로부터 간단히 값을 주거나 받을 수 있는 확장을 만들려고 해도, 펄의 내부구조에 대한 아주 깊은 이해가 필요하다. 빈번하게 사용되는 이런 기능을 필자가 직접 시험구현을 해보았던 P5NCI가 있지만 이를 완성시키기에는 시간과 에너지가 너무 부족하다. C로 작성된 것을 펄과 연동시키는 방식보다 파이썬의 ctypes방식은 더 똑똑하고, 더 진보적이다. ctypes API를 더 향상시킬 기회가 있었지만 흐지부지 되어버렸고, 때문에 더더욱 펄5에서 반드시 필요하다.
- 진보적인 CPAN 통합
이것이 무슨 말인가 궁금 할 것이다. CPAN 시스템은 수정의 수정이 계속 누적되어왔다. 예를 들자면 CPAN의 모듈을 설치하기 위해서는 CPAN 클라이언트의 설정을 위해 여러가지 문항에 답해야 했다. 그리고 패키지를 다운받고서는, 부속 프로그램을 실행하여 MakeFile을 생성, 이를 configure한 후 빌드, 테스트를 통해 모듈을 설치된다. –- 물론 전부 잘 작동한다면 말이다.
또한 모듈제작자 입장에서 언급해야 할 점은, 모듈을 제작할 때 Makefile을 작성을 위한 프로그램을 꼭 작성해야 한다는 점이다.
해당 기기에 루트 권한이 없거나, C 컴파일 환경이 구축되어 있지 않거나, 호환되는 make 유틸리티가 없거나, 인터넷에 접속되어 있지 않거나, 펄의 헤더파일이 설치되어있지 않으면 난관에 봉착할 수 밖에 없다.
난 이것이 잘 작동하지 않는다는 이유로 제안을 하는 것이 아니다. 다만 아주 일반적인 상황에서도 설치시의 예외처리 작동설계가 쉽지가 않다는 것이다. 적어도 CPAN이 펄5를 쓰는 사람들에게 별빛과도 같은 존재라면, 많은 사람들이 요구한 것처럼, 비록 빈번하지는 않지만 불필요한 보정작업들 없이 손쉽게 가능 하도록 가능 해야 할 것이다.
- Mod_perlite
Mod_perlite은 mod_php의 펄 버전이다. Mod_perl 자체는 좋은 완성품이지만, 많은 관리자원을 요구한다 – 또한 웹서버에서에서 가장 많이 사용된다. 하지만 펄은 “그냥 파일들만 올리면 다 알아서” 작동되어야 할 간소한 웹호스팅의 여러 유저들이 서로 자원(메모리나 CPU같은)을 경쟁하는 상황에서도 잘 돌아가야 할 것이다.
펄의 주요 개발자들은 mod_perl으로 충분하다. 하지만 초보자나 대부분의 유저들은 초당 히트 수 같은 것을 최적화 할 일은 없으며, 그냥 CGI보다 더 쉽고 편리하게 설치하고 싶어한다.
펄5의 Porter 목록들에는 종종 정말 멋지게 환성적인 기능들이 검토중이며, 현재는 펄 5.12에는 어떤 기능이 필요할지 깊이 고려중이다. Mouse, Moose나 autobox 외에도 주목받지 못한 많은 것들도 논의되고 있다. 펄의 핵심 개발자들 입장에서는 CPAN의 개선이나 mod_perlite같은 것들은 중요 관심사가 아닌 것 같지만, 이는 분명 펄의 환경을 풍요롭게 해주므로, 관심을 갖지 않고 거리를 두게 된다면 이는 그 무엇보다 좋지 않은 일이다.