Search Results for '파이썬'

5 POSTS

  1. 2008.04.30 파이썬 구현들 2
  2. 2008.03.27 파이썬 바인딩
  3. 2007.08.07 파이썬 마을 입추 기념 번개
  4. 2007.05.09 파이썬 -i 옵션
  5. 2006.08.30 파이썬의 Unicode 지원

파이썬 구현들

Posted 2008. 4. 30. 21:05
흔히 파이썬하면 파이썬 언어 명세보다는 Guido van Rossum이 작성한 CPython을 의미하는 경우가 많습니다. 하지만 CPython 외에도 파이썬을 구현한 프로젝트가 많이 있었습니다. 한 때 많은 사람들의 관심을 받았던 Stackless Python을 필두로 시작된 파이썬 구현은 현재 JVM과 .NET에 올라간 Jython, IronPython으로 이어지고 있습니다. 파이썬으로 파이썬을 구현하자는 PyPy 프로젝트도 있습니다.

더 이상 개발되지는 않지만 실험적인 파이썬 구현으로는 PyVM과 Vyper가 있었습니다. 그 중 Vyper는 John Max Skaller OCaml로 작성한 파이썬 구현입니다. 당시 파이썬 스코핑(scoping) 룰에 불만을 품고 시작해 좀 더 빠르고 함수적인 파이썬을 만들려는 시도였습니다. IBM dW에 보면 Stackless Python의 Christian Tismer와 Vyper의 John Max Skaller와 인터뷰가 있더군요. 하지만 지금은 Vyper의 홈페이지 링크조차 깨진 채 존재하지 않는군요. 아아. Vyper가 커뮤니티의 도움을 얻어 CPython과 더불어 성장해줬다면 조금 더 함수형인 파이썬이 나왔을지도 모르겠습니다.

파이썬 바인딩

Posted 2008. 3. 27. 01:04
까멜레오 프로젝트에 대해서 자주 듣는 질문 중에 하나는 왜 파이썬을 사용했냐는 것입니다. Django 같은프레임워크를 이용한 웹프로그래밍도 아니고 퇴근을 일찍하기 위한 잡무 스크립트를 작성하는 것도 아닌 데스크톱 어플리케이션에 파이썬을 메인 언어로 사용했다는 이야기를 들으면 많은 분들이 어리둥절해 하시기 때문입니다.

파이썬을 사용해서 얻는 가장 큰 장점은 C 언어 바인딩이 편리하다는 사실입니다. 파이썬을 메인 언어로 선택한 이유는 수 십 개의 오픈소스 프로젝트를 가져다가 접목하는 글루(glue) 언어로 파이썬이 장점을 가진다고 생각했기 때문입니다. 특히 리눅스 GNOME 진영의 프로젝트는 대부분 파이썬 바인딩을 제공하고 있습니다. GNOME 프로젝트 자체도 코어는 C/C++을 이용하고 UI와 스크립팅 이슈는 대게 파이썬으로 처리하는 경향이 강합니다.

특히 Glib 라이브러리를 사용하는 (정확히는 GObject) 프로젝트들은 codegen을 이용해 C 헤더 파일에서 파이썬 바인딩을 자동으로 생성해 낼 수 있습니다. 물론, 필요에 따라 일부 함수들을 오버라이드해야 하긴 하지만 언어 바인딩을 자동으로 생성할 수 있다는 장점은 파이썬을 선택한 가장 큰 이유였습니다. IBM DW에 보시면 Wrap GObjects in Python이라는 글이 C 코드에서 파이썬 바인딩을 만들어내는 방법을 잘 보여주고 있습니다.

또한 파이썬 표준 라이브러리에 포함되어 있는 ctypes도 굉장히 유용하게 사용됩니다. 특히 C로 이미 작성된 공유 라이브러리(DLL)를 불러 쓸 때 C 코드를 전혀 작성할 필요 없이 외부 함수를 불러 쓸 수 있다는 것은 파이썬의 큰 장점입니다. pyglet 같은 프로젝트는 ctypes만을 이용해 운영체제의 윈도 시스템과 OpenGL 바인딩을 모두 구현해놨습니다.

파이썬은 이 외에도 C와 파이썬을 혼용할 수 있게 해주는 수많은 외부 함수 인터페이스가 존재합니다. 하지만 과학적 계산 등의 코드가 거의 없는 까멜레오 프로젝트에서는 이런 식의 조합은 거의 필요가 없었습니다. 파이썬 코드도 사실상 내부적으로 C 코드를 불러 쓰는 경우가 대부분이었기 때문입니다.

이렇게만 쓰면 파이썬을 사용한 것이 굉장히 좋은 선택이었던 것처럼 보이는데, 파이썬을 본격적으로 사용하면서 겪은 시행 착오와 실수도 엄청 많습니다. 이 부분에 대해서는 다음 기회에 따로 한 번 정리해 보려고 합니다.

파이썬 마을 입추 기념 번개

Posted 2007. 8. 7. 21:33
파이썬 마음 입추 기념 번개를 신청했습니다. 이런 저런 모임에 나가보려고 노력은 하지만 항상 뒷북(마감 끝나고 나서 신청하기)만 치다가 이번에는 대략 순위권에 들었습니다. 파이썬을 중심으로 벌써 몇 개월째 까멜레오 프로젝트를 진행하고 있는데, 정작 파이썬 커뮤니티에는 한 번도 못 나가봐서 아쉬웠는데, 이번 기회에 회포를 풀겠군요. 파이썬 전문가분들을 뵙고 그 동안 궁금했던 걸 물어봐야겠군요. 참석 후 소식 전하겠습니다.

파이썬 -i 옵션

Posted 2007. 5. 9. 14:57
항상 쓰는 프로그램인데도 새로운 기능을 발견하는 경우가 종종 있습니다. 최근에 진행 중인 프로젝트에서 파이썬을 메인으로 쓰고 있는데, 모듈의 테스트를 위해 __name__이 '__main__'인지 확인하고 UI 쓰레드를 만드는 코드가 있습니다.

UI 프로그램이라 전체 테스트를 자동화시킬 수는 없고 기초적인 셋업이 끝나면 바로 파이썬 인터프리터가 뜨면 좋겠다고 생각을 했습니다. 그럴 때 쓰는 용도로 -i 옵션이 있더군요. python -i script.py라고 실행시키면, 스크립트 실행이 끝난 후에도 파이썬 인터프리터를 살려주더군요.

파이썬의 Unicode 지원

Posted 2006. 8. 30. 23:39
프로그래밍 언어의 유니코드 지원은 빼놓을 수가 없는데, 자바와 파이썬을 비롯한 여러 언어가 escape sequence인 \u0000 형태로 유니코드 문자를 지정할 수 있다.

유니코드가 16비트로 표현할 수 없게 되자 파이썬은 \u00000000 형태의 escape sequence도 지원하고 있다. 여기서 한 술 더 떠서 유니코드 문자를 이름으로 지정할 수 있는 \N escape도 있다.

  # This string has 7 characters in all, including the spaces
  # between the symbols.
  symbols = u'\N{BLACK STAR} \N{WHITE STAR} \N{LIGHTNING} \N{COMET}'

또한 unichr()를 이용해 유니코드 문자를 지원할 수도 있다.