Ich habe im Internet einige Artikel über die Wahl der Programmiersprache im Unternehmen gelesen. In letzter Zeit waren viele dynamisch geschriebene Sprachen beliebt, z. B. Ruby, Python, PHP und Erlang. Viele Unternehmen bleiben jedoch bei statisch typisierten Sprachen wie C, C ++, C # und Java.
Und ja, einer der Vorteile statischer typisierter Sprachen besteht darin, dass Programmierfehler eher zur Kompilierungszeit als zur Laufzeit abgefangen werden. Es gibt aber auch Vorteile bei dynamischen Schriftsprachen. ( mehr auf Wikipedia )
Der Hauptgrund, warum Unternehmen Sprachen wie Erlang, Ruby und Python nicht mehr verwenden, scheint die Tatsache zu sein, dass sie dynamisch geschrieben sind. Dies scheint auch der Hauptgrund zu sein, warum sich die Leute bei StackOverflow gegen Erlang entscheiden. Siehe Warum haben Sie „gegen“ Erlang entscheiden .
Allerdings scheint es eine starke Kritik gegen dynamische Typisierung in den Unternehmen zu sein, aber ich weiß es wirklich nicht bekommen , warum es ist , dass stark.
Wirklich, warum gibt es in den Unternehmen so viel Kritik gegen dynamisches Tippen? Beeinflusst es die Projektkosten wirklich so sehr, oder was? Aber vielleicht irre ich mich.
dynamic
und verwenden es. Es ist nicht ausführlicher als normale Methodenaufrufe oder Operatorüberladungen.Antworten:
Ja, das glaube ich.
Es gibt einige Gründe, die bei der Auswahl einer Sprache für ein neues Projekt berücksichtigt werden müssen:
while(1)
....Wenn Sie davon ausgehen können, dass die Organisation, mit der Sie zusammenarbeiten, den Grundsatz "Going forward" (es gibt einen Buchhaltungsbegriff dafür) hat und sich nicht zufällig dafür entscheidet, nicht an der Software zu arbeiten, haben Sie ein viel besseres Argument mit der Software. Da Python / Perl / $ dynamic_language kein Hauptgeschäft verkauft (was impliziert, dass die Verantwortung für die Wartung übernommen wird), wird das Risiko erheblich reduziert.
Nach meiner Erfahrung haben Open Source-Betreuer oft ein Problem damit, die Verantwortung für Bugfixes und die Veröffentlichung von Updates vollständig zu übernehmen. "Es ist kostenlos, DU arbeitest daran!" ist keine für die meisten Unternehmen akzeptable Antwort (unter anderem nicht ihre Kernkompetenzen).
Natürlich spreche ich nicht von der Webapp / Startup-Welt, die tendenziell mit hohen Risiko- / Belohnungsregeln arbeitet und sehr offen dafür ist, auf dem neuesten Stand der Technik zu bleiben.
quelle
Sie geben den Entscheidungsträgern von Unternehmen zu viel technische Anerkennung. Es gibt ein altes Sprichwort: "Niemand wurde entlassen, weil er IBM gekauft hat." Wenn Sie einen anderen Weg gehen und die Dinge steinig werden (das tun sie immer), möchte niemand das Risiko eingehen, beschuldigt zu werden. Halten Sie sich an die Standards und beschuldigen Sie andere.
Es gibt viele jüngere Unternehmen, die irgendwann zu den Unternehmen von morgen werden und diese Sprachen verwenden werden.
Und vergessen wir nicht die buggillion Codezeilen, die in VBA geschrieben wurden!
quelle
Der Grund, warum Unternehmen C, C ++, C # und Java verwenden, liegt nicht in der statischen Typisierung (zumindest nicht direkt). Unternehmensentscheider treffen solche Entscheidungen nicht auf der Grundlage eines objektiven Vergleichs von Typensystemen, wie ich Ihnen versichere.
Unternehmen tun kümmern uns um:
Persönlich denke ich, dass wenn Sie dynamische Sprachen im Unternehmen verwenden möchten, die beste Chance bei weitem darin besteht, etwas zu verwenden, das sich auf ein vorhandenes Unternehmensökosystem auswirkt. Am bemerkenswertesten sind die neuen dynamischen JVM-Sprachen: zB JRuby, Groovy, Clojure. Für das IT-Management sind dies "sichere" dynamische Sprachoptionen, da sie innerhalb des restlichen Java-Unternehmens-Ökosystems funktionieren und gut mit diesem zusammenarbeiten.
quelle
Ich denke, das ist nur ihre primäre Entschuldigung. Der wahre Grund ist, dass Unternehmen sie nicht wirklich ernst nehmen und sich vielleicht ein bisschen zu amateurhaft fühlen. Java und .NET sind „Big Business-Namen“, haben ein gutes kommerzielles Marketing und eine kommerzielle Kundenbetreuung und werden daher allgemein sehr ernst genommen.
Es ist bedauerlich, dass es praktisch keine statisch typisierte Sprache gibt, die bei weitem nicht so populär ist wie die Namen der großen Unternehmen. Warum werden Open-Source- / Freie-Software-Programmierumgebungen fast immer dynamisch geschrieben? Dies könnte darauf hinweisen, dass eine statisch getippte Sprache tatsächlich nicht so einfach zu erstellen ist und dass dynamisches Tippen ein "fauler Mann" ist. Wenn dies der Fall ist, haben die Unternehmen, die sich gegen dynamisch geschriebene Sprachen entscheiden, möglicherweise tatsächlich ein Argument.
quelle
EDIT: Ich sollte erwähnen, dass meine Hauptprogrammiersprache im Moment Python ist, das dynamisch getippt wird. Persönlich mag ich die Freiheit, Variablen nicht vorab deklarieren zu müssen, aber manchmal wäre es schön, (zum Beispiel) anzugeben, welche Art von Parametern eine Funktion benötigt, um Fehler eher früh als spät zu erkennen.
quelle
Dynamisch getippte Sprachen werden (von einigen Programmierern / Chefs) wahrgenommen, um Code zu erzeugen, der nicht so gut funktioniert. Die Tatsache, dass ein dynamisch typisiertes Programm kompiliert wird, sagt wenig über seine Richtigkeit aus. Die Tatsache, dass eine statisch typisierte Sprache kompiliert, sagt viel mehr aus. (Auf der anderen Seite gibt es immer noch einen weiten Weg zwischen dem Kompilieren und dem richtigen Vorgehen. Dies ist möglicherweise weniger aussagekräftig, als es scheint.)
Dynamisch getippte Sprachen werden als Skriptsprachen wahrgenommen. Sie würden niemals eine Anwendung in Bash oder einer Batch-Datei schreiben. Alle dynamisch getippten Sprachen werden in der Regel (ungerechtfertigt) in diese Kategorie eingeteilt.
Dynamisch eingegebene Sprachen sind langsamer als statisch eingegebene Sprachen. (Aber wir werden sehen, wie gut die Arbeit an JIT dies ändert.)
quelle
Hinweis: Dies ist größtenteils subjektiv und basiert auf meinen Erfahrungen und Eindrücken.
Dynamisch typisierte Sprachen unterscheiden sich stark von statisch typisierten Sprachen. Diese Unterschiede werden bei schwerer Unternehmenssoftware wahrscheinlich wichtiger als bei den meisten anderen Anwendungen.
Statisch typisierte Sprachen sind in der Regel sehr genau. Eine Methode nimmt nur Eingaben entgegen, die genau ihrer Signatur entsprechen. Zugriffsebenen sind in der Regel sehr wichtig, und Schnittstellen werden explizit definiert, wobei ausführliche, aber eindeutige Einschränkungen bestehen, um diese Definitionen durchzusetzen.
Dynamisch getippte Sprachen sind dagegen sehr pragmatisch. Typkonvertierungen erfolgen oft implizit, Funktionen können sogar mitspielen, wenn Sie den falschen Eingabetyp angeben, sofern sich dieser hinreichend ähnlich verhält. In Sprachen wie Python basieren selbst Zugriffsberechtigungen auf vertraglichen und nicht auf technischen Einschränkungen (dh nur,
private
weil Sie angewiesen werden, sie nicht zu verwenden, und sie haben einen lustigen Namen).Viele Programmierer bevorzugen dynamische Sprachen, weil sie (vermutlich) Rapid Prototyping ermöglichen. Der Code wird häufig kürzer (schon allein wegen fehlender Typdeklarationen) und wenn Sie gegen das richtige Protokoll verstoßen möchten, weil Sie eine schnelle und schmutzige Lösung benötigen oder etwas testen möchten, ist dies leicht möglich.
Nun, der Grund, warum "Unternehmer" oft statisch typisierte Sprachen bevorzugen, ist genau der, dass sie diese Einschränkungen restriktiver und expliziter angehen. Obwohl in der Praxis sogar statisch getippter Code von Idioten mit einem Compiler gebrochen werden kann, werden viele Probleme viel früher im Prozess (dh vor der Laufzeit) sichtbar. Dies bedeutet, dass selbst wenn die Codebasis groß, monolithisch und komplex ist, viele Fehler leicht abgefangen werden können, ohne dass der Code ausgeführt oder an die QA-Abteilung gesendet werden muss.
Der Grund, warum der Nutzen die Nachteile für viele Programmierer außerhalb dieser Umgebung nicht überwiegt, ist, dass es sich um Fehler handelt, die häufig durch eine gründliche Überprüfung des Codes oder sogar durch den Versuch, ihn auszuführen, leicht aufgefangen werden können. Insbesondere bei der Befolgung einer testgetriebenen Methodik werden diese Fehler oftmals trivial und leicht zu beheben. Auch bei vielen solchen Unternehmen mit einem viel kürzeren Release-Zyklus ist die Produktivität oft wichtiger als die Steifheit, und die Entwickler selbst führen viele (grundlegende) Tests durch.
Der andere Grund, warum Unternehmen keine dynamisch getippten Sprachen verwenden, ist Legacy-Code. So albern es uns Nerds auch erscheinen mag, große Unternehmen halten oft an Lösungen fest, die funktionieren, auch wenn sie längst über ihre Haltbarkeit hinausgehen. Aus diesem Grund erzwingen so viele große Unternehmen Internet Explorer 6 und aktualisieren ihre Betriebssysteme nur sehr langsam. Dies ist auch der Grund, warum sie häufig neuen Code in "alten" Sprachen schreiben (z. B. in alten Versionen von Java): Es ist viel einfacher, ein paar Zeilen Code zu einer nicht mehr lebenden Software hinzuzufügen, als die Genehmigung für ein vollständiges Umschreiben in einer neuen zu erhalten Sprache.
tl; dr: statische sprachen fühlen sich eher wie bürokratie an, so dass unternehmerische Manager sie besser mögen.
quelle
+
nimmt Zahlen und fügt sie hinzu, wenn Sie Verkettung möchten, müssen Sie sie verwenden.
; In JS haben beide Operationen den gleichen Operator. Wenn Sie nicht wissen, wie sich Ihre Werte verhalten, müssen Sie sie explizit konvertieren. Natürlich hat dies auch mit loser Eingabe und strikter Eingabe zu tun (Python ist noch strenger), aber im Grunde müssen Sie entweder sicherstellen, dass Ihre Werte den richtigen Typ haben, oder Ihre Operationen müssen die erwarteten Typen erzwingen.Nein, ich denke nicht, dass dynamisch getippte Sprachen die ganze Kritik verdienen. (Oder wenn Sie es vorziehen, verdienen sie genauso viel Kritik wie statisch typisierte Sprachen.)
Nach meiner Erfahrung (und ich versuche nicht, diese Aussage zu verallgemeinern) haben die Programmierer, die dynamische Sprachen kritisieren, sie nicht verwendet. Die Konversation lautet normalerweise "aber bei statischer Eingabe fängt der Compiler so viele Fehler ab!" und ich sage: "Nun, meiner Erfahrung nach ist das einfach kein Problem." (Normalerweise hat der andere Programmierer einen Java-, Delphi- oder ähnlichen Hintergrund. Ich kenne keine Haskell- oder ML-Programmierer.)
Das Einzige, was mich wirklich reizt, ist, wenn jemand behauptet, dass Foo-Technik in einer dynamisch getippten Sprache unmöglich (oder sehr schwer zu tun) ist ... als diese Technik erfunden wurde, von und für eine dynamisch getippte Sprache. IDEs? Smalltalk. Automatisches Refactoring? Smalltalk. Anrufer / Implementierer von? Smalltalk.
quelle
Unternehmen übernehmen neue Sprachen und Tools einfach nicht schnell genug, und es gibt gute Gründe dafür. Aber wenn eines der Mainstream-Tools wie C # einige dieser Funktionen implementiert, werden sie in die Mainstream-Unternehmen eindringen ...
quelle