2009-07-22 19 views
11

He estado interesado en programar toda mi vida y durante los últimos 6 años he trabajado casi exclusivamente con Java. Acabo de terminar mis estudios universitarios y tengo un trabajo como desarrollador de Java para una empresa.Programación funcional aplicada

Todos estos años la programación ha sido un hobby y un pasatiempo favorito, pero esto tuvo un efecto ligeramente negativo en el sentido de que crecí tan acostumbrado a Java que nunca me aventuré más allá como lenguaje de programación. Intenté expandir mi conocimiento de las cosas aprendiendo expresiones regulares, SQL y estudié un poco de XML, pero nunca pude involucrarme lo suficiente con un nuevo idioma para aprender a usarlo correctamente porque todos se parecen tanto en su núcleo. , encontré la curva de aprendizaje de cada idioma nuevo irritante. Sentí que tenía que pasar por todo el proceso para terminar bien si comencé porque sentía que otros idiomas imperativos no tenían nada más que ofrecerme (sé que esta afirmación puede comenzar una pelea, no es mi intención).

Por lo tanto, decidí en un momento explorar el mágico mundo de la programación funcional. Empecé a leer un libro sobre Haskel y lo encontré realmente interesante desde el punto de vista académico (me especialicé en Matemáticas) pero no pude encontrar aplicaciones prácticas para que me ayudara a aprender el idioma.

Así que ahora que Java es la parte principal de mi día, ya que me pagan para codificar (y lo disfruto tanto como lo hice cuando era simplemente un hobby) sentí la necesidad de ampliar mis horizontes y nuevamente la programación funcional parece una buena idea.

Pensé que podría comenzar con Scala ya que soy alfabetizado en Java (hacer la transición más fácil y ser más reutilizable ya que pueden "hablar" entre ellos) y entonces mi pregunta es: En su experiencia, ¿aprender un lenguaje funcional? "tener sentido"? ¿Existen aplicaciones de la vida real donde conocer este paradigma puede ser útil? No solo para entretenimiento personal sino también ¿sería esto un "profesional" en la industria?

+2

Si quería aprender un lenguaje funcional que se ejecuta en la JVM y puede "hablar" con Java, ¿por qué no utilizar Clojure? Está más cerca de Lisp y creo que Lisp es un excelente ejemplo de lo que es un lenguaje funcional. Aunque Scala y Clojure admiten programación funcional, cuando pienso en programación funcional en JVM, pienso en Clojure. –

Respuesta

7

Aprender un lenguaje funcional es una gran ventaja, independientemente de si lo usa alguna vez o no en su trabajo diario. Tenga en cuenta lo siguiente:

  1. Una de las mayores recomendaciones para una programación simultánea exitosa es evitar el estado de mutación en los objetos roscados siempre que sea posible. La programación funcional te enseña cómo hacer esto.
  2. La mayoría de los programadores funcionales, una vez que superan la curva de aprendizaje no insustancial, afirman que sus técnicas los hacen mucho más productivos de lo que pueden ser en los lenguajes imperativos estándar. Su código es más libre de errores, y una fracción del tamaño como el de otros idiomas. Piensa en el aumento de productividad que obtuviste cuando finalmente entendiste las expresiones regulares. Ahora ponlo con esteroides. Eso es lo que FP se puede sentir.
  3. Las técnicas funcionales se están convirtiendo rápidamente en una programación imperativa. Piensa en cierres en C# y Javascript, y pronto (quizás, si tenemos suerte) en Java. Es muy probable que los dos mundos pronto se unan.
  4. Finalmente, en entrevistas de trabajo, conocer un lenguaje funcional lo ayudará a sobresalir de su clon J2EE/.NET promedio. Te marca como un emprendedor, un aprendiz disciplinado y un apasionado programador, ya sea que seas o no parte de estas cosas. Simplemente no te conviertas en otro fanático de Scala, regañando a tu futuro jefe sobre cómo se está perdiendo las mejores técnicas de programación desde ... entiendes la idea. Nunca es bueno insultar a un posible empleador.

Para mí, estudiar Haskell ha hecho que la programación sea mucho más divertida de lo que solía ser. Puede hacer lo mismo por ti también. ¡Buena suerte!

1

Aprender un lenguaje funcional definitivamente tiene sentido. Como dice Eric Raymond, si aprendes un lenguaje funcional, te convertirá en un mejor programador en el idioma que elijas.

Desde una perspectiva industrial, si puede escribir un buen código en un lenguaje funcional como Haskell o Objective Caml, de repente tendrá una gran demanda de un número muy reducido de posiciones. No está claro si una persona sensata lo consideraría un 'profesional', pero ciertamente hay algunas compañías muy interesantes que tienen vacantes que son solo para programadores funcionales.

8

En mi opinión, el aprendizaje de la programación funcional no solo es una buena idea porque te convierte en un mejor programador (creo que estoy de acuerdo, por supuesto) pero porque parece que será muy popular en un futuro próximo.

Muchos "gurús" dicen que será la única forma de mantener viva la ley de Moore. La velocidad del reloj de la computadora ha llegado a la cima y la única forma de mejorar la velocidad de los procesadores será agregar más y más núcleos. En este escenario, la programación funcional se vuelve práctica porque en esos idiomas los datos son inmutables y eso los hace muy fáciles de paralelizar (se puede hacer automáticamente de hecho).

Es posible que desee echar un vistazo a las siguientes referencias

Buff, espero que no esté demasiado aburrido, ;-)

+0

Una idea intrigante, gracias. –

1

Sí, tiene mucho sentido, y es inmediatamente útil en algunas tareas comunes que puede encontrar en la producción (incluso si las escribe en Java). Por ejemplo, si alguna vez necesita escribir un analizador (para una DSL, por ejemplo), encontrará que el uso de técnicas funcionales para hacerlo conduce a un código mucho más limpio y conciso.

2

La programación funcional ha estado haciendo incursiones en el sector financiero. Lo cual no es realmente tan sorprendente, si se tiene en cuenta que los analistas financieros han estado "programando" en Excel durante años, y eso es esencialmente un paradigma funcional (más precisamente, reactivo funcional).

Así que, sí, saber que la programación funcional puede abrir algunas puertas solo OO no puede, y tales trabajos pueden ser muy interesantes.

Hablando estrictamente como programador de Java, aprenderá las técnicas que puede emplear en Java en su día a día (aunque querrá una mejor biblioteca de colecciones).Técnicas que disminuirán la cantidad de errores en lo que codifica, facilitará el multitarea y la multitarea, y acercará su código a las reglas de negocio que está implementando, más que la mecánica de su implementación.

Ahora, hay otras razones para aprender Scala en particular. Los anteriores, sin embargo, son mis razones por las que querrías aprender programación funcional.

Cuestiones relacionadas