Python을 배워야 하는 이유

cinsk의 이미지
11955
points
28
points

개인적으로나 업무상으로나 여러 스크립트 언어를 쓸 경우가 많은데, Python에 가장 큰 점수를 주고 싶습니다. Eric Raymond씨도 "How To Become A Hacker"란 글에서 프로그래밍을 배우고 싶다면 python을 배우라고 쓴 적이 있습니다. 저도, 꽤 많은 언어를 쓰고 있다고 생각하지만, Python만큼 강력하며, 쉽게 배울 수 있는 언어를 본 적이 없습니다. Python 언어에 대한 자세한 사항은 Python 관련 책이나 문서에서 충분히 얻을 수 있을 것이므로, Python에 대한 특징을 바라보는 입장에서 정리해 보았습니다. 여가 시간이 있거나, 배우고 싶은 언어를 찾고 있다면, Python을 익혀보기를 강력하게 추천합니다.

Python 홈 페이지

Programming에 대한 경험이 없는 사람의 경우

  • 복잡한 문법(어느 정도 주관적인 기준으로 바라본 것이긴 하지만)을 필요로 하는 Perl이나 C, C++에 비해 문법이 간단하다. 따라서 배우기 쉽다는 장점이 있다.
  • C와 비교했을 때, 포인터와 같은 배우기 힘든 개념이 없기 때문에, 상대적으로 많은 시간을 프로그램 구조와 디자인 등에 투자할 수 있다.
  • C++과 비교했을때, OOP의 기본적인 사항들은 더욱 빠르게 배울 수 있다.
  • 기본적으로 인터프리터 방식이기 때문에, 코드의 결과를 바로바로 확인해 볼 수 있고, 다양한 운영체제를 지원한다. 또한 원할 경우, 바로 실행 파일(.exe)을 만들어 낼 수도 있다.
  • 다양한 라이브러리를 지원하기 때문에, 상대적으로 적은 양의 코드만으로도 GUI 프로그램, game, CGI 프로그램등을 빠르게 만들 수 있다.

C/C++ 프로그래머인 경우

  • C/C++ 그리고 Bourne shell과 유사한 문법을 가지고 있기 때문에, 기타 다른 스크립트 언어에 비해 익히는 속도가 매우 빠르다.
  • OS에 관련된 기능들은 (예: POSIX interface) 대부분 C/C++에서 제공되는 함수와 같은 이름을 쓰고, 심지어 인자 타입이나 의미까지 비슷한 경우가 많기 때문에, 익혀야하는 함수들이 타 스크립트 언어와 비교할 때 많지 않다.
  • class, virtual function, 제한적인 operator overloading을 지원하기 때문에 C++에서 썼던 디자인 방식 그대로 적용할 수 있다.
  • Mixed language programming -- Python은 기타 다른 스크립트 언어에 비해 C/C++로 python module을 작성하기가 매우 쉽다. (어느 정도 주관적인 견해 포함)
  • 제한적이나마 lambda expression을 제공하기 때문에, LISP/Scheme 등에 익숙한 사람들도 비슷한 코드를 쉽게 만들 수 있다. map(), apply() 함수 제공, closure 제공
  • 다른 스크립트 언어에 비해 문서화가 잘 되어 있으며 (Tutorial, Library Reference, Language Reference 제공), 문법 자체에 LISP/Scheme과 마찬가지로 documentation string을 집어 넣을 수 있고, built-in 함수인 dir()을 쓰면, 함수, 모듈, 오브젝트가 제공하는 심볼 테이블을 바로 볼 수 있기 때문에 다른 스크립트 언어를 쓸 때에 비해, 따로 문서를 찾아보는 빈도가 낮아진다.
  • 함수, 클래스 또는 변수에 Decorator를 직접 제작할 수 있다. Decorator란 C/C++ 문법상 qualifier에 해당하는 것으로 다양한 wrapper를 만들거나 class인 경우 static, class method를 지정할 수 있다. Python 2.4 Decorators 참고

기타 사항

  • Dictionary (Postscript의 dictionary나 다른 언어의 associative array에 해당) 타입이 제공된다. 또한 immutable list에 가까운 tuple 타입이 제공되며, 서로 대입이 가능하기 때문에, 한 줄의 코드로 변수 값을 치환할 수도 있다.
  • 모든 타입은 repr() 연산을 써서 문자열로 변경할 수 있다. 또한 eval() 연산을 써서 문자열을 평가한 후 python type으로 불러 올 수 있다. 따라서 이 기능과 여러 DB 모듈을 잘 활용하면, 모든 Python type을 DB에 저장/로드하는 것이 가능해진다.
  • GTK+ binding이 제공되며, GTK+ C API 또는 C++ API(gtkmm)에 비해 훨씬 간단하게 GUI application을 작성할 수 있다. 또한 이미 GTK binary가 MS Windows 용으로 제공되기 때문에, 간단하게 Windows application도 만들 수 있다. (Pygtk 참고)
  • Python은 SDL binding을 제공하기 때문에, 게임을 만들어 보고 싶은 개발자에게도 최적의 언어라고 할 수 있다. (PyGame 참고)

  • Python 자체적으로 cgi, urllib, httplib 등의 모듈을 제공하며, 다양한 XML parsing module도 제공하며, Berkeley DB, GDBM, sqlite, oracle, ODBC등의 DB 모듈도 제공하기 때문에, Web application을 쉽게 만들 수 있다.
  • zlib, bz2, gzip, zipfie, tarfile등의 모듈을 자체적으로 제공하기 때문에 압축 파일 관련 처리가 매우 쉽다.
  • 다양한 os 기능과 함께 curses 모듈도 제공, terminal에서 실행되는 installer나 administrative tool을 만들기가 편리하다.
  • Built-in source debugger인 pdb를 제공한다.
  • 실제 개발할 때 Emacs(Pymacs, python-mode package 활용)에서 완벽하게 interpreter를 지원하며, 다양한 형태의 (buffer, region)등을 python 실행 결과를 확인할 수도 있다. 또한 Emacs 내부에서 디버거를 실행할 수 있으며(M-x pdb), Web browser w3m package를 쓰면 따로 도움말을 보기 위해 browser를 띄울 필요도 없기 때문에 매우 편리하다! (python-mode, w3m, emacs-w3m 참고)

