2010-04-06 24 views
11

estamos considerando Scala para un nuevo proyecto dentro de nuestra empresa. Tenemos algunos Programadores Junior con solo conocimientos de PHP, y tenemos dudas de que puedan manejar Scala. ¿Cuáles son sus opiniones? Algunos dicen: "¡Scala es una bestia complicada!", Algunos dicen: "Es fácil una vez que lo tienes". Tal vez alguien tiene experiencia en el mundo real?Scala para programadores Junior?

+6

¿Lo dudas porque son junior (== menos experiencia), o porque dudan de su potencial (== tal vez la programación no es su mejor opción de carrera a largo plazo)? Tu estrategia para "No sé nada, pero aprendo rápido, ¡vamos!" es muy diferente a, "Waah, me siento algo cómodo con esto, ¿por qué estás tratando de confundirme?". –

+0

No puede manejar esto con un enfoque generalista, debe verificar lo que saben y lo que no, ¿les gusta el paradigma funcional? ¿Cuánto tiempo pasó desde que estuvieron expuestos a algunos? ¿Usaron solo idiomas viejos, obsoletos y ligeramente dañados por el cerebro? – ZJR

Respuesta

1

Mi primer pensamiento fue que Scala será demasiado pesado para ellos, pero supongo que debido a que Scala es un híbrido OO/Imperitave/Functional, uno podría introducirlos en la parte OO/Imperativo de Scala hasta que estén cómodos, pero luego nuevamente, probablemente tengan malos hábitos de PHP en Scala ya que los autores de Scala prefieren el estilo funcional sobre el imperativo.

Por lo tanto, podría funcionar, pero lo haría para un proyecto de investigación, y definitivamente no para un buque insignia.

Editar: Quizás esto debería decirse también: parece que los híbridos funcionales/OO como Scala se están volviendo más populares especialmente debido a cómo los lenguajes funcionales manejan el procesamiento paralelo en lugar de cómo lo conocemos en idiomas como Java. La cantidad de núcleos encontrados en un chip aumenta rápidamente, por lo que esto es importante. Sin embargo, al mencionar PHP, parece que está desarrollando scripts de servidor web donde el enhebrado es menos importante. PHP ni siquiera tiene hilos.

Esto plantea otro punto. ¿Desea desarrollar aplicaciones web de Scala, es decir, Lift? Si es así, entonces tiene una curva de aprendizaje duplicada que también debe considerarse.

0

No lo recomendaría. Mi experiencia de Scala es solo de proyectos homebrew, pero me imagino que el soporte IDE actualmente pésimo, los frecuentes cambios de API y una sintaxis muy flexible (que le permite a uno ahorcarse y a todos los que participan en el proyecto) causaría muchos problemas en un proyecto más grande y más oficial.

+0

Estoy de acuerdo en el sentido de que creo que los problemas no provienen del idioma en sí, sino que provienen de problemas contextuales derivados de que Scala es un lenguaje bastante joven. –

+2

Los IDE no son pésimos (pruebe IDEA9 CE) y el idioma no tiene "frecuentes cambios de API" a menos que esté utilizando las instantáneas 2.8, que obviamente * no se recomiendan * si desea estabilidad. ¡He estado usando 2.7 sin problemas de API en absoluto! –

+0

Los IDEs son pésimos si no puedes darte el lujo de cambiar debido al mal soporte de Linux en IDEA y el hecho de que realmente no quiero empezar a aprender un nuevo IDE solo para Scala, afortunadamente Vim también funciona bien con Scala , pero es molesto tener que compilar manualmente todo el tiempo para verificar que el compilador tenga suficientes pistas para saber lo que debería hacer. Al pasar de 2.6 a 2.8 se han producido muchos cambios y muchos de los ejemplos que se encuentran en línea no especifican en qué versión están disponibles. Me gusta el lenguaje que realmente uso, pero aún no está listo para producción en mi opinión. – ponzao

13

Supongo que Scala podría usarse como un lenguaje para "principiantes". Aunque hay ideas engañosas detrás de esto, no tienes que usarlas/explicarlas al principio. Si explicas OO puro con Scala, diría que es sencillo y fácil de entender. Como Scala reduce muchos gastos indirectos de código de otros idiomas, puede ser incluso más fácil aprender conceptos con Scala que con Java/C++.

Una desventaja importante que veo con Scala como lenguaje para principiantes es la falta de documentación. No lo malinterprete, el documento oficial de Scala es muy bueno y también los pocos libros que están disponibles son bastante útiles para obtener los detalles del idioma, pero esos no han sido escritos para principiantes. Por ejemplo, en Java se encuentran cientos de libros titulados algo así como "Aprendiendo OO con Java", no encontrarás eso para Scala, que puede ser un tope de programa.

Como mencionó Hannes, solo se hacen presentaciones de nuevos idiomas dentro de proyectos de investigación y proyectos no productivos o incluso emblemáticos. Si tienes algunos juniors, eso mejora la situación, toma alguna herramienta interna, siempre quisiste y necesitaste y deja que ellos la creen durante un proyecto de investigación. Esta también es una buena oportunidad para experimentar con diferentes procesos de desarrollo. Y es probable que a sus juniors les guste ser desafiados y les entreguen un buen prototipo y una opinión muy bien probada si Scala puede usarse como un lenguaje para principiantes.

+2

* La programación en Scala * está definitivamente escrita para principiantes. Además, la mayoría de las cosas que aprendes usando Java se pueden aplicar directamente a Scala. De hecho, puede usar todas sus bibliotecas favoritas de Java de forma más o menos exactamente igual. – Apocalisp

