Perl — 자연어를 닮은 텍스트 처리의 스위스 군용 칼
1. 요약
Perl은 1987년 12월 18일 Larry Wall이 발표한 텍스트 처리 중심 스크립트 언어다. NSA의 비밀 프로젝트 "Blacker"에서 보고서를 효율적으로 처리할 도구가 필요해 만들어졌다. 1990~2000년대에는 웹의 더든 일을 떠받친 언어 였고, CGI 스크립트의 표준 이었다.
2. 배경 — Unix 도구의 분리 비용
1980년대 후반 Unix 시스템 관리자들은 셸·awk·sed·C를 모두 알아야 했다. 한 작업을 하려고 네 가지 도구를 조합해야 하는 비용이 컸다. Wall은 이 도구들의 장점을 한데 묶은 언어 가 필요하다고 느꼈다.
Wall은 흥미롭게도 자연어와 인공어를 전공한 언어학자였다. 캘리포니아 버클리에서 언어학을 공부한 배경이 Perl 설계에 깊이 기록되었다. 그는 "Perl은 자연어를 닮았다" 며 문맥에 따라 의미가 달라지는 표현 을 일부러 허용했다.
3. 핵심 특징
- Regex first-class — 정규표현식이 언어 차원에 기록됨.
s/old/new/g같은 구문을 직접 쓸 수 있다. - TMTOWTDI — "There's More Than One Way To Do It" (Ruby도 물려받음)
- Easy things easy, hard things possible — 두 번째 슬로건
- CPAN — Comprehensive Perl Archive Network. 1995년 시작된 세계 최초의 대규모 모듈 저장소. NPM·PyPI의 원형.
- Sigils —
$scalar,@array,%hash— 변수 종류가 한눈에 보임 - Context sensitivity — 같은 식이 스칼라 컨텍스트와 리스트 컨텍스트에서 다르게 동작
4. 주 용도
- 1987~1995: Unix 시스템 관리·로그 분석·보고서
- 1995~2005: CGI 스크립트 — 동적 웹의 첫 시대를 책임짐. Amazon·Yahoo 초기 백엔드.
- 2000~2010: 바이오인포매틱스(Perl saved the Human Genome Project) — 텍스트 처리 강점
- 2010~현재: 시스템 통합·Glue 스크립트 — Python·Ruby에 일선은 넘겼지만 여전히 Unix 관리자의 칼
5. 시대 설계 도구 매핑
Perl은 설계 도구 이전 시대 의 언어다. 1987년 시점 산업계는 Waterfall·구조화 분석(SA/SD)·데이터 흐름도(DFD)가 표준이었지만, Perl은 그것들을 무시하고 빠르게 결과를 내는 길을 택했다.
이는 두 가지 의미가 있다. 첫째, 작은 작업에는 무거운 설계가 부담 이다. 둘째, 작은 작업이 모이면 결국 큰 시스템이 되어 부채로 돌아온다. Perl 코드 베이스가 2000년대에 읽을 수 없는 언어(write-only language) 라는 오명을 얻은 이유다.
2000년대 Perl 6 (Raku) 프로젝트는 언어 자체에 정형 설계 를 박으려 했고, 결국 15년이 걸렸다. 이는 언어 진화도 설계 비용을 피해갈 수 없다 는 점을 보여준다.
6. 강의 활용
Perl은 "빠르게 짤 수 있는 자유의 대가" 를 보여주는 사례다. Wall의 자연어 비유는 매력적이지만, 자연어의 모호함이 코드에 들어오면 유지보수 지옥 이 된다. 같은 결과를 50가지로 짤 수 있는 자유는 6개월 후 코드 리뷰어에게는 50가지 해독 부담이다.
이는 강의의 핵심 명제 — "설계 없이는 코딩이 안된다" — 와 정확히 직결된다. Perl은 언어 차원에서 설계 강제를 포기한 결과, 결국 코드 베이스 차원에서 설계 비용을 두 배로 치렀다.
또한 Perl의 CPAN 은 생태계 설계의 위력 을 보여주는 좋은 예시다. 1995년 Perl이 다른 언어보다 빨리 거대 시스템에 기록된 이유는 언어가 좋아서가 아니라 모듈 생태계가 있어서 였다. 30년 후 Python의 PyPI·JavaScript의 NPM도 같은 패턴이다. 언어가 아니라 생태계 설계가 시대를 정한다.
출처
- Perl - Wikipedia
- Larry Wall - Wikipedia
- Perl programming language released, December 18, 1987 - EDN
- Perl history and evolution - Softpanorama
- Larry Wall, the Guru of Perl - Linux Journal
그룹 시리즈
→ synthesis/group-g5 (시대 그룹 종합 카드)