익명사용자의 이미지

객치지향을 쓰지않는

-8
points

객치지향을 쓰지않는 c 프로그레머라면 perl!!

aero의 이미지
5084
points

객체지향을 쓰려고 해도 Perl 하면 됩니다.

8
points

Perl5는 객체지향 코드를 작성하기가 다른언어에 비해서
좀 번거로운 작업이 많은건 사실입니다.

하지만 Perl의 엄청난 cpan.org에 있는 모듈들은 다 객체지향적으로
만들어진겁니다.

Perl에서 객체지향을 말할때 어느정도 진입장벽이 있고 비교적 자료가
부족하기 때문에 그러한 말들이 많은데 익숙해지면 그렇게 문제는 안됩니다.

Perl 5에도 Perl 6의 발전된 객체지향이 나오기전에 이를 개선하고자
하는 노력이 계속되어 현재는
Moose (A complete modern object system for Perl 5 ) 모듈
( http://search.cpan.org/~stevan/Moose-0.17/ ) 같은
메타 클래스 시스템같은 현대적 객체시스템형식으로 객체지향 코드를 짤 수 있는 모듈이 나왔고
실제 프로젝트들에도 많이 도입되고 있는걸로 압니다. 이것은 Perl6의
객체지향과 유사한 형태로 차후 부드러운 패러다임 시프트를 가능하게 한다고 합니다.

그리고 try..catch 같은 객체지향적 예외 처리코드도 Perl 5에서는 좀 번거로웠는데
http://www.perl.com/pub/a/2002/11/14/exception.html
처럼 모듈로서 그러한 구조를 지원합니다.

Perl의 매력은 뭐니뭐니해도 없는것이 없을정도로 방대하고 일관성있게 관리되는 CPAN입니다.

Perl 6 나오면 Perl 5배운거 말짱 도루묵 아니냐? 하시는 분들이 있을지도 모르겠는데
위처럼 Perl 6의 패러다임에 맞게 Perl 5가 변해가고 있으며 Perl 6가 나와도 Perl 5의
모듈들을 그대로 다 사용가능하고 Perl 6와 Perl 5를 혼용해서 쓸 수 있도록
현재 Perl 6 개발작업이 다양하게 진행되고 있습니다.

이런 부분에서는 Python이 버젼 업할때 마다 언어명세가 달라져 코드의 하위 호환성이 없어져버리는
불만이 많이 나온것에 비하면 Perl은 이 부분에 있어서는 확실히 앞선다고 보입니다.
올해 발표예정인 Python 3000에서도 물론 하위 호환성이 깨지는걸로 알고있고...

Perl계에서 어떠한 일들이 벌어지고 이슈가 되고 있는지 궁금하시면
YAPC::NA 2006 (Yet Another Perl conference North America 2006)의 세션동영상들이
모여 있는 http://media-landscape.com/yapc/schedule.html 한 번 둘러보시기를 권해드립니다.

alfalf의 이미지
3449
points

음... 싸움으로 번질까 두렵지만... ^^;

4
points

그래도, 역시 객체지향에 있어서는 Python에 Perl에 비해 한 수 위라고 생각합니다. 처음부터 객체지향을 언어의 주요 패러다임으로 설정한 Python과 객체지향 패러다임을 모듈의 형태로 추가한 Perl과는 차이가 있다고 봅니다. 이는 이전에 논의가 된 'C로 객체지향 프로그램이 되는가?'하는 문제와 유사한 문제라고 생각됩니다. Perl 6가 나오면 어찌될지 모르겠지만 적어도 그 전까지는 전 Python에 한 표 입니다. ^^

제가 알고있기로는...

1
point

예전에 읽은 펄 서적(객체지향 펄)중 펄의 객체지향적인 면을 파이선과 비교하는 부분에서 읽은 내용입니다.
파이선의 경우는 메소드를 통하지 않고도 객체(속성)를 수정 할 수 있는데 이를 막을 수 있는 방법이 없다고 하네요....
이 점에 대해서 파이선을 만든 구도(구도가 맞나요...?)는 이것은 파이선의 철학이기때문에 수정할 용의가 없다고 했고요...
그렇다면 파이선이 펄보다 객체지향이 한 수 위라는건 좀 어긋나지 않나요...?

alfalf의 이미지
3449
points

네... 맞는 말씀입니다.

5
points

하지만, 또 예를 들어 말씀드리 자면 제가 말씀드린 Python과 Perl간의 객체지향의 차이는 'C++에서 제공하는 객체지향이 옳으냐? 아니면, Java에서 제공하는 객체지향이 옳으냐?' 하는 문제가 아니라 정도의 차이는 있지만 'C++과 C 둘 중 어느것이 더 객체지향 프로그램이 쉬우냐?'의 하는 문제와 비슷하다고 생각됩니다. (음... 점점 제가 싸움을 만드는 것이 아닌가 걱정이 되는군요. 그냥, 개인적인 의견이니까 너무 화내지 말아 주세요. ^^;)

aero의 이미지
5084
points

비교가 좀 가혹한것 같습니다.

8
points

Python:Perl = C++:C 로 비교하신건 좀 가혹한것 같습니다.

객체지향적으로 프로그래밍 하려면 C에서는 처음부터 끝까지 사용자가
객체지향적구조를 노가다로 만들어야 하는 반면 Perl은 적어도 객체지향언어의
대표적 성격중 하나인 namespace를 가지고 있고 객체지향에 쓰이는
고유의 keyword들 ( new, bless, SUPER, isa 등등)을 가지고 있습니다.

그리고 Perl의 CPAN에 보면 Class:: 계열의 각종 객체지향을 개선하고 편히쓸 수 있는
모듈들이 널려있습니다.
Moose도 그것들의 결정체로 등장한것이구요.

듣는 분들이 오해할 소지가 있어서 지적해봤습니다.

alfalf의 이미지
3449
points

제가 생각하기에도 비교가 너무 가혹한 것 같았습니다. ^^;

5
points

사실 말씀하신데로 제가 글을 쓰면서도 예가 너무 극단적인건 아닌가 하는 걱정이 있었습니다.
그래서, 제 윗 글에 '정도의 차이가 있지만' 이란 한정을 두기는 했는데 좀 부족했던것 같네요. 죄송합니다. ^^
또, aero님이 말씀하신대로 다른 분들의 오해가 없었으면 좋겠네요.

aero의 이미지
5084
points

Perl에서 OOP는

5
points

Perl에서 OOP는 예전에 제가 http://kldp.org/node/74080
stop_perl3 라는 글의 번역에도 있듯이 잘 알려지지 않은데 있어 오는 오해인것 같습니다.
Perl에서 객체지향은 알고보면 그렇게 어렵지 않습니다.

Perl OOP에 관심이 있으신 분들은 우선
* http://www.codeproject.com/perl/camel_poop.asp
* http://j2k.naver.com/j2k.php/korean/www.rwds.net/kuroita/program/Perl_oo...
(일본의 Perl OOP tutorial 문서 -> 일한 번역 )
* http://j2k.naver.com/j2k.php/korean/fleur.hio.jp/perldoc/mix/pod/perlboo...
( http://perldoc.perl.org/perlboot.html 의 일본어 번역->일한 번역 )
* http://j2k.naver.com/j2k.php/korean/perldoc.jp/docs/perl/5.8.0/perltoot....
( http://perldoc.perl.org/perltoot.html 의 일본어 번역->일한 번역 )

* http://www.perl.org/books/beginning-perl/ 의 Chapter 11: Object-Oriented Perl
* http://perltraining.com.au/notes.html 의 Object Oriented Perl (full manual, pdf, 859KB)
위 링크들을 참고해보세요.

aero의 이미지
5084
points

Python과 Perl의 OOP비교.

4
points

일단 간단한거 하나 예를 들어보는게 좋을것 같아서 정리해봤습니다.

Perl 객체? Python과 비교하며 감을 잡아보자.
http://kldp.org/node/77924

씨에의 이미지
13324
points

파이썬이 처음부터

2
points

파이썬이 처음부터 객체지향을 주요 패러다임으로 정했다구요?

현재의 self가 남발된 메소드는 "변화"를 최소화하면서 객체지향을 도입하기 원한 결과였습니다.

- CN의 낙서장 / HanIRC:#CN

alfalf의 이미지
3449
points

객체지향이 처음부터 기본 패러다임이 아니었습니까?

2
points

객체 지향이 처음부터 Python의 기본 패러다임이 아니었습니까?
적어도 제가 기억하는 한 1996년에 발표된 1.4버젼에서도 class를 지원했던걸로 기억하는데, 그럼, Python이 언제부터 객체지향을 지원했는지 궁금하네요 알려주세요.

alfalf의 이미지
3449
points

기다리다 결국 제가 찾아 보았습니다. ^^;

7
points

여러분의 답변을 기다리다 궁금증을 못이겨 결국 제가 직접 찾아보았습니다. 아래 글에 의하면 제가 알고 있던대로 객체지향은 처음부터 Python의 패러다임 중 하나였습니다. 다시말해, 적어도 1991년 초반 처음으로 USENET에 릴리즈된 0.9.1에서도 지금과는 조금 다른 형태지만 정확히 객체지향을 지원하고 있었네요.

http://www.prescod.net/python/OOMyth.html

윗 글에 'self'에 대한 설명도 들어 있네요. 어쨌든 CN님 덕분에 제가 주로 사용하는 Python에 대한 이해를 넓힐 수 있었습니다. ^^

읔~ 영어의 압박이 많이 되는군요!

0
points

프로그래머가 영어 울렁증이 있어서 큰일이에요ㅜ_ㅜa

Scarecrow의 이미지
4571
points

프로그래밍에 경험이 없는 사람의 경우

4
points

프로그래밍을 배우기 시작하면서 들여쓰기부터 배운다는게 매력인거 같습니다.
C/C++같은 경우는 들여쓰기 전혀 안되어 있는 소스를 양산하는 초보들이 너무 많거든요.

레포트나 뭐 그런 초보자의 소스를 평가할때
들여쓰기 잘 되어 있으면 칭찬까지 해줘야 할 정도...

김정균의 이미지
9736
points

들여쓰기를 기준으로

2
points

들여쓰기를 기준으로 구분하는 것이 제게는 역효과 입니다. block 구분이 너무 애매모호 하거나 또는 다른 사람의 소스를 봐야할 경우 무슨 생각으로 했을까 고민해야 하는 부분이 발생하더군요. 그리고 OOP 식 코딩에 익숙하지 않은 경우라면.. 역시 python 은 상당히 부담스럽습니다.

그리고, 아래에 등록된 글 처럼.. perl 이나 ruby, php 도 모두 비슷한 장점이 다 있죠. 더군다나 perl 이나 php 의 경우 대중성에 의한 유지보수도 쉽다는 측면이 있습니다.

익명사용자의 이미지

인용: 더군다나 perl

-1
points

인용:

더군다나 perl 이나 php 의 경우 대중성에 의한 유지보수도 쉽다는 측면이 있습니다.

이게 전부인 경우가 많은것 같습니다.

익명사용자의 이미지

배워보고 싶긴한데..

1
point

배워보고 싶긴한데..
온라인으로 제공되는 파이썬 책 중 어느 것이 가장 잘되어있나요?

Scarecrow의 이미지
4571
points

dive into python

1
point

http://www.diveintopython.org/ 이 제일 좋은 것 같습니다.

SoftOn의 이미지
1254
points

흠..

1
point

한글 번역된건 깨져서 보이는군요;; 문제가 뭘까..

http://kr.diveintopython.org/html/index.htm

jhumwhale의 이미지
2253
points

이것인가요?

시렌의 이미지
3045
points

3
points

영문판을 보는 것을 추천합니다.
한글판은 예전 영문판을 번역한거라서 최근 영문판과 좀 많이 다릅니다.
물론 기본적인 문법만 배운다면야 보셔도 되겠지만..

my blog: http://www.siren99.net

galien의 이미지
6454
points

그것은 번역하신

2
points

그것은 번역하신 분께 연락해 본 결과, 다이브인투 저자(이자 사이트 관리자)의 실수인 것같다고 하더군요.
그래서 새로운 버젼을 다시 보냈는데, 답신이 없다고....

그래서 번역된것을 jhumwhale님께서 올린 곳에 따로 올려 놓으셨다고 들었습니다.

이메일로 친절하게 번역된 파일도 주셨던 것 같기도한데..

어디있는지 안보이는 군요;;;;

뭐 어쨌든 저도 diveintopython 강추입니다.

keedi의 이미지
7018
points

펄 유저의 입장에서

5
points

펄 유저의 입장에서 주관적으로 보았을 때,
언급하신 장점의 대부분이 펄이나 루비 등
다른 강력한 스크립트 언어에도 해당하는 부분 같습니다.

펄과 비교했을때 파이썬이 가지는 큰 우위는 언급하시 부분에서
OOP와 C언어와의 연동, 실행파일 만들기, 체계적인 프로그래밍 방법 학습 등
이라고 생각합니다.

그나마 펄에서는 OOP -> 템플릿 모듈, 실행파일 만들기 -> PAR를
사용해서 어느정도 깔끔하게 처리할 수 있습니다.
하지만 C언어와의 연동은 공부할 부분이 많은 것도 사실입니다.

---------------------------
Smashing Watermelons~!!
Whatever Nevermind~!!

ff4500의 이미지
1001
points

파이썬의 대중성이 약한 이유는

11
points

오랬만에 올라오는 파이썬 예찬에 +1 포인트 합니다. 저도 파이썬 빠돌..

파이썬 같은 좋은 언어가 아직도 대중성이 약한 이유가 궁금해서,
파이썬의 단점을 몇가지 추측 해보겠습니다.

* CPAN같은 "원터치 모듈 인스톨"이 없습니다.
- 최근의 윈도용 Enthoughtment Edition 에서 비슷한걸 지원하지만 아직 안정적이라는 느낌이 없네요
* 하위 호환성이 약합니다.
- 파이썬 자체는 별 문제 없는것 같지만,(많이 사용하는) wxPython의 경우 2.5버젼의 잘돌아 가던 녀석이 2.6에서는 안돌아가는 경우가 있습니다.
* Perl, Ruby 같은 위트가 없습니다.
- 강제 인덴트의 굴레에 묶여서 인지, Perl, Ruby 사용자층과 코드들 보다 -이해하기는 쉽지만- 차갑게 느껴집니다.

그리고,
* 기존 사용자들이 계속 자신만의 비책으로 삼고 싶기 때문에 대중화에 힘쓰지 않는다?
라는게 대중성이 약한 큰 이유가 아닐까요? :)

gamdora의 이미지
4071
points

참을 수 없는 차가움 - 혹은 딱딱함

2
points

인용:

* Perl, Ruby 같은 위트가 없습니다.
- 강제 인덴트의 굴레에 묶여서 인지, Perl, Ruby 사용자층과 코드들 보다 -이해하기는 쉽지만- 차갑게 느껴집니다.

파이썬*의 장점에서 오는 단점이군요.

저는 파이썬*을 익히다가

저 참을 수 없는 차가움 - 혹은 딱딱함 - 때문에 펄*로 도망쳤어요. OTL

뭐, 둘 다 좋은 언어이니 마음에 드는 걸 쓰면 되겠죠. :)

keedi의 이미지
7018
points

위트...공감가는

2
points

위트...공감가는 말입니다.
어느것을 좋아할지는 개인 취향이니까요~

---------------------------
Smashing Watermelons~!!
Whatever Nevermind~!!

galien의 이미지
6454
points

의외로 파이썬의

2
points

의외로 파이썬의 다이나믹한 특성(실시간 반영되는 특성)으로 인해서
또한, 아직 역사가 펄 등에 비해 오래되지 않아서
임베디드 쪽에 만족할 만한 수준으로 포팅이 안되어있습니다.

요즘 제가 이쪽으로 고민 중인데, c로 쓰여진 모듈 중 일부분은 포팅이 안되어있더군요.

lazycoder의 이미지
1105
points

제 주위사람들은

2
points

제 주위사람들은 어려워 하더군요.
하지만 저는 이해합니다. 저도 python이 어려웠거든요. -_-;

exsider의 이미지
1802
points

제게는 큰 도움이 되었습니다.

3
points

제가 처음 프로그래밍을 배울 때 java 와 c++ 책을 사서 독학했는데,
여러번 읽어봐도 뜬구름 잡는 이야기더군요.
나중에 군대에서 국내에 처음으로 출간된 python 책을 보기 시작했는데
python을 익히면서 프로그래밍이라는 것 자체에 대해서도 이해할 수 있었습니다.

익명사용자의 이미지

사실 파이썬이

3
points

사실 파이썬이 쉽기는 하지만, 요즘은 도통 모를것같은 문법 투성이어서

코드를 보면서 한참을 머리속으로 생각해야 하는경우도 많은것 같습니다.

파이썬 마을에서 perky님께서 이런 코드를 올려주셨는데요.

def findfirstsingle(s):
return (c for c in s if s.count(c) <= 1).next()

보면서 한참을 머리속으로 생각해도 정말 답이 안나옵니다.

물론 파이썬에서 이러한것도 가능하다라는것을 보여주기 위함이겠지만,

개인적으로는 도통 맘에안듭니다.

print >> file 요렇게 쓰는것도 맘에 안들고, 데코레이터도 어렵고,

with mysqlconn('localhost', 'user', 'passwd', 'db') as curs:
curs.execute('select count(*) from schedule')
print curs.fetchone()

요렇게 써버리면 진짜 제가 보고 있는게 파이썬인지 $없는 펄인건지 햇갈려 버립니다 @.@

익명사용자의 이미지

저는 copy & paste 할

1
point

저는 copy & paste 할 때마다 탭&스페이스 틀리는 문제로 골치가 아파요 -_-

alfalf의 이미지
3449
points

저도 그렇습니다.

1
point

저도 Python을 쓰면서 겪는 골치아픈 문제입니다. 이 문제를 손쉽게 해결할 수 있는 방법이 없을까요?

litdream의 이미지
2725
points

copy & paste 를 했을때,

4
points

copy & paste 를 했을때, tab 과 space 때문에 vim 의 visual block 과 substitute 를 사용합니다.
물론, 가져오는 코드는 consistent 하게 'space 면 space' / 'tab 이면 tab' 을 쓴다는 가정이있어야죠?

비주얼 블록으로 잡은후

:'<,'>s/<target code의 indent char(s)>/<my indent char(s)>/g

로 해결합니다.

삽질의 대마왕...

Scarecrow의 이미지
4571
points

그렇네요.

9
points

가장 실용적인(?) 소프트웨어공학인 "copy&paste패턴"의 사용에 번거로움이 있겠군요. -_-

keedi의 이미지
7018
points

웃음 참느라

4
points

웃음 참느라 혼났습니다. :-)

