Hace 4 años | Por ciberninjas a blog.discordapp.com
Publicado hace 4 años por ciberninjas a blog.discordapp.com

Causas por las que la aplicación de comunicación Discord ha decidido cambiar y reescribir parte de su código por completo, dejando de usar el lenguaje de programación Go a cambio del lenguaje Rust.

Comentarios

saqueador

#1 Pues hombre parecerá sobrado, pero básicamente los resultados son los mismo sin los picos del garbage collector. Vamos, que es algo sabido y totalmente predecible.

Ze7eN

Muy interesante el meneo, #0.

La verdad es que Discord me parece una aplicación fabulosa y con mucho potencial, pero si es verdad que a nivel de rendimiento era y es muy mejorable y mucha gente sigue usando algo tan obsoleto y mucho más incompleto como TeamSpeak debido a esto. Espero que este cambio sirva para algo.

a

#2 No servirá para nada porque discord seguirá siendo una aplicación web empotrada, que usa el framework electron, que incluye un navegador web Chromium embebido, que es lo que hace que ocupe un minimo de medio giga de ram.
Pero bueno a este ritmo todas las aplicaciones seran así incluso las utilidades del sistema, por ejemplo el software de varios ratones ya utilizan a día de hoy una web app y ocupan medio giga de ram. Como hagan eso con todos los periféricos van a hacer falta mínimo 8 gigas de ram para solo arrancar el sistema operativo.

D

World of goo esta anticuado,Rust sin embargo siempre ha estado en el top de steam

Shinu

#5

soychanante

Me encanta cuando leo un titular y no tengo ni puñetera idea de que cojones habla. Y aún me gusta más cuando leo la entradilla y todavía me quedo con más cara de panoli. Y finalmente, cuando el hype de enterarme de algo completamente desconocido para mi, está en su máximo apogeo, y ya abro la noticia y está todo en inglés, el desmadre es absoluto..
Total, que a pesar de mis esfuerzos leyendo todo el artículo y mi inglés macarrónico, me he quedado casi igual que al principio...



A ver si hay alguien que me ilustre...

KoLoRo

#6 Lo mismo me ha pasado a mi lol #0 [ENG] en el titular anda...

ciberninjas

#7 Nunca me acuerdo..

ciberninjas

#6 Haber si soy capaz de explicarlo sencillo. Algo así, como que quieren cambiar el código fuente de parte del programa que mantienen -que es una aplicación, "tipo Slack"- de la forma en la que lo tienen creado; porque han constrastado. Que al utilizar esa otra técnica / formade crear ese programa. Cito literalmente al artículo (La latencia, la CPU y la memoria fueron mejores en la versión "creada con.." Rust).

Vaya que mejoran el rendimiento de sus servidores de una forma descarada; si realizan un cambio desde cero dentro del programa..
A groso y feo modo dicho..

s

#10 A ver, de veamos

soychanante

#10 ok, ya voy viendo algo de luz. Y entiendo que eso es meritorio/destacable porque les va a suponer un montón de curro a ellos solo para beneficiar a sus actuales y futuros clientes, no?. Lo que también llego a suponer, que no es práctica habitual (aunque debiese serlo) en su entorno...

Y gracias por el esfuerzo!

f

#12 Lo que han hecho ha sido pasar de un lenguaje de programación (Go) a otro (Rust). Go tiene un modelo de memoria en que las partes que el programa no utiliza no se devuelven al sistema de immediato, sinó que hay un proceso que se encarga de buscarlas y hacerlo... cada dos minutos, aproximadamente. Por eso cada dos minutos tenían picos de latencia, porque el sistema estaba demasiado ocupado buscando y liberando esa memoria como para responder a lo que se le pedía. Como Rust funciona de manera distinta, en lugar de acumular esa memoria (y soltarla de una vez) la va soltando a medida que ya no se necesita. Por eso puedes ver en el grafico de la latencia donde se ve como lo hacen Go y Rust, que Go está mas bajo pero con picos.... mientras que Rust está algo mas alto pero constante.

Respecto a lo de ser práctica habitual o no... depende de la cantidad de gente que uno tenga disponible para trabajar en el proyecto, y cuantas mejoras pidan los clientes...

soychanante

#31 joder, que gusto leer tanto bueno por aquí... Mis dieses para todos!!!

Abeel

