Rust parece ser uno de los lenguajes modernos más útiles para aplicar métodos formales.
Las reglas de Rust eliminan muchos casos que son difíciles de formalizar.
El gran problema que queda es el análisis de interbloqueos; si fuera posible hacer análisis estático de interbloqueos en Rust, también se podrían obtener backpointers seguros.
El aprendizaje automático podría ayudar a guiar a los demostradores de teoremas.
Cita del artículo de Hoare de 1973
Reducir la crítica de Hoare a una perspectiva centrada en Rust es artificial.
La discusión de Grayson es lo bastante interesante como para superar las quejas técnicas.
Crítica del análisis de programas
Este texto pasa por alto todo el campo del análisis de programas.
Lenguajes como Java tienen GC, pero carecen de un soporte sólido para el razonamiento local.
El análisis de punteros y el análisis de escape pueden inferir unicidad y determinar si las referencias están separadas.
Escepticismo sobre la verificación formal
La verificación formal es interesante en teoría, pero su uso práctico es raro.
Escribir una especificación correcta es tan difícil como programar correctamente.
F y Ada/SPARK2014*
Se prefiere la sintaxis de F*, pero para sistemas de control relacionados con seguridad se usa Ada/SPARK2014.
Rust todavía no tiene un estándar oficial, así que le cuesta atraer al mismo tipo de usuarios que Ada/SPARK2014.
Límites de los métodos formales
La ausencia de referencias facilita la verificación formal, pero no es un método de verificación práctico ni rentable.
La mayoría de los programas son difíciles de verificar formalmente.
Conteo de referencias y recolección de basura
Python usa un híbrido de conteo de referencias y rastreo.
Perl usa conteo de referencias puro, pero maneja estructuras cíclicas mediante referencias débiles.
Nim usa ORC para ofrecer un sistema rápido que solo recolecta ciclos.
9.º aniversario de Rust
Se celebra el 9.º aniversario de Rust 1.0.
Patrón Typestate
Da gusto leer artículos sobre el patrón Typestate.
Guardas de tipo en tiempo de compilación
Ojalá se pudieran escribir guardas de tipo en tiempo de compilación de forma más simple.
Los mensajes de error de los programas a nivel de tipos son complejos y perjudican la experiencia de desarrollo.
Hace falta que las funciones en tiempo de compilación de Rust sean más simples y más funcionales.
Este resumen ofrece diversas perspectivas y está organizado para que un ingeniero de software principiante pueda entenderlo fácilmente.
1 comentarios
Opiniones de Hacker News
Resumen de comentarios de Hacker News
Rust y los métodos formales
Cita del artículo de Hoare de 1973
Crítica del análisis de programas
Escepticismo sobre la verificación formal
F y Ada/SPARK2014*
Límites de los métodos formales
Conteo de referencias y recolección de basura
9.º aniversario de Rust
Patrón Typestate
Guardas de tipo en tiempo de compilación
Este resumen ofrece diversas perspectivas y está organizado para que un ingeniero de software principiante pueda entenderlo fácilmente.