---------------------------
Smashing Watermelons~!!
Whatever Nevermind~!!

whitelazy의 이미지
3384
points

Good!!!!!!! :-D

1
point

Good!!!!!!! :-D

사족: 어라 예전엔 실수로 두번 누르면 안올라가고했던거같은데 두개올라가버렸군요 죄송합니다 !!

whitelazy의 이미지
3384
points

Good!!!!!!! :-D

-1
points

Good!!!!!!! :-D

1day1의 이미지
11581
points

Ruby 를 배워야 하는

3
points

Ruby 를 배워야 하는 이유
Perl 을 배워햐 하는 이유
..
..

등의 시리즈가 나오면 재미있겠네요. ^^

F/OSS 가 함께하길.. (F/OSS서포터즈 : [[FOSS/Supporters]], [[FOSS/Supporters/Group]]) - 답글 프로젝트 : 왜! 이글에는 답글이 없나요? 덤으로 포인트도!! -

익명365의 이미지

근데...

2
points

많은 부분에서 여러 언어들이 중복될 겁니다.
cinsk님 글도 'python'을 단순히 perl이나 ruby로 대치해도 그대로 가져가도 될 만한 부분들이 보이거든요.

wpcasper의 이미지
1850
points

PERL 만세!!

0
points

PERL 만세!!