#6 lo tenían todo programado en un lenguaje que usa algo como el camión de la basura, el basurero pasa por tu casa cada dos minutos, y veían que su procesador (personas que tienen que atender al basurero) perdía mucho tiempo en atender al basurero a pesar de que son muy ecológicos y no tienen casi basura. Era obligatorio en ese barrio que el basurero pasase cada 2 minutos, podían hacer que pasase más pero no menos. Por lo que pensaron en hacer que el barrio fuese más pequeño (reducir la cache) e hizo que el basurero tardase menos, pero en cambio al ser el barrio más pequeño no encontraban al vecino indicado rápido (cache) y lo tenían que pedir al proveedor en otra ciudad (lectura en base de datos).

Por lo que dijeron que a tomar por culo la ciudad, montamos otra en una provincia sin basurero (cambio de lenguaje).

soychanante

#28 oh, si mucho mejor!!

cosmonauta

Me parece impresionante que se hayan metido en una optimización tan fina. Si os fijáis en los tiempos y CPU, tanto la versión de go como la de Rust les dan valores impresionantes. Y se han metido en un cambio del copón solo para optimizar un pequeño pico cada dos minutos.

Por otro lado, el artículo es algo antiguo. Habría que ver cómo funciona go 1.13.

Para mi, lo qué demuestra es que son los dos lenguajes punteros hoy día. Es como ver dos Formula 1 en el circuito.

C

Los de letras estan votando negativo, tranquilos que su dosis diaria de noticias políticas para indignarse llegarán pronto, el camello llegará pronto.

La noticia es interesante, hay que estar pendientes del desempeño, consumo de recursos de hacer software en Rust.

llorencs

#16 Pide a@admin que te lo ponga. Ya se te habrá acabado el tiempo de edición.

ciberninjas

#17 ya le he dicho por nótame.. Gracias..

pieróg

tl;dr: porque el recolector de basuras es una mierda y el de Go más aún.

D

#8 No, el de la v 1.13 es decente.

m

#25 Para mi no, Go me permite de manera súper sencilla compilar para diferentes arquitecturas incluyendo todo lo que necesita la aplicación para correr en el mismo binario. Con esto te ahorras las mierdas de dependency hells de Python, por ejemplo, dropeas el binario y a correr. A la vez que es bastante más rápido de ejecutar que un script equivalente.

x

En un par de años cambiarán a Dart y Flutter.

s

#3 O a Blert y McCarther, o mejor aún, a Pkunk y Fwkkert.

Shinu

Edit

ciberninjas

#14 Edit? Que lo edite, no se donde.. No veo botón para poner [ENG]

D

Para estas cosas lo mejor era Erlang que era una bestia en concurrencia.

NapalMe

Modas, ni mas ni menos, cada vez somos mas usuarios y menos programadores.

mikelx

#20 Go en si ya sería una 'moda' pero tal como explican el artículo, Rust les ha permitido salvar algunos límites inherentes al propio diseño de GO que no tenían ninguna solución por más que tunearan la configuración.

NapalMe

#23 Para mi, Go y Rust son una moda. (Y eso no tiene porqué ser algo negativo, ojo)

nashgul

#20 para mí el mejor comentario: "modas, ni más ni menos"

kastle

< .......

kastle

Rust no es más que un C++ que te obliga a desarrollar de manera más segura así como también más tediosa (en Rust cualquier variable que quieras editar debe ser definida como tal con mut, en C++ son editables por defecto a menos que uses const).

Los lenguajes interpretados o con recolectores de basura son para que gente sin demasiada idea de programación tenga herramientas para que el ordenador le saque los cálculos y les automatice 4 procesos, generalmente matemáticos, físicos, estadistas, bioinformáticos... Cualquier aplicación en tiempo real debe estar programada en un lenguaje de programación que no te quite ni un ápice de control ni tenga otro programa interpretándolo porque si no de repente tienes un cuello de botella y... ¡sorpresa! no está en tus manos reaccionar a menos que migres el proyecto.

m

#27 no todas las aplicaciones necesitan tiempo real... si necesitas programar algo rápido y que además funcione rápido y sea sencillo de desplegar no veo nada mejor que Go a día de hoy.

a

#30 En este caso hablamos de los servidores de discord, que seguramente tienen que atender a millones de usuarios, esto dista de ser rápido y sencillo, cualquier optimizacion incluso minima podria significar un ahorro enorme en gastos de mantenimiento: menos incidencias, menos servidores, menos ancho de banda usado, etc.

m

#32 totalmente de acuerdo

D

#c-27" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3248822/order/27">#27 >Los lenguajes interpretados o con recolectores de basura son para que gente sin demasiada idea de programación tenga herramientas para que el ordenador le saque los cálculos y les automatice 4 procesos, generalmente matemáticos, físicos, estadistas, bioinformáticos.

Ya, por eso nadie usa Java ni C# en entornos empresariales, verdad?