2010-01-09 31 views
6

pregunta, ¿vale la pena aprender un nuevo idioma como groovy? porque si aprendo groovy, parece que codigo groovy y no java. y qué tan inteligente es eso cuando tengo que ser bueno en Java para codificar aplicaciones de escritorio también en el futuro. entonces, si uso mucho groovy para aplicaciones web, será peor y tendré que volver a empezar para ser bueno en Java cuando codifique las aplicaciones de escritorio, ¿verdad?vale la pena aprender groovy?

así que ¿por qué no me quedo con java y soy bueno en UN idioma en lugar de tener que cambiar entre 2 idiomas y su sintaxis? Causa sería tan confuso ...

+6

personas rutinariamente son fluidos en cinco o seis idiomas, y no hay evidencia de que el aprendizaje de una más es perjudicial para los demás. Otra suposición en su pregunta es que "tendrá que ser bueno en Java para codificar aplicaciones de escritorio". Si es en un par de años más, tal vez la próxima aplicación que codifique ¡ni siquiera estará en Java! –

+0

Supongamos que solo conoce COBOL, y la opción es aprender Java. ¿Hubieras preferido no aprender un nuevo idioma? Si hubiera aprendido un nuevo idioma en el caso COBOL, ¿qué tiene de diferente esta situación para evitarlo? – Ken

+0

Reetiquetado como independiente del idioma, ya que esto realmente no tiene nada que ver con Java o Groovy – skaffman

Respuesta

11

Cita:

¿por qué No te acabo de seguir con java y sea bueno en UN idioma en lugar de teniendo que cambiar entre 2 idiomas y su sintaxis.

Parece una pregunta más general acerca de aprender lenguajes de programación que aprender un nuevo idioma (Groovy) que se ejecuta en la parte superior de Java Virual Machine.

He aquí una pregunta:

Supongamos que está aprendiendo un idioma extranjero porque quiere tener fluidez en varios idiomas para que pueda conversar con muchas personas. Estás aprendiendo alemán en este momento, pero te estás volviendo bueno en eso, pero también quieres aprender español. ¿De repente olvidaras el alemán si comienzas a aprender español? Si realmente te preocupa que lo harás, ¿qué harías?

Si fuera a aprender Groovy, pero no quiere olvidarse de cómo escribir Java, ¿por qué no continuar utilizando ambos idiomas al mismo tiempo?

Una de las cosas sobre ser un programador será aprender a adaptarse a las nuevas tecnologías a medida que se presenten. Es bueno poder aprender nuevos idiomas, ya que será una habilidad que será muy útil en un campo que cambia constantemente.

3

La plataforma Java está comenzando a cambiar lentamente de dirección a una en la que la JVM está dirigida por múltiples lenguajes de origen (un truco .net ha estado presumiendo desde el día 1, pero está tomando Java un tiempo para ponerse al día allí). El formato de archivo de clase Java7 incluso está agregando una nueva instrucción para hacer que estos lenguajes dinámicos funcionen más rápido.

Si desea mantenerse al día, aprender Groovy es una buena forma de hacerlo, sin abandonar toda su inversión en la plataforma Java.

Además, Groovy (y Grails) ahora es mantenido por SpringSource, por lo que su popularidad solo va a aumentar.

+0

La JVM ha admitido varios idiomas desde su inicio y ha habido lenguajes JVM alternativos durante mucho tiempo, p. JRuby ha estado presente desde 2001 y Jython desde 1997 –

+1

No he dicho lo contrario. Pero no han tenido un apoyo explícito de la JVM hasta ahora. Java7 agrega una instrucción de código de bytes 'invokespecial' que permite optimizar mejor los lenguajes dinámicos. – skaffman

+0

Creo que los desarrolladores pudieron crear un nuevo lenguaje en JVM desde el día 1 también. Además, Spring framework también se puede usar en varios idiomas, por ejemplo, Java y Groovy – Jason

7

¿Por qué no codifica también sus aplicaciones de escritorio en Groovy? El hecho de que groovy sea la elección de un framework web (grails) no significa que no puedas usarlo para aplicaciones de escritorio.

De hecho, también es ideal para aplicaciones de escritorio. Es más una cuestión de idiomas dinámicos o estáticos ...

En mi opinión, es bastante bueno tener para cada tarea el idioma correcto en cuestión. Así que adelante y aprender maravilloso - el resultado será que se perderá características Grovy cuando intenta usar java ;-) nuevo

+0

bien, no lo sabía. con el lenguaje estático, ¿significa que debe definir los tipos de datos de las variables? y con un lenguaje dinámico no es necesario? – ajsie

+0

Correcto. En realidad, los términos formales son "estáticamente estáticos" y "tipificados dinámicamente". –

+0