creativeidler의 이미지
3970
points

파이썬이 대중화가

11
points

파이썬이 대중화가 안된 이유를 분석할 정도로 대중화가 안된 언어는 아닌 것 같습니다. 각종 언어 popularity ranking에서 늘 상위권을 유지하고 있고 국내에서 소위 agile language 계열 중 가장 대중화되어 있죠. 심지어 지난 대안언어축제에서는 파이썬은 이미 주류 언어라는 이유로 세션에서 다루지 않게 된 사건(?)도 있었답니다. 구글에서도 주력 언어로 C, Java, Python 세 가지를 선택하고 있구요.

요즘 루비가 엄청난 속도로 성장하고 있지만 개인적으로는 아직까지 파이썬이 좀더 쉽고 문법적으로 더 깔끔해서 좋은 것 같습니다. 사실 루비는 깔끔한 언어라는 오해(?)가 많이 퍼져 있는데 4,5 개월 RoR로 프로젝트를 해보니 다음 프로젝트에서는 쓰고 싶지 않다는 생각이 들더군요--;

펄은 늘 CPAN이 첫번째 장점으로 꼽힙니다만 파이썬이 라이브러리들의 일관성에서는 뒤질지 몰라도 물량에서는 밀리지 않습니다. 실무에서 파이썬 쓰다가 필요한 라이브러리가 없어서 고생하는 경우는 많지 않은 것 같습니다.

