![]() |
|
||||||||
경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지 |
|
웹환경관점 :
실행 속도는 어느 정도인지... JAVA > PHP > ASP > django(Python) > ruby on rails(Ruby) 확실히 자바보단 후달리지만 대형사이트 만들 기세가 아니라면 문제없을듯 (트위터가 ruby on rails로 만들어졌다죠?) 객체지향적인 면은 어느정도인지... 할만함. 하지만 public,protected,private같은 가시성접근자가 없음. 모든게 public. (꼼수로 private처럼 쓸수 있긴 하지만 예외) 프리 코딩 정도는 어느 정도인지... 프리코딩이 뭘까요? 웹과 연동 정도는 어느 정도인지... django,토네이도,turbogear와 같은 웹프레임웍이 있음. 대세는 django임. 국내서적도 나오고.. google web engine이 파이썬의 django로 나왔음. (정확하게는 2개의 버전이 있는데 java용 python용 python용의 프레임웍의 근간이 django임) php가 python에 비해 빠르지 않습니다.
http://blog.jhoney.net/429 하지만 python은 애초에 성능에 장점이 있지는 않습니다. 생산성에 빙점이 가 있습니다. 또한 웹에서의 성능 이슈는 캐시전략(memcache 등)으로 많이 커버합니다. 웹서버 클러스터 + 캐시 이렇게 구성을 해놓으면 각 언어별 성능 갭은 많이 줄어듭니다. 제 경험 상 python 같은 경우 nginx + tornado + django 로 초당 수천건의 트랜잭션 처리가 가능하였습니다.(4코어짜리 x86 서버) python은 glue 언어라고도 불리우는데 기존의 네이티브 언어들(거의 c/c++)과 연동이 손쉬운 편이며 각종 지원 툴과 모듈이 많습니다. ctype이나 swig를 활용하면 기존의 c/c++ 라이브러리를 바로 사용하실수가 있으며 win32같은 경우 win32 extension 모듈이 존재하여 윈도우 api들을 바로 호출할 수 있습니다.(wrapper제공) 객체지향적인 부분은 자바나 스몰토크에 비하면 프로토타입 수준이라고 보시는 편이 낫습니다. self 라는 자기참조 값을 항상 들고 다녀야 하는 것도 그렇고 접근제한자가 별도로 존재 하지 않고 메소드명에 __methodName와 같이 언더스코어를 넣으므로써 private 선언임을 인지하는 방식입니다. 그러나 파이썬을 사용해보시면 느끼실 수 있는데 객체지향적인 부분의 필요성을 크게 느끼기가 어렵습니다. 함수 자체가 1급 함수고 언어자체가 굉장히 유연해서 생기는 장점이 상당히 큽니다. 기존 경험있는 개발자면 2~3일 정도 튜터리얼을 보시면 바로 프로그래밍이 가능할 정도로 러닝커브도 짧습니다. ui개발은 기존의 gui 라이브러리를 많이 활용하는데 qt, wxWindows 를 많이 사용합니다. qt같은 경우는 qt creator 같은 ide 도움을 받을수가 있습니다. 또한 python 구현이 c로 되어 있는데 java로 구현된 파이썬을 jython 이라고 배포가 되며 .net 의 c#으로 구현된 파이썬을 ironpython이라고 배포가 됩니다. jython 같은 경우는 java vm에서 동작하므로 자바 라이브러리를 그대로 사용할 수 있다는 장점이 추가 됩니다. 마찬가지로 ironpython 같은 경우는 .net의 환경을 그대로 사용할 수 있습니다. 아물러 vs와도 연동이 가능한 확장셋이 존재하여 확장셋을 설치하여 주면 vs에서 파이썬 코딩이 가능해집니다. 아..파이썬의 가장 큰 문제라고 볼 수도 있는 부분이 쓰레드에 관한 겁니다.
GIL(Global Interpreter Lock)에 의해서 코어가 다수인 cpu라도 코어를 1개로 보고 작업을 하게 됩니다. 정확히는 코어를 1개로 본다기보다 베타적으로 락을 걸기 때문에 쓰레드를 동시에 1개밖에 처리를 못하는 문제가 있습니다. 즉 코어가 4개라도...쓰레드 처리때는...코어로 1개인 cpu와 같은 성능이 나오게 됩니다. 참고: http://openlook.org:625/blog/2006/11/12/cb-1136/ 물론 우회방법이 있는데 python 2.6 이상부터는 multiprocessing 모듈이 추가가 되어 쓰레드 대신 프로세스를 포크하는 방식으로써 GIL 문제를 우회하고 있습니다. 관련 글 리스트
|
Copyright © 1999-2015, borlandforum.com. All right reserved. |
UI쪽 작업은 불편하구요...
APP Server 개발용으로 딱 좋더군요...
Data Relay Server 나 Process 처리 루틴 같은...
그리고 들여쓰기 내어쓰기로 문장을 구분하는 방식이다 보니 들여쓰기 내어쓰기를 대충하는 개발자들은 코딩하는데 적응하기가 쫌 거시기했습니다 ^^
웹 연동이나 기타 부분은 크게 문제가 되진 않을겁니다 ^^;