7

Creo que la mayoría de las personas que se mudan a Scala son codificadores entusiastas y experimentados. Le sugiero que obtenga experiencia interna con un proyecto de Scala con sus programadores sénior antes de formar una estrategia para asesorar a sus codificadores junior. También sugiero que solo involucre a personas que estén ansiosas por unirse.

4

Lo recomendaría. Pero con la condición de que tenga pautas claras sobre qué características del lenguaje son aceptables para su equipo.Por ejemplo, codificando principalmente en un estilo imperativo (que es familiar para las personas capacitadas en Java), o tal vez limitando el empleo de recurrencia o cierres.

También planifique que las personas de la tercera edad sean mentores de los jóvenes. Esto puede tomar la forma de cualquier combinación de: programación de pares, revisiones de código, sesiones de información, foros de discusión regulares, etc.

La oportunidad que Scala presenta para la codificación mejorada en la JVM es demasiado grande como para dejarla pasar. Cuando sus mayores ingresen, no me sorprendería si encuentran una renovada pasión por el desarrollo. Cuando sus jóvenes ingresen, aprenderán las mejores prácticas de desarrollo de JVM desde el principio.

4

Si opta por esta ruta, quizás le resulte más fácil usar el Scalate framework que uno más tradicional como Lift, ya que permite mezclar HTML con Scala, del mismo modo que PHP.

3

Scala es un lenguaje de programación muy 'normal'. Cualquier programador debería poder aprender este idioma. Las personas que tienen dificultades para aprender Scala en su mayoría tienen experiencia con lenguajes imperativos y están sorprendidos por los conceptos funcionales. Los programadores inexpertos pueden aprenderlo aún más rápido. En mi opinión, no debería haber problema, asignarlo a juniors. Desde el punto de vista de la administración, asignaría a un desarrollador junior y senior como equipo (o más de ambos, dependiendo del tamaño del proyecto).

17

"Mis compañeros de trabajo no entenderán a Scala" al mismo tiempo que exagera su dificultad e insulta a sus compañeros de trabajo.

  • Scala no es tan difícil. Es solo otro lenguaje de programación. Cualquier problema que los programadores junior tengan con Scala será más o menos el mismo problema que tendrían con cualquier otro idioma.

  • Tus compañeros de trabajo son inteligentes. Por supuesto, no los conozco, pero es una apuesta bastante segura a menos que su empresa sea el tipo de organización que contrata personas estúpidas, en cuyo caso, usted tiene problemas mayores.

Dicho esto, en mi empresa tenemos algunos productos básicos desarrollados en Scala, y no encontramos que las personas tienen más problemas con él que Java. El código es generalmente más claro y conciso, más fácil de generalizar y reutilizar, etc.

1

Creo que depende de usted lo que sea más importante para usted. Si desea aprender lo más posible sobre la programación de OO y las cosas estándar, es una mala idea.

Pero lo que realmente les das es la oportunidad de aprender algo realmente genial y único. La bruja puede ser una buena motivación. Scala tiene muchas cosas interesantes. Si puedes manejar Scala puedes manejar muchos otros productos también.

Hable con los programadores (todos ellos) y dígales por qué quiere usar scala. Pregunte si deben motivarse para hacer y aprender algo que no todos pueden hacer y hacer un esfuerzo adicional.

Si van con él!

1

Imagina que hubieras elegido Java y te hubiera preguntado si podrían manejar Java. Si tu respuesta es que podrían, entonces probablemente puedan manejar Scala.

Scala es sólo ligeramente más difícil debido a:

  • Ningún gran soporte IDE. El soporte varía de pobre a bueno.No necesariamente es un problema para un programador de PHP.
  • La documentación no tan rico como Java

Tanto Java y Scala presentan nuevos retos para un programador PHP (JVM, nuevas bibliotecas, lenguaje compilado, con tipos estáticos).

No creo que Scala sea una bestia complicada, pero es necesario que comprenda algunos de los principios sintácticos del azúcar y el diseño, lo que también se aplicaría al aprendizaje de Java.

0

Déles IntelliJ y arrójelos al fondo.

0

Aquí es un blog recientemente me topé:
http://james-iry.blogspot.com/2008/07/java-is-too-academic.html

Esto demuestra que incluso Java puede ser demasiado académico para ser entendido por los programadores que no tienen ninguna experiencia en programación funcional. Por otro lado, Scala permite escribir el código de la "forma imperativa", por lo que puedes evitar todo lo de FP si no lo entiendes. En mi opinión, Scala es mucho más conciso que Java, así que supongo que un "programador junior" debería ser capaz de manejarlo.

1

Sí, si ...

  • decisión estratégica se ha hecho para ir con Scala
  • empresa puede manejar el golpe (tiempo financiera y) que vendrá de la curva de aprendizaje.

No, si ...

  • Sin Senior Java, C# o C++ programadores se pueden poner en el proyecto también
  • No se puede encontrar un programador Scala para actuar como una ventaja
  • Los programadores no tienen la paciencia para aprender Scala o lidiar con un lenguaje donde los Jars (bibliotecas) están dispersos por todos lados, en lugar de en uno o dos paquetes geniales como PHP.

* Nota: si los programadores junior eran C++, C# o Java Software Engineers en lugar de PHP, entonces mi respuesta sería diferente, ¡Adelante!

Cuestiones relacionadas