파이썬이 개념적으로 JavaScript랑 비슷하다는 것도 전 꽤 맘에 듭니다. JavaScript도 지저분한 웹을 만드는데 일등공신이라는 오해(?)를 사고 있지만 사실 문법적으로 아주 쉽고 깔끔한 언어죠. (참고로 한국에서 루비하는 사람들은 다 안다는 강XX씨도 JavaScript가 루비보다 문법적으로 더 쉽고 명쾌하다는 것을 인정했다오-_-)

머....이건 다 그냥 쓸데 없는 소리고-_-;; 원문에 조금 첨언하자면...

python은 조금만 배워도 재미있는 걸 많이 해볼 수 있습니다. Django나 Turbogears 같은 걸 이용하면 RoR 못지 않은 속도로 웹 애플리케이션 하나 뚝딱 만들어 볼 수 있고 웬만한 GUI 툴킷 바인딩은 다 있기 때문에(심지어 SWT도 있답니다) GUI 애플리케이션도 쉽게 만들 수 있습니다. PyOpenGL이나 PyGame 같은 걸 이용하면 여러 가지 재미 있는 실험도 해볼 수 있구요. TDD 실습용으로도 딱 좋고 간단한 수식 계산용으로도 훌륭하죠. 거기다 얼려서(?) 윈도우 실행 파일로도 만들 수 있답니다.

aero의 이미지
5084
points

네~

10
points

파이썬은 이미 널리 쓰이고 있습니다. 이미 메이져 랭귀지가 되었죠.
하지만 여러 에반젤리스트들이 활발하게 전파활동을 하던 보급 초창기에 비해서는 그 전파속도의 기세가 많이 사그러든건 사실인것 같습니다. 뭐 이미 메이져 랭귀지가 되었으니 그럴수도 있겠죠. 요즘 들어서는 버젼업과 언어의 재디자인으로 많은 기능을 넣을려고 하다보니 점점 초창기의 단순 명료함을 잃어가고 버젼간의 호환성에 문제가 있는듯도 하구요.

"파이썬이 라이브러리들의 일관성에서는 뒤질지 몰라도 물량에서는 밀리지 않습니다" 라고 하셨는데
파이썬 모듈들을 모아놓은 대표적인 싸이트인 http://cheeseshop.python.org/pypi 에 보면 "There are currently 1946 packages here" 라고 되어 있습니다. http://cpan.org 를 보면 "3413 MB 264 mirrors 5654 authors 11107 modules" 라고 되어 있습니다. 물량에서 밀리지 않는다고 하기는 너무 큰 차이 아닌가요? ^^ 개인적 의견으로는 CPAN의 일관성, 여러 module간의 Dependency check, module install시 test과정등의 정교성에 있어 Python은 아직 개선해야될 점과 갈길이 CPAN에 비하면 아직 멀었다고 봅니다. CPAN은 수많은 플렛폼에서 module의 동작을 보장하기 위해 테스터들로 이루어진 테스트 그룹( http://testers.cpan.org/ )의 테스트 리포팅을 넘어 PITA ( http://ali.as/pita/ ) 같은 자동테스팅 Architecture까지 만들고 있습니다.

