문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Python (문단 편집) === 신속한 개발 속도 === ||[[파일:xkcdpython.png]]|| || [[xkcd]] [[http://xkcd.com/353/|353화 ]] || Python의 [[아이덴티티]]. 높은 생산성은 그 무엇과도 비교할 수 없는 Python만의 특징이다. 전 세계의 모든 [[프로그래밍 언어]] 중에서 Python 정도의 낮은 난이도를 가지면서, 오만가지 분야에서 생산된 훌륭한 패키지들을 통해 범용성까지 갖춘 프로그래밍 언어는 찾기 힘들다. Python으로 만든 프로그램을 같은 객체 지향 프로그래밍 언어인 [[Java]]나 [[C++]]로 만드려는 순간 숨이 턱 막힐 정도. [[인터프리터]] 언어이면서 우수한 자료형과 다양한 모듈 등을 제공해 개발 기간이 단축되는 것이 특징. Python이 막 유행을 타기 시작했을 때에는 '[[C언어]]로 2년 동안 완성하지 못한 프로젝트를 Python으로 한 달 만에 해냈다'는 극적인 경험담이 커뮤니티에 돌았을 정도다. 당장 Python의 집합 자료형 같은 경우 [[C언어]]로 구현하려고 하면 머리가 아파 온다. -- 아니 객체지향 언어랑 절차지향 언어랑 비교하니까 그렇지.. -- [[C언어]]와의 접착성도 좋기 때문에, 일단 Python으로 빨리 구현하고, 남은 시간에 속도에 병목이 되는 부분을 [[C++]]로 전환하는 전략을 내세우고 있다. 버전이 올라가면서 Python 자체도 그리 느리지 않게 되었다. 심지어 [[어셈블리어]] 같은 저수준 언어(Low level)도 Python에서 호출할 수 있다. Python은 어지간한 다른 프로그래밍 언어들을 지원하는 호환성 덕분에 응용할 곳이 무궁무진하다.--실행 속도만 빼고-- 파이썬 출시 당시인 1991년에 개발 속도가 빠르다고 했는데 Traceback도 한몫한다. 이전에 유명와 인터프리터언어였던 perl 은 스택트레이스를 보여주지 않았기 때문이다. 반면 파이썬은 코드를 실수로 잘못 짠 곳이 있다면, 어떤 스택을 통해 어떤 어떤 파일의 어떤 줄에서 어떤 함수에서 어떤 종류의 문제가 발생했는지 자세하게 알려준다. 스택을 전부 보여주기 때문에 초보자에게는 당황스러울 수 있지만, 디버깅을 하다 보면 정말 편리하다. 아래는 오류(Exception) 발생 시의 터미널 출력 예시다. 파이썬 이후에 나온 인터프리터 언어들은 스택트레이스와 오류 줄을 표시한다. {{{Traceback (most recent call last): File "/path/to/example.py", line 4, in greet('Chad') File "/path/to/example.py", line 2, in greet print('Hello, ' + someon) NameError: name 'someon' is not defined }}} Python 가지고 [[스프레드시트]]나 [[데이터베이스]]까지 만드는 괴수들도 있다. Python으로 [[SQL]]을 구현하는 건 불가능하다는 소리가 있었지만 우리의 [[Nerd]]들은 해내고 말았다. [[2013년]] Python으로 관리하는 DB 개념이 잡힌 이후 수많은 [[피드백]] 끝에 [[2015년]] 도전 성공. 심지어 [[2017년]] [[프랑스]]의 중견기업에서 Python DB 프로젝트를 보더니 정말로 회사의 DB를 Python으로 관리하는 사업을 벌려서 DB화되지 못하고 저장되던 회사 내부의 파일형 자료들과 기존의 DB에 저장된 자료를 접합시키는 사업까지 했다 한다. 빠른 아이디어 구현이 생명인 연구소에서 각광을 받고 있고, [[인스타그램]], [[유튜브]], [[reddit]] 등이 Python을 주로 쓰고 있다고 알려져 있으며, 외국의 구인 사이트에도 Python을 할 줄 아는 사람에 대한 수요가 많다. 컴퓨터 관련이 아닌 이공계 전반에서 많이 쓰이는 [[MATLAB]]은 오픈소스가 아니라는 점이 최근 추세와 맞지 않아 입지가 좁아지고 있다.[* MATLAB의 GUI 기반 모델링 툴박스인 Simulink는 기업용으로 구매하면 기본 toolbox가 1 copy에 천만 원 단위, 각종 전기, 전자, 기계, 유압, 항공 등에 관련한 라이브러리는 추가로 유료로 판매한다. 거기에 C로 포팅 해주는 모듈도 역시 개별적으로 추가 구매해야 한다. 만약 오픈소스 소프트웨어로 Simulink를 대체하고자 한다면 현재로서는 FMI 기능 및 C 코드로의 오토코딩 모듈이 있어야 할 것이다. 게다가 패키지 설치를 참 더럽게 이상하게 만들어 놨다. MATLAB과 같은 목적의 Python 패키지인 [[NumPy]]는 모종의 계약을 통해 문법과 함수 등의 많은 부분에서 MATLAB 함수와 호환되게 수정해 버렸고, 안 그래도 꽤 쓰였던 NumPy는 더욱 사용자가 늘어나고 있다. Python의 경우는 지원 라이브러리의 대부분이 오픈소스이기 때문에 저장소에서 그냥 커맨드 라인(pip install 패키지) 한 줄로 필요한 거의 모든 패키지를 설치해서 쓸 수 있다.] CG 업계에서도 사실상 표준으로 사용되는 스크립트 언어이다. [[Autodesk Maya|MEL]], [[3ds Max|MAXScript]] 등 프로그램별로 자체 스크립트 언어들이 난립하고 있었는데, 현재는 Python 스크립팅을 주력으로 밀고 있다. 또한 공대 [[졸업작품]]으로도 자주 쓰이는 프로그래밍 언어이기도 하다. 동적 타입 언어(Dynamically typed language)라는 점이 큰 프로젝트에서는 단점으로 작용하여 자료 구조 설계나 디버깅이 어렵다는 지적도 있다. 다만 "정적 타입 vs. 동적 타입" 논쟁은 서로의 장단점이 있다. 일례로 OCaml 같은 강력한 타입 인터페이스(Hindley-Milner, System F 등)를 가진 경우, 모든 타입 에러(!)를 컴파일 타임에 잡아낼 수 있는 반면에, 모든 버그가 타입 에러는 아니기 때문에 여전히 테스트 및 디버깅 과정은 필요하다, 반면에 동적 언어는 빠른 구현의 이점이 있지만 타입 에러가 많이 나는 특징이 있다. 한마디로, 컴파일 언어의 경우에는 컴파일 시간에 오류를 잡지만 동적언어는 놓치게 된다는 소리. Python으로 파서(Parser)를 많이 작성해 봤다면, 십중팔구 읽은 숫자를 string으로 저장했다가 나중에 연산을 했더니 연산이 불가능하다면서 에러가 나거나 이상한 결과가 나온 경험이 있을 것이다. Python 3.5부터는 타입 힌트를 이용해서 변수가 가질 수 있는 타입을 지정할 수 있게 되어 IDE 가 타입힌트를 해석해 타입오류를 쉽게 도움받을 수 있게 되었다. 그렇지만 실행중 체크를 하지는 않기때문에 여전히 주의 해야한다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기