@Carl: si quieres ser pedante, el "tipado dinámico" es una contradicción. – skaffman

4

Diría que en general en este campo siempre es bueno estar aprendiendo.Intento constantemente aprender nuevos conceptos para agregar a mi caja de herramientas, a la vez que me pongo mejor con las cosas centrales que me interesan, como Java. Recientemente compré un libro sobre el aprendizaje de Clojure, otro lenguaje funcional para JVM.

La desventaja de aprender algo sin usarlo todos los días es que algunos detalles no se quedan en la cabeza. Dicho esto, me alegro de haber pasado un tiempo con Clojure; las cosas importantes se estancaron y sé que puedo buscar rápidamente los detalles si es necesario. Es posible que desee adoptar un enfoque similar a Groovy.

2

Antes que nada, soy una pregunta muy subjetiva.

En mi humilde opinión, vale la pena aprender un nuevo idioma, especialmente si varía en los paradigmas (como es el caso de Groovy). Soy bastante joven, así que para mí aprender un nuevo idioma no es una molestia, pero de la forma en que lo veo, si te gusta el idioma, estimarás que la codificación en lenguaje X será rentable, deberías aprenderla.

No dañará su currículum. No hará que te duela la cabeza (mucho). El único problema es, ¿lo usarás? Necesita usar un lenguaje para ser bueno en eso. Si vas a aprenderlo ahora y nunca lo usarás mañana, probablemente no valga la pena aprenderlo.

0

Siempre es bueno aprender un nuevo idioma para ser un mejor programador. Groovy es una opción natural para el programador de Java: fácil de aprender y aún puede usar su conocimiento de Java.

Groovy es un lenguaje dinámico, después de intentar aprender cualquier lenguaje funcional (como Scala). Con esta experiencia verás Java desde diferentes perspectivas. Alguna tarea que fue dolorosa en Java será trivial en Groovy/Scala.

+0

puedes mezclarlos en tu código como javascript y jquery? – ajsie

+0

Sí, ese es el poder. Puedes llamar a groovy desde java y java hasta groovy. Tener más 'herramientas' le da la opción de elegir la herramienta adecuada para un trabajo. – cetnar

+2

@noname: jquery no es un lenguaje de programación, es una "clase" escrita en javascript. no estás mezclando nada cuando usas jquery en javascript. –

1

Aprender algo nuevo no quita algo que ya sabes. Puede que esté un poco oxidado cuando regrese a Java, pero volverá muy rápido.

También--

no soy un hombre de Java, pero creo objetivos Groovy la JVM. Si este es el caso, la programación en Groovy te convertirá en un mejor programador de Java, porque seguirás teniendo como objetivo el mismo marco que Java (el idioma), por lo que seguirás adquiriendo experiencia con las bibliotecas de Java. Conocer las bibliotecas disponibles es lo que realmente importa, no lo bien que conoces cada minuto detalle de un idioma en particular.

38

Groovy es una "copia" de Java simpática, programable y fácil de usar – y no me refiero derogativamente. mientras que Java es un lenguaje para ser compilado, implementado y (a menudo) ejecutado en servidores Enterprise donde el rendimiento importa, Groovy es un lenguaje donde puede crear rápidamente un programa para hacer algo. A menudo, eso es bastante simple, por lo que es un esfuerzo de codificación de una hora o de un día. A menudo, el código solo se ejecuta una vez y luego se descarta. Debido a que Java tiene más repetitivo y formalismo, puede hacer este tipo de programa más rápidamente y, por lo tanto, de manera más eficiente en Groovy.

