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.
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 …
Ich habe diese zwei kleinen Programme: C #include <stdio.h> int main() { if (5) { printf("true\n"); } else { printf("false\n"); } return 0; } Java class type_system { public static void main(String args[]) { if (5) { System.out.println("true"); } else { System.out.println("false"); } } } die meldet die Fehlermeldung: type_system.java:4: …
Ich studiere Haskell, um die funktionale Programmierung zu verstehen, mit der Erwartung, dass ich die Erkenntnisse, die ich in anderen Sprachen erhalte, anwenden werde (hauptsächlich Groovy, Python, JavaScript). Ich habe mich für Haskell entschieden, weil ich den Eindruck hatte, dass es sehr rein funktional ist und kein Vertrauen in den …
Ich habe eine verwandte Frage gelesen. Gibt es Entwurfsmuster, die in dynamischen Sprachen wie Python nicht erforderlich sind? und erinnerte mich an dieses Zitat auf Wikiquote.org Das Wunderbare an dynamischer Eingabe ist, dass Sie damit alles ausdrücken können, was berechenbar ist. Typsysteme sind normalerweise nicht bestimmbar und beschränken Sie auf …
Erfordert die Einführung der neuen Lambda-Notation (siehe z. B. diesen Artikel ) in Java 8 eine Art Typinferenz? Wenn ja, wie wird sich das neue Typsystem auf die Java-Sprache insgesamt auswirken?
Ich weiß, dass dies eine sehr breite, mehrdeutige und möglicherweise philosophische Frage ist. Bis zu einem gewissen Grad ist das wichtigste Schlüsselwort in der Frage - das "starke" Typensystem - selbst - schlecht definiert . Lassen Sie mich erklären, was ich meine. Gesamtzusammenhang für die Frage Wir haben eine sehr …
Es scheint, dass alle neuen Programmiersprachen oder zumindest diejenigen, die populär geworden sind, Typinferenz verwenden. Sogar Javascript hat Typen und Typinferenz durch verschiedene Implementierungen (Acscript, typescript etc). Es sieht toll aus, aber ich frage mich, ob es Kompromisse gibt oder warum Java oder die alten guten Sprachen keine Typinferenz haben …
Es ist allgemein anerkannt, dass Java-Generika auf einige wichtige Arten versagt haben. Die Kombination von Platzhaltern und Schranken führte zu ernsthaft unlesbarem Code. Wenn ich mir jedoch andere Sprachen anschaue, kann ich anscheinend kein generisches Typsystem finden, mit dem Programmierer zufrieden sind. Nehmen wir als Entwurfsziele eines solchen Typsystems: Erzeugt …
In Eric Lipperts Artikel What's Up With Hungarian Notation? , erklärt er, dass der Zweck der ungarischen Notation (der guten Art) darin besteht, Erweitern Sie das Konzept von "Typ", um zusätzlich zu Speicherrepräsentationsinformationen auch semantische Informationen zu erfassen. Ein einfaches Beispiel wäre das Präfixieren einer Variablen, die eine X-Koordinate darstellt, …
Bei der Konzeption und implenting eine objektorientierte Programmiersprache, muss irgendwann man eine Wahl trifft über grundlegende Arten der Umsetzung (wie int, float, doubleoder Äquivalente) als Klassen oder etwas anderes. Offensichtlich Sprachen in der C - Familie eine Tendenz haben , nicht sie als Klassen zu definieren (Java hat spezielle Urtyp, …
Ich bin etwas verwirrt über den Unterschied zwischen nominalen und strukturellen Systemen. Kann jemand bitte erklären, wie sie sich unterscheiden? Von dem, was ich verstehe: Nominal: Die Typkompatibilität basiert auf dem Typnamen. Strukturell: Die Typkompatibilität basiert auf der Typstruktur. Wenn z. B. in C zwei Variablen Strukturtypen mit unterschiedlichen Namen, …
Hinweis: Wenn ich im Titel "Komplex" verwendet habe, bedeutet dies, dass der Ausdruck viele Operatoren und Operanden enthält. Nicht, dass der Ausdruck selbst komplex wäre. Ich habe kürzlich an einem einfachen Compiler für die x86-64-Assembly gearbeitet. Ich habe das Haupt-Frontend des Compilers fertiggestellt - den Lexer und den Parser - …
Ich habe gelesen, dass Hindley-Milner nicht mit Typsystemen arbeitet, die Unterklassen haben, und es gibt andere Typsystemfunktionen, die ebenfalls nicht gut damit funktionieren. Go hat derzeit nur sehr eingeschränkte Typrückschlüsse im :=Operator. Go hat jedoch keine Unterklassen im herkömmlichen Sinne, sondern nur Schnittstellen, die Haskells Typklassen sehr ähnlich sehen und …
Gibt es einige theoretische Gründe dafür (wie dass die Typprüfung oder die Typinferenz unentscheidbar werden würde) oder praktische Gründe (zu schwierig, richtig zu implementieren)? Gegenwärtig können wir Dinge in newtypeÄhnliches verpacken newtype Pair a = Pair (a, a) und dann haben Pair :: * -> * aber wir können sowas …
Bei der Erläuterung des Y-Kombinators im Kontext von Haskell wird normalerweise darauf hingewiesen, dass die direkte Implementierung in Haskell aufgrund des rekursiven Typs keine Typprüfung durchführt. Zum Beispiel von Rosettacode : The obvious definition of the Y combinator in Haskell canot be used because it contains an infinite recursive type …
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.