programming-languages

___ answer672806 ___

Ich habe Python als verteiltes Computing-Framework in einer der größten Banken der Welt verwendet. Es wurde gewählt, weil:

  • Es musste extrem schnell sein, um neue Funktionalitäten zu entwickeln und zu implementieren;
  • Es musste leicht mit C und C ++ integrierbar sein;
  • Einige Teile des Codes sollten von Leuten geschrieben werden, deren Fachgebiet die mathematische Modellierung und nicht die Softwareentwicklung war.
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ tag123designpatterns ___ Ein Designmuster ist eine allgemeine wiederverwendbare Lösung für ein häufig auftretendes Problem im Softwaredesign. Verwenden Sie dieses Tag für Fragen, wenn Sie Probleme mit der Implementierung von Entwurfsmustern haben. Bitte verwenden Sie dieses Tag nicht bei Fragen zum Textmustervergleich. ___ qstnhdr ___ Python Programmierung - Regeln / Ratschläge für die Entwicklung von Software auf Unternehmensebene in Python? ___ tag123programminglanguages ​​___ Eine Programmiersprache ist eine künstliche Sprache, die entworfen wurde, um Berechnungen auszudrücken, die von einer Maschine ausgeführt werden können. ** Bitte beachten Sie: ** Wie anderswo auf Stack Overflow, Ressourcen- und Tutorial-Empfehlungsanfragen, Anfragen nach Listen von Dingen ("welche Sprachen haben diese Funktion ...") und übermäßig meinungsbasiert ("Was ist das Beste? ... ") Fragen sind nicht Thema. ___ tag123dynamictyping ___ Dynamic Typing ist eine Eigenschaft einer Programmiersprache, in der Typprüfungen hauptsächlich zur Laufzeit durchgeführt werden. ___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ answer672975 ___

Ich benutze Python für die Entwicklung einer komplexen Versicherung Underwriting-Anwendung.

