Rust scheint eine der nützlichsten modernen Sprachen für die Anwendung formaler Methoden zu sein.
Die Regeln von Rust beseitigen viele Fälle, die sich nur schwer formalisieren lassen.
Das verbleibende große Problem ist die Deadlock-Analyse; wenn statische Deadlock-Analyse in Rust möglich wäre, könnte man auch sichere Backpointer erhalten.
Maschinelles Lernen könnte dabei helfen, Theorembeweiser anzuleiten.
Zitat aus Hoares Aufsatz von 1973
Es wirkt künstlich, Hoares Kritik auf eine Rust-zentrierte Perspektive zu verengen.
Graysons Diskussion ist interessant genug, um die technischen Beschwerden zu überwiegen.
Kritik an der Programmanalyse
Dieser Beitrag übersieht das gesamte Feld der Programmanalyse.
Sprachen wie Java haben zwar GC, bieten aber nur schwache Unterstützung für starkes lokales Schließen.
Pointer-Analyse und Escape-Analyse können Eindeutigkeit herleiten und beurteilen, ob Referenzen getrennt sind.
Skepsis gegenüber formaler Verifikation
Formale Verifikation ist theoretisch interessant, wird in der Praxis aber selten eingesetzt.
Eine korrekte Spezifikation zu schreiben ist genauso schwer wie korrekt zu programmieren.
F und Ada/SPARK2014*
Die Syntax von F* wird bevorzugt, aber für sicherheitsrelevante Steuerungssysteme wird Ada/SPARK2014 verwendet.
Rust hat noch keinen offiziellen Standard und kann daher nur schwer dieselbe Nutzergruppe wie Ada/SPARK2014 anziehen.
Grenzen formaler Methoden
Referenzfreiheit erleichtert formale Verifikation, ist aber keine praktische und kosteneffiziente Methode der Verifikation.
Die meisten Programme lassen sich nur schwer formal verifizieren.
Referenzzählung und Garbage Collection
Python verwendet eine Hybridform aus Referenzzählung und Tracing.
Perl verwendet reine Referenzzählung, verwaltet zyklische Strukturen aber über schwache Referenzen.
Nim verwendet ORC und bietet damit ein schnelles System, das nur Zyklen einsammelt.
Rusts 9. Jubiläum
Das 9. Jubiläum von Rust 1.0 wird gefeiert.
Typestate-Muster
Es macht Spaß, Artikel über das Typestate-Muster zu lesen.
Type Guards zur Compile-Zeit
Es wäre wünschenswert, Type Guards zur Compile-Zeit einfacher schreiben zu können.
Fehlermeldungen bei Programmen auf Type-Ebene sind komplex und verschlechtern die Developer Experience.
Rusts Compile-Time-Funktionen müssten einfacher und funktionaler werden.
Diese Zusammenfassung bietet verschiedene Perspektiven und ist so aufgebaut, dass sie für Softwareingenieure am Anfang ihrer Laufbahn leicht verständlich ist.
1 Kommentare
Hacker-News-Kommentar
Zusammenfassung der Hacker-News-Kommentare
Rust und formale Methoden
Zitat aus Hoares Aufsatz von 1973
Kritik an der Programmanalyse
Skepsis gegenüber formaler Verifikation
F und Ada/SPARK2014*
Grenzen formaler Methoden
Referenzzählung und Garbage Collection
Rusts 9. Jubiläum
Typestate-Muster
Type Guards zur Compile-Zeit
Diese Zusammenfassung bietet verschiedene Perspektiven und ist so aufgebaut, dass sie für Softwareingenieure am Anfang ihrer Laufbahn leicht verständlich ist.