Ein Typsystem ist eine Sammlung von Regeln, die den verschiedenen Konstrukten - wie Variablen, Ausdrücken, Funktionen oder Modulen -, aus denen ein Computerprogramm besteht, eine Eigenschaft zuweisen, die als Typ bezeichnet wird.
Kürzlich bin ich auf ein Problem mit der Lesbarkeit meines Codes gestoßen. Ich hatte eine Funktion, die eine Operation ausführte und eine Zeichenfolge zurückgab, die die ID dieser Operation zum späteren Nachschlagen darstellt (ein bisschen wie OpenFile in Windows, das ein Handle zurückgibt). Der Benutzer würde diese ID später verwenden, …
Gibt es Studien zur Wirksamkeit von statisch oder dynamisch typisierten Sprachen? Speziell: Messungen der Programmiererproduktivität Fehlerrate Berücksichtigt auch die Auswirkungen der Verwendung von Unit-Tests. Ich habe viele Diskussionen über die Vorzüge beider Seiten gesehen, aber ich frage mich, ob jemand eine Studie darüber durchgeführt hat.
Mir ist klar, dass einige Dinge in einer Sprache einfacher / schwieriger sind als in der anderen, aber ich interessiere mich nur für typbezogene Funktionen, die in der einen möglich und in der anderen unmöglich / irrelevant sind. Um es genauer zu machen, lassen Sie uns die Haskell-Typ-Erweiterungen ignorieren, da …
Betrachten Sie dies als eine "akademische" Frage. Ich habe darüber nachgedacht, von Zeit zu Zeit Nullen zu vermeiden, und dies ist ein Beispiel, bei dem ich keine zufriedenstellende Lösung finden kann. Angenommen, ich speichere Messungen, bei denen gelegentlich bekannt ist, dass die Messung unmöglich ist (oder fehlt). Ich möchte diesen …
Warum ist das in Ordnung und wird meistens erwartet: abstract type Shape { abstract number Area(); } concrete type Triangle : Shape { concrete number Area() { //... } } ... obwohl das nicht in Ordnung ist und sich niemand beschwert: concrete type Name : string { } concrete type …
Angenommen, eine Sprache mit einer gewissen inhärenten Typensicherheit (z. B. kein JavaScript): Ausgehend von einer Methode, die a akzeptiert SuperType, wissen wir, dass in den meisten Fällen die Versuchung besteht, Typprüfungen durchzuführen, um eine Aktion auszuwählen: public void DoSomethingTo(SuperType o) { if (o isa SubTypeA) { o.doSomethingA() } else { …
Eric Lippert hat in seiner Diskussion, warum C # nulleher einen als einen Maybe<T>Typ verwendet, einen sehr interessanten Punkt angesprochen : Die Konsistenz des Typsystems ist wichtig; Können wir immer wissen, dass ein nicht nullwertfähiger Verweis unter keinen Umständen als ungültig angesehen wird? Was ist mit dem Konstruktor eines Objekts …
Hintergrund Ich entwerfe eine Sprache als Nebenprojekt. Ich habe einen funktionierenden Assembler, einen statischen Analysator und eine virtuelle Maschine dafür. Da ich mit der von mir aufgebauten Infrastruktur bereits nicht-triviale Programme kompilieren und ausführen kann, habe ich mir überlegt, an meiner Universität einen Vortrag zu halten. Während meines Vortrags erwähnte …
Ein unterer Typ ist ein Konstrukt, das hauptsächlich in der mathematischen Typentheorie vorkommt. Es wird auch als leerer Typ bezeichnet. Es ist ein Typ, der keine Werte hat, aber ein Subtyp aller Typen. Wenn der Rückgabetyp einer Funktion der unterste Typ ist, bedeutet dies, dass sie nicht zurückgegeben wird. Zeitraum. …
In JavaScript: The Good Parts von Douglas Crockford erwähnt er in seinem Vererbungskapitel: Der andere Vorteil der klassischen Vererbung besteht darin, dass sie die Spezifikation eines Typensystems umfasst. Dies befreit den Programmierer größtenteils davon, explizite Casting-Operationen schreiben zu müssen, was sehr gut ist, da beim Casting die Sicherheitsvorteile eines Typsystems …
PHP hat, wie die meisten von uns wissen, eine schwache Typisierung . Für diejenigen, die dies nicht tun, sagt PHP.net: PHP benötigt (oder unterstützt) keine explizite Typdefinition in der Variablendeklaration. Der Typ einer Variablen wird durch den Kontext bestimmt, in dem die Variable verwendet wird. Lieben Sie es oder hassen …
Ich habe mich immer gefragt, warum Java keine Typinferenz ausführt, da die Sprache so ist, wie sie ist, und die VM sehr ausgereift ist. Googles Go ist ein Beispiel für eine Sprache mit hervorragenden Tippfehlern und reduziert den Aufwand für die Eingabe. Gibt es einen besonderen Grund dafür, dass diese …
Mit welchen Techniken kann ich Code konsequent umgestalten, ohne auf existenzielle Typen angewiesen zu sein? In der Regel werden diese verwendet, um unerwünschte Konstruktionen Ihres Typs zu disqualifizieren und den Konsum mit einem Minimum an Wissen über den angegebenen Typ zu ermöglichen (oder so ist mein Verständnis). Hat jemand eine …
Dies kam in einer Diskussion mit einem Freund auf, und ich fand es schwer, mir irgendwelche guten Argumente auszudenken. Welche Vorteile bietet schwaches Tippen?
Ich lese Code viel häufiger als ich Code schreibe, und ich gehe davon aus, dass die meisten Programmierer, die an industrieller Software arbeiten, dies tun. Der Vorteil von Typinferenz, den ich annehme, ist weniger Ausführlichkeit und weniger geschriebener Code. Wenn Sie jedoch häufiger Code lesen, möchten Sie wahrscheinlich lesbaren Code. …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.