7

저는 다소 파이썬에 관심을 가지기 시작한 다소 발전된 C++/Java 개발자입니다. 역동적 인 타이핑과 효율적인 코딩 스타일을 매우 좋아합니다. 저는 현재 프로그래밍 수수께끼와 스크립트 작성과 같은 소규모 프로그래밍 요구 사항에 사용하지만, 아무도 엔터프라이즈 급 프로젝트에서 성공적으로 파이썬을 사용했는지 궁금합니다.는 파이썬 (특히)를 선택한 이유는 을 설명해주십시오 것,Python 프로그래밍 - Python에서 엔터프라이즈 레벨 소프트웨어를 개발하기위한 규칙/조언?

그렇다면 (바람직하게는 현대의 프로그래밍 등의 OOP와 같은 개념과 디자인 패턴의 몇 가지 유형을 사용하여) 우리에게 당신이 배운교훈을주고 이 프로젝트? (프로젝트 대 Java 등에서 파이썬 사용을 자유롭게 비교해보십시오)

+0

난 그냥 모든 사람들이 내가 이것보다 별도의 질문을 부탁 해요 있음을 알려 드리고자합니다 : (http://stackoverflow.com/questions/371966/are-there-any-good-reasons -why-i-should-not-use-python). 이 사용자는 언어 자체에 대해 묻는 반면, 나는 실제 구현에 초점을 맞추고 있습니다. :) – HipsterZipster

+0

"디자인 패턴"은 언어 능력 부족에 대한 대부분의 해결 방법입니다. – Svante

+3

@Svante : 틀렸어. 디자인 패턴은 영리하고 재사용 가능한 아이디어입니다. 모든 언어에는 디자인 패 턴이 있습니다. 원하는 "실종 된"언어 능력을 추가하면 패턴을 형성하는 영리하고 재사용 가능한 아이디어를 얻을 수 있습니다. –

답변

16

복잡한 보험 인수 신청서를 개발하기 위해 Python을 사용하고 있습니다.

우리의 어플리케이션 소프트웨어는 회사가 가입 할 수있는 형태로 보험 수리적 모델을 본질적으로 리 패키징합니다. 이 사업은 보험 계리사와 깊은 생각을 바탕으로합니다. 우리는 상대적으로 고정 된 똑똑한 알고리즘을 패키징하지 않습니다. 우리는 웹 서비스를 통해 보험 계리 기관을 고객에게 임대하고 있습니다.

  1. 보험 계리사는 그들이 주장으로 이어지는 다양한 요인에 깊은 통찰력을 얻을로 변경할 없어야합니다.

    • 정적 언어 (Java, C++, C#)는 데이터 모델에 초기 잠금을 초래합니다.

    • 파이썬을 사용하면 매우 유연한 데이터 모델을 가질 수 있습니다. 그들은 많은 개발 비용과 복잡성없이 요인이나 정보 소스를 추가, 변경 또는 삭제할 수 있습니다. 오리 타이핑은 많은 재 작업없이 새로운 조각을 소개 할 수있게 해줍니다.

  2. 우리의 소프트웨어는 패키지 (패키지가 아닌)이므로 통합적인 통합 문제가 있습니다.

    • 정적 언어에는 복잡한 매핑 구성 요소가 필요합니다. 종종 고객 메시지에서 끊임없이 변화하는 내부 구조에 대한 구성 가능한 XML 기반 매핑의 일종입니다.

    • 파이썬을 사용하면 우리가 단순히 조정, 테스트 및 프로덕션에 투입하는 간단한 파이썬 클래스 정의로 매핑을 가질 수 있습니다. 이 모듈에는 아무런 제한이 없습니다. 이것은 일급 Python 코드입니다.

  3. 우리는 광범위하고 장기간 실행되는 proof-of-concept을 수행해야합니다.여기에는 서로 다른 데이터 피드 및 사용자 지정 기능을 사용하는 수많은 "가정"시나리오가 포함됩니다.

    • 정적 언어는 신중한 계획이 많이 필요하고 또 다른 데모, 아직 우리의 보험 수리적 모델의 현재 버전으로 또 다른 고객이 제공 한 파일에서 다른 매핑을 만들 생각.

    • 파이썬은 훨씬 적은 계획을 필요로합니다. Duck typing (그리고 Django)을 사용하면 매우 많은 고통없이 데모를 할 수 있습니다. 데이터 매핑은 간단한 파이썬 클래스 정의입니다. 우리의 보험 수리적 모델은 상당히 일정한 유휴 상태에 있습니다.

  4. Google 비즈니스 모델에는 일정 금액의 협상이 필요합니다. 우리는 정보 제공자와 다소 복잡한 계약을 맺고 있습니다. 보험 수리적 모델만큼 자주 변경되지는 않지만 여기서 변경은 사용자 정의가 필요합니다.

    • 정적 언어는 계약에 대한 가정에 결합하고, 거래를 협상 비즈니스 사람의 뇌 방귀를 처리하기 위해 매우 복잡한 설계 (또는 해결 방법)이 필요합니다.

    • 파이썬에서는 광범위한 계약 조건을 사용하여 광범위한 테스트 스위트를 사용하고 많은 리팩토링을 수행합니다.

    매주 우리는 "X와 같은 조항을 처리 할 수 ​​있습니까?"라고 묻습니다. 우리의 표준 답변은 "당연히"입니다. 우리가 일 수 있다면 리팩터링 한 시간이 뒤따라야 그 거래가 그 형태로 강타 당하면된다.

  5. 우리는 대부분 RESTful 웹 서비스입니다. 장고는 많은 것을이 박스에서합니다. 우리의 보안 모델은 Django가 제공하는 것보다 조금 더 엄격하기 때문에 우리는 약간의 확장을 작성해야했습니다.

    • 정적 언어는 출처를 제공 할 필요가 없습니다. 보안 모델을 좋아하지 않습니까? 공급 업체 $$$에게 지불하십시오.

    • 동적 언어는 출처로 제공되어야합니다. 우리의 경우, 우리는 장고 소스를주의 깊게 읽음으로써 우리의 보안 모델이 나머지 장고와 깔끔하게 맞는지 확인합니다. 우리는 을 필요로하지 않습니다. HIPAA 준수가 필요하지만, 우리는 어쨌든 그것을 구축하고 있습니다.

  6. 정보 제공 업체의 웹 서비스를 사용합니다. urllib2는 우리를 위해 이것을 훌륭하게합니다. 인터페이스를 신속하게 프로토 타이핑 할 수 있습니다.

    • 정적 언어를 사용하면 API가 있고, 글을 쓰고, 실행하고, 효과가 있기를 기대합니다. 개발 사이클은 편집, 컴파일, 빌드, 실행, 크래시, 로그보기입니다. 이는 인터페이스를 스파이크로 만들고 프로토콜, 자격 증명 및 구성 권한이 있는지 확인하는 것입니다.

    • 대화 형 Python으로 인터페이스를 실행합니다. 대화 형으로 실행 중이므로 즉시 응답을 검사 할 수 있습니다. 개발주기가 실행, 편집으로 줄어 듭니다. 우리는 오후에 웹 서비스 API를 급증시킬 수 있습니다.

+0

그런 상세하고 흥미로운 대답에 감사드립니다! – HipsterZipster

3

나는 세계 최대 은행 중 하나에서 파이썬을 분산 컴퓨팅 프레임 워크로 사용 해왔다. 다음 이유로 인해 선택되었습니다.

  • 새로운 기능을 개발하고 배포하는 데는 매우 빠릅니다.
  • C 및 C++과 쉽게 통합 될 수 있어야합니다.
  • 코드의 일부는 전문 지식 영역이 소프트웨어 개발이 아닌 수학적 모델링이었던 사람들이 작성해야합니다.
+0

Python이 파이썬보다 높은 수준의 특징을 가진 이유는 무엇입니까? –

+0

Matlab에는 이러한 특징이 없습니다. C++과의 통합, C/C++ (Matlab의 C 언어 만 사용)에서 Matlab을 호출하지 않으며 분산 프로그래밍 프레임 워크가 없습니다. 아니요, 수학 코드는 선형 대수학과 아무 관련이 없습니다. – vartec

+0

저는 Matlab 런타임과 Matlab 코드 생성기를 사용하여 생성 된 C 코드를 모두 호출하는 구성 요소를 포함하는 분산 시뮬레이션 작업을 했었습니다. –