2016년 6월 17일 금요일

Python이 진짜 강점을 나타낼 수 있는 분야는? (코딩도장)

Python이 진짜 강점을 나타낼 수 있는 분야는?

출처: 코딩도장

c/c++이 주 사용 언어인 나는 최근 제 2의 언어로써 Python을 채택하려고 하는데 그 목적은 프로그램의 개발속도를 높이자는 것이다.

c/c++은 참으로 강력한 언어이다. 이 언어로는 못하는 일이 없으며 거의 대부분의 제품은 이 언어로 개발 되는 듯하다.
그러나 이 언어는 프로그램 개발이 그리 용의하지 않다. 많은 경험이 필요하다.

좀 놀면서 편하게 coding할 수있는 언어가 필요하다.
그래서 python을 학습하려고 한다.

그런데 python을 학습하기 앞서 다음과 같은 의문이 생겼다.
python은 매번 보기 안좋은 시꺼먼 consol 해석기를 켜놓고 실행시켜야 하는가 ?
이 언어로 c/c++ 로 할수있는 일을 어느 정도로 할 수 있는가 ? (성능은 고려하지 말고)
python이 진정으로 매력을 나타낼 수 있는 일은 어떤 일인가. 내가 알건데 python은 문자열 처리를 위한 간단한 업무에서 좋다고 한다.
python으로 제품을 만들어 판매할 수있는가. 있다면 왜 python 으로 만든 제품이 흔하지 않은가. (나는 개인적으로 아직 한번도 보지 못했다.)
#python #c++ #c

2012/02/14 19:17
작성자: 박철



4개의 풀이가 있습니다.

1>

python은 매번 보기 안좋은 시꺼먼 consol 해석기를 켜놓고 실행시켜야 하는가 ?
말씀하신 파이썬 인터프리터는 간단한 테스트시에만 사용합니다. 보통은 파이썬 스크립트 파일을 작성한 후 파일을 실행시킵니다.

이 언어로 c/c++ 로 할수있는 일을 어느 정도로 할 수 있는가 ? (성능은 고려하지 말고)
제가 c/c++ 에 대해서 잘 알지 못하기 때문에 정확히 말씀드리기 어렵지만 성능을 고려하지 않는다는 단서가 있다면 대부분 할 수 있지 않을까? 라는 생각이 드네요.
또한 파이썬과 c/c++은 함께 사용할 수 있습니다. 파이썬을 글루(Glue)언어라고도 부르는 이유가 여기 있습니다. c, c++ 로 만든 프로그램을 파이썬에서 약간의 노력만으로 쉽게 사용할 수 있습니다. 보통 성능이 요구되는 쪽은 c, 그 외의 것은 파이썬.. 뭐 이런 조합이 많이 사용되는 것 같습니다.
간단한 예제 - http://docs.python.org/extending/extending.html#a-simple-example

python이 진정으로 매력을 나타낼 수 있는 일은 어떤 일인가. 
내가 알건데 python은 문자열 처리를 위한 간단한 업무에서 좋다고 한다.
파이썬을 활용할 수 있는 곳이 많기 때문에 무엇에 가장 좋다고 꼬집어 말하기 힘들군요.. 저 같은 경우에는 산출물 작성시에도 파이썬을 사용하고 이런저런 간단한 유틸리티성 프로그램을 만들때에도 파이썬을 많이 활용하는 편입니다.
하지만 파이썬의 대세는 뭐니뭐니 해도 웹 쪽이 아닐까 싶네요. 파이썬으로 만들어진 웹 프레임워크를 이용하여 개발되는 온라인 서비스들이 무척 많습니다.

python으로 제품을 만들어 판매할 수있는가. 있다면 왜 python 으로 만든 제품이 흔하지 않은가. (나는 개인적으로 아직 한번도 보지 못했다.)
위키피디아에 파이썬 관련한 소프트웨어가 잘 정리되어 있습니다.
http://en.wikipedia.org/wiki/List_of_Python_software
Dropbox, Mercurial등 눈에 띄는 것이 몇개 보이네요..
그리고 구글이 Gmail, Google-Groups, Google Maps등에서 backend 웹 어플리케이션으로 파이썬을 사용한다고 하네요.
그리고 결정적으로 지금 보고 계시는 코드잡이 바로 파이썬으로 만들어진 django기반에서 돌고 있습니다. ^^
2012/02/15 10:09
작성자: 길가의풀

2>

저희 온라인 게임은 Python으로 개발되었습니다. 엔진 Core는 C++로 작성되었지만, Python 바인딩되어있어서 AI나 클라이언트 로직이 다 Python으로 작성되어 있습니다. 그래서 무척 빠르고 쉬운 개발을 할 수 있습니다.
http://www.panda3d.org/

2012/02/16 02:37
작성자: gyedo
이걸보니 파이썬의 대세는 웹이 아니라 게임이군요 ^^ - 길가의풀, 2012/02/16 08:54
사실 대세는 아니고, 이런 것도 할 수 있다죠 ^^; - gyedo, 2012/02/16 09:06
와~~ 좋은 정보 감사드립니다. ^^ - 오랑캐꽃, 2012/02/16 15:05
앗 판다3d 네요. 예전에 학원다닐 때 빠른 프로토타입 개발이란 주제로 외부 강연 오신분이 소개해 주셨었던 기억이 나네요. - 책읽는아이, 2012/02/17 18:59


