Para aumentar la fluidez en un lenguaje de programación, es necesario leer mucho. Pero, ¿cómo puedes leer mucho si no sabes lo que significa? En este artículo, en lugar de centrarme en uno o dos conceptos, intentaré analizar todos los fragmentos de Rust que pueda y explicar qué significan las palabras clave y los símbolos que contienen. [ENG]
|
etiquetas: rust
news.itsfoss.com/pop-os-cosmic-rust/
La nueva generación de herramientas de sistema están casi todas en Rust
Ahora bien, en un SO como Redox OS serían la hostia en verso.
Juega un poco con ripgrep por decir una, o tokei y me dices si las versiones anteriores se acercan en rendimiento
Ripgrep estaría bien en sistemas con un disco no SSD, pero hoy en día con cosas para xargs y con todo el mundo con SSD's no se necesita tanto rendimiento y velocidad como antaño.
Que mi portatil Turion 2 con 2GB de RAM, Void y sin necesidad de ripgrep vuela con un SSD.
www.debugpoint.com/2021/09/solus-exit-gtk/
No sé, me ha dado la impresión que hace difícil lo sencillo.
No vas a poder (ni queriendo), tener overflows, races, errores no controlados, opciones en un enum no chequeadas, etc
Con lo cual si estás acostumbrado a ir a lo loco como puedes hacer en C, te espera una pelea con el compilador. A cambio, cuando tengas un binario, tienes la certeza de que va a hacer lo que esperas.
Tal vez sea cosa mía....
Y mi trabajo diario es picar en C++, cosa que disfruto como un enano y eso que Rust no me dice nada, la verdad. Pero si de algo puede fardar Rust es de ser un lenguaje que aprende de los fallos, de C y C++ principalmente, para hacerlo más sencillo y ameno al programador medio.
Hasta luego.
1. Invalidación de caché.
2. Nombrar cosas.
3. Errores por un paso.
Pero con 3 seguro que sí (más que nada porque una de las consecuencias típicas es un acceso ilegal más allá del final del array).
Con 1 no sé, depende de qué caché hables.
Pero si quieres saber lo que está soportado:
doc.rust-lang.org/nightly/rustc/platform-support.html
Hay ingentes de ellos, y la gente suele usar PowerMacs porque en un futuro de escasez el tener una maquina viable se hace imprescindible.
Es posible escribir drivers en Rust, y esos drivers tendrán unas garantías de corrección más allá de que el programador sea un crack.
Sí, hay raspberry pi's, pero las SD's fiables se cuentan con los dedos de una mano.
A half-hour to learn Rust
Jan 27, 2020 · 51 minute read · rust
30min < 51min
Cojo mpv + youtube-dl, con esta config en ~/.config/mpv/config:
script-opts=ytdl_hook-ytdl_path=/home/void/.local/bin/yt-dlp
sub-auto=fuzzy
ytdl-raw-options=ignore-config=,sub-format=en,write-sub=
sws-allow-zimg=no
sws-fast=yes
vd-lavc-skiploopfilter=all
video-unscaled=no
ao=alsa
vo=gpu,drm
ytdl-format=bestvideo[height<=?720][fps<=?30]+bestaudio/best
Lo uso con "mpv $YOUTUBE_URL"
Para qué más?
Cada lenguaje tiene su target, su momento y sus compromisos.
Rust tiene buena pinta, veremos a ver si realmente llega a sustituir lenguajes core como Java .net o Go, o se queda en algunos nichos en los que quedaba C/C++.
github.com/ggreer/the_silver_searcher
He visto algunas Ryzen con más memoria L3 que mi equipo de los 2000.
Y si no reculan, una alternativa ligera (sobre todo del mundo BSD) se lo va a comer con patatas.
Hace unos meses salió otro artículo por aquí de RUST, y la inquietud que has comentado, también la expliqué yo con alguna palabra más. Concuerdo 100% contigo:
www.meneame.net/c/32698949
EDIT: Ah y confirmo que (después de escribir esos comentarios del otro artículo) perdí mucha inercia con RUST. La propia frustración por la dificultad del lenguaje ayudó a ello, obviamente, y puedo garantizar que hoy sólo me acuerdo del 5% de lo que aprendí en aquel mes o dos meses en el que le di con un poco de ilusión (y que creé un programa mono y todo...)
Ahora si tuviera que actualizar o mejorar mi programa, me parece(ría) chino completo lo que yo mismo escribí. Un lenguaje "bien parido" no debe ser así.
Por otro lado, cojo cosas de Swift (de nuevo, es un ejemplo), que las escribí hace AÑOS, y las entiendo SIN DES PEI NAR ME.
Un buen lenguaje tiene que tener todo: potencia sí, pero también no descuidar la mantenibilidad/traspasabilidad del código (a ti o a otra persona), y no permitir que solo los mega wizards gurús ninjas jedis del mismo puedan ser los únicos que queden para mantener en el futuro.
No es Java, no es .NET (que son bytecompilados), no es Python, etc.
Con toda mi admiración y respeto por esos lenguajes y las cosas que han conseguido.
Python no tiene rival en ML por el momento y como lenguaje de introducción, muy capaz y potente para web y otras tareas de automatización.
Rust yo lo veo como un sucesor a C++ que introduce varias cosas bastante interesantes, pero con una curva de aprendizaje importante a diferencia de Go (que queda descartado para este puesto por su GC). Si aprendiste y apostaste por D en su momento, entiendo esos sentimientos...
A ver: Para lo que necesites C, tienes C. Usalo y ya está.
Rust no ha nacido con interés en compatibilidad con todo lo que existe ya en la actualidad, a pesar de que es muy portable (siempre que alguien se haya molestado en escribir lo que sea necesario, claro).
No te preocupes que si de repente la humanidad no puede vivir sin PowerPC 32 bits se añadirá soporte para esa arquitectura.
Ah, Rust sigue teniendo vulnerabilidades. No es la panacea.
Si los CADT (jwz dixit) se sienten más felices, allá ellos con su homeopatía.
Llevo aquí desde tiempos del TCL y Perl, cuando instalar una distro podía freirte tu monitor de tubo y el configurador de X era más cancerigeno para la usabilidad que un simple menú en ncurses.
Un saludo.
He visto a muchos vendiéndome la moto en seguridad una y otra vez. No cuela.
Incluso OpenBSD ha tenido ataques cuasitriviales por un conocido (en modo anónimo) colaborador de NetBSD haciendo un kernel panic en segundos. Pues eso.
Que no me vendan milagros.
Edito: veo que en alguna se aprovecha a poner multihilos para aprovechar los cores y eso en Rust, se hace mas facil.
#22 Me parece que para lenguajes para aprender al principio, te obliga a hacer las cosas bien y se aprende mejor cuanto antes aparezcan los errores y es lo que hace rust.
No es lo mismo buscar procesando ficheros uno a uno que muchos en paralelo.
menudos agentes de ventas cabrones y menudos idiotas los que se creen todo eso.
Muy harto del "es muy facil"
Muchas de esas opciones y más están en OpenBSD. Simplemente compila algo y mira la lista de símbolos y a donde vuelve la función main. Pista, no es donde crees.
Pero es cierto lo que dices, el programador inepto es menos inepto gracias a Rust. Y eso que en C/C++ tienes static analysis tools y sanitizers, pero ya tienes que estar toqueteando el build system y eso no mola. Pero bueno, la limpieza de C++ (de C++11 en adelante) es impecable cuando tienes mimbres. Si no vales, lamentablemente tienes que irte a Rust.
Allá cada cual pero cuando en tres años los curros que pidan cinco de experiencia en Rust sean los más pagados que no se sorprendan.
me hablan de sistemas embebidos y tal que son precisamente los que más necesitan Rust porque un bug en firmware puede no poderse arreglar nunca en sistemas en producción...
Los ingenieros en Rust precisamente son los mejor pagados a día de hoy (al menos en EEUU) al no haber competencia, de momento.
> me están respondiendo personas que simplemente no quieren cambiar nada.
Eso suena un poco presuntuoso y a la vez victimista, ¿no crees? Si yo te digo que quiero usar C++20 en lugar de Rust, ¿en qué posición me encuentro? ¿Inmovilista o idealista?
> me hablan de sistemas embebidos y tal que son precisamente los que más necesitan Rust porque un bug en firmware puede no poderse arreglar nunca en sistemas en producción...
Me parece que estás dando al lenguaje de programación más importancia de la que realmente tiene, y si es cierto que llevas varios años de programador esto me chirría un poco. Un lenguaje de programación no te crea una arquitectura, que es lo que realmente ahorra tiempo y dinero de un mantenimiento de cualquier tipo de proyecto, no solo empotrado.
¿Que el lenguaje te guía/ayuda/orienta con detalles de programación de sistemas? Perfecto; pero eso ya lo tienes en bibliotecas de C y C++. Si realmente lo que quieres es trabajar bajo raíles, Rust probablemente sea tu sitio. Si necesitas más control sobre acceso a memoria, probablemente las ventajas de Rust no lo sean tanto en este caso.
A mí particularmente el coste de aprender Rust teniendo C++23 a la vuelta de la esquina no me merece la pena. Pero no me merece la pena porque llevo 10 años aprendiendo C++, ya que ha ido evolucionando con el tiempo; y tiene pinta de que seguirá evolucionando. Si vienes de C la cosa cambia, ese lenguaje del demonio siempre fue y será horrible.
Hay muchos problemas con la gente de C y C++. El principal es que los de la vieja escuela prefieren escribir todo "a mano", para tener el control de lo que se ejecuta (el típico antipatrón Not Invented Here, vamos). Y cuanto más código escribes, más bugs introduces. Rust te ahorra unos cuantos tipos en tiempo de compilación, lo cual es muy de agradecer pero también dice bastante de la calidad del programador que se aprovecha de dichos fallos, dicho sea de paso. Además, al contrario que C, Rust es muy expresivo (y en ese aspecto, se parece bastante a C++).
A lo que voy es: como exprogramador en C, es fácil caer en la tentación de Rust y creer en la segunda venida. Pero como consejo, deja vivir a los que vemos Rust con escepticismo por culpa de ese tipo de capa de mesiandad que lo rodea
Y un programador en C que cree que él no introduce fallos porque tiene mucha experiencia no tiene suficiente experiencia por definición
va a abarcarabarca muchísimo más que C/C++.De hecho, incluso Google ya le ha puesto ojitos y lo integra en Android:
security.googleblog.com/2021/04/rust-in-android-platform.html?m=1
es mejor que 100% unsafe esta claro, pero a nivel drivers me parece que la ventaja de seguridad de rust se acorta.
> pues me estás diciendo que no entiendes lo que aporta Rust.
Desde el punto de C++ no, desde el punto de vista de C sí. A ver si te enteras tú también con quién estás hablando
> Y un programador en C que cree que él no introduce fallos porque tiene mucha experiencia no tiene suficiente experiencia por definición
Desde que cambiaste a Rust, ¿todo tu código está libre de fallos?
Pero es que discutir sobre lenguajes con quien no ha probado el objeto de la discusión no lleva a nada. Si quieres dale una oportunidad muy bien y si no también.
Es entendible, tras pasarte decenas de años aprendiendo todos los recovecos y campos de minas que tienen, y que se te valore laboralmente por ello, es jodido que venga algo que te puede quitar del trono.
Pero que nadie se preocupe, el código que ya está escrito es improbable que desaparezca. No se va a quedar nadie sin trabajo de mantenimiento.
Eso sí, para todo lo nuevo, ninguna empresa va a querer escribir nada en C / C++ a la larga. Más que nada porque Rust ahorra muchos quebraderos de cabeza en mantenimiento.
Veo que la gente aquí no tiene ni puta idea de lo que habla sobre Rust, como suele ser. La mayor ventaja de Rust no es la seguridad. Esto es porque no se publicita así. Los usuarios del lenguaje lo que destacan son otras cosas:
- Gestor de librerías incorporado, que funciona rápido y bien y ahorra todos los infiernos absurdos que implica utilizar librerías en C/C++, además de ahorrar la mierda de los sistemas de build.
- Trasladar la inmensa mayoría de errores durante la ejecución a errores durante la compilación. Si alguien no ve en esto algo extremadamente ventajoso, que se dedique al sado.
¿Ese puntero que intentas acceder habiéndolo liberado por descuido? Rust no te habría dejado.
¿Ese null que se te descuidó? Rust no te habría dejado.
¿Ese cuelgue que pasa rara vez cuando ejecutas un programa durante 72h horas y es imposible de localizar después de días de agonía de depuración y que ni los gurús del equipo fueron capaces de encontrar en años? Rust te lo habría pillado al compilar a la primera, te habría dicho dónde y qué tendrías que hacer probablemente para corregirlo.
Rust tiene mucha más información que C o C++ sobre el código que está compilando, con lo que puede hacer demostraciones y razonamientos mucho más complejos y puede evitar muchos más problemas, además de hacer más y mejores optimizaciones. En Cy C++ en muchos casos es básicamente imposible, y cambiarlo requeriría destrozar el lenguaje.
- Estar en el siglo XXI de una puta vez en cuanto a utilización de nucleos y hacer mucho más sencillo y sin errores su uso, cosa que en C / C++ es como poco dudoso. Estamos hablando de que Rust no compila si hay race conditions, cosa que hasta los muy expertos hacen mal porque es extremadamente difícil.
Como muestra de este punto: los autores de Chrome tuvieron que desistir de hacer un motor CSS paralelo (que aprovechase los… » ver todo el comentario
El título completo debería ser: A half-hour to learn Rust (in just two months!)
> Pero es que discutir sobre lenguajes con quien no ha probado el objeto de la discusión no lleva a nada
¿Por qué? Nunca he programado en php y sé que es una auténtica mierda, basado en los artículos que he leído aquí y allá.
Pero me parece bien también, vista tu actitud no deseo que bajes desde tu torre de marfil a discutir con meros ignorantes como yo. Buena suerte y enhorabuena por elegir el mejor de los lenguajes disponibles
Eso en Windows.
>¿Ese puntero que intentas acceder habiéndolo liberado por descuido? Rust no te habría dejado.
¿Ese null que se te descuidó? Rust no te habría dejado.
¿Ese cuelgue que pasa rara vez cuando ejecutas un programa durante 72h horas y es imposible de localizar después de días de agonía de depuración y que ni los gurús del equipo fueron capaces de encontrar en años? Rust te lo habría pillado al compilar a la primera, te habría dicho dónde y qué tendrías que hacer probablemente para corregirlo.
Eso lo puede implementar GCC y Clang sin problema.
>- Mensajes de error que realmente ayudan a entender los problemas. Salvo muy pocos casos, la inmensa mayoría de mensajes de error al compilar, indican la localización exacta (a nivel caracter), el motivo del error y da incluso sugerencias para arreglarlo. Clippy (el linter) además tiene un montón de avisos extra.
Clang tambien y eso hizo mejorar bastante a GCC.
Tu mucho rajar contra C y GCC pero te has quedado en 2003.