Frage

Ich bin ein etwas erweitert C ++ / Java-Entwickler, der vor kurzem Interesse an Python wurde und ich genieße seine dynamische Typisierung und effiziente Codierung Stil sehr. Ich benutze es zur Zeit auf meinem kleinen Programmierbedürfnis wie Programmierung Rätsel zu lösen und scripting, aber ich bin neugierig, ob jemand da draußen erfolgreich Python in einem Enterprise-Qualität Projekt verwendet hat? (Vorzugsweise mit modernen Programmierkonzepte wie OOP und irgendeine Art von Design, Muster)

Wenn ja, würden Sie bitte erklären, Warum Sie Python wählte (speziell) und geben Sie uns einige der Unterricht Sie aus diesem Projekt gelernt ? (Sie können ferner die Verwendung von Python im Projekt vs Java oder etc, vergleichen)

War es hilfreich?

Lösung

ich Python bin mit einer komplexen Abschluss von Versicherungen Anwendung für die Entwicklung.

Unsere Anwendungssoftware im Wesentlichen neu verpackt unser versicherungsmathematischen Modell in einer Form, die Unternehmen sie abonnieren können. Dieses Geschäft basiert auf unserer Aktuare und ihre tiefen Gedanken. Wir Verpackung nicht einen cleveren Algorithmus, der relativ fest ist. Wir sind unser versicherungstechnischen Gehirn Kunden über einen Web-Service zu mieten.

  1. Die Aktuare müssen frei sein, um Änderungen vorzunehmen, da sie einen tieferen Einblick in die verschiedenen Faktoren zu gewinnen, die den Ansprüchen führen.

    • Statische Sprachen (Java, C ++, C #) zu früh Lock-in zu einem Datenmodell führen.

    • Python ermöglicht es uns, ein sehr flexibles Datenmodell zu haben. Sie sind frei hinzufügen, ändern oder löschen Faktoren oder Informationsquellen, ohne viele Entwicklungskosten und Komplexität. Duck Typing ermöglicht es uns, neue Stücke ohne viel Nacharbeit einzuführen.

  2. Unsere Software ist ein Service (kein Paket), so haben wir ein endloses Integrationsproblem.

    • Statische Sprachen benötigen komplexe Mapping-Komponenten. Oft eine Art konfigurierbar, XML-gesteuerte Zuordnung von Kundenmeldungen zu unserer sich ständig verändernden internen Strukturen.

    • Python uns die Zuordnungen als einfache Python Klassendefinition haben, ermöglicht es, dass wir einfach optimieren, testen und in Betrieb genommen. Es gibt keine Beschränkungen auf dieses Modul - es ist First-Class-Python-Code

    • .
  3. Wir verfügen über umfangreiche, langlaufende Proof-of-Concept zu tun. Es handelt sich dabei zahlreiche „Was-wäre-wenn“ -Szenarien mit unterschiedlichen Daten-Feeds und benutzerdefinierte Funktionen.

    • Statische Sprachen viel sorgfältige Planung erfordern und noch eine weitere Demo erstellen denken, noch eine andere Zuordnung von noch einem anderen Kunden zur Verfügung gestellten Datei auf die aktuelle Version unserer versicherungsmathematischen Modellen.

    • Python erfordert viel weniger Planung. Duck Typing (und Django) lassen Sie uns eine Demo-Knock-out ohne sehr viel Schmerz. Die Datenzuordnungen sind einfache Python Klassendefinitionen; unsere versicherungsmathematischen Modelle sind in einem ziemlich konstanten Zustand des Flusses.

  4. Unser Geschäftsmodell ist auf eine bestimmte Anzahl von Verhandlungsgegenstand. Wir haben ziemlich komplexe Verträge mit Informationsanbietern; diese nicht so oft wie die versicherungsmathematischen Modell ändern, aber Änderungen hier erfordern Anpassung.

    • Statische Sprachen binden in Annahmen über die Verträge und erfordern ziemlich komplexes Design (oder Abhilfen) das Gehirn-Fürze der Geschäfts Leute die Angebote verhandeln zu behandeln.

    • In Python, verwenden wir eine umfangreiche Testsuite und machen viel Refactoring wie die verschiedenen Vertragsbedingungen zu uns herabrieseln.

    Jede Woche bekommen wir eine Frage wie „Können wir eine Bestimmung wie X umgehen?“ Unsere Standard-Antwort „Absolut.“ Gefolgt von einer Stunde von Refactoring sicher seine we könnte damit umgehen, wenn der Deal in dieser Form getroffen wurde.

  5. Wir sind meist ein RESTful Web-Service. Django hat eine Menge von diesem aus der Box. Wir hatten einige Erweiterungen zu schreiben, weil unser Sicherheitsmodell etwas strenger als die von Django vorgesehen ist.

    • Statische Sprachen müssen nicht Quelle versenden. Nicht wie das Sicherheitsmodell nicht? Bezahlen Sie den Verkäufer $$$.

    • Dynamische Sprachen muss als Quelle versenden. In unserem Fall verbringen wir Zeit, um die Quelle von Django sorgfältig zu lesen, um sicherzustellen, dass unser Sicherheitsmodell sauber mit dem Rest von Django paßt. Wir haben keine Notwendigkeit HIPAA, aber wir bauen es in sowieso.

  6. Wir verwenden Web-Services von Informationsanbietern. urllib2 tut dies für uns schön. Wir können schnell eine Schnittstelle Prototyp.

    • Mit einer statischen Sprache, haben Sie APIs, die Sie schreiben, Sie laufen, und Sie hoffen, dass es funktionierte. Der Entwicklungszyklus ist Bearbeiten, Übersetzen, Bauen, Run, Unfall, bei Logs Schauen; und das ist nur die Schnittstelle Spike und sicher sein, wir haben das Protokoll, Anmeldeinformationen und Konfiguration right.

    • Wir üben die Schnittstelle im interaktiven Python. Da wir es interaktiv sind ausführen, können wir die Antworten sofort untersuchen. Der Entwicklungszyklus wird reduziert auf Ausführen, Bearbeiten. Wir können ein Web-Services-API in einem Nachmittag Spike.

Andere Tipps

Ich habe in einem der weltweit größten Banken als Distributed Computing-Framework Python gewesen. Es wurde gewählt, weil:

  • Es war extrem schnell sein für die Entwicklung und Bereitstellung neuer Funktionalitäten;
  • Es hatte leicht mit C und C ++ integrierbar sein;
  • wurden einige Teile des Codes von Menschen geschrieben werden, dessen Fachgebiet war die mathematische Modellierung, nicht Software-Entwicklung.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top