티스토리 뷰

A morality tale of Perl versus Python - SouNerd.com

Perl과 Python을 스타워즈의 스토리를 이용하여 비교한 재밌는 글이다.

루크는 요다를 등에 묶어 업고 Dagobah통계연구소를 향해 늪지대의 수많은 두터운 덩굴들을 기어 올라간다. 숨이 차도록 그는 grepping(UNIX grep command를 이용해서 문자를 찾는 것을 말하는 것 같음), 새로운 패키지 설치하기, root로 로그인하기, 2년된 오래된 shell script를 python으로 만들기 등의 연습을 계속 하고 있다.

요다(Yoda): 코드(code)!!, 그래 프로그래머의 힘, 강력함은 코드를 얼마나 유지보수가 쉽도록 만드느냐에서 나오지. 하지만 Perl을 주의하게. 간결한 문법... 여러가지 문제 해결 방법.. 디폴트 변수들... 코드의 유지보수성에 있어서 어둠의 측면(The dark side of code maintainability)는 바로 그것들이네..코드를 작성할 때 그러한 것들에게 물를기 쉽다네. 어둠에 길로 한번 들어서면 너의 운명은 영원히 지배당할 것이야.
루크(Luke): Perl이 Python보다 좋습니까?
요다: 아니.. 하지만 빠르고 쉽고, 게다가 매력적이지..
루크: 그러면 어떻게 Python이 Perl보다 좋다는 것을 알 수 있습니까?
요다: 곧 알게 될꺼야. 네가 만든 코드를 읽는데 6개월이 걸린다면.....


Perl과 다른 스크립트 언어들을 비교할 때 거의 항상 나오는 얘기지만 그 때마다 Perl의 단점으로 지적되는 것이 readibility다. 읽기 어렵고 유지보수가 어렵다는 것이 그 이유이고 그것은 사실이지만 그 문제는 프로그래머가 만드는 것이지 Perl 자체가 만드는 것은 아니다. 다만 Perl은 그 문제가 발생될 여지를 주었다는 게 죄다. 비유하자면 무법지대라고나 할까..
무법지대가 꼭 나쁜 것인가? 그건 아닌 것 같다. 어렸을 때 도덕책에서 본 듯한 기억이 있는데, 공자가 그랬나?.. 암튼 "마음이 가는데로 행하여도 법도에 어긋남이 없는 경지"가 있다고 그랬는데 이것을 프로그래밍에 비유하자면 "하고 싶은데로 코딩을 하여도 코딩 컨벤션에 어긋나지 않는다." 인것 같다. 즉, 문제는 환경이 아니라 주어진 환경에서 타인들과의 약속(법, 코딩 컨벤션)을 얼마나 잘 지키냐의 문제인 것이다. Perl뿐만이 아니라 다른 언어에도 코딩 컨벤션이 있지만 얼마나 잘 지켜지고 있을까? SUN JDK 라이브러리 소스 조차 엉망인데...
언어의 표현의 자유도에서 발생된 문제를 탓할게 아니라 그 표현의 자유도를 이용하는 사람들의 잘못된 습관, 타인과의 약속(코딩 컨벤션)을 지키지 않는 습관을 탓해야한다. Perl의 잘못은 약속을 지키지 않았을 때 떨어질 수 있는 나락의 깊이를 너무 깊게 해줬다는 것...
하지만 Perl의 문제는 표현의 약속(코딩 컨벤션)으로만 발생되는 것인가? 그건 아니다. more than one way to do it 이 말해주고 있듯이 하나의 로직을 표현하는데에도 여러가지 방법을 제시해주고 있다. 더군다나 암묵적인 디폴트 변수 $_, @_ .. 이건 도대체 눈을 똑바로 뜨고 쳐다보고 있지 않으면 언제 어디서 값이 바뀔지 모르고 어디로 넘어갈지 모른다. 하지만 이것도 자유도의 문제이듯 디폴트 변수를 되도록 안 쓰면 된다. 하지만 디폴트 변수가 익숙해지면 편하기 때문에 그 어둠의 포스에 빠져들기 쉽긴 하지만...
뭐 암튼... Perl의 자유분방함이 낳은 무질서가 Perl을 역으로 압박하고 있는 것 같긴 하지만 무질서를 만들어 낸 것은 프로그래머들일 뿐.. 그것 자체로 프로그래밍 언어의 좋고 나쁨을 결정할 것은 아닌것 같다. 정말 좋은 언어란... 개인적인 기준이지 공통으로 적용될 기준도 아닌 것 같고..
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함