3>

(답변과 관계 없는 개인적인 생각입니다만, 서로 다른 질문은 하나씩 나눠서 따로 올리는 게 답변이나 토론에 더 이로울 것 같습니다.)

Ⅰ) 파이썬 기본 해석기(interactive interpreter)는 그다지 쓸만한 건 아닙니다(없는 것보다는 낫습니다). 보통은 IPython 같이 좀 더 잘 정리된 셸을 쓰는 게 더 좋습니다. IPython 같은 경우 SAGE라고 하는, 파이썬을 기반으로 매쓰매티카 같은 컴퓨터 대수학 시스템(CAS)을 구현하는 곳에서 만들었는데 이 때문에 별의별 기능이 다 들어 있습니다. 제가 이런 류의 셸을 많이 쓰는 건 아니라서 (유닉스 셸에 익숙해서 readline만 있으면 충분합니다) 실제로 뭘 쓰는 게 좋은지는 좀 찾아 보셔야 하겠습니다.

Ⅱ) 속도를 고려하지 않는다면 뭐든지 할 수 있고, 속도가 필요하다면 PyPy를 쓰시면 됩니다. 기본적으로 C/C++로 코드를 투자하는 만큼 성능 향상이 이루어지지 않는다면 파이썬을 쓰는 게 유리합니다. (I/O 같이 언어 구현 성능에 별 영향을 안 주는 곳에서는 이미 C/C++가 많이 힘을 잃었고요, PyPy 같은 경우 C/C++랑 비교해서 많아야 3~5배 느린 경우가 태반이니까요.)
파이썬으로 프로토타이핑을 한 뒤에 필요한 부분만 C/C++로 대체하는 방법도 있습니다. 특히 파이썬 2.5 이후로 ctypes 외부 함수 라이브러리(FFI)가 기본으로 들어 가면서 옛날에 C 모듈을 만들어서 외부 라이브러리랑 통신해야 했던 걸 순수 파이썬만으로도 대부분 할 수 있게 되었습니다. 이를테면 그래픽이나 사운드, 멀티미디어 등의 기능을 거의 모두 순수 파이썬으로 구현한 pyglet 같은 것들이 있지요. (처음에 OpenGL 바인딩을 파이썬만으로 짠 걸 보고 경악했던 기억이 있습니다...) 네트워크 쪽에서는 Twisted가 독보적인 위치를 차지하고 있고, 웬만한 프로토콜은 순수 파이썬 구현이 모두 존재합니다(예를 들어서 SSH 클라이언트 라이브러리인 paramiko가 순수 파이썬 구현입니다).
Ⅲ) "파이썬으로 할 수 있다"가 아니라 "파이썬으로 하는 게 유리하다"는 쪽을 생각한다면, 대부분의 웹 프로그래밍과, 프로토타이핑이 중요한 대부분의 업무에서 유리한 것 같습니다. 저 같은 경우 C/C++ 같은 언어로 해야 할 일을 파이썬으로 먼저 샘플로 만들어 보고 나중에 C/C++로 바꾸는 경우도 많고, 심지어 파이썬으로 만든 게 충분히 좋아서 그대로 가는 경우도 많았습니다. 파이썬 말고 루비 같은 언어도 이런 장점을 대부분 지니고 있지만, 파이썬의 경우 라이브러리의 품질이 분야에 상관 없이 전반적으로 충분히 좋아서 임의의 용도로 쓰기에 더 나은 듯 합니다. 다만 파이썬을 외부 배포를 위해 패키징할 경우 (특히 윈도의 경우) 몇 가지 주의해야 할 점이 있다는 걸 아셨으면 합니다.

Ⅳ) 오픈 소스 소프트웨어에서는 매우 흔한 일이고요, 오픈 소스 소프트웨어가 아닌 판매용 독점(propietary) 소프트웨어를 기준으로 생각해도 여러 사례가 있습니다. 지금은 코렐이 인수한 Paint Shop Pro가 파이썬을 스크립팅 언어로 쓰고(Maya도 비슷한 걸로 기억합니다), 비트토런트의 옛 클라이언트가 파이썬으로 작성되어 있었습니다. (앞에서 말한 프로토타이핑의 성공적인 사례라 할 수 있습니다.) 게임 업계에서도 파이썬을 많이 쓰는데, 대부분 스크립팅 또는 약간 더 드물게 서버 소프트웨어로 씁니다만 이브 온라인 같이 클라이언트에까지 파이썬을 쓰는 경우도 있습니다. (스택리스 파이썬이라고 하는 특수 구현을 쓰긴 합니다.)

2012/02/18 21:33

작성자: 아라크넹
아, 답변에 까먹었습니다만 문자열 처리는 파이썬도 많이 쓰지만 펄을 쓰는 경우도 많습니다. 자연어 처리(NLP) 분야에서는 현재 파이썬과 펄의 사용이 대략 반반 정도 되는 것 같습니다. - 아라크넹, 2012/02/18 21:34

4>

조금 여담이지만, 파이썬을 이용할 경우 하둡등 분산 처리 시스템과 연동도 쉬울뿐만 아니라, 파이썬 자체가 강력한 수학, 통계 라이브러리를 가지고 있기 때문에, 빅데이터 분석 과제에 자주 사용하는 편입니다... ㅎ

2013/09/23 16:37

작성자: Lee OJoun





댓글 없음:

댓글 쓰기