¿Qué nuevo lenguaje aprender?

Zerokkk

Muy buenas!

Ya me conocéis algunos por aquí. Llevo varios años en el chanchullo y a día de hoy puedo decir que me muevo con cierta soltura en los stacks de Java y Javascript, habiendo estado estos últimos dos años más centrados en el segundo (typescript, Angular, Ionic, etc...). Y estoy contento con el stack de JS para la mayoría de las cosas que pueda hacer a día de hoy, pero tenía ganas de aprender un lenguaje nuevo, no sólo por currículum, sino también para algún proyectito y demás.

Mi principal interés es conocer un lenguaje altamente fiable, seguro y que proporcione entornos de ejecución rápidos. Si bien muchos me conocéis por defender a menudo tecnologías como NodeJS, y le tengo bastante aprecio, quiero abrir mi abanico: Node me parece cojonudo para operaciones async y para hacer cositas rápidas, pero quiero tener un lenguaje que me proporcione un entorno más estable que el de JS para operaciones críticas. Un lenguaje del que sé algo pero no mucho, y que pensaba aprender, era Python, pero creo que las funcionalidades para las que puedo darle uso, ya las tengo copadas por JS. Sólo le sacaría cierto beneficio en la datascience, pero para eso ya tengo plantillas y scripts que puedo acceder desde Node sin mucho trabajo. Entonces, las opciones que barajo a día de hoy, son las siguientes:

  • Scala: He estado viendo el tour del lenguaje y me ha atraído muchísimo. Tiene unas APIs muy ricas y me molan ciertas características del lenguaje. Ahora bien, he leído alguna crítica sobre que el código es "difícil" de leer, y el hecho de que se ejecute sobre la JVM me atrae por un lado pero me espanta por otro. No sé muy bien qué pensar, pero le tengo mucha curiosidad. Un puntazo es que puede compilar a JS y eso me parece sumamente interesante.

  • Go: Hola @umbranoide. Por lo que he visto, Go parece la polla, muy rápido, y no sé, tiene pinta de gestionar la concurrencia de una forma puto genial. Hay que ser un poco ñu para no reconocer que Go parece prometer mucho en cuanto a rendimiento. También he leído que es fácil de aprender, ya que al parecer su documentación es bastante breve y concisa. Todos estos puntos hacen que el lenguaje me interese a sobremanera. ¿Lo malo? Que sólo vale para backend; no es muy multipropósito que digamos.

  • Python: Sigo metiendo a Py en esta lista porque creo que es indudable que es un lenguaje multipropósito que no para de crecer en popularidad, y que puede servir para absolutamente todo. Francamente, como para la mayoría de cosas para las que sirve Py ya tengo a JS/TS ahí, no me parece tan interesante como Scala o Go, pero quizá alguno de vosotros me pueda convencer de lo contrario.

¿Opiniones?

pineda