Sin embargo, sólo para darle un poco de perspectiva, Groovy es un recién llegado pisando fuerte en el césped de varios otros lenguajes de scripting, mejor establecidas:

  • Perl es uno de los abuelos de los lenguajes de script; rara vez se instala un servidor Unix sin Perl, y los scripts Perl son el alma de muchos servidores. Sin embargo, Perl es un lenguaje de solo escritura que se parece al ruido de línea para los no iniciados. Hay más de una forma de hacer todo, por lo que los estilos divergen drásticamente. La codificación de Perl tiende a ser un poco desordenada.

  • Python es un lenguaje de manuscrito más limpio y fresco que Perl, y es hoy en día preferido por muchos como un lenguaje de scripting. Es divertido programar, hace las cosas y porque ha existido durante algunos años, mucha gente lo sabe. Python se encuentra detrás/dentro de una serie de utilidades del sistema Linux.

  • Groovy deja Perl y Python en el polvo cuando (a) el entorno ya utiliza una JVM y/o hay un requisito para utilizar el código de Java existente, incluidas las bibliotecas. Hasta aquí todo bien. Groovy no es tremendamente rápido, sino más rápido que Python. Al ser tipeado dinámicamente, es "divertido" y "fácil" programar de una manera que Java no lo hace.

  • Pero luego vino Scala. Scala es como Java con esteroides. Está tipado estáticamente, por lo que no es tan "divertido" programarlo como Groovy, pero tiene una inferencia de tipo tan a menudo que puedes dejar de lado los tipos y el compilador puede descifrarlos. Scala trabaja muy duro para aprovechar al máximo los tipos; hace los tipos genéricos mucho más a la perfección que Java. Se prescinde de una gran cantidad de texto estándar de Java, por lo que los programas de Scala son típicamente un 30% más cortos que los programas Java similares. Scala se ejecuta en la JVM e interactúa bastante bien con el código de Java. También funciona tan rápido como Java, que la mayoría de los otros idiomas no.

  • Finalmente, en orden histórico, está Clojure. Clojure es un derivado de Lisp, por lo que tiene un estilo de programación muy diferente de los idiomas que de otro modo conocerías, ¡y se quema a través de muchos paréntesis! Pero Clojure se ejecuta en la JVM, es muy compatible con todo el resto de Java, y está tipeado dinámicamente. Puede usarlo como lenguaje de scripting o tratarlo como un lenguaje compilado ... depende de usted. Me resulta divertido programar, y el hecho de que es un lenguaje funcional casi puro te obliga a pensar de nuevas maneras sobre la programación. Al principio te duele la cabeza, pero si sobrevives es un ejercicio muy valioso porque aprendes algunas técnicas que serán más relevantes (creo) en la programación futura.

En resumen, sería probablemente hará bien (poner pelo en el pecho, si se me permite ser tan machista) para aprender una o más de estas lenguas "alternativas"/"script". Puede encontrarlos útiles. Por lo general, cuando hay algo que se piratea rápidamente en mi proyecto, obtengo el trabajo porque todos mis colegas solo conocen Java, y cuando terminan de configurar su marco de clase, ya he terminado.

+1

¡Muchas gracias por los bocetos en miniatura! – larryq

+2

Esta es una de las mejores respuestas que leo. Pulgares hacia arriba. – SaKet

+1

Gran respuesta. La parte sobre el creador de Groovy alabando a Clojure es incorrecta, [la cita fue sobre Scala] (http://macstrac.blogspot.se/2009/04/scala-as-long-term-replacement-for.html): "Honestamente puedo decir que si alguien me hubiera mostrado el libro de Programación en Scala de Martin Odersky, Lex Spoon y Bill Venners en 2003, probablemente nunca hubiera creado Groovy". –

3

Pasar de java a groovy no es mucho trabajo. En ningún lugar cerca de lo que se necesitaría para pasar a un lenguaje menos Java como clojure.

Me gusta mucho las aplicaciones únicas y las secuencias de comandos del código java existente. Lo he usado para analizar datos de llamadas REST y alimentar los datos a una cola JMS. Lo he usado para crear datos de prueba codificados para un compañero de nuestros datos de producción. Para cosas así es increíble.

Si el objetivo es aprender un lenguaje dinámico para agregar a la caja de herramientas, Python y Ruby son buenas opciones. Se ejecutan en JVM y tienen versiones nativas. Ambos están bien soportados en una gran cantidad de plataformas.

Si el objetivo es aprender un lenguaje alternativo de JVM, groovy es una excelente opción. Tanto Scala como Clojure también serían buenas opciones.

Solía ​​adherirme a la regla "aprender un nuevo idioma cada año" de The Pragmatic Programmer, pero eso fue antes de tener hijos. Ahora aprendo un nuevo juguete de construcción cada seis meses.

+3

+1 por "antes de tener hijos" –

-1

Si usted está buscando ayuda en línea, consulte esta web:

1

Me parece que al aprender nuevos idiomas, siempre termino aprendizaje de nuevas maneras pensar en problemas Cada idioma lo guía a resolver problemas de la manera más fácil expresada por el idioma. Aprender nuevos idiomas solo te hace más fuerte porque aprendes nuevas formas de resolver problemas.

Es posible que tenga a se re-orientar las bibliotecas después de un largo tiempo lejos de un idioma, pero incluso entonces no es una gran prueba - sólo las búsquedas de Google más frecuentes, etc.

Los beneficios, sin embargo, valen la pena Hace poco hice una programación funcional por primera vez y realmente me enseñó muchas formas diferentes de pensar sobre ciertas situaciones. Ahora me encuentro usando algunos de los aspectos funcionales de C# y hace que mi código sea mucho más limpio en algunos casos. La conclusión es; Si va a hacer esto para ganarse la vida, va a querer aprender más de un idioma, ¿alguna vez conoció a un mecánico que solo conocía una marca y modelo de automóvil?

0

puede programar aplicacion de escritorio con Griffon cuyo idioma de elección es maravilloso, darle una oportunidad