¿Es la incapacidad de implementar estructuras de datos básicas como una lista doblemente enlazada, un árbol con punteros primarios usando un código seguro la mayor debilidad de Rust?

Dime:

¿Es la incapacidad de hacer cosas básicas como la asignación de memoria y la aritmética de punteros una debilidad de Java?

¿Es la incapacidad de mutar las cosas una debilidad de Haskell?

Haskell no tiene matrices eficientes. Tampoco Java cuando los tipos se vuelven complejos.

Y Rust no tiene estructuras eficientes y limpias. Esa es la forma como es.


El óxido es, más o menos, estático. No le gustan las asignaciones, y especialmente las asignaciones no frecuentes. Una vez que intentas crear un árbol o incluso una lista enlazada individualmente, te encuentras con toneladas de Cajas y Rc, que hinchan la base de código. Pero, sinceramente, no es Rust ser un pinchazo molesto.

Es Rust advirtiéndote.

Asignaciones Son. Costoso.

Java tiene asignación de losas, por lo que crear un nuevo objeto es casi gratis. Haskell tiene una VM optimizada para crear y destruir objetos a voluntad. Rust no tiene todo esto. ¡Ni siquiera tiene una VM! En su lugar, puede asignar miles de objetos en una sola llamada.

¿No hay listas doblemente vinculadas? Los vectores son más rápidos.

No TreeMap? Hashmap es más rápido.

¿No hay gráficos? Los vectores indexados son más rápidos, más fáciles de transformar e iterables.

No hay punteros hacia atrás? Simplemente use un modelo jerárquico en su lugar. Como beneficio adicional, su diseño ahora es reutilizable.

Entonces diría que la incapacidad de crear listas doblemente vinculadas en Rust no es una debilidad. Es una característica ¿Qué otro idioma te impide joder?

Yo no diría eso. En primer lugar, veo un gran beneficio en el hecho de que el compilador le dice que lo que está tratando de hacer no es seguro antes de que lo hagan sus usuarios, esa es la razón principal por la que existe la oxidación.

Si no lo sabías, aprendiste una valiosa lección. Una vez que aprenda eso, no es un gran problema. O use inseguro, evite hacerlo, use la implementación existente que proporciona abstracciones seguras o agregue alguna forma de GC. En el último caso, el óxido puede no ser el mejor lenguaje para lo que está tratando de lograr, pero no lo veo como una debilidad del lenguaje: ninguna herramienta puede sobresalir en todo.

More Interesting

¿Por qué en Java, la memoria es liberada por el algoritmo Mark y Sweep y no por ningún otro algoritmo?

¿Por qué la recursión me causa tantos problemas?

¿Cuál es la diferencia entre el algoritmo codicioso y la programación dinámica? ¿Es un programa codicioso un subconjunto de programación dinámica?

¿Cuál es la forma más eficiente de clasificar 4 TB en una sola máquina con 4 GB de RAM?

¿Qué tan bueno es quicksort y cadenas?

Cómo resolver el problema Submatrix2 en codeforces

Cómo determinar todas las condiciones, suposiciones y limitaciones para un código C # dado que calcula el valor promedio de una matriz de diferentes números

Cómo mejorar mis estructuras de datos y algoritmo desde el nivel básico

Si un algoritmo se ejecuta en tiempo O (N), pero N no excede una constante, ¿puedo decir que el algoritmo se ejecuta en tiempo constante?

¿Cuáles son los mejores libros para aprender estructuras de datos y algoritmos para un principiante con poco lenguaje de programación de C?

Java: ¿Cómo podemos verificar si un número es feliz o no mediante el uso de funciones de cadena simples y bucles sin ningún arreglo?

¿Es necesario codificar todos los datos en estructuras como pilas en C ++, o es un conocimiento práctico suficiente para aclarar entrevistas?

Sin el uso de un generador de números aleatorios, ¿cuál es el método más complicado que se te ocurre para generar una serie de números enteros?

¿Qué es Algoritmo, Diagrama de flujo y Pseudocódigo en la planificación de programas antes de escribir?

¿En cuánto tiempo puedo ser un profesional en la resolución de problemas en algoritmos y estructuras de datos si empiezo hoy sin ningún conocimiento previo?