golang
cierto que estás muy orientado a backend (aunque cada vez hay más historias para hacer UI's) pero por su simpleza y la cantidad de empresas que lo adoptan es una gran elección

Wei-Yu

La pregunta buena es, ¿para qué lo quieres? Si quieres "aprender, así en general" puedes utilizarlo para aprender algo sobre la marcha que te interese, utilizando el lenguaje como herramienta. Pero el lenguaje en sí como fin propio de lo que te propones a menos que suene la flauta y encuentres algo en lo que usarlo se te va a quedar un poco inservible lo poco que aprendas; a fin de cuentas si haces "lo mismo de siempre pero usando una API distinta" lo único que conseguirás será darle patadas a la documentación un rato y poco más.

De hecho si no estás del todo familiarizado con conceptos tradicionales de CS aún, no es mala idea aprender C como herramienta para entender las tripas del sistema y bajar un par de escalones en la capa de abstracción.

Python si estás cómodo con JS yo lo descartaría del todo, a menos que tengas curiosidad por ver cómo evoluciona el lenguaje con las PEPs y el ecosistema de devs (algo que también tienes bastante destripado con OpenJDK). A fin de cuentas no hay nada intrínseco a python que pueda ayudarte a aprender algo de verdad; en redes y orquestación se utiliza un scripting """muy básico""" y en el tema de datos o todo el kit científico, no estarías más que haciendo llamadas a una librería en la mayoría de casos (cosa que, si no te interesa la teoría que hay detrás, no tiene mucho sentido).

Yo hace no tanto me propuse aprender este año uno entre elixir, clojure y go. Pero al final pasé porque total ¿para qué? Tengo otras cosas en las que invertir el tiempo que aprender un lenguaje porque sí, porque ya me pasó con un lenguaje natural (no de programación) y lo tengo ahí abandonado mientras se me olvida toda la gramática porque no tengo nada que hacer con él.

1 respuesta
Zerokkk

#3 Me planteé aprender más de C/C++, sé un mínimo ya, pero por como bien dices, aprender a programar más low-level. Pero no le veo demasiado sentido, si te soy sincero.

Para scripting, JS me parece la caña, se diga lo que se diga. Más aún si lo combinas con Typescript. Dicho esto, tampoco podemos negar que este stack no es el más fiable para cosas mission-critical, ni el más fácil de debuggear, ni el que mejor performance tiene para ciertos tipos de operaciones y requests. Por ejemplo, JS es bastante malo en la lectura de archivos y procesado de grandes sets de datos (tampoco es tan malo, pero desde luego no está a la altura de estos otros stacks). Para algunos casos concretos, me parece interesante poder hacer un backend (o microservicios) en lenguajes que me faciliten un entorno seguro, rápido y moderadamente a prueba de errores, y ahí es donde entran Scala y Go.

Además de que, qué coño, son los lenguajes mejor pagados. No voy a negar que eso es un incentivo xD.

Wei-Yu

Scala no sé si tiene tanto leak de la FFI como clojure, pero en general los lenguajes que "compilan/transpilan/whatever a" me echan bastante para atrás; de seguros y cómodos parecen tener poco. Typescript se salva porque es más superset que otra cosa.

Yo creo que la "seguridad" es algo relativa; a fin de cuentas sólo porque rust sea memory safe no implica que traiga consigo otro tipo de problemas o te fuerce a hacer hacks que en C no necesitarías. Y así con todos al final; me fío cero del profetismo y los datos son tan poco transversales y circunstanciales que... :man_shrugging:

1 respuesta
RU_386

Swift.

1 respuesta
Zerokkk

#5 Yo es que llevo escuchado hablar muy bien de Scala, si te soy sincero... tengo un amigo de Amsterdam que está cobrándose sus 5k netos al mes por poco trabajo y me habla maravillas del lenguaje. Incentivo no falta xD.

#6 Lo he pensado también, pero no está acaso dedicado casi exclusivamente a hacer apps para iOS? Yo para eso uso Ionic y va que chuta; no estoy absolutamente nada interesado en pasar a desarrollar nativo. ¿O acaso es multiparadigma también?

1 respuesta
Wei-Yu

#7 seguro que hay alguien ganando más pasta que tu colega y picando teclas en C#, y eso al final no implica nada. Las encuestas encuestas son... el muestro en lenguajes nicho va a ser mucho más bajo y estar mucho más sesgado o inclinado a personas que se han intentado especializar, mientras que en java tienes desde el que está en una javashop haciendole la web a la zapatería de la esquina hasta ingenieros top 0.05% de twitter o netflix...

Si lo haces pensando en la pasta yo seguiría sin pensar en lenguajes y lo haría más en roles y competencias.

litoss

Elixir

Funcional, concurrente, maquina virtual de Erlang, OTP, sintaxis estilo ruby, gestor de paquetes compatibles con Erlang(hex)

1
s4suk3

eZpit
  • Swift, a no ser que te interese iOS, no me pondría aun. Es multiparadigma y Apple/IBM están metiendo caña para lado servidor, pero le faltan cosas muy básicas aun y mucha adopción.
  • Scala está muy bien y su compiler y SBT es puro amor. Solo he hecho cosas con Play! (que usamos para el backend de nuestra empresa) y so far so good. Algunas cosas de Scala se me hacen viejunas ya que aprendí Swift primero que está, entre otros, inspirado en Scala y lo mejora en algunos sentidos (y en otros no). Sigue siendo un lenguaje poco mainstream pero tiene muy buenas librerías, muy buen soporte funcional, actores, etc... En cuanto a interoperabilidad lo interesante es la JVM, lo de JS no se como de experimental es, pero vamos... no lo consideraría un punto fuerte de Scala.
  • Go pues no se, he oido mucho bueno y algo malo, pero no me he puesto. Pinta guay.
  • Python no please.
eisenfaust

De los que cuentas el más interesante es Scala.

Go no tiene absolutamente nada que aprender, más bien que desaprender. En mi caso me ojeé el libro de Kernighan en una tarde y al día siguiente ya estaba pasando código a producción y cancelando PR con código poco idiomático. Es el lenguaje pajeet por excelencia con el permiso de Java.

Python es para críos y no cumple tus propios requisitos.

r2d2rigo

Con la build pipeline a salto de mata que tiene Go, te viene que ni pintado.

Usuarios habituales

  • r2d2rigo
  • eisenfaust
  • eZpit
  • s4suk3
  • Wei-Yu
  • Zerokkk
  • pineda