Perl도 Jifty( http://jifty.org ) 같은 웹프레임웍을 사용하면 RoR만큼 빨리 웹어플리케이션 하나 뚝딱 만들 수 있습니다.
참고동영상: http://www.crium.univ-metz.fr/docs/devel/jifty/screencast.html

웬만한 GUI 툴킷 바인딩도 다 있기 때문에 gtk( http://search.cpan.org/author/TSCH/Gtk2-1.142/Gtk2.pm ) ,Qt ( http://search.cpan.org/~awin/PerlQt-1.06/ ), wxWidget ( http://search.cpan.org/~mbarbon/Wx-0.67/ ), tk ( http://search.cpan.org/~ni-s/Tk-804.027/ ),Win32::GUI ( http://search.cpan.org/~robertmay/Win32-GUI-1.05/ ) 등등 GUI어플리케이션도 쉽게 만들 수 있습니다.
OpenGL모듈( http://search.cpan.org/author/KJALB/OpenGL-0.5/OpenGL.pod )등으로 재미있는 실험도 해볼 수 있고, Perl PDL( http://pdl.perl.org/ ) 같은걸 쓰면 수식 계산용으로도 훌륭하죠.
PAR ( http://search.cpan.org/~smueller/PAR-0.972/lib/PAR.pm ) 같은걸 사용하면 어느 플랫폼에서나 실행가능한 형태로 만들어 단일 파일로 배포가능합니다. 이것은 단순히 단일 실행파일을 넘어서. 자바에서 jar파일로 웹어플리케이션을 배포하듯이 다양한 배포형태를 염두해두고 계속적으로 개발되어지고 있는 Perl의 표준 배포형식을 지향하고 있습니다.

Perl에도 이런것들이 있다는걸 알려드리기 위해서 윗글과 대응되는 구조로 한 번 써봤습니다.

creativeidler의 이미지
3970
points

말씀처럼 파이썬

9
points

말씀처럼 파이썬 에반젤리스트들의 활동이 수그러든 건 이미 메이저가 되었기 때문인 것 같습니다. 그리고 또 하나는 파이썬 하는 사람들 중엔 다언어주의자가 많아서 이 언어 저 언어 옮겨 다니면서 전파하는 사람들이 많기도 하구요.

펄이 좋은 언어인 것은 저도 알고 있습니다. 그래서 루비는 씹으면서-_- 펄은 별반 씹지 않은 것이구요-_- cpan에 대해서도 좀 알고 있습니다. 하지만 cheeseshop은 좀 의미가 다르죠. 파이썬 프로그래머들은 그닥 뭉치는 걸 좋아하지 않아서 말입니다. 난립하는 웹 프레임웍들을 보면 그런 성향이 좋은 것은 아닌 것 같습니다. 그래서 펄에 비해 일관성이 부족하다는 언급을 한 것이지요. module 설치 같은 게 구질구질한 것 역시 그런 성향이 반영된 것 같습니다. 이제 루비의 젬에게도 따라잡혀 가는 에그를 보면 서글플 때가 있죠-_-;; 그래도 한 가지 희망적인 건 우분투에는 파이썬 패키지가 루비 패키지보다 훨씬 많다는 거-_- 암튼 freshmeat이나 sf.net에서 평가 상위에 오르는 프로젝트들을 보면 예전에 비해 파이썬이 좀더 많아진 느낌입니다. 펄은 프로젝트 숫자는 더 많은데 이상하게 제가 찾는 카테고리에서는 상위에 오르는 프로젝트가 많지 않더군요. 머, 사실 상위에 제일 많이 오르는 건 PHP이긴 하지만...

근데 par가 펄 설치 없이 실행가능한 파일로도 만들 수 있는 것인가요? 사실 자바의 jar는 JVM 없으면 무용지물이라 좀 삽질인 감이 있습니다만. 그게 가능하다면 그것도 좋군요. 펄은 서버 사이드에서만 노는 줄 알았더니 GUI 바인딩도 꽤 많네요. unununium 같은 펄 OS도 있으면 재미 있을 것 같습니다.

펄이 참 괜찮은 언어인데도 우리나라에서 외면 받고 있는 게 좀 안타깝네요. 난독증 유발 언어라는 편견도 받고 있구요. 대안언어축제 때도 펄 세션 한 번 만들어 보려고 했는데 아무도 지지하는 사람이 없었다는 ㅠ.ㅠ 요즘 Web 2.0 한다는 회사들에서도 RoR이나 Django 정도는 많이 쓰는 것 같은데 펄은 고려 대상에 별로 안 오르는 것 같습니다. 아무래도 국내 IT 업계가 좁다보니 한 번 유행이 쓸고 가면 사용자층이 확 늘어나는데 펄은 그런 계기가 좀 부족했던 것 같네요. 요즘 루비 세미나 반정기적으로 하는 거 보면 좀 부럽던데 펄은 그런 거 없나요?

aero의 이미지
5084
points

늦게 까지 안주무시는군요 ^^

9
points

>암튼 freshmeat이나 sf.net에서 평가 상위에 오르는 프로젝트들을 보면 예전에 비해 파이썬이 좀더 많아진 느낌입니다. 펄은 프로젝트 숫자는 더 많은데 이상하게 제가 찾는 카테고리에서는 상위에 오르는 프로젝트가 많지 않더군요. 머, 사실 상위에 제일 많이 오르는 건 PHP이긴 하지만...

Perl이 프로젝트 단위로 싸이트가 활성화 되어있지 않다거나 별도의 문서자료들이 부족한것 처럼 보이는 이유는 대부분의 활동이 CPAN내부에서 이루어지기 때문인거 같습니다. 모듈이든 관련문서든 요즘에는 CPAN내에 다 올려놓더군요. 그래서 CPAN을 뒤져 보지 않고 Perl에는 이런게 없구나 하고 생각하시는 분들도 많은것 같구요.

>근데 par가 펄 설치 없이 실행가능한 파일로도 만들 수 있는 것인가요?

네 Par로 묶으면 Perl해석기,관련모듈이 하나로 다 묶여서 만들어집니다. 이걸 Perl이 설치되지 않은곳이나 Perl이 설치된곳이나 아무곳에나 가도 그것을 실행시키면 자체적으로 내부적으로 풀리면서 독립적인 Perl실행환경을 만든 다음에 실행됩니다. 배포시에 상대방의 환경,모듈 설치여부.버젼 같은걸 신경안쓰고 배포가 가능하다는거죠.

>펄이 참 괜찮은 언어인데도 우리나라에서 외면 받고 있는 게 좀 안타깝네요. 난독증 유발 언어라는 편견도 받고 있구요. 대안언어축제 때도 펄 세션 한 번 만들어 보려고 했는데 아무도 지지하는 사람이 없었다는 ㅠ.ㅠ 요즘 Web 2.0 한다는 회사들에서도 RoR이나 Django 정도는 많이 쓰는 것 같은데 펄은 고려 대상에 별로 안 오르는 것 같습니다. 아무래도 국내 IT 업계가 좁다보니 한 번 유행이 쓸고 가면 사용자층이 확 늘어나는데 펄은 그런 계기가 좀 부족했던 것 같네요. 요즘 루비 세미나 반정기적으로 하는 거 보면 좀 부럽던데 펄은 그런 거 없나요?

예전에 제가 관련글도 여기 많이 올리고 했는데 좀 아쉬운감이 있죠. 얼마전 연말에 www.perlmania.or.kr 에서 모임을 가진적이 있습니다. 앞으로 Perl하는 사람이 더 늘어나면 세미나나 그런것도 해볼만 하겠죠. 더 많아지면 이웃 일본처럼 YAPC같은 행사도 개최할 날도 올것이고~ 하여튼 요즘은 Perl얘기만 나오면 좀 선전(?)을 하고 다녔더니 그때문에 관심을 가지시는 분들이 좀 늘었는지 서점에 가보면 보기 힘들던 Perl관련 책들도 제법 꼽혀있는것 같더라구요. ^^

마지막으로 Perl에 관심을 가지시는 분들을 위해 관련정보를 얻을만한 RSS feed리스트를 올리고 잘렵니다.

http://planet.perl.org/rss20.xml http://www.topix.net/rss/tech/perl.xml http://feeds.feedburner.com/perlfeeds http://www.cpanforum.com/rss/all http://xml.swik.net/Perl http://www.oreillynet.com/meerkat/?_fl=rss10&t=ALL&c=303 http://news.perlfoundation.org/index.xml http://use.perl.org/index.rss http://www.perlmonks.org/headlines.rdf http://pugs.blogs.com/pugs/index.rdf

creativeidler의 이미지
3970
points

Good feeds!

1
point

좋은 자료들 감사합니다.

수연아빠의 이미지

RoR 을 사용 안하기로 한 결정적 계기가 어떤건가요?

0
points

RoR 로 프로젝트를 하고 있는데, 대략 2개월 정도 작업을 하고 있습니다.
데모까지는 성공적으로 했는데, 그 이후에 어떤 문제가 있는지 궁금하네요.
혹시 자세히 언급해 주실 수 있을까요?

그래도... 역시...

2
points

능력이 없어서인지는 모르지만,

php나 c로 필요한 것들을 만들다보면,
결국은 다시 python 으로 작성하고 있는 나를 볼때는,
꽤나, 멋있는 언어라고 생각하고 있습니다.

가장 멋스러운점은 C 로 만든것을 python 모듈로 사용하기 너무 쉽다는 것...
(기능적인 면이 아니라, 프로그램 작성속도라는 면에서...)

===========================================================
혼자놀기의 도사가 되리라...
http://geeklife.co.kr

alfalf의 이미지
3449
points

위에 어떤 분이 모듈이야기 하시면서 '물량'이야기를 하시길래

3
points

위에 어떤 분이 모듈이야기 하시면서 '물량'이야기를 하시길래 문득 떠오른 생각인데,
Perl, Python, Ruby가 스타크래프트의 세 종족과 유사하다는 생각이 드네요.
* Perl -> 저그
* Python -> 프로토스
* Ruby -> 테란
Python을 좋아하는 저는 위의 세 종족 중 '프로토스'를 좋아합니다. 저만 그렇게 생각하는건가요? 다른 분들은 어떠세요?

hey의 이미지
10152
points

그렇게 나오신다면..

4
points

전 삼국지입니다.

* Perl -> 위나라
* Python -> 오나라
* Ruby -> 촉나라

전 파이썬과 오나라를 좋아하는데 ^^ ;

May the F/OSS be with you..

Hannal의 이미지

공감합니다.

2
points

:D 말씀하신 내용에 공감하며, 저 역시 python과 protoss를 좋아합니다.

aero의 이미지
5084
points

참고로 미국의 Job trend 입니다.

4
points

미국의 언어별 Job trend 입니다.

출처: http://www.indeed.com/jobtrends?q=perl%2Cphp%2Cpython%2Cruby

우리나라와는 좀 많이 다른것 같죠?

익명사용자의 이미지

일찍 퇴근하기 위해서는 python 을 배워야 합니다.

3
points

사실 업무적인 프로그램만 하다보면 매너리즘에 빠져버려 거의 기계적인 코딩을 하게 됩니다. 또한 달리 다른 분야 관심을 가지게 되지도 않게되고요.

그러던 저에게 어느날 우연히 파이선을 알게된 후 부터는 어느분의 말대로 저를 위한 프로그램을 하게 되었고, 업무적인 분야에도 적절히 혼용하여 쓰게되니 한결 업무 효율이 올라갑니다.

요즘은 C 코딩 보다는 파이선으로 코딩을 훨씬 선호하게되고, 임시성의 작업에 있어서의 효율은 끝내주죠 !

저에게 파이선을 배워야 하는 이유는 일찍 퇴근하기 위해서....

akudoku의 이미지
16977
points

....k모님이 루비를

3
points

....k모님이 루비를 쓰시는 이유와 같은 이유로군요^^;

akudoku.net

serialx의 이미지
1394
points

파이썬이나 펄이나

8
points

파이썬이나 펄이나 루비같은 스크립팅 언어는 인생의 동반자 입니다. 컴퓨터만 있다면 가지고 놀 수 있는 스위스 군용 칼 같은 느낌이랄까요. 몇일 전에 사례를 하나 들자면, 핸드폰을 하나 새로 샀는데, 전화번호부 데이터가 서로 호환이 안되는겁니다. 양쪽에서 import/export 를 하면 둘 다 csv 파일을 출력하는데 내부 자료 형태를 보니 많이 다르더군요. 그래서 좀 찾아보니 파이썬에 csv 라이브러리가 있었고 해서 뚝딱뚝딱 변환기를 만들어 돌렸더니 번호 300개가 순식깐에 변환 됐고, 지금 새 폰에 다 옮겨놓고 잘 쓰고있습니다. :)

이걸 이런 스크립팅 언어 없이 어떻게 해결했을지 막막하더군요.

esrevinu의 이미지
1848
points

저 같으면

2
points

스프레드시트 프로그램을 이용하거나 C로 짰을 것 같은데...
아직 익숙한 스크립팅 언어가 없어서...

--
foldl (flip (:)) [] "universe"

gamdora의 이미지
4071
points

저도 옛날에는 C로

0
points

저도 옛날에는 C로 했는데,

스크립트 언어로 하니까 아주 편해요. >_<

neocoin의 이미지
1057
points

군에 있을때..

2
points

python이 없어서, Excel의 VBA를 배워서 썼습니다. Excel이 Python보다 더 많이 퍼져 있는거 같아요.

gamdora의 이미지
4071
points

VBA도 스크립트

-2
points

VBA도 스크립트 언어라고 하나요?

VBScript는 확실히 스크립트 언어라도 하는 것 같던데······.

ydhoney의 이미지
38730
points

그런걸 보고

-2
points

게임기라고 합니다.

==
아 씨끄러 씨끄러~ 조용해!!
레드햇 9 이하 사용금지!

gamdora의 이미지
4071
points

게임기군요. 재미

0
points

게임기군요.

재미 있나요? +_+

serialx의 이미지
1394
points

csv 형식은 표준이

2
points

csv 형식은 표준이 없기 때문에 프로그램에 따라서 자료를 읽는 방식이 다릅니다. 액셀만 하더라도 폰번호가 있는 필드 010xxxxxxx 가 숫자로 인식되어 10xxxxxxx 로 잘려버립니다. :(

파이썬의 csv 모듈은 그러한 호환성 문제가 생기지 않도록 많은 배려를 해놨구요.

10줄 코드 한번 짜놓으면 뚝딱뚝딱 변환되니 이보다 편할 수 없지요. : D

---

Captue the one shot in your life!

bizzz의 이미지
1367
points

#!/usr/bin/env python# -*-

3
points

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# generated by wxGlade 0.4.1 on Tue Jan 30 12:34:51 2007

import wx

class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.notebook_1 = wx.Notebook(self, -1, style=0)
self.notebook_1_pane_1 = wx.Panel(self.notebook_1, -1)
self.text_ctrl_1 = wx.TextCtrl(self.notebook_1_pane_1, -1, "", style=wx.TE_MULTILINE)
self.button_1 = wx.Button(self.notebook_1_pane_1, -1, "button_1")
self.button_1_copy = wx.Button(self.notebook_1_pane_1, -1, "button_1")

# Menu Bar
self.frame_1_menubar = wx.MenuBar()
self.SetMenuBar(self.frame_1_menubar)
wxglade_tmp_menu = wx.Menu()
wxglade_tmp_menu.Append(wx.NewId(), "New", "", wx.ITEM_NORMAL)
wxglade_tmp_menu.Append(wx.NewId(), "ad libitum", "", wx.ITEM_NORMAL)
self.frame_1_menubar.Append(wxglade_tmp_menu, "File")
# Menu Bar end
self.frame_1_statusbar = self.CreateStatusBar(1, 0)

self.__set_properties()
self.__do_layout()
# end wxGlade

def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle("frame_1")
self.frame_1_statusbar.SetStatusWidths([-1])
# statusbar fields
frame_1_statusbar_fields = ["Created with wxGlade!"]
for i in range(len(frame_1_statusbar_fields)):
self.frame_1_statusbar.SetStatusText(frame_1_statusbar_fields[i], i)
# end wxGlade

def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.VERTICAL)
sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
sizer_2.Add(self.text_ctrl_1, 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
sizer_3.Add(self.button_1, 0, wx.ADJUST_MINSIZE, 0)
sizer_3.Add((20, 20), 0, wx.ADJUST_MINSIZE, 0)
sizer_3.Add(self.button_1_copy, 0, wx.ADJUST_MINSIZE, 0)
sizer_2.Add(sizer_3, 0, wx.TOP|wx.BOTTOM|wx.ALIGN_CENTER_HORIZONTAL, 4)
self.notebook_1_pane_1.SetAutoLayout(True)
self.notebook_1_pane_1.SetSizer(sizer_2)
sizer_2.Fit(self.notebook_1_pane_1)
sizer_2.SetSizeHints(self.notebook_1_pane_1)
self.notebook_1.AddPage(self.notebook_1_pane_1, "tab1")
sizer_1.Add(self.notebook_1, 1, wx.EXPAND, 0)
self.SetAutoLayout(True)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
sizer_1.SetSizeHints(self)
self.Layout()
# end wxGlade

# end of class MyFrame

class MyApp(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
frame_1 = MyFrame(None, -1, "")
self.SetTopWindow(frame_1)
frame_1.Show()
return 1

# end of class MyApp

if __name__ == "__main__":
app = MyApp(0)
app.MainLoop()

----------------------------------
wxglade 써서 간단히 소스생성.
구이만들때, 특별히 머리 쓰지 않아도 비주얼하게 누구나 쉽게 애플리케이션을 만들 수 있는게 장점 같음..근데 붙여넣기 했는데 띄어쓰기가 ㅜㅜ

jj의 이미지
4245
points

class MyFrame(wx.Frame): def

-3
points