Unsere Anwendungssoftware packt unser versicherungsmathematisches Modell im Wesentlichen so um, dass Unternehmen es abonnieren können. Dieses Geschäft basiert auf unseren Aktuaren und ihrem tiefen Denken. Wir verpacken keinen cleveren Algorithmus, der relativ stabil ist. Wir vermieten unsere Versicherungsmathematiker über einen Webservice an Kunden.

  1. Die Versicherungsmathematiker müssen frei sein, Änderungen vorzunehmen, wenn sie einen tieferen Einblick in die verschiedenen Faktoren erhalten, die zu Ansprüchen führen.

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

    • Python ermöglicht uns ein sehr flexibles Datenmodell. Sie können Faktoren oder Informationsquellen ohne große Entwicklungskosten und Komplexität hinzufügen, ändern oder löschen. Das Tippen mit der Ente erlaubt uns, neue Stücke ohne viel Nacharbeit einzuführen.

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

    • Statische Sprachen benötigen komplexe Mapping-Komponenten. Oft eine Art konfigurierbares, XML-gesteuertes Mapping von Kundennachrichten zu unseren sich ständig ändernden internen Strukturen.

    • Python erlaubt uns, die Zuordnungen als einfache Python-Klassendefinition zu haben, die wir einfach optimieren, testen und in Produktion bringen. Dieses Modul unterliegt keinen Einschränkungen - es handelt sich um erstklassigen Python-Code.

  3. Wir müssen einen umfangreichen, lang andauernden Proof-of-Concept machen. Dazu gehören zahlreiche "Was-wäre-wenn" -Szenarien mit unterschiedlichen Datenfeeds und benutzerdefinierten Funktionen.

    • Statische Sprachen erfordern viel sorgfältiges Planen und Nachdenken, um eine weitere Demo zu erstellen, eine weitere Zuordnung von einer weiteren vom Kunden bereitgestellten Datei zur aktuellen Version unserer aktuariellen Modelle.

    • Python benötigt viel weniger Planung. Duck Typing (und Django) lassen uns eine Demo ohne große Schmerzen ausknocken. Die Datenzuordnungen sind einfache Python-Klassendefinitionen. Unsere versicherungsmathematischen Modelle befinden sich in einem ziemlich konstanten Wandel.

  4. Unser Geschäftsmodell unterliegt bestimmten Verhandlungen. Wir haben ziemlich komplexe Verträge mit Informationsanbietern; diese ändern sich nicht so oft wie das versicherungsmathematische Modell, aber Änderungen müssen hier angepasst werden.

    • Statische Sprachen binden sich an Annahmen über die Verträge und erfordern ziemlich komplexe Designs (oder Workarounds), um mit den Hirngespinsten der Geschäftsleute umzugehen, die die Deals aushandeln.

    • In Python verwenden wir eine umfangreiche Testsuite und machen eine Menge Refactoring, da die verschiedenen Vertragsbedingungen auf uns zutreffen.

    Jede Woche bekommen wir eine Frage wie "Können wir eine Bestimmung wie X handhaben?" Unsere Standardantwort lautet "Absolut". Gefolgt von einer Stunde Refactoring, um sicher zu sein, dass wir damit umgehen können, wenn der Deal in dieser Form getroffen wurde.

  5. Wir sind meistens ein RESTful Webservice. Django macht eine Menge davon out of the box. Wir mussten einige Erweiterungen schreiben, weil unser Sicherheitsmodell etwas strenger ist als das von Django.

    • Statische Sprachen müssen keine Quelle liefern. Mag das Sicherheitsmodell nicht? Bezahlen Sie den Kreditor $$$.

    • Dynamische Sprachen müssen als Quelle versandt werden. In unserem Fall verbringen wir viel Zeit damit, die Quelle von Django sorgfältig zu lesen, um sicherzustellen, dass unser Sicherheitsmodell sauber mit dem Rest von Django zusammenpasst. Wir brauchen keine HIPAA-Konformität, aber wir bauen sie trotzdem auf.

  6. Wir verwenden Webdienste von Informationsanbietern. urllib2 macht das für uns nett. Wir können eine Schnittstelle schnell entwickeln.

    • Mit einer statischen Sprache haben Sie APIs, Sie schreiben, Sie laufen, und Sie hoffen, es hat funktioniert. Der Entwicklungszyklus ist Bearbeiten, Kompilieren, Erstellen, Ausführen, Absturz, Protokolle anzeigen; und das ist nur, um die Schnittstelle zu spike und sicher sein, dass wir das Protokoll, die Anmeldeinformationen und die Konfigurationsrechte haben.

    • Wir üben die Schnittstelle in interaktivem Python. Da wir es interaktiv ausführen, können wir die Antworten sofort untersuchen. Der Entwicklungszyklus wird auf Ausführen, Bearbeiten reduziert. Wir können eine Web-Service-API an einem Nachmittag starten.

___ qstntxt ___

Ich bin ein etwas fortgeschrittener C ++ / Java-Entwickler, der sich vor kurzem für Python interessiert hat und ich genieße seine dynamische Typisierung und seinen effizienten Codierungsstil sehr. Ich benutze es derzeit für meine kleinen Programmieranforderungen, wie das Lösen von Programmierrätseln und Skripten, aber ich bin neugierig, ob irgendjemand da draußen erfolgreich Python in einem Projekt in Enterprise-Qualität verwendet hat? (Vorzugsweise mit modernen Programmierkonzepten wie OOP und einer Art Design Pattern)

Wenn ja, erklären Sie bitte warum Sie Python (spezifisch) gewählt haben und geben Sie uns einige der Lektionen , die Sie von diesem Projekt gelernt haben ? (Fühlen Sie sich frei, die Verwendung von Python im Projekt gegenüber Java oder etc zu vergleichen)

    
___
1
Antwort

Motivation für Scala unterstreicht die formale Sprachtheorie und den guten Stil?

