Pregunta

Los lenguajes dinámicos están en aumento y hay muchos de ellos: p. Ruby, Groovy, Jython, Scala (estático, pero tiene la apariencia de un lenguaje dinámico), etc. Mi experiencia es en programación Java SE y EE y quiero ampliar mi conocimiento a uno de estos lenguajes dinámicos para estar mejor preparado para el futuro.

Pero, ¿en qué lenguaje dinámico debería centrarme en el aprendizaje y por qué? ¿Cuál de estos será el idioma preferido en el futuro cercano?

¿Fue útil?

Solución

Aprender Ruby o Python (y Scala en menor medida) significa que tendrás habilidades muy transferibles: podrías usar la versión Java, la versión nativa o la versión .NET (IronRuby / IronPython). Groovy es agradable pero específico de JVM.

Estar "mejor preparado para el futuro" es complicado a menos que preveas escenarios específicos. ¿En qué tipo de cosas quieres trabajar? ¿Tiene un proyecto que podría implementar de manera útil en un lenguaje dinámico? ¿Es lo suficientemente pequeño como para probar un par de ellos, para tener una idea de cómo difieren?

Otros consejos

Scala no es un lenguaje dinámico en absoluto. La inferencia de tipos no significa que no esté tipificada. Sin embargo, es un lenguaje muy agradable que tiene una buena mezcla de POO y programación funcional. El único problema son algunas trampas que encuentras en el camino.

Dado que ya eres un programador Java experimentado, encajará perfectamente en tu conjunto de habilidades. Ahora, si quieres ser dinámico, Ruby o Python son lenguajes increíbles. Hay demanda para ambos idiomas.

Yo personalmente recomendaría Clojure. Clojure es un nuevo lenguaje increíble que está ganando popularidad más rápido que cualquier cosa que haya visto. Clojure es un Lisp potente, simple y rápido implementado en la JVM. Tiene acceso a todas las bibliotecas de Java, por supuesto, al igual que Scala. Ya tiene un libro escrito sobre él, ha madurado hasta la versión 1.0, y tiene tres complementos IDE en desarrollo, con los tres muy utilizables.

Echaría un vistazo a Scala. ¿Por qué?

  1. es un lenguaje JVM, por lo que puede aprovechar sus habilidades actuales de Java
  2. ahora tiene muchas herramientas / soporte IDE (por ejemplo, Intellij manejará proyectos Scala)
  3. tiene un aspecto funcional . Los lenguajes funcionales parecen estar recibiendo mucha tracción en este momento, y creo que es un paradigma que vale la pena aprender para el futuro

Mi punto de vista (completamente subjetivo) es que Scala parece estar recibiendo mucha de la atención que Groovy recibió hace uno o dos años. No estoy tratando de ser polémico aquí, o sugerir que eso lo convierta en un mejor idioma, pero parece ser el nuevo lenguaje JVM de jour .

Como comentario, un lenguaje que tiene algunos atributos dinámicos es F # de Microsoft . Actualmente estoy mirando esto (¡e ignorando mis propios consejos sobre los puntos 1 y 2 anteriores!). Es un lenguaje funcional con objetos, construido en .Net, y está captando mucha atención en este momento.

En la industria del juego, Lua, si eres un diseñador basado en Adobe, Lua también es bueno, si eres un programador integrado, Lua es prácticamente la única solución ligera, pero si estás buscando herramientas de desarrollo web y generales. scripting Python sería más práctico

Me pareció que Groovy es un salto relativamente fácil desde un extenso fondo de Java: es una versión más conveniente de Java. También se integra muy bien con el código Java existente, si necesita hacer ese tipo de cosas.

Recomiendo Python. Tiene una comunidad enorme y tiene una implementación madura (junto con varias prometedoras aún no tan maduras). Perl está tan lejos como he visto perder mucha tracción en comparación con los idiomas más nuevos, presumiblemente debido a su "no intuición". (no, no me hagas empezar con eso).

Cuando hayas realizado uno o dos proyectos en Python, pasa a otra cosa para obtener una perspectiva más amplia. Si ha hecho algunas cosas no triviales en dos idiomas dinámicos diferentes, no tendrá problemas para asimilar cualquier otro idioma.

JScript es bastante útil, y ciertamente es un lenguaje dinámico ...

Si desea un idioma con una buena cantidad de módulos (¡para casi cualquier cosa!), vaya a Perl . Con su CPAN , siempre encontrará lo que busca sin reinventar la rueda.

Bueno, teniendo en cuenta sus antecedentes, recomendaría un lenguaje en el que la semántica sea similar a la que conoce. Por lo tanto, un lenguaje como Scala, Fan, Groovy sería un buen punto de partida. Una vez que domine la semántica básica del uso de un lenguaje funcional (así como comience a amarlo), puede pasar a un lenguaje como Ruby. El tiempo de respuesta para usted de esta manera se reduce, así como el hecho de que puede pasar a ser un programador políglota.

votaría +1 por Groovy (y Grails). Puede escribir con estilo Java o Groovy aún (también puede mezclar ambos y no preocuparse por eso). También puedes usar libs de Java.

Como regla general, evite los idiomas escritos dinámicamente. La pérdida de tiempo de compilación y la naturaleza autodocumentada de la escritura fuerte y estática bien merecen la necesidad de incluir información de tipo en su código fuente. Si la escritura adicional que necesita hacer al escribir su código es un esfuerzo demasiado grande, entonces un lenguaje con inferencia de tipos (Scala, Haskell) podría ser de interés.

Tener información de tipo hace que el código sea mucho más legible, y la legibilidad debería ser su criterio # 1 en la codificación. Es costoso para una persona leer código, cualquier cosa que inhiba la comprensión clara y precisa por parte del lector es algo malo. En los idiomas OO es aún peor, porque siempre estás creando nuevos tipos. Un lector que acaba de familiarizarse se tambaleará porque no conoce los tipos que se están pasando y modificando. En Groovy, por ejemplo, lo siguiente es legal def accountHistoryReport (in, out) Leyendo eso, no tengo idea de qué son in y out . Cuando observa 20 métodos de informe diferentes que se ven así, puede pasar rápidamente a homicida.

Si realmente cree que debe tener una escritura no estática, un lenguaje como Clojure es un buen compromiso. Los lenguajes tipo Lisp se basan en un pequeño conjunto de abstracciones clave y una enorme capacidad en cada una de las abstracciones. Entonces, en Clojure, crearé un mapa (hash) que tenga los atributos de mi objeto. Es un poco reduccionista, pero no tendré que mirar a través de toda la base de código para la implementación de alguna clase sin nombre.

Mi regla de oro es que escribo scripts en lenguajes dinámicos y sistemas en lenguajes compilados y estáticamente escritos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top