Hace 4 años | Por ccguy a fasterthanli.me
Publicado hace 4 años por ccguy a fasterthanli.me

Mi luna de miel con el lenguaje Go ha terminado. Este artículo va a tener un tono diferente de lo que he estado publicando el año pasado... Y siempre me siento mal escribiéndolo, porque, inevitablemente, discute cosas en las que mucha gente ha trabajado muy duro. A pesar de eso, aquí estamos. Después de haber invertido miles de horas en el lenguaje, y haber implementado varias piezas críticas (para mi empresa) de infraestructura con él, desearía no haberlo hecho.

Comentarios

cosmonauta

#5 No conocía esos bugs. Voy a buscar un poco.

comadrejo

Evidentemente Rust es mejor en casi todo excepto en la "velocidad de desarrollo".

Los miles de horas serían el triple con Rust.

D

La mitad de los argumentos son que en Windows no va igual. La otra mitad que por debajo del capó hay tralla. Me va a decir alguien que en node o en cualquier otro lenguaje de este tipo no?

box3d

#1 Mejor usar un lenguaje que no te engalla, no se mete en medio, y no endulza la realidad. C

comadrejo

#2 Bah... el compilador de C es un entrometido, ensamble usted y déjese de engallarse.

https://www.nasm.us/

D

#2 Es de la misma gente. Y el mejor C es el de plan9/9front, los demás son barroquismo. Y Go es el lenguaje que encarna la filosofia de compilad estático de plan9 y multiplataforma "pa tontos". En caso de plan9, cambiando el numero del compilador: 8c i386, 9c amd64, etc... En el caso de Go, asignando las variables GOARCH y GOOS a lo que desees antes de compilar.

#7 Go no necesita a POSIX para nada, hay hasta un port para plan9/9front (nada raro como digo).

cosmonauta

#9 No lo necesita, pero está claro que su implementación del sistema de ficheros está muy basada en Posix, o mejor dicho, en linux-like.

D

#2 Si consigues usar Win32 bajo C no creo que tengas problemas de paro en la vida.

box3d

#11 La winapi está bien diseñada, incluso desde assembler se deja querer. La `stdcall` es mucho más fácil de manejar que `cdecl` y desde C es usar windows.h e ir pasando el handle paquí-pallá. Hacer GUIs desde C eso ya es otra cosa más jodida, pero para eso está C++

D

#2 c es una quesadilla. De las mexicanas.

D

#2 y en el que hacer software concurrente y basado en hipertexto es una pesadilla (lo intenté durante un tiempo)

box3d

#20 solo hace falta pthread, poll/select, y una bajada permanente de tu nivel de cordura.

cosmonauta

Los problemas que cita no están relacionados con go, sino con los sistemas operativos no POSIX, como Windows. Que se pase al php y compruebe como todas las rutas con / fallan en windows.

D

#7 __DIR__

cosmonauta

#14 __PATH_SEPARATOR__ en realidad. Absurdamente largo y poco usado.

D

#15 en verdad es DIRECTORY_SEPARATOR, ya ko se si simplemente DS es de PHP o de PrestaShop.
De todas formas no suelo usarlo, el intérprete de PHP de Windows admite rutas con ambos separadores, incluso mezclados.

https://www.php.net/manual/es/dir.constants.php

eltoloco

Gallir es un enamorado de Go, estaría bien saber su opinión al respecto.

D

He de decir que los problemas de velocidad que hicieron que los (de Discord creo), se pasaran a Rust, estaban mejor solventados con Go 1.13 (y ellos usaban una version bastante anterior), y que Go 1.14 corrige mucho más allá esos problemas de latencia.

cosmonauta

#10 Si. La prueba de Discord no me pareció nada concluyente. Creo que hay otros motivos detrás de esa decisión. Incluso mirando las gráficas que publicaban, los picos en que el sistema iba lento eran muy bajos. Y Rust no tenía esas variaciones pero gastaba un poquito más de CPU. O sea que el trabajo que hace el GC de go de vez en cuando, se convierte en Rust en un trabajo constante, que aplana ligeramente la curva.

En todo caso, Go versus Rust es como McLaren versus Ferrari. Los dos están en la Fórmula 1. Otras arquitecturas apenas pueden soñar con la velocidad de ejecución que dan con tan poco esfuerzo.

comadrejo

#13 El problema de Rust es el esfuerzo de desarrollo. Sin contar con ese esfuerzo todo lo demás son ventajas.

Pruebas básicas de rendimiento en una de las áreas fuertes de go, el desarrollo web:
https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=fortune&l=yykf0e-f

P.D.: Casi todos los desarrollos actuales los realizo en go por el balance entre velocidad de desarrollo y resultados.