Los administradores de TransicionEstructural no se responsabilizan de las opiniones vertidas por los usuarios del foro. Cada usuario asume la responsabilidad de los comentarios publicados.
0 Usuarios y 5 Visitantes están viendo este tema.
A mí me gusta mucho la filosofía de diseño que sigue Rust por esto mismo: el compilador te obliga a hacer las cosas bien, lo cual actúa como filtro en muchos casos.
Cita de: puede ser en Junio 07, 2023, 23:43:55 pmCita de: pollo en Junio 07, 2023, 21:18:28 pmCita de: sudden and sharp en Junio 07, 2023, 19:26:20 pmPero el H2 proviene de energía renovable... (que había que almacenar para no perderla.) Y además, sólo es el primero.Espero respuestas más elaboradas que una línea con lo primero que hayas oído por ahí.El H2 hoy por hoy proviene del refinado del petróleo porque no hay actualmente técnicas de producción industrial que escalen de forma eficiente, con lo que la supuesta ventaja inicial ya no existe.Además de eso, siguen sin resolverse toda la larga lista de problemas que tiene su almacenamiento y transporte. Entre otros muchos inconvenientes, el H2 tiende a corroerlo todo por su alta tendencia a reaccionar con básicamente todo. Mientras no se solucionen esos problemas a escala industrial (y se lleva años intentando), el H2 no vale.Se ha hablado largo y tendido ya en este mismo hilo. Lo mínimo es saber lo que ya se ha hablado.https://hidrogeno-verde.es/primera-instalacion-de-produccion-comercial-de-metanol-verde/Maersk apuesta por convertir el hidrógeno (verde) en metanol (verde). Si sale bien seguirán en Galicia y Andalucía, como se habló.Esto no tienen ninguna posibilidad de ser rentable. Ya estamos hablando de como mínimo tres procesos intermediarios de conversión de la energía original (petroleo -> hidrógeno -> metanol -> consumo) todos con unas pérdidas considerables por el camino. Saldrá una eficiencia parecida al coche de combustión (20-30%) pero con un proceso mucho más caro.
Cita de: pollo en Junio 07, 2023, 21:18:28 pmCita de: sudden and sharp en Junio 07, 2023, 19:26:20 pmPero el H2 proviene de energía renovable... (que había que almacenar para no perderla.) Y además, sólo es el primero.Espero respuestas más elaboradas que una línea con lo primero que hayas oído por ahí.El H2 hoy por hoy proviene del refinado del petróleo porque no hay actualmente técnicas de producción industrial que escalen de forma eficiente, con lo que la supuesta ventaja inicial ya no existe.Además de eso, siguen sin resolverse toda la larga lista de problemas que tiene su almacenamiento y transporte. Entre otros muchos inconvenientes, el H2 tiende a corroerlo todo por su alta tendencia a reaccionar con básicamente todo. Mientras no se solucionen esos problemas a escala industrial (y se lleva años intentando), el H2 no vale.Se ha hablado largo y tendido ya en este mismo hilo. Lo mínimo es saber lo que ya se ha hablado.https://hidrogeno-verde.es/primera-instalacion-de-produccion-comercial-de-metanol-verde/Maersk apuesta por convertir el hidrógeno (verde) en metanol (verde). Si sale bien seguirán en Galicia y Andalucía, como se habló.
Cita de: sudden and sharp en Junio 07, 2023, 19:26:20 pmPero el H2 proviene de energía renovable... (que había que almacenar para no perderla.) Y además, sólo es el primero.Espero respuestas más elaboradas que una línea con lo primero que hayas oído por ahí.El H2 hoy por hoy proviene del refinado del petróleo porque no hay actualmente técnicas de producción industrial que escalen de forma eficiente, con lo que la supuesta ventaja inicial ya no existe.Además de eso, siguen sin resolverse toda la larga lista de problemas que tiene su almacenamiento y transporte. Entre otros muchos inconvenientes, el H2 tiende a corroerlo todo por su alta tendencia a reaccionar con básicamente todo. Mientras no se solucionen esos problemas a escala industrial (y se lleva años intentando), el H2 no vale.Se ha hablado largo y tendido ya en este mismo hilo. Lo mínimo es saber lo que ya se ha hablado.
Pero el H2 proviene de energía renovable... (que había que almacenar para no perderla.) Y además, sólo es el primero.
Cita de: pollo en Junio 08, 2023, 09:44:46 amA mí me gusta mucho la filosofía de diseño que sigue Rust por esto mismo: el compilador te obliga a hacer las cosas bien, lo cual actúa como filtro en muchos casos.También por eso C++ es el rey de los lenguajes en su segmento de mercado, y (muy) difícilmente será desplazado por otro. Al menos no antes de mucho tiempo.En C++ no hay más tu tía, no te queda otra que ser un programador prácticamente de primera para que no aparezcan luego fallos inexplicables.Java en ese sentido es horroroso. Es el preferido de las cárnicas porque... con una "formación" acelerada ya se puede empezar a picar. Aunque el resultado funcione en el mejor de los casos a pedos. Kotlin ha corregido una parte de esa porquería eliminando bastante boilerplate.Y sobre Kotlin, batallita que conozco de primera mano de cierta empresa de móviles sueca. Su nombre empieza por Eric . Un día el jefe ordenó deshacer todas las migraciones a Kotlin y volver a Java "porque los juniors no pueden con este lenguaje tan complicado". Ni un mes después habían caído unas cuantas dimisiones.Lo habitual es invertir lo mínimo, y reaccionar sólo después de haber probado a culpar a todos los machacas y haberse comido dimisiones en masa.
Las eléctricas presentan al hidrógeno verde se presenta como una alternativa "verde". Según Iberdrola, esta tecnología se basa en la generación de hidrógeno —un combustible universal, ligero y muy reactivo— a través de un proceso químico conocido como electrólisis. Este método utiliza la corriente eléctrica para separar el hidrógeno del oxígeno que hay en el agua, por lo que, si esa electricidad se obtiene de fuentes renovables, produciremos energía sin emitir dióxido de carbono a la atmósfera. Esta manera de obtener hidrógeno verde, como apunta la AIE, ahorraría los 830 millones de toneladas anuales de CO2 que se originan cuando este gas se produce mediante combustibles fósiles. Asimismo, reemplazar todo el hidrógeno gris mundial significaría 3.000 TWh renovables adicionales al año —similar a la demanda eléctrica actual en Europa—.
Extremadura va a ser clave para producir y mover el hidrógeno verde en España. Una hoja de ruta que arranca con la primera planta de hidrógeno verde que se va a instalar cerca de Mérida, en Carmonita, y que estará conectada al corredor que ha diseñado la Unión Europea, el Corredor del hidrógeno H2MED. Está previsto que la primera fase que se construya en nuestro país sea la parte extremeña. 420 kilómetros que cruzarán de norte a sur la región. Se prevé su construcción en 2025 y 2026 para que comience a funcionar en 2027.
Cita de: Benzino Napaloni en Junio 08, 2023, 09:39:58 amCita de: pollo en Junio 08, 2023, 09:33:01 amBueno, depende de a qué juegos nos refiramos. Para los triple A, la inmensa mayoría. Pero todavía queda bastante gente que intenta hacer las cosas bien, específicamente en los desarrolladores independientes o hobbistas que pueden hacer las cosas a su manera.Personalmente, creo (por lo que he podido ver) que estas ineficiencias, a veces muy graves, vienen de una mezcla entre pereza, codicia, moda e ignorancia.Pereza, porque gente que sabe hacer las cosas bien tira con lo mínimo porque vende igual (y total, el hardware está "sobrado"). La realidad es que no, que es muy fácil hacer que el hardware se sature, muchas veces por efectos colaterales. Por ejemplo los arrays de estructuras propiciadas por la programación orientada a objetos son mucho más lentos en memoria que las estructuras de arrays (orientación a datos), por cómo funcionan las CPU y la memoria cache.Codicia, porque a las compañías que ponen la pasta les importa cero hacer un truño con tal de vender.Moda, porque no se atiende a criterios técnicos sino que se siguen las "buzzword" de moda por parte de la caterva directiva, que impone tecnologías sin ton ni son porque es "lo que todo el mundo está usando". Esto es muy muy visible en el mundo web, donde auténticas montañas de mierda de interfaces de usuario en Javascript reimplementan funcionalidad que ya existe con muhca más calidad, eficiencia, accesibilidad y velocidad en el propio navegador. Esto es muy típico hoy día y sólo puede haber sido perpetrado por idiotas o ignorantes.Hoy día hay oleadas de jóvenes que no saben hacer una web sin javascript (ni siquiera saben a nivel abstracto lo que hay por debajo), lo cual no es triste, es sobre todo muy preocupante sobre la formación que se recibe.Ignorancia: la causa base de las tres anteriores.Si has picado Java, te sonará algo que vi en mi primer trabajo. Dos try kilométricos anidados . Pasándose totalmente por el forro el hecho de que una excepción es muy barata de lanzar, pero carísima de capturar.Otra que viví fue "solucionar" un problema de que el ejecutable era demasiado grande. ¿Solución? Marcar como inmutables toneladas de arrays hardcodeados que se usaban como fuente primaria de configuración.Vamos, que como bien sabes no se trata tanto de hacer "virguerías" con el código sino de tener sentido crítico y agallas para defenderlo.Una de las consecuencias finales es que los jefecillos que ya llevan años en esto han aprendido en la práctica que con esta forma de "funcionar" los proyectos mueren cada ciertos años por la absoluta imposibilidad de seguir manteniéndolos. No digamos ya hacer evolutivos. Con lo que sale a cuenta saltar a otro proyecto empezado desde cero.A mí me gusta mucho la filosofía de diseño que sigue Rust por esto mismo: el compilador te obliga a hacer las cosas bien, lo cual actúa como filtro en muchos casos.
Cita de: pollo en Junio 08, 2023, 09:33:01 amBueno, depende de a qué juegos nos refiramos. Para los triple A, la inmensa mayoría. Pero todavía queda bastante gente que intenta hacer las cosas bien, específicamente en los desarrolladores independientes o hobbistas que pueden hacer las cosas a su manera.Personalmente, creo (por lo que he podido ver) que estas ineficiencias, a veces muy graves, vienen de una mezcla entre pereza, codicia, moda e ignorancia.Pereza, porque gente que sabe hacer las cosas bien tira con lo mínimo porque vende igual (y total, el hardware está "sobrado"). La realidad es que no, que es muy fácil hacer que el hardware se sature, muchas veces por efectos colaterales. Por ejemplo los arrays de estructuras propiciadas por la programación orientada a objetos son mucho más lentos en memoria que las estructuras de arrays (orientación a datos), por cómo funcionan las CPU y la memoria cache.Codicia, porque a las compañías que ponen la pasta les importa cero hacer un truño con tal de vender.Moda, porque no se atiende a criterios técnicos sino que se siguen las "buzzword" de moda por parte de la caterva directiva, que impone tecnologías sin ton ni son porque es "lo que todo el mundo está usando". Esto es muy muy visible en el mundo web, donde auténticas montañas de mierda de interfaces de usuario en Javascript reimplementan funcionalidad que ya existe con muhca más calidad, eficiencia, accesibilidad y velocidad en el propio navegador. Esto es muy típico hoy día y sólo puede haber sido perpetrado por idiotas o ignorantes.Hoy día hay oleadas de jóvenes que no saben hacer una web sin javascript (ni siquiera saben a nivel abstracto lo que hay por debajo), lo cual no es triste, es sobre todo muy preocupante sobre la formación que se recibe.Ignorancia: la causa base de las tres anteriores.Si has picado Java, te sonará algo que vi en mi primer trabajo. Dos try kilométricos anidados . Pasándose totalmente por el forro el hecho de que una excepción es muy barata de lanzar, pero carísima de capturar.Otra que viví fue "solucionar" un problema de que el ejecutable era demasiado grande. ¿Solución? Marcar como inmutables toneladas de arrays hardcodeados que se usaban como fuente primaria de configuración.Vamos, que como bien sabes no se trata tanto de hacer "virguerías" con el código sino de tener sentido crítico y agallas para defenderlo.Una de las consecuencias finales es que los jefecillos que ya llevan años en esto han aprendido en la práctica que con esta forma de "funcionar" los proyectos mueren cada ciertos años por la absoluta imposibilidad de seguir manteniéndolos. No digamos ya hacer evolutivos. Con lo que sale a cuenta saltar a otro proyecto empezado desde cero.
Bueno, depende de a qué juegos nos refiramos. Para los triple A, la inmensa mayoría. Pero todavía queda bastante gente que intenta hacer las cosas bien, específicamente en los desarrolladores independientes o hobbistas que pueden hacer las cosas a su manera.Personalmente, creo (por lo que he podido ver) que estas ineficiencias, a veces muy graves, vienen de una mezcla entre pereza, codicia, moda e ignorancia.Pereza, porque gente que sabe hacer las cosas bien tira con lo mínimo porque vende igual (y total, el hardware está "sobrado"). La realidad es que no, que es muy fácil hacer que el hardware se sature, muchas veces por efectos colaterales. Por ejemplo los arrays de estructuras propiciadas por la programación orientada a objetos son mucho más lentos en memoria que las estructuras de arrays (orientación a datos), por cómo funcionan las CPU y la memoria cache.Codicia, porque a las compañías que ponen la pasta les importa cero hacer un truño con tal de vender.Moda, porque no se atiende a criterios técnicos sino que se siguen las "buzzword" de moda por parte de la caterva directiva, que impone tecnologías sin ton ni son porque es "lo que todo el mundo está usando". Esto es muy muy visible en el mundo web, donde auténticas montañas de mierda de interfaces de usuario en Javascript reimplementan funcionalidad que ya existe con muhca más calidad, eficiencia, accesibilidad y velocidad en el propio navegador. Esto es muy típico hoy día y sólo puede haber sido perpetrado por idiotas o ignorantes.Hoy día hay oleadas de jóvenes que no saben hacer una web sin javascript (ni siquiera saben a nivel abstracto lo que hay por debajo), lo cual no es triste, es sobre todo muy preocupante sobre la formación que se recibe.Ignorancia: la causa base de las tres anteriores.
Cita de: pollo en Junio 08, 2023, 09:42:16 amCita de: puede ser en Junio 07, 2023, 23:43:55 pmCita de: pollo en Junio 07, 2023, 21:18:28 pmCita de: sudden and sharp en Junio 07, 2023, 19:26:20 pmPero el H2 proviene de energía renovable... (que había que almacenar para no perderla.) Y además, sólo es el primero.Espero respuestas más elaboradas que una línea con lo primero que hayas oído por ahí.El H2 hoy por hoy proviene del refinado del petróleo porque no hay actualmente técnicas de producción industrial que escalen de forma eficiente, con lo que la supuesta ventaja inicial ya no existe.Además de eso, siguen sin resolverse toda la larga lista de problemas que tiene su almacenamiento y transporte. Entre otros muchos inconvenientes, el H2 tiende a corroerlo todo por su alta tendencia a reaccionar con básicamente todo. Mientras no se solucionen esos problemas a escala industrial (y se lleva años intentando), el H2 no vale.Se ha hablado largo y tendido ya en este mismo hilo. Lo mínimo es saber lo que ya se ha hablado.https://hidrogeno-verde.es/primera-instalacion-de-produccion-comercial-de-metanol-verde/Maersk apuesta por convertir el hidrógeno (verde) en metanol (verde). Si sale bien seguirán en Galicia y Andalucía, como se habló.Esto no tienen ninguna posibilidad de ser rentable. Ya estamos hablando de como mínimo tres procesos intermediarios de conversión de la energía original (petroleo -> hidrógeno -> metanol -> consumo) todos con unas pérdidas considerables por el camino. Saldrá una eficiencia parecida al coche de combustión (20-30%) pero con un proceso mucho más caro.Bueno, ya se verá...CitarLas eléctricas presentan al hidrógeno verde se presenta como una alternativa "verde". Según Iberdrola, esta tecnología se basa en la generación de hidrógeno —un combustible universal, ligero y muy reactivo— a través de un proceso químico conocido como electrólisis. Este método utiliza la corriente eléctrica para separar el hidrógeno del oxígeno que hay en el agua, por lo que, si esa electricidad se obtiene de fuentes renovables, produciremos energía sin emitir dióxido de carbono a la atmósfera. Esta manera de obtener hidrógeno verde, como apunta la AIE, ahorraría los 830 millones de toneladas anuales de CO2 que se originan cuando este gas se produce mediante combustibles fósiles. Asimismo, reemplazar todo el hidrógeno gris mundial significaría 3.000 TWh renovables adicionales al año —similar a la demanda eléctrica actual en Europa—.¿Qué es el hidrógeno verde con el que Extremadura pretende generar empleo?https://www.elperiodicoextremadura.com/extremadura/2023/02/09/que-es-hidrogeno-verde-extremadura-81634218.htmlExtremadura producirá el 20% del hidrógeno verde del paíshttps://www.canalextremadura.es/noticias/extremadura/extremadura-producira-el-20-del-hidrogeno-verde-del-paisLa región pretende liderar el desarrollo de esta energía. En la hoja de ruta, la primera planta de hidrógeno verde que se va a instalar en Carmonita y que estará conectada al corredor que ha diseñado la Unión EuropeaCitarExtremadura va a ser clave para producir y mover el hidrógeno verde en España. Una hoja de ruta que arranca con la primera planta de hidrógeno verde que se va a instalar cerca de Mérida, en Carmonita, y que estará conectada al corredor que ha diseñado la Unión Europea, el Corredor del hidrógeno H2MED. Está previsto que la primera fase que se construya en nuestro país sea la parte extremeña. 420 kilómetros que cruzarán de norte a sur la región. Se prevé su construcción en 2025 y 2026 para que comience a funcionar en 2027.La eolica, o la solar... también fueron un proyecto en su día.
Cita de: pollo en Junio 08, 2023, 09:44:46 amCita de: Benzino Napaloni en Junio 08, 2023, 09:39:58 amCita de: pollo en Junio 08, 2023, 09:33:01 amBueno, depende de a qué juegos nos refiramos. Para los triple A, la inmensa mayoría. Pero todavía queda bastante gente que intenta hacer las cosas bien, específicamente en los desarrolladores independientes o hobbistas que pueden hacer las cosas a su manera.Personalmente, creo (por lo que he podido ver) que estas ineficiencias, a veces muy graves, vienen de una mezcla entre pereza, codicia, moda e ignorancia.Pereza, porque gente que sabe hacer las cosas bien tira con lo mínimo porque vende igual (y total, el hardware está "sobrado"). La realidad es que no, que es muy fácil hacer que el hardware se sature, muchas veces por efectos colaterales. Por ejemplo los arrays de estructuras propiciadas por la programación orientada a objetos son mucho más lentos en memoria que las estructuras de arrays (orientación a datos), por cómo funcionan las CPU y la memoria cache.Codicia, porque a las compañías que ponen la pasta les importa cero hacer un truño con tal de vender.Moda, porque no se atiende a criterios técnicos sino que se siguen las "buzzword" de moda por parte de la caterva directiva, que impone tecnologías sin ton ni son porque es "lo que todo el mundo está usando". Esto es muy muy visible en el mundo web, donde auténticas montañas de mierda de interfaces de usuario en Javascript reimplementan funcionalidad que ya existe con muhca más calidad, eficiencia, accesibilidad y velocidad en el propio navegador. Esto es muy típico hoy día y sólo puede haber sido perpetrado por idiotas o ignorantes.Hoy día hay oleadas de jóvenes que no saben hacer una web sin javascript (ni siquiera saben a nivel abstracto lo que hay por debajo), lo cual no es triste, es sobre todo muy preocupante sobre la formación que se recibe.Ignorancia: la causa base de las tres anteriores.Si has picado Java, te sonará algo que vi en mi primer trabajo. Dos try kilométricos anidados . Pasándose totalmente por el forro el hecho de que una excepción es muy barata de lanzar, pero carísima de capturar.Otra que viví fue "solucionar" un problema de que el ejecutable era demasiado grande. ¿Solución? Marcar como inmutables toneladas de arrays hardcodeados que se usaban como fuente primaria de configuración.Vamos, que como bien sabes no se trata tanto de hacer "virguerías" con el código sino de tener sentido crítico y agallas para defenderlo.Una de las consecuencias finales es que los jefecillos que ya llevan años en esto han aprendido en la práctica que con esta forma de "funcionar" los proyectos mueren cada ciertos años por la absoluta imposibilidad de seguir manteniéndolos. No digamos ya hacer evolutivos. Con lo que sale a cuenta saltar a otro proyecto empezado desde cero.A mí me gusta mucho la filosofía de diseño que sigue Rust por esto mismo: el compilador te obliga a hacer las cosas bien, lo cual actúa como filtro en muchos casos.Yo me quedo con C. Llámame anacrónico.
[...] Pero claro, el ego se ve resentido admitiendo esto, y no hay nada mejor que lo que ya conozco.
El técnico siempre tiende a la tecnología (o a lo nuevo, modernísimo, o a lo viejo, conocidísimo) pero muy pocas veces tiene visión comercial.A mí que un sistema esté desarrollado en el demonizado Java (que os guste o no, funciona, y da menos quebraderos de cabeza que otras tecnologías más modernas y molonas) me parece bien mientras cumpla lo que tiene que hacer. No digo nada si nos metemos en empresas con entornos mucho más restrigidos, donde no dejan instalar nada que no lleve años en mercado por miedo a vulnerabilidades no descubiertas.
Que sepáis que teniendo razón (que la tenéis), en el mundo de los resultados las cosas se ven de otra manera.El técnico siempre tiende a la tecnología (o a lo nuevo, modernísimo, o a lo viejo, conocidísimo) pero muy pocas veces tiene visión comercial.A mí que un sistema esté desarrollado en el demonizado Java (que os guste o no, funciona, y da menos quebraderos de cabeza que otras tecnologías más modernas y molonas) me parece bien mientras cumpla lo que tiene que hacer. No digo nada si nos metemos en empresas con entornos mucho más restrigidos, donde no dejan instalar nada que no lleve años en mercado por miedo a vulnerabilidades no descubiertas.No me sirve de nada tener un Ferrari nuevo en el garaje si se pasa la mitad del tiempo en el taller. Si lo que necesito es ir de A a B todos los días, un viejo Toyota (Java) que no rompe motor me sirve más que de sobra. Si encima me lo puede mantener un desarrollador medio junior, pues miel sobre hojuelas.Vosotros mejor que nadie sabéis que ahí fuera no son todo Metas y Googles, lo gordo de la informática son los millones de sistemas que hacen que la rueda siga girando (cuántos SAP de más de 20 años hay todavía por el mundo llevando las fábricas de muchas empresas del Fortune 500).Que las nuevas tecnologías están muy bien, y se puden hacer cosas chulísimas y muy mantenibles y con pocos bugs.. pero es comparar una escudería de F1 con una marca de coches generalista. Mercedes puede hacer un monoplaza que gane carreras o una Viano para el reparto. Decidme cuál de los dos vehículos "mueve el mundo" y pone el dinero en el bolsillo a fin de mes. Con la infomática, lo mismo.Por cierto, como anécdota, la empresa de un amigo buscaba un desarrollador C para irse a Australia ganando 300,000 dólares australianos al año (casi 190.000 euros) y no fueron capaces de encontrar uno competente. Esto con Franco Java no pasaba.
What is good about Rust• The main selling feature: Safety• Without performance overheads• Rust mostly prevents several big, bad classes of bugs• "Spatial" memory errors: out-of-bounds / wild / null pointers• "Temporal" memory errors: use-before-init, use-after-free• Multiple threads racing on same data• Pretty much all UBMany minor fixes that prevent ubiquitous C++ bugs:• Can't write dangling-else, switch-case-fallthrough, or goto• No silent int-float, signed-unsigned coercions• Booleans, enums, integers, pointers not mixable• Can't typo == as =• Strings guaranteed UTF-8, no random access• Culture of partial functions that return precise errors It also has great, very standardized tooling• Configuration, building, testing• Packages, dependencies• Profiling, fuzzing• Documentation, code-formatting• A very good editor / IDE backend• The compiler has fantastic diagnostics• With standard, fine-grained control over checks• The IDE often gives you a push-button fix• You can opt-in to zillions of extras• Everything is very documentedMain theme in design: better-behaved pointers• Steep 60% part of Rust learning curve is internalizing pointer rules• May seem arbitrary, tyrannical, cruel• Really just formalize "safe version of C++ idioms"• But no wiggle room: won't compile if violated• Once reflexive, fairly smooth sailing• Other 40% is much less steep, just "work"C++ pointer-ish types have many ok-ish ingredients• Owners: unique_ptr<T> and shared_ptr<T>• Non-owning, transient refs: & and const&• Owner/transient split has advantages• Avoids most book-keeping, no tracing GC• Faster, more deterministic behaviourBut C++ pointer-ish types let you do terrible things!• const& can point to a mutable value, may change• I guess it's cool that it stops you from mutating?• & and const& can point to already-freed memory• Or something half-initialized, or half-destructed• Owner-pointers can be nullptr• Threads can race on all of themRust prohibits all of this nonsense• Eg. Box<T> is like unique_ptr<T> except• Has no null value, always points to a T• Is immutable if there's any live immutable &-reference• Is inaccessible if there's any live mutable &mut-reference• Can only move between variables, and not while &-referenced• Thus two threads cannot race on it (more on this later)Two main (weird) ingredients to the rules• Move semantics• Borrow checking• These two ingredients reinforce each other remarkably well• Commonly called Rust's "ownership system"Borrow checkingThis is maybe the strangest partIt's "borrow checking" time!• Everything in Rust is default-immutable• Mutability is opt-in with mut keyword, unlike C++ immutability opt-in const• This is true about references too:• C++ immutable const& is written as just plain & in Rust• C++ mutable & is written as &mut in Rust• Except, of course, that the rules are also somewhat different in RustBorrow checking enforces two main sets of rules• "Referent outlives reference" / "lifetimes"• To avoid dangling/wild pointers• "Shared xor mutable" / "static reader-writer locking"• To avoid invalidating one pointer by writing through another• This is all static, compile-time checking, not runtime mechanismsFirst set of rules: referent outlives reference• Prevents borrows pointing at garbage memory• You can only borrow something (form a & or &mut reference) if:• The borrowed thing exists before the borrow starts• The borrowed thing exists after the borrow is doneThis is tracked through extra (static, compile-time) variables called "lifetimes"• Often inferred / invisible, but sometimes written explicitly• Written as a name with a leading single quote, after the ampersand• Like &'a or &'some_lifetime mut• It can help to give them informative names• Unfortunately lots of times they get named 'a, 'b, 'cThis is weird and does not read like C++. It's new.• Here's an example:struct Foo<'a> { x: &'a i32, y: &'a mut i64}• Nobody likes how this reads and it never gets easier on the eyesSecond set of rules: shared xor mutable• Means that any memory-write will not invalidate some other pointer• Most important "at a distance" (other functions, other threads)• Can even save you "up close" (same function and thread)• Eg. borrow an enum (variant type) in case X, then set it to case Y, oopsJust getting program past borrow checker can be hard• Surprising how many aliases were hiding in C++• Eg. how every non-const method call can change members via this• If you felt OOP was a little error-prone, now you know why• Helps to only borrow specific fields, not self as a whole• Helps to restrict to arg-passing and returns, not store & refs in structs
Cita de: el malo en Junio 08, 2023, 18:57:06 pmQue sepáis que teniendo razón (que la tenéis), en el mundo de los resultados las cosas se ven de otra manera.El técnico siempre tiende a la tecnología (o a lo nuevo, modernísimo, o a lo viejo, conocidísimo) pero muy pocas veces tiene visión comercial.A mí que un sistema esté desarrollado en el demonizado Java (que os guste o no, funciona, y da menos quebraderos de cabeza que otras tecnologías más modernas y molonas) me parece bien mientras cumpla lo que tiene que hacer. No digo nada si nos metemos en empresas con entornos mucho más restrigidos, donde no dejan instalar nada que no lleve años en mercado por miedo a vulnerabilidades no descubiertas.No me sirve de nada tener un Ferrari nuevo en el garaje si se pasa la mitad del tiempo en el taller. Si lo que necesito es ir de A a B todos los días, un viejo Toyota (Java) que no rompe motor me sirve más que de sobra. Si encima me lo puede mantener un desarrollador medio junior, pues miel sobre hojuelas.Vosotros mejor que nadie sabéis que ahí fuera no son todo Metas y Googles, lo gordo de la informática son los millones de sistemas que hacen que la rueda siga girando (cuántos SAP de más de 20 años hay todavía por el mundo llevando las fábricas de muchas empresas del Fortune 500).Que las nuevas tecnologías están muy bien, y se puden hacer cosas chulísimas y muy mantenibles y con pocos bugs.. pero es comparar una escudería de F1 con una marca de coches generalista. Mercedes puede hacer un monoplaza que gane carreras o una Viano para el reparto. Decidme cuál de los dos vehículos "mueve el mundo" y pone el dinero en el bolsillo a fin de mes. Con la infomática, lo mismo.Por cierto, como anécdota, la empresa de un amigo buscaba un desarrollador C para irse a Australia ganando 300,000 dólares australianos al año (casi 190.000 euros) y no fueron capaces de encontrar uno competente. Esto con Franco Java no pasaba. La comparación es absurda. La metáfora no se sostiene. La referencia a las grandes tecnológicas es sólo para indicar que en sitios donde tienen a gente muy competente se dan cuenta de los problemas reales de crear todo tipo de software de todas las escalas (en una empresa hay mucho más software internamente que el que se ofrece al público).Rust no es un Ferrari, ni está diseñado para crear sólo Ferraris. Es un lenguaje open source creado por una gran comunidad de usuarios avanzados que de una puta vez corrige errores garrafales, inexplicables y absolutamente injustificables que se llevan arrastrando en los lenguajes de bajo nivel más populares (C pero sobre todo C++, que sería más cercano a su nicho), y lo hace además de forma que abarata costes, elimina clases enteras de bugs, hace más fácil la vida al que programa (por un montón de cosas demasiado extensas para mencionarlas aquí) y hace más sencillo razonar localmente sobre el código, lo cual es todo un win-win de unas proporciones muy fáciles de subestimar.Cualquiera puede usarlo para proyectos grandes y pequeños. No tiene ni puto sentido decir que sólo aporta en grandes empresas. Los proyectos de empresas pequeñas pueden ser my complejos y grandes, y aún así no implica que no tenga sentido para proyectos pequeños o programación por hobby (especialmente si se defiende usar C o C++, para los que se podría argumentar exactamente lo mismo).La filosofía es ser absolutamente explícito en todos los efectos, razonar de forma local en el código, y capturar todos los errores posibles durante la compilación. Esto es simplificando mucho. Es posible incluso hacer irrepresentables determinados errores.No usarlo en proyectos que necesitarán mantenimiento es absurdo. No es que te importe que esté en Java porque haga lo que tenga que hacer, es que hoy por hoy sólo con los gastos que puede ahorrar es del género tonto ignorarlo si es una buena opción.Los proyectos de software generan mucho más gasto y trabajo en la fase de mantenimiento que en la de creación. Haces una aplicación en Java (o en otras cosas), y ya de mano se te puede disparar el coste de servidores, puedes tener problemas de concurrencia (se te cuelga, te salen excepciones, etc.), el servidor puede tener picos de RAM, etc. Pero el problema real viene cuando hay que alterar el código para ampliar funcionalidad, corregir errores y otras tantas cosas que salen sobre la marcha.Todo eso es pasta, tiempo y complejidad, que con el uso de un lenguaje como Rust y un poco de cabeza, simplemente desaparece, permitiendo centrarse en lo que de verdad importa: añadir funcionalidad al código sin romper el ya existente. Simplemente, da la sensación de que habláis sin conocimiento de causa. Mejor investigad y leed un poco sobre cómo funciona y lo que aporta antes de soltar la cuñadez típica "yo no necesito eso".Si está reeemplazando muchos nuevos proyectos de bajo nivel a C++ (y el que da el salto no vuelve al masoquismo de C++) es por algo. Los principales promotores son los propios programadores.