Rust y Go son increíbles
Primero, es muy importante decir que tanto Go como Rust son lenguajes de programación absolutamente excelentes. Son modernos, potentes, ampliamente adoptados y ofrecen un excelente rendimiento. Es posible que hayas leído artículos y publicaciones de blog con el objetivo de convencerte de que Go es mejor que Rust, o viceversa. Pero eso realmente no tiene sentido; cada lenguaje de programación representa un conjunto de compensaciones. Cada idioma está optimizado para diferentes cosas, por lo que su elección de idioma debe estar determinada por lo que más le convenga y los problemas que desee resolver con él.
En este artículo, trataré de dar una breve descripción de dónde creo que Ir es la opción ideal, y dónde creo que el óxido es una mejor alternativa. Lo ideal, sin embargo, es tener una familiaridad de trabajo con ambos idiomas. Aunque son muy diferentes en sintaxis y estilo, tanto Rust como Go son herramientas de primera clase para crear software. Dicho esto, echemos un vistazo más de cerca a los dos idiomas.
Las similitudes
Rust y Go tienen mucho en común, que es una de las razones por las que a menudo las oyes mencionar juntas. ¿Cuáles son algunos de los objetivos comunes de ambos idiomas?
Rust es un lenguaje de programación multiparadigma de tipo estático de bajo nivel que se centra en la seguridad y el rendimiento.
—Gints Dreimanis
Go es un lenguaje de programación de código abierto que facilita la creación de software simple, confiable y eficiente.- Golang.org
Seguridad de la memoria
Tanto Go como Rust pertenecen al grupo de lenguajes de programación modernos cuya prioridad es la seguridad de la memoria. A lo largo de muchas décadas de uso de lenguajes más antiguos, como C y C++, se ha hecho evidente que una de las principales causas de errores y vulnerabilidades de seguridad es el acceso a la memoria de forma insegura o incorrecta. Rust y Go lidian con este problema de diferentes maneras, pero ambos tienen como objetivo ser más inteligentes y seguros que otros lenguajes sobre la gestión de la memoria, y ayudarlo a escribir programas correctos y de rendimiento.
Ejecutables rápidos y compactos
Ambos son lenguajes compilados, lo que significa que sus programas se traducen directamente a código máquina ejecutable, para que pueda implementar su programa como un solo archivo binario; a diferencia de los lenguajes interpretados como Python y Ruby, no necesita distribuir un intérprete y muchas bibliotecas y dependencias junto con su programa, lo que es una gran ventaja. Esto también hace que los programas Rust y Go sean extremadamente rápidos en comparación con los lenguajes interpretados.
Los lenguajes de propósito general
Rust y Go también son lenguajes de programación de propósito general potentes y escalables, que puede usar para desarrollar todo tipo de software moderno, desde aplicaciones web hasta microservicios distribuidos, o desde microcontroladores integrados hasta aplicaciones móviles. Ambos tienen excelentes bibliotecas estándar y un próspero ecosistema de terceros, así como un gran soporte comercial y una gran base de usuarios. Ambos han existido durante muchos años, y continuarán siendo ampliamente utilizados en los próximos años. Aprender Go o Rust hoy será una buena inversión de tiempo y esfuerzo.
Estilo de programación pragmático
Ninguno de los dos son lenguajes principalmente funcionales (como Scala o Elixir, por ejemplo), y tampoco están orientados exclusivamente a objetos (como Java y C#). En cambio, aunque tanto Go como Rust tienen características asociadas con la programación funcional y orientada a objetos, son lenguajes pragmáticos destinados a resolver problemas de la manera más apropiada, en lugar de forzarlo a una forma particular de hacer las cosas. (Si te gusta el estilo funcional de programación, sin embargo, encontrarás muchas más instalaciones para ello en Rust, porque Rust tiene muchas más instalaciones que Go en general.)
Podemos debatir sobre lo que es un lenguaje ‘orientado a objetos’, pero es justo decir que el estilo de programación orientada a objetos que los usuarios de C++, Java o C# esperarían no está presente ni en Go ni en Rust.
– Jack Mott
Desarrollo a escala
Tanto Rust como Go tienen algunas características útiles que los hacen adecuados para programar en grandes grupos, ya sea que eso signifique equipos grandes, bases de código grandes o ambos.
Por ejemplo, mientras que los programadores de C han discutido durante años sobre dónde poner sus corchetes, y si el código debe sangrarse con pestañas o espacios, tanto Rust como Go eliminan estos problemas por completo utilizando una herramienta de formato estándar (gofmt
para Go, rustfmt
para Rust) que reescribe su código automáticamente utilizando el estilo canónico. No es que este estilo en particular sea tan maravilloso en sí mismo: es la estandarización que los programadores de Rust and Go aprecian.
> gofmt
el estilo no es el favorito de nadie, pero gofmt
es el favorito de todos.
—Rob Pike
Otra área donde los dos idiomas con una puntuación elevada en la construcción de tuberías. Ambos tienen excelentes herramientas de gestión de dependencias y compilación estándar de alto rendimiento integradas; no más luchas con complejos sistemas de compilación de terceros y tener que aprender uno nuevo cada dos años.
Crear código de óxido y óxido, habiendo venido de un entorno Java y Ruby en mis inicios de carrera, se sentía como un peso imposible de mis hombros. Cuando estaba en Google, fue un alivio encontrar un servicio que estaba escrito en Go, porque sabía que sería fácil de construir y ejecutar. Esto también ha sido cierto para el óxido, aunque solo he trabajado en eso a una escala mucho más pequeña. Espero que los días de sistemas de construcción infinitamente configurables estén muertos, y todos los idiomas se envíen con sus propias herramientas de construcción diseñadas específicamente que funcionan de inmediato.
—Sam Rose
¿Por qué tanto alboroto?
Con todo eso en mente, y viendo que ambos idiomas están tan bien diseñados y son tan poderosos, es posible que se pregunte de qué se tratan todas las guerras santas (yo también). ¿Por qué la gente hace tanto alboroto sobre ‘Go versus Rust’, metiéndose en peleas enojadas en las redes sociales y escribiendo largas publicaciones de blog sobre cómo solo un idiota usaría Rust, o que Go no es un lenguaje de programación real, o lo que sea? Puede hacer que se sientan mejor, pero no te ayuda exactamente a ti, como alguien que intenta decidir qué idioma usar para tu proyecto, o qué deberías aprender para avanzar en tu carrera de programación. Una persona sabia no toma decisiones importantes en función de quién grita más fuerte.
Continuemos nuestra discusión de adultos ahora mirando algunas áreas en las que una persona razonable podría preferir un idioma sobre el otro.
Rendimiento
Hemos dicho que tanto Go como Rust producen programas extremadamente rápidos porque están compilados en código de máquina nativo, sin tener que pasar por un intérprete o una máquina virtual. Sin embargo, el rendimiento de Rust es particularmente sobresaliente. Es comparable con C y C++, que a menudo se consideran los lenguajes compilados de mayor rendimiento, pero a diferencia de estos lenguajes más antiguos, también ofrece seguridad de memoria y seguridad de concurrencia, esencialmente sin costo en velocidad de ejecución. Rust también le permite crear abstracciones complejas sin pagar una penalización de rendimiento en tiempo de ejecución.
En comparación, aunque los programas Go también funcionan extremadamente bien, Go está diseñado principalmente para la velocidad de desarrollo (incluida la compilación), en lugar de la velocidad de ejecución. El compilador de Go no pasa mucho tiempo tratando de generar el código máquina más eficiente posible; se preocupa más por compilar mucho código rápidamente. Por lo tanto, Rust generalmente vencerá a Go en los parámetros de tiempo de ejecución.
El rendimiento en tiempo de ejecución de Rust también es consistente y predecible, porque no usa recolección de basura. El recolector de basura de Go es muy eficiente y está optimizado para hacer que sus pausas de stop-the-world sean lo más cortas posible (y cada vez más cortas con cada nueva versión de Go). Pero la recolección de basura introduce inevitablemente cierta imprevisibilidad en la forma en que se comportan los programas, lo que puede ser un problema grave en algunas aplicaciones, como los sistemas integrados.
Debido a que el objetivo de Rust es proporcionar al programador un control completo del hardware subyacente, es posible optimizar los programas de Rust para que estén bastante cerca del máximo rendimiento teórico de la máquina. Esto hace que Rust sea una excelente opción para áreas donde la velocidad de ejecución supera todas las demás consideraciones, como la programación de juegos, los núcleos del sistema operativo, los componentes del navegador web y los sistemas de control en tiempo real.
Simplicidad
No importa lo rápido que sea un lenguaje de programación si nadie puede averiguar cómo usarlo. Go fue concebido deliberadamente como una reacción contra la creciente complejidad de lenguajes como C++; tiene muy poca sintaxis, muy pocas palabras clave y, de hecho, pocas características. Esto significa que no tardará mucho en aprender el idioma Go hasta el punto en que pueda escribir programas útiles en él.
Go es increíblemente fácil de aprender. Sé que este es un beneficio a menudo promocionado, pero me sorprendió lo rápido que pude ser productivo. Gracias al lenguaje, los documentos y las herramientas, estaba escribiendo un código interesante y comprometible después de literalmente dos días.
—Primeras impresiones de Go De un programador Rust
La palabra clave aquí es simplicidad. Simple no es lo mismo que fácil, sin duda, pero un lenguaje pequeño y simple es más fácil de aprender que uno grande y complejo. Simplemente no hay muchas formas diferentes de hacer las cosas, por lo que todo el código Go bien escrito tiende a verse igual. Es fácil sumergirse en un servicio desconocido y entender lo que está haciendo.
fmt.Println("Gopher's Diner Breakfast Menu")for dish, price := range menu { fmt.Println(dish, price)}
(En el Código de la serie Club, yo hago exactamente eso: elegir Ir proyectos semi-aleatoriamente desde GitHub y explorar con un grupo de principiantes, para ver la cantidad de código que podemos entender. Siempre resulta ser más de lo que esperábamos!)
Aunque el lenguaje principal es pequeño, la biblioteca estándar de Go es muy potente. Eso significa que su curva de aprendizaje también tendrá que incluir las partes de la biblioteca estándar que necesita, no solo la sintaxis Go. Por otro lado, mover la funcionalidad fuera del lenguaje a la biblioteca estándar significa que puede concentrarse en aprender solo las bibliotecas que son relevantes para usted en este momento.
Go también está diseñado para el desarrollo de software a escala, con grandes bases de código y grandes equipos. En estas situaciones, es importante que los nuevos desarrolladores puedan ponerse al día lo más rápido posible.
Con Ir, que hacer las cosas rápido. Go es uno de los idiomas más productivos con los que he trabajado. El mantra es: >resuelve problemas reales hoy>.
—Matthias Endler
Características
Rust soporta más complejidad que varios otros lenguajes de programación, por lo tanto, puede lograr más con él. Por ejemplo, es compatible con genéricos.
– Devathon
Rust está diseñado específicamente para incluir muchas funciones potentes y útiles para ayudar a los programadores a aprovechar al máximo el código mínimo. Por ejemplo, la función match
de Rust le permite escribir lógica flexible y expresiva de forma bastante concisa:
fn is_prime(n: u64) -> bool { match n { 0...1 => false, _ => !(2..n).any(|d| n % d == 0), }}
Debido a que Rust hace mucho, esto significa que hay mucho que aprender, especialmente al principio. Pero está bien: también hay mucho que aprender en C++ o Java, y no obtienes las funciones avanzadas que vienen con Rust, como la seguridad de la memoria. Criticar a Rust por ser un lenguaje complejo no va al grano: está diseñado para ser expresivo, lo que significa tener muchas características, y en muchas situaciones eso es lo que quieres de un lenguaje de programación. Hay una curva de aprendizaje, sin duda, pero una vez que estés listo y funcionando con ella, estarás bien.
Rust compite por mindshare con C++ y D para programadores que están preparados para aceptar sintaxis y semántica más complejas (y presumiblemente costos de legibilidad más altos) a cambio del máximo rendimiento posible.
– Dave Cheney
Concurrency
La mayoría de los lenguajes tienen algún tipo de soporte para la programación simultánea (haciendo varias cosas a la vez), pero Go fue diseñado para este trabajo desde cero. En lugar de usar hilos del sistema operativo, Go proporciona una alternativa ligera: goroutines. Cada goroutine es una función Go de ejecución independiente, que el programador de Go asignará a uno de los subprocesos del sistema operativo bajo su control. Esto significa que el programador puede administrar de manera muy eficiente un gran número de goroutines simultáneos, utilizando solo un número limitado de subprocesos del sistema operativo.
En consecuencia, puede ejecutar millones de goroutines simultáneos en un solo programa sin crear problemas de rendimiento graves. Esto hace que Go sea la elección perfecta para aplicaciones simultáneas de gran escala, como servidores web y microservicios.
Go también ofrece formas rápidas, seguras y eficientes para que goroutines se comunique y comparta datos mediante canales. El soporte de concurrencia de Go se siente bien diseñado y es un placer usarlo. Razonar sobre programas simultáneos es difícil en general, y construir programas simultáneos correctos y confiables es un desafío en cualquier idioma. Sin embargo, debido a que se integró en el lenguaje desde el principio, en lugar de ser una idea tardía, la programación simultánea en Go es tan simple y bien integrada como podría ser razonablemente.
Go hace que sea muy fácil crear una aplicación bien factorizada que aproveche al máximo la concurrencia mientras se implementa como un conjunto de microservicios. El óxido también puede hacer esas cosas, pero podría decirse que es un poco más difícil. En algunos aspectos, la obsesión de Rust por prevenir vulnerabilidades de seguridad relacionadas con la memoria significa que los programadores tienen que hacer todo lo posible para realizar tareas que serían más simples en otros lenguajes, incluido Go.
– Sonya Koptyev
La historia de concurrencia en Rust es muy nueva, en comparación, y aún se estabiliza, pero está en desarrollo muy activo, así que observe este espacio. Por ejemplo, la biblioteca de rayones de Rust proporciona una forma muy elegante y ligera de convertir los cálculos secuenciales en cálculos paralelos.
Tener una sintaxis ligera para generar rutinas Go y usar canales es realmente agradable. Realmente muestra el poder de la sintaxis que estos pequeños detalles hacen que la programación simultánea se sienta mucho mejor que en otros lenguajes.
—Primeras impresiones de Go De un programador de Rust
Aunque puede ser un poco menos sencillo implementar programas simultáneos en Rust, todavía es posible, y esos programas pueden aprovechar las garantías de seguridad de Rust. Un buen ejemplo es la clase Mutex
de la biblioteca estándar: en Go, puede olvidarse de obtener un bloqueo mutex antes de acceder a algo, pero Rust no le permitirá hacerlo.
Go se centra en la concurrencia como un concepto de primera clase. Esto no quiere decir que no pueda encontrar aspectos de la concurrencia orientada a actores de Go en Rust, pero se deja como un ejercicio para el programador.
– Dave Cheney
Safety
Vimos anteriormente que tanto Go como Rust tienen como objetivo, de diferentes maneras, evitar una gran clase de errores de programación comunes, relacionados con la administración de memoria. Pero el óxido, en particular, hace todo lo posible para asegurarse de que no pueda hacer algo inseguro que no quería hacer.
El compilador muy estricto y pedante de Rust comprueba todas y cada una de las variables que utiliza y cada dirección de memoria a la que hace referencia. Evita posibles condiciones de carrera de datos e informa sobre comportamientos indefinidos. Los problemas de seguridad de memoria y concurrencia son fundamentalmente imposibles de conseguir en el subconjunto seguro de Rust.
– ¿Por qué se oxida?
Esto hará que la programación en Rust sea una experiencia diferente a la de casi todos los demás lenguajes, y puede ser un desafío al principio. Pero para muchas personas, el trabajo duro vale la pena.
Para mí, la ventaja clave de Rust es la sensación de que el compilador me respalda y no deja pasar ningún error que pueda detectar (en serio, a veces se siente mágico).
– Grzegorz Nosek
Muchos lenguajes, incluido Go, tienen facilidades para ayudar a los programadores a evitar errores, pero Rust lleva esto a un nuevo nivel, de modo que los programas potencialmente incorrectos ni siquiera se compilan.
Con Rust, la programadora de bibliotecas tiene muchas herramientas para evitar que sus usuarios cometan errores. Rust nos da la capacidad de decir que > poseemos> un dato específico; no es posible que otra cosa reclame la propiedad, por lo que sabemos que nada más podrá modificarlo. No puedo pensar en un momento en el que me hayan dado tantas herramientas para evitar el mal uso accidental antes. Es una sensación maravillosa.
– Sam Rose
“Luchar con el comprobador de préstamos” es un síndrome común para los nuevos programadores de óxido, pero en la mayoría de los casos los problemas que encuentra son errores genuinos (o al menos errores potenciales) en su código. Puede obligarlo a rediseñar fundamentalmente su programa para evitar encontrarse con estos problemas; y eso es bueno, cuando la corrección y la confiabilidad son su principal prioridad. ¿Para qué sirve un lenguaje que no cambia la forma de programar? Las lecciones que Rust enseña sobre seguridad también pueden ser útiles cuando trabajas en otros idiomas.
Si elige Rust, generalmente necesita las garantías que proporciona el lenguaje: seguridad contra punteros nulos y carreras de datos, comportamiento de tiempo de ejecución predecible y control total sobre el hardware. Si no necesita ninguna de estas características, Rust podría ser una mala opción para su próximo proyecto. Esto se debe a que estas garantías tienen un costo: tiempo de aceleración. Tendrás que desaprender los malos hábitos y aprender nuevos conceptos. Lo más probable es que pelees mucho con el inspector de préstamos cuando empieces.
—Matthias Endler
Lo difícil que sea encontrar el modelo de programación de Rust probablemente depende de la experiencia previa que tenga en otros idiomas. Los programadores de Python o Ruby pueden encontrarlo restrictivo; otros estarán encantados.
Si eres un programador de C o C++ que ha pasado semanas persiguiendo errores de seguridad de memoria en esos lenguajes, realmente apreciarás Rust. “Luchar contra el verificador de préstamos” se convierte en ” ¿El compilador puede detectar eso? ¡Órale!”
– Grzegorz Nosek
Scale
Los programas de servidor de hoy en día comprenden decenas de millones de líneas de código, son trabajados por cientos o incluso miles de programadores, y se actualizan literalmente todos los días. Go fue diseñado y desarrollado para hacer que el trabajo en este entorno sea más productivo. Las consideraciones de diseño de Go incluyen una gestión rigurosa de las dependencias, la adaptabilidad de la arquitectura de software a medida que crecen los sistemas y la robustez a través de los límites entre los componentes.
– Rob Pike
Cuando estás trabajando en un problema por ti mismo o en equipos pequeños, la elección de un lenguaje simple o un lenguaje rico es una cuestión de preferencia. Pero a medida que el software se hace más grande y complejo, y los equipos se hacen más grandes, las diferencias comienzan a notarse. Para aplicaciones grandes y sistemas distribuidos, la velocidad de ejecución es menos importante que la velocidad de desarrollo: un lenguaje deliberadamente mínimo como Go reduce el tiempo de expansión para los nuevos desarrolladores y les facilita trabajar con una base de código grande.
Con Go, es más fácil como desarrollador junior ser más productivo, y más difícil como desarrollador de nivel medio introducir abstracciones frágiles que causarán problemas en el futuro. Por estas razones, Rust es menos convincente que Go para el desarrollo de software empresarial.
—Loris Cro
Cuando se trata de desarrollo de software en general, clear es mejor que clever. Las limitaciones de Go en realidad lo hacen más adecuado para empresas y grandes organizaciones que lenguajes más complejos y poderosos como Rust.
Las diferencias
Aunque Rust y Go son lenguajes populares, modernos y ampliamente utilizados, en realidad no son competidores, en el sentido de que están apuntando deliberadamente a casos de uso muy diferentes. Todo el enfoque de programación de Go es radicalmente diferente al de Rust, y cada lenguaje se adaptará a algunas personas y irritará a otras. Eso está absolutamente bien, y si tanto Rust como Go hicieran más o menos las mismas cosas en más o menos de la misma manera, realmente no necesitaríamos dos idiomas diferentes.
Entonces, ¿podemos tener una idea de las respectivas naturalezas de Rust e ir encontrando temas en los que toman enfoques drásticamente diferentes? Averigüémoslo.
Recolección de basura
” Recolectar basura, o no recolectar basura ” es una de esas preguntas que no tiene una respuesta correcta. La recolección de basura, y la gestión automática de la memoria en general, hace que sea rápido y fácil desarrollar programas confiables y eficientes, y para algunas personas eso lo hace esencial. Pero otros dicen que la recolección de basura, con su sobrecarga de rendimiento y pausas para detener el mundo, hace que los programas se comporten de manera impredecible en tiempo de ejecución e introduce una latencia inaceptable. El debate continúa.
Go es un lenguaje muy diferente a Rust. Aunque ambos pueden describirse vagamente como lenguajes de sistemas o sustitutos de C, tienen diferentes objetivos y aplicaciones, estilos de diseño de lenguaje y prioridades. La recolección de basura es un gran diferenciador. Tener GC en Go hace que el lenguaje sea mucho más simple y más pequeño, y fácil de razonar.
No tener GC en Rust lo hace realmente rápido (especialmente si necesita latencia garantizada, no solo alto rendimiento) y habilita características y patrones de programación que no son posibles en Go (o al menos no sin sacrificar el rendimiento).
– PingCAP
Close to the metal
La historia de la programación de computadoras ha sido una historia de abstracciones cada vez más sofisticadas que permiten al programador resolver problemas sin preocuparse demasiado por cómo funciona realmente la máquina subyacente. Eso hace que los programas sean más fáciles de escribir y quizás más portátiles. Pero para muchos programas, el acceso al hardware y el control preciso de cómo se ejecuta el programa son más importantes. Rust tiene como objetivo permitir que los programadores se acerquen al metal, con más control, pero abstrae los detalles arquitectónicos para permitir que los programadores se acerquen al problema.
Ambos idiomas tienen un alcance diferente. Golang brilla para escribir microservicios y para tareas típicas de “DevOps”, pero no es un lenguaje de programación de sistemas. Rust es más fuerte para tareas donde la concurrencia, la seguridad y/o el rendimiento son importantes; pero tiene una curva de aprendizaje más pronunciada que Go.
—Matthias Endler
Debe ir más rápido
He escrito en otro lugar que el rendimiento es menos importante que la legibilidad para la mayoría de los programas. Pero cuando el rendimiento importa, realmente importa. Rust realiza una serie de compensaciones de diseño para lograr la mejor velocidad de ejecución posible. Por el contrario, Go está más preocupado por la simplicidad y está dispuesto a sacrificar algo de rendimiento (en tiempo de ejecución) por ella. Pero la velocidad de compilación de Go es imbatible, y eso es importante para bases de código grandes.
Rust es más rápido que Go. En los puntos de referencia anteriores, el óxido fue más rápido y, en algunos casos, un orden de magnitud más rápido. Pero antes de que corras a elegir escribir todo en Rust, considera que Go no estaba tan lejos en muchos de esos puntos de referencia, y sigue siendo mucho más rápido que Java, C#, JavaScript, Python, etc.
Si lo que necesitas es un rendimiento de primera línea, estarás por delante del juego eligiendo cualquiera de estos dos idiomas. Si está creando un servicio web que maneja una carga alta, que desea poder escalar tanto vertical como horizontalmente, cualquiera de los idiomas le resultará perfecto.
—Andrew Lader
Corrección
Por otro lado, un programa puede ser arbitrariamente rápido si no tiene para que funcione correctamente. La mayoría del código no está escrito a largo plazo, pero a menudo es sorprendente cuánto tiempo pueden permanecer en producción algunos programas en ejecución: en algunos casos, muchas décadas. En estas situaciones, vale la pena tomarse un poco más de tiempo en el desarrollo para asegurarse de que el programa sea correcto, confiable y no necesite mucho mantenimiento en el futuro.
Mi opinión: Ve por el código que tiene que enviarse mañana, Rust por el código que tiene que seguir funcionando sin tocar durante los próximos cinco años.
– Grzegorz Nosek
Aunque tanto Go como Rust son excelentes opciones para cualquier proyecto serio, es una buena idea estar lo más informado posible sobre cada idioma y sus características. En última instancia, no importa lo que piensen los demás: solo tú puedes decidir cuál es el adecuado para ti y tu equipo.
Si quieres desarrollar más rápido, tal vez porque tienes muchos servicios diferentes para escribir, o tienes un gran equipo de desarrolladores, entonces Go es el idioma que elijas. Go le da concurrencia como un ciudadano de primera clase y no tolera el acceso a la memoria inseguro (tampoco se oxida), pero sin obligarle a administrar hasta el último detalle. Go es rápido y potente, pero evita empantanar al desarrollador, centrándose en su lugar en la simplicidad y la uniformidad. Si, por otro lado, escurrir hasta la última onza de rendimiento es una necesidad, entonces el óxido debe ser su elección.
—Andrew Lader
Conclusión
Espero que este artículo lo haya convencido de que tanto Rust como Go merecen su seria consideración. Si es posible, debes aspirar a obtener al menos algún nivel de experiencia en ambos idiomas, ya que serán increíblemente útiles para ti en cualquier carrera tecnológica, o incluso si disfrutas de la programación como pasatiempo. Si solo tiene tiempo para invertir en aprender bien un idioma, no tome su decisión final hasta que haya utilizado Go y Rust para una variedad de diferentes tipos de programas, grandes y pequeños.
Y el conocimiento de un lenguaje de programación es realmente solo una pequeña parte de ser un ingeniero de software exitoso. Las habilidades más importantes que necesitará son diseño, ingeniería, arquitectura, comunicación y colaboración. Si sobresales en esto, serás un gran ingeniero de software independientemente del idioma que elijas. Feliz aprendizaje!
Comparando el código Rust y Go
Hay un gran sitio web llamado programming-idioms.org que tiene una “hoja de trucos” que muestra el aspecto del código Rust and Go para más de 200 tareas de programación comunes:
- Go vs Óxido modismos
introducción
Si usted está interesado en aprender a programar con el Óxido y Vaya, aquí hay algunos recursos que pueden ser útiles.
Go
- Instalar Go
- Ir tutoriales de Bitfield
- Por amor a Go
- Un recorrido por Go
- Ir Por Ejemplo
- El Patio de juegos de Go
- Impresionante Go
Rust
- Instalar Rust
- Una introducción suave a Rust
- li>
- El Lenguaje de programación Rust
- Libros de Rust
- Rust Por Ejemplo
- El Patio de juegos de Rust
- Cien Binarios de Rust
Agradecimientos
No soy lo suficientemente joven para saberlo todo, como dice el refrán, así que estoy muy agradecido a una serie de distinguidos Topos y Rustáceos quién se tomó el tiempo para revisar y corregir esta pieza, así como para proporcionar algunas sugerencias realmente útiles. Mi agradecimiento especial a Bill Kennedy, Grzegorz Nosek, Sam Rose, Jack Mott, Steve Klabnik, MN Mark, Ola Nordstrom, Levi Lovelock, Emile Pels, Sebastian Lauwers, Carl Lerche y todos los demás que contribuyeron. Es posible que tenga la impresión de leer tomas calientes en línea de que las comunidades Rust and Go no se llevan bien. Nada podría estar más lejos de la verdad, en mi experiencia; tuvimos discusiones muy civilizadas y fructíferas sobre el borrador del artículo, y ha marcado una gran diferencia en el producto terminado. Gracias de nuevo.
Leave a Reply