Warum sagen viele Leute, dass die Verwendung von Unterstrichen gute Praxis in Scala ist und Ihren Code lesbarer macht ? Sie sagen, dass die Motivation von der formalen Sprachtheorie kommt. Dennoch bevorzugen viele Programmierer, insbesondere...
10.09.2014, 10:45
4
Antworten

Gibt es einen Grund, funktionale Programmierung für Data Mining-Projekte zu bevorzugen? [geschlossen]

Ich untersuche die Möglichkeit, ein Data-Mining-Projekt zu starten, das intensive Berechnungen und Datentransformationen beinhaltet und relativ einfach zu skalieren ist. Nach Ihrer Erfahrung ist die Wahl der Programmiersprache für das Projekt...
08.11.2010, 21:13
4
Antworten

Sind Sprachen wirklich von Bibliotheken abhängig?

Ich habe mich immer gefragt, wie die Abhängigkeiten von einer Programmiersprache zu ihren Bibliotheken verwaltet werden. Nimm zum Beispiel C #. Als ich angefangen habe, etwas über Computer zu lernen, würde ich (fälschlicherweise) annehmen, dass...
07.05.2013, 18:50
4
Antworten

Warum hat das Betriebssystem keinen Garbage Collector?

Ich wundere mich darüber, weil das Betriebssystem für die Speicherverwaltung zuständig ist. Warum müssen Programmiersprachen eigene Garbage Collectors implementieren?     
12.10.2014, 13:42
3
Antworten

Was ist die beste Sprache / Plattform für SOA unter Linux in einer Post-Java-Welt?

Ich muss eine Sprache / Plattform für die Neuentwicklung einer Reihe von Diensten in einer SOA wählen. Ich schaue mir Scala und Clojure an, glaube aber nicht, dass die Community und die Produkte reif genug für ein echtes Enterprise-Produkt sind....
18.01.2011, 13:35
5
Antworten

Erste Must-Programm-Projekte als Hobby

Ich habe immer geglaubt, dass Programmierer, wenn sie eine neue Programmiersprache erlernen, bestimmte Projekte erstellen müssen, um ein besseres Verständnis der Sprache und / oder der Frameworks zu bekommen. Persönlich für mich war es mit PHP (...
14.09.2009, 05:34
3
Antworten

Warum ist cond ein spezielles Formular in Scheme und nicht eine Funktion?

%Vor% Dinge, die ich über Cond weiß Es erlaubt mehrere Test- und alternative Ausdrücke Es hat eine vordefinierte Bewertungsreihenfolge. Zum Beispiel wird die erste Bedingung immer ausgewertet, ob es richtig ist oder nicht Eine Sache,...
01.11.2015, 18:32
3
Antworten

Guid-Eindeutigkeit auf anderem Rechner [duplizieren]

Nach dem Lesen aller Beiträge auf Guid, bin ich immer noch über eine einfache Sache unklar: Guids, die von verschiedenen Maschinen generiert werden, behalten ihre Eindeutigkeit oder nicht. Ich habe über Guid-Eindeutigkeit auf einer ein...
28.12.2012, 18:46
4
Antworten

Neben den First-Class-Funktionen und dem Lexical-Scoping, was teilt JavaScript mit Scheme-Implementierungen?

Ich habe mich immer gefragt, warum Douglas Crockford JavaScript mit Scheme vergleicht. Ja, JS sollte vom Designer entworfen werden. Aber neben der Unterstützung der ersten Klassenfunktion und dem lexikalischen Scoping (gebrochen), welche Eigensc...
12.03.2011, 13:23
5
Antworten

Relativer Pfad zu einer Datei mit C #

Ich habe ein Befehlszeilenprogramm, das eine Konfigurationsdatei als Parameter akzeptiert, dh C: \ myprogram.exe -c C: \ configFiles \ MyConfigFile.txt . Ich möchte in der Lage sein, es so zu machen, dass ich den absoluten Pfad zur Konfiguratio...
19.01.2011, 20:49