Python을 배워야 하는 이유

cinsk의 이미지

개인적으로나 업무상으로나 여러 스크립트 언어를 쓸 경우가 많은데, 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 참고)

댓글

익명사용자의 이미지

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

aero의 이미지

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의 이미지

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

pcharley의 이미지

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

alfalf의 이미지

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

aero의 이미지

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

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

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

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

alfalf의 이미지

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

aero의 이미지

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.html
(일본의 Perl OOP tutorial 문서 -> 일한 번역 )
* http://j2k.naver.com/j2k.php/korean/fleur.hio.jp/perldoc/mix/pod/perlboot.html
( http://perldoc.perl.org/perlboot.html 의 일본어 번역->일한 번역 )
* http://j2k.naver.com/j2k.php/korean/perldoc.jp/docs/perl/5.8.0/perltoot.pod
( 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의 이미지

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

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

죠커의 이미지

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

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

- CN의 낙서장 / HanIRC:#CN

alfalf의 이미지

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

alfalf의 이미지

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

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

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

pokpungu의 이미지

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

Scarecrow의 이미지

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

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

김정균의 이미지

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

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

익명사용자의 이미지

Quote:

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

이게 전부인 경우가 많은것 같습니다.
익명사용자의 이미지

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

Scarecrow의 이미지

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

SoftOn의 이미지

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

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

jhumwhale의 이미지

시렌의 이미지

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

galien의 이미지

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

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

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

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

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

keedi의 이미지

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

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

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

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

----
use perl;

Keedi Kim

suapapa의 이미지

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

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

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

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

gamdora의 이미지

Quote:

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

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

저는 파이썬*을 익히다가

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

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

keedi의 이미지

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

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

----
use perl;

Keedi Kim

galien의 이미지

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

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

lazycoder의 이미지

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

exsider의 이미지

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

익명사용자의 이미지

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

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

파이썬 마을에서 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 할 때마다 탭&스페이스 틀리는 문제로 골치가 아파요 -_-

alfalf의 이미지

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

litdream의 이미지

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

비주얼 블록으로 잡은후

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

로 해결합니다.

삽질의 대마왕...

삽질의 대마왕...

oedalpha의 이미지

vim에는 :retab 기능이 있고요,
저는 파일 끝에
#vim:ts=8:sts=4:sw=4:expandtab
라고 써서, tab이 4칸짜리 space로 입력되도록 합니다.

emacs 에서는 untabify 라는 명령이 있던 것 같습니다.

Scarecrow의 이미지

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

keedi의 이미지

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

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

----
use perl;

Keedi Kim

whitelazy의 이미지

Good!!!!!!! :-D

1day1의 이미지

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

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

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

F/OSS 가 함께하길..

익명365의 이미지

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

wpcasper의 이미지

PERL 만세!!

creativeidler의 이미지

파이썬이 대중화가 안된 이유를 분석할 정도로 대중화가 안된 언어는 아닌 것 같습니다. 각종 언어 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의 이미지

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

"파이썬이 라이브러리들의 일관성에서는 뒤질지 몰라도 물량에서는 밀리지 않습니다" 라고 하셨는데
파이썬 모듈들을 모아놓은 대표적인 싸이트인 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의 이미지

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

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

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

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

aero의 이미지

>암튼 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의 이미지

좋은 자료들 감사합니다.

익명 사용자의 이미지

저는 파이썬을 배우다가 포기했습니다.
파이썬은 문법에 일관성이 없습니다.
파이썬은 해외 커뮤니티에서도 문법에 문제가 있다는 말이 많이 나옵니다.
반면 루비는 (대체적으로) 문법에 일관성이 있습니다.
왜 대체적으로라는 표현을 했냐면 루비에서만 볼 수 있는 특별한 구문이 있기 때문인데...
루비만의 특수한 문법이 부담된다면 그런 문법은 안 쓰면 됩니다.
그런 문법을 사용하지 않는다고 하여 개발이 어려워지지는 않고 오히려 가독성이 증가하고
타 언어로의 포팅이 용이해집니다.

수연아빠의 이미지

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

frenzy의 이미지

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

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

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

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

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

alfalf의 이미지

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

hey의 이미지

전 삼국지입니다.

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

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

May the F/OSS be with you..



----------------------------
May the F/OSS be with you..


Hannal의 이미지

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

aero의 이미지

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

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

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

내가왜리눅스썼지의 이미지

제가 다니는 대학교 CS 기본 과목도 python을 기초로 가르치더군요.
(그러면서 교수님이 perl 외계어라고 까시더라요......)

이보게 친구, 속도는 생명이라고.
망하면 재수강. Re: 제로부터 시작하는 재수강

익명사용자의 이미지

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

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

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

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

bus710의 이미지

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

akudoku.net

life is only one time

serialx의 이미지

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

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

esrevinu의 이미지

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

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

gamdora의 이미지

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

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

neocoin의 이미지

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

gamdora의 이미지

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

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

ydhoney의 이미지

게임기라고 합니다.

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

gamdora의 이미지

게임기군요.

재미 있나요? +_+

serialx의 이미지

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

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

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

---

Captue the one shot in your life!

bizzz의 이미지

#!/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의 이미지

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")

요점(self질)에서 python이 좀 아쉽더군요. 그래서 ruby가 딱 좋긴한데, 완전히 갈아 타기엔 python의 수많은 라이브러리가 아쉽습니다.

결론은 그때 그때 다르다는... ^^;

--
콘쏠의힘

--
Life is short. damn short...

익명사용자의 이미지

전 진짜..시스템 운용 쪽관심 있어서 C도 조금 배었다가 java 등도 조금 했다가 머리가 나빠서 OTL
나중에는 진도도 잘안나가고 도중에 책 기초도 안띠고 덮었습니다..랭귀지는 어렵구나하고 ㅜ.ㅜ
근데 어느날 인터넷에서 누가 그러더군요 "프로그래밍 언어로 상처를 받은 사람들을 위한 언어"라는 내용과
함께 파이썬을 소개 하더군요 그래서 기초책 사서 봤는데 진짜 c처럼 처음 변수 지정할때 자료형태 정의 하지 않아도 되고 문법도 저같은 랭귀지 초보자들도 알기 쉽게 되어있었습니다 게다가 클래스 개념이랑 상속
개념 처럼 객체 지향에 대한 것도 쉽게 배울수 있어서 현재 나중에 다른 언어를 배울때 쉽게 배울 수 있더군요 자바기초 책 보고 있는데 초보자가 c만 배운상태에서 갑자기 클래스니 상속이니 하는것을 파이썬을
익히고 하면 이부분을 빨리 넘어가는 것처럼..전...초보자라서 여기 개발자님처럼 언어를 깊게 이해는 하지
않지만 프로그래밍 언어 배우면서 랭귀지가 잼있다고 느낀거는 파이썬 이었습니다 물론 요즘 루비도 쉽다고
하는데 나중에 기회가 된다면 다른언어도 배우고 싶구요 다른 언어도 다 장점과 단점이 있겠습니다 이건
저의 생각입니다 ^0^

익명사용자의 이미지

다 그놈이 그놈이라우.

간짜장, 그냥짜장, 유니짜장.

하지만, 짜장임에 변함없더이다.

비주얼베이식조차도 꽤나 그럴싸한 개체지향을 지원한다오.
물론 짜장면으로 따지면, 짜파게티라고 해야겠지만..
맛은 자바와 비슷하오.

segfault의 이미지

VB는 객체지향의 기본적인 요소인 상속성이나 다형성을 쓸 수 없기 때문에 객체지향 언어의 범주에 넣기는 어렵습니다.
보통 이같은 언어를 객체 기반 언어(Object-based language)라고 하는데, VB나 프로토타입 기반의 프로그래밍 언어가 이에 포함됩니다.

----
http://www.planetmono.org

죠커의 이미지

implements를 이용해서 상속받을 수 있지 않습니까?
- CN의 낙서장 / HanIRC:#CN

Scarecrow의 이미지

VB.NET이 되면서 많이 달라졌습니다. C#이랑 똑같다고 봐도 무방하죠.

시그너쳐: ./configure --prefix=/usr; make; sudo checkinstall

gamdora의 이미지

그럼 자바스크립트*같은 프로토타입 기반의 프로그래밍 언어들은

상속을 하지 못하거나 다형성을 쓰지 못하나요······?

hongminhee의 이미지

프로토타입 기반 OO에서는 상속을 못 하는게 아니라 안 하는 것이라고 보면 됩니다. 대신 실체화, 상속을 합쳐서 복제(clone)라는 패턴을 씁니다.

다형성은 똑같습니다. ㅎㅎ

익명 사용자의 이미지

제가 알고 있기로는 Python은 Closure를 아직 지원 안하는 것으로 알고 있습니다.

저도 갑자기 궁금해져서 자료를 찾아봤는데, Closure 지원에 대한 내용은 없더군요.

혹시 명확히 아시는 분께서 댓글을 달아 주셨으면 합니다.

hongminhee의 이미지

클로져 지원합니다. 고차 함수는 Python에서 자주 사용되는 패턴의 하나입니다.

>>> def hof(a):
...     def innerfunc(b):
...             return a, b
...     return innerfunc
...
>>> hof(1)(2)
(1, 2)

저렇게 짧은 경우에는 lambda를 써도 되겠죠.

>>> hof = lambda a: lambda b: (a, b)
>>> hof(1)(2)
(1, 2)
freecatz의 이미지


저도 개발자가 되고 싶은 마음에 여러 언어를 해보려다가...

28살이 다되는 지금은 개발자를 포기 하였더랩니다.

그냥저냥 좀 개인적인 생각으로 늦은거 같아서...ㅡㅡㅋ

뭐 그래도, 한번쯤 해보려고 했던 언어중 파이썬이 있었지요.

책에 보면 장점들을 많이 설명 했는데...

초보자인 제게도 괜찮고 강력한 언어라고 느껴지니까요...

나름 맘에 드는 구석이 많은 언어 이기도 하고요.

언제 시간 내서 파이썬 열공을 하고 싶군요. ^^:

그게 언제가 될지는 앞으로 미지수...내년엔 다른 직종으로 가야 할듯 한...

제가 개발자도 아니고, 엔드유저도 아닌 어리버리한 상태라서...으흐~~

그래도 리눅스를 다룬다면 파이썬 하나 정도는 해두는게 좋지 않을까요?

스스로에게 맞는 연장을 고르는건 개개인의 몫이지만, 저 처럼 개발자도 아니

면서 리눅스에서 개발을 꿈꾸시는 분들이 있다면, 파이썬을 저도 추천 합니다.

---------------------------------------------------
1t의 생각보다 1g의 실천이 낫다.

newpolaris의 이미지

많이 쓰니까 아닐까요 ㅋ

잘만든 언어도 안쓰면 어쩔 수 없고요.

비록 사족이지만 달아봤어요.

ps. 리눅스에서 에러나서 고칠려면 python을 알아야 되더군요. 수많은 py로 만든 프로그램
이 것역시 많이 쓰기 때문일까요 ㅋ

nEW

nEW

bh의 이미지

저도 몇몇분들이.. 지적한것처럼..

들여쓰기강제로..
복사/붙여넣기가 쉽지 않다는점 때문에.. 파이썬을 좋아합니다..

복사/붙여넣기 잘하는 사람들 보면.. 밉더라구요..

근데..
..탭인지 스페이스인지는..
어케 구별하나요? - _ - (ㅁㄴ아람ㄴ아안ㅁㅇㅀㄴ앓ㄴㅇ랗안ㄹ말.........)

--
이 아이디는 이제 쓰이지 않습니다.

d3m3vilurr의 이미지

몇몇 에디터의 경우는 whitespace 문자를 출력해줄수 있습니다 :)
그걸로 확인하면 되지요.

bookgekgom의 이미지

자바와 j루비의 컴비네이션 강추

ㅇ,.ㅇ

파이썬도 좋은언어

펄도 좋은 언어...

하지만 컴비네이션을 봐야 하는거 아닐까요?

---------------------------------------------------------------------------------------------------------------
루비 온 레일즈로 만들고 있는 홈페이지 입니다.

http://jihwankim.co.nr

여러 프로그램 소스들이 있습니다.

필요하신분은 받아가세요.

klyx의 이미지

순수자바로 구현되어 자바의 모든 컴포넌트를 이용할수 있는 Jython이라는게 있습니다.

bookgekgom의 이미지

자....자이떵....>ㅁ<

---------------------------------------------------------------------------------------------------------------
루비 온 레일즈로 만들고 있는 홈페이지 입니다.

http://jihwankim.co.nr

여러 프로그램 소스들이 있습니다.

필요하신분은 받아가세요.

crowdy의 이미지

Thread를 끝까지 읽다보니..^^;
Jython은 변종 프로토스??

dl3zp3의 이미지

Python으로 프로그래밍할 때의 느낌은 마치 VIM을 쓰는 느낌과 비슷.

loias의 이미지

복잡하게 객체지향 할 필요도 없고, 그냥 그때 그때 쓸만한 만능칼이죠

특히나 단순반복적인 작업에는

스크립트를 짜는 수준이 아니라, 그냥 파일 열지도 않고,

정규표현식 한줄로 끝낼정로도 ,, 물론 다른언어들도 다 가능하지만,

속도나 뭐 다른걸 비교해서 perl oneliner라는 장르가 있을만큼.. 작업 효율을 올려줍니다.

번개불에 콩볶아먹는 한국사람에 성격에 맞는 언어가 아닐까 싶네요

알고리즘을 논하고, 객체지향을 논하는 것도 재미있지만, 정작 급할때는 펄이죠;

남한테 보여주기 위한 코드가 아니라 그냥 급한대로 쓰는 코드요

그래서 공동작업할때는 안좋습니다. 알아먹을 수가 있어야 말이죠...

junek의 이미지

Perl은 왠지 가독성이 떨어지지 않나요?

제가 Guru같은 코드만 봐서 그런지는 몰라도 암호 수준의 함축된 코드들이 많던데요.

저희개발팀 Wiki가 TWiki라서 Perl program을 좀 보면 눈에 빨리 들어오는 편은 아닌듯 합니다.

script언어로 shell scripting, Tcl/Tk를 사용하다 최근에 shell script 한계 때문에 python을 배워서 해봤는데, 구글링 잠깐에 금방 배울 수 있더군요.

앞에 어느분이 언급했듯 Indent규칙 때문인지는 몰라도 Python의 가독성은 좋은 편인듯 합니다.

참 Python과 Ruby를 비교한 Wiki 사이트가 있더군요.

http://c2.com/cgi/wiki?PythonVsRuby

익명 사용자의 이미지

그다지 컴퓨터 전공은 아니라 잘 모르겠지만
씨에 비하면 펄은 객체지향 너무 쉽고 간단하게 되있던데요.
더 쉬을 수 없을 지경인데요.
원래 펄은 가독성 좋게 코딩하면서 협력작업하게 잘 나온 언어가 아니라
혼자서 낙서하고 기호쓰듯이 간단하게 작업하기 위해 나온 언어 같습니다.
그게 장점인데 전문가들이 코딩한거 빼고
실제로 코딩한거 보면 꽤 알기 쉬운 것 같네요.

Mr. 하늘의 이미지

Jython3만 기다리고 있습니다 ㅜㅜ

winner의 이미지

Jython 만들던 Jim Hugunin 이 IronPython 하면서 Jython은 많이 뒤쳐진 듯 한데요.
http://en.wikipedia.org/wiki/Jim_Hugunin

앞으로 Jython이 다시 유행할런지...

익명 사용자의 이미지

그루비 아시나요

위에 언급되는 모든 장점을 가진 그루비에 몰표를 줍니다
모두들 그루비로 대동단결 ^^

익명 사용자의 이미지


암만 봐도 이해가 안갑니다.
도스에서만 돌아가는 이걸 왜 쓰는지?...

개발자 본인 스스로 이것저것 쓰기 편해서 쓴다?... 혹시 맞나요?
묵고 살라면 개발해 팔아야 되는데... 파이썬으로 개발된 응용프로그램은 어따 팔수 있을지?....

그렇다면

꼭 굳이 배우지 않아도 되는건가요? 전 저혼자 이것저것 계산해볼때는
자바스크립트가 엄청 편한데.....

페이지

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.