r2 - 2013-05-06 - 09:35:50 - LuzLunaYou are here:Foswiki>Main Web>PerlProgrammerLevel10
editattachsettingsACLs

add
print raw
historyrenamedelete
children new

펄 프로그래머의 10단계

이 글은 http://d.hatena.ne.jp/naoya/20050809/1123563794 이 글의 일부 발췌 번역본 입니다.


프로그래머라고 한마디로 말해도 if문장의 의미를 간신히 이해한지 얼마 안된 신출내기의 프로그래머도 있으면 범용적이고 뛰어난 라이브러리를 양산할 수 있는 놀라운 솜씨의 해커도 있습니다.

Perl프로그래머에 관해서는 어떻습니까? 일류의Perl프로그래머가 되기 위해서는 안보이는 계단이 있는 것 같습니다. use strict 을 사용하기 시작하면 그 계단을 한 걸음 올랐다고 말할 수 있을 것이고, 정규 표현을 이해했을 때도 일단 오르게 된다고 생각합니다. 레퍼런스, 크로져, 객체 지향,CPAN모듈,mod_perl,MVC체제 그것들도 계단을 구성하는 재료의 여러 가지라고 말할 수 있겠지요.

Perl 프로그래밍 구명 병동이라는 책에서, 조금 길긴 하지만 그런 Perl 프로그래머 레벨 10의 목록을 인용 해 보겠습니다.

  • 레벨 1 : Perl 과 관계된 서적과 자료를 아무것도 읽지 않는다. Perl이 프로그래밍 언어라는 것은 알고 있지만 아무것도 모른다. 다른 사람이 쓴 Perl 프로그램을 실행할 수 있도록 프로그램의 일부를 편집하여 프로그램의 일부 작동 (출력되는 문자열의 내용 등)을 할 수 있음을 알고있다. 프로그램의 다른 부분을 변경해서 왜 잘못되었는지 이해하지 않는다. 이 언어에 맞는 멘탈 모델을 가지고 있지 않기 때문에 Perl의 구문을 COBOL과 C++와 같은 다른 언어와는 구분할 수 없다.

  • 레벨 2 : 기본 블록 구조의 구문을 이해하고 있지만 JavaScript 와 같은 언어로 비슷하다는 정도의 인식에 머무르고있다. 블록이 특정 범위 효과를 야기하는 이해는 있지만, 렉시컬 변수는 모르며 use strict와 use warnings에 만난 적도 없다. 조건의 의미를 변경할 수 있으며, 기본적인 산술 연산자와 논리 연산자 조건을 사용할 수있다. 필요로하는 모든 것을 다른 사람이 쓴 프로그램에 약간의 수정을가함으로써 달성 할 수 있다고 생각한다.

  • 레벨 3 : 프로그램을 처음부터 만들고 싶어하지만, 어떤 종류의 교육이 필요하다고 알고있다. Perl을 배우기에 적합한 도서를 추천 해 주었으면 생각하고있다. 이 수준의 프로그래머 중에는 낙타책[WALL00]를 연습이라고 생각 입수하고 그 내용을 독파하려다 무거운 내상을 받고 고통받는 사람이 있을지도 모른다.

  • 레벨4: use strict 와 use warnings 를 처음으로 배워 유용성보다 귀찮음을 느끼고 있다. my 의 의미에 대해 염려하고 있다. 여러가지 모듈로 대부분의 문제를 해결할 수 있는 것은 알고 있지만 입수방법이나 사용 방법은 모른다. Perl의 뉴스 그룹에 참가하고 있지만, 자신에게 관계가 없는 토픽에 대한 대량의 논의에 압도 되고 있다.

  • 레벨5: 정규 표현, 연산자,I/O, 및 스코프에 대해 기본적인 이해가 있다. 모두가 말하므로 my, use strict 및use warnings 를 사용하고 있다.많은 사람들이 이 레벨을 넘지 않는 것은 비록 비효율적이어도 재이용 가능한 컴퍼넌트의 작성을 제외하면 뭐든지 할 수 있기 때문이다.이 레벨이나 다음의 레벨에서는 레퍼런스를 알고 있다.

  • 레벨6: Perl 의 강습을 받고 있는 사람도 있다. 오브젝트의 사용법을 알고 있어 이 지식과Comprehensive Perl Archive Network(CPAN)(을)를 이용하면 강력한 프로그램을 재빠르게 작성할 수 있다는 사실을 알고있다. 다음의 레벨로 올라서면 이 능력 확대가 어디까지 가는지 보고 싶다.

  • 레벨7: 객체 지향 모듈을 스스로 작성할 수 있게 되어 코드를 재이용하는 것의 기쁨을 간신히 느끼고 있다. 패키지 및 렉시칼 변수와 다이나믹 변수의 차이를 이해하고 있다. Perl 의 정규 표현(regular expressions)이 「보통」이라고 하는 의미의 레귤러가 아니고 단순한 텍스트 조작을 아득하게 넘는 것이라고 알고 있다.

  • 레벨8: CPAN 에 버그 리포트나 패치나 모듈을 보내거나 문서에 대해 제안하거나 초심자에게 도움이 될만한 문서를 내거나 하는 등 Perl 커뮤니티에 기여하기 위한 활동을 개시하고 있다. AUTOLOAD 등의 고도의 기능을 알아 Class::MethodMaker 등의 개발자를 위한 모듈을 사용하기 시작한다. DBI (이)나Wx 등의 복잡한 애플리케이션 모듈을 적당 사용한다. Plack::Middleware를 구사해Web 베이스의 애플리케이션을 작성한다. (역자주. 오래전에 쓰여진 글이라 Tk라고 적힌 부분을 Wx로 수정하였습니다. 오래전에 쓰여진 글이라 CGI.pm이라고 적힌 부분을 Plack::Middleware로 수정하였습니다. Plack::Middleware대신 Mojolicious혹은 Dancer 그리고 Catalyst등의 웹 프레임웍이 이 자리를 대신할 수 있을 것 같습니다.)

  • 레벨 9 : Perl 컨퍼런스에 참석하는 등 Perl 커뮤니티의 참여가 깊어진다. www.perlmonks.org 이나 # perl (제 12 장 참조)를 자주 방문하고 있을지도 모른다. eval 코드를 그 자리에서 만들거나 심볼 테이블을 조작하는 등을 편하게 할 수있다. 코딩에서 종종 (어쩌면 필요 이상으로) 성능에 신경을 쓰거나. 메이저 모듈을 상속 해 중요한 기능을 덧붙여서 모듈을 공개한다. (역자주. perl.kr이나 #perl-kr 을 자주 방문하고 있을지도 모른다... ㅎㅎ)

  • 레벨 10 : Perl의 obfuscation 대회 및 "Golf Code"대회에 참가한다. 예를 들어 보통의 프로그래머라면 하나의 프로그램을 통째로 필요로하는 같은 함수를 소스 코드를 사용하여 단일 정규식으로 구현한다. Perl 코어 패치를 보내거나 새 측정 모듈을 기증 하는 것으로 Perl 커뮤니티에서 유명 인사가 될지도 모른다.

  • 레벨 11 : 레벨 수를 하나 더 올렸더니 해당자가 Larry Wall 한명뿐이네요 -_-;;;

-- LuzLuna - 2013-05-06
Topic revision: r2 - 2013-05-06, LuzLuna
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback