7

私は、最近 Python に興味を持つようになったやや上級の C++/Java 開発者であり、その動的型付けと効率的なコーディング スタイルをとても楽しんでいます。私は現在、プログラミングのなぞなぞの解決やスクリプト作成などの小さなプログラミングのニーズに使用していますが、エンタープライズ品質のプロジェクトで Python を使用して成功した人がいることに興味がありますか? (できれば、OOP やある種のデザイン パターンなどの最新のプログラミング概念を使用します)

もしそうなら、なぜPython を選んだのか(具体的に)説明してください。また、このプロジェクトから学んだ教訓を教えてください。(プロジェクトでの Python の使用と Java などの使用を自由に比較してください)

4

2 に答える 2

17

複雑な保険引受アプリケーションの開発に Python を使用しています。

当社のアプリケーション ソフトウェアは基本的に、保険数理モデルを企業がサブスクライブできる形に再パッケージ化しています。このビジネスは、アクチュアリーとその深い思考に基づいています。私たちは、比較的固定された巧妙なアルゴリズムをパッケージ化していません。私たちは、保険数理の頭脳を Web サービスを介して顧客に貸し出しています。

  1. アクチュアリーは、請求につながるさまざまな要因についてより深い洞察を得るにつれて、自由に変更を加えることができなければなりません。

    • 静的言語 (Java、C++、C#) は、データ モデルへの早期ロックインにつながります。

    • Python を使用すると、非常に柔軟なデータ モデルを使用できます。要素や情報源を自由に追加、変更、または削除できます。開発コストや複雑さはあまりありません。ダックタイピングにより、多くの手直しをせずに新しい作品を導入することができます。

  2. 私たちのソフトウェアは (パッケージではなく) サービスであるため、無限の統合の問題があります。

    • 静的言語には、複雑なマッピング コンポーネントが必要です。多くの場合、顧客のメッセージから絶えず変化する内部構造への、何らかの構成可能な XML 駆動型のマッピングです。

    • Python では、単純な Python クラス定義としてマッピングを使用することができます。これを微調整し、テストして、運用に移すだけです。このモジュールに制限はありません。これは一流の Python コードです。

  3. 大規模で長期にわたる概念実証を行う必要があります。これらには、さまざまなデータ フィードとカスタマイズされた機能を備えた多数の "what-if" シナリオが含まれます。

    • 静的言語では、さらに別のデモを作成し、さらに別の顧客提供ファイルから現在のバージョンの数理モデルへのさらに別のマッピングを作成するために、多くの慎重な計画と思考が必要です。

    • Python では、計画がはるかに少なくて済みます。ダックタイピング (および Django) を使用すると、それほど苦労せずにデモをノックアウトできます。データ マッピングは単純な Python クラス定義です。私たちの保険数理モデルは、かなり一定の流動的な状態にあります。

  4. 当社のビジネスモデルは、ある程度の交渉が必要です。私たちは情報提供者とかなり複雑な契約を結んでいます。これらは保険数理モデルほど頻繁には変更されませんが、ここでの変更にはカスタマイズが必要です。

    • 静的言語は、契約に関する仮定に拘束され、取引を交渉するビジネスマンの頭のおかしい問題を処理するために、かなり複雑な設計 (または回避策) を必要とします。

    • Python では、広範なテスト スイートを使用し、さまざまな契約条件が私たちに伝わってくるので、多くのリファクタリングを行います。

    毎週、「X のような条項を処理できますか?」というような質問が寄せられます。私たちの標準的な答えは「絶対に」です。その後、1 時間のリファクタリングを行い、そのような形で取引が成立した場合に対応できるようにしました。

  5. ほとんどの場合、RESTful Web サービスです。Django は、これらの多くをすぐに使用できます。私たちのセキュリティ モデルは Django が提供するものよりも少し厳密であるため、いくつかの拡張機能を作成する必要がありました。

    • 静的言語はソースを出荷する必要はありません。セキュリティ モデルが気に入らない場合 ベンダーに $$$ を支払います。

    • 動的言語はソースとして出荷する必要があります。私たちの場合、時間をかけて Django のソースを注意深く読み、セキュリティ モデルが Django の他の部分と完全に適合するようにします。HIPAA への準拠は必要ありませんが、いずれにせよ構築中です。

  6. 当社は、情報提供者からの Web サービスを使用します。urllib2 はこれをうまくやってくれます。インターフェイスのプロトタイプを迅速に作成できます。

    • 静的言語では、API があり、記述し、実行し、それが機能することを望みます。開発サイクルは、編集、コンパイル、ビルド、実行、クラッシュ、ログの参照です。これは、インターフェイスをスパイクして、プロトコル、資格情報、および構成が正しいことを確認するためのものです。

    • インタラクティブな Python でインターフェイスを実行します。インタラクティブに実行しているので、応答をすぐに調べることができます。開発サイクルは実行、編集に短縮されます。午後に Web サービス API をスパイクできます。

于 2009-03-23T11:11:11.120 に答える
3

私は、世界最大の銀行の 1 つで分散コンピューティング フレームワークとして Python を使用しています。それが選ばれた理由:

  • 新しい機能を開発および展開するには、非常に高速である必要がありました。
  • C および C++ と簡単に統合できる必要がありました。
  • コードの一部は、ソフトウェア開発ではなく、数学的モデリングを専門とする人々によって作成されることになっていました。
于 2009-03-23T10:06:25.017 に答える