Contenidos
Aprende haskell por el bien de todos
aprenderte un haskell pdf
He leído algunas preguntas como Scala vs Haskell que discuten los méritos de ambos lenguajes o cuál aprender, pero ya sé que me gustaría aprender Scala. Fui programador de Java en la universidad y ahora uso principalmente PHP.
Me pregunto si sería una buena idea aprender Haskell como introducción a la programación funcional, ya que es puramente funcional, por lo que lo aprendería adecuadamente en lugar de utilizar casualmente trozos de funcional en Scala sin saber por qué.
También me gustaría usar Haskell para proyectos personales, etc., ya que tiene una pinta estupenda, pero no veo muchas aplicaciones en el mundo real, parece que se usa más para cosas académicas, de ahí que quiera aprenderlo para obtener la comprensión funcional y luego pasar a Scala.
Haskell es conceptualmente un lenguaje mucho más simple que Scala, y si tu objetivo es aprender a programar funcionalmente, no puedes dejar de hacerlo si empiezas con Haskell. Por su diseño, Scala admite una especie de “modo heredado” de codificación en el que no tienes que cambiar demasiado tus hábitos de Java (o PHP) si no quieres. Creo que se trata de una decisión estratégica -y buena- destinada a aumentar la adopción entre los incondicionales de Java.
haskell programming from first principlesbook por christoph allen y julie moronuki
Siempre se aceptan solicitudes de extracción para cambios y contenido adicional. Este es un documento vivo. La única manera de que este documento se mantenga actualizado es a través de la amabilidad de los lectores como tú y de los parches y pull requests de la comunidad en Github.
En su corazón, Haskell es un lenguaje de programación perezoso, funcional y de tipado estático con características avanzadas del sistema de tipos como el polimorfismo paramétrico de rango superior, efectos monádicos, tipos de datos algebraicos generalizados, polimorfismo ad-hoc a través de clases de tipos, familias de tipos asociadas y más. Como lenguaje de programación, Haskell empuja las fronteras del diseño de lenguajes de programación más que cualquier otro lenguaje de propósito general, sin dejar de ser práctico para el uso diario.
Originalmente, Haskell surgió de la investigación académica. Diseñado como un dialecto de ML, se inspiró inicialmente en un lenguaje más antiguo llamado Miranda. A principios de los años 90, un grupo de académicos formó el comité GHC para tratar de construir un vehículo de investigación para los lenguajes de programación perezosos que sustituyera a Miranda. Este era un tema de investigación particularmente en boga en ese momento y, como resultado, el comité atrajo a varias personas de talento que iniciaron el lenguaje y, en última instancia, sentaron las bases del Haskell moderno.
programación en haskell desde los primeros principios
Como primer lenguaje de programación, decidí aprender Haskell. Soy estudiante de filosofía analítica, y Haskell me permitió crear rápida y correctamente programas de interés, por ejemplo, transductores para el análisis sintáctico del lenguaje natural, demostradores de teoremas e intérpretes. Aunque sólo llevo dos meses y medio programando, la semántica y la sintaxis de Haskell me resultaron mucho más fáciles de aprender que los lenguajes imperativos más tradicionales, y me siento cómodo (ahora) con la mayoría de sus construcciones.
Sin embargo, programar en Haskell es como una brujería, y me gustaría ampliar mis conocimientos de programación. Me gustaría elegir un nuevo lenguaje de programación para aprender, pero no tengo suficiente tiempo para coger un lenguaje arbitrario, dejarlo y repetir. Así que pensé en plantear la pregunta aquí, junto con varias estipulaciones sobre el tipo de lenguaje que estoy buscando. Algunas son subjetivas, otras pretenden facilitar la transición desde Haskell.
1) Varias respuestas indicaron que un lenguaje fuerte, tipado estáticamente y que enfatice la recursión significa otro lenguaje funcional. Aunque quiero seguir trabajando fuertemente con Haskell, camccann y larsmans señalaron correctamente que otro lenguaje de este tipo “facilitaría demasiado la transición”. Estos comentarios han sido muy útiles, ¡porque no pretendo escribir Haskell en Caml! De los asistentes de pruebas, Coq y Agda parecen interesantes. En particular, Coq proporcionaría una sólida introducción a la lógica constructiva y a la teoría formal de tipos. He pasado un poco de tiempo con la lógica modal y de predicados de primer orden (Mendellsohn, Enderton, algo de Hinman), así que probablemente me divertiría mucho con Coq.
tutorial de haskell
Sin embargo, no estoy exactamente seguro de si debería molestarme en intentar conseguir una breve comprensión de ese lenguaje o no. Jugar con el intérprete (para conseguir una comprensión intuitiva de los fundamentos) me llevará al menos unos días (si no semanas), y no estoy exactamente seguro de si el resultado valdrá la pena.
Empecé a programar de niño (hace entre 10 y 13 años) con una calculadora programable, pasé a basic, luego a ensamblador no x86 (reimplementar la multiplicación y la división, y escribir un controlador de ratón auto-modificable fue divertido), pascal, delphi, y ahora estoy usando C++ casi exclusivamente. Conozco el shell de unix, puedo escribir software en python y probablemente en cualquier cosa (si tengo un libro de referencia cerca) que se parezca remotamente a C++ o Pascal (es decir, bloques, control de flujo similar, etc). La especialización es la programación 3D y los shaders. “Pescado en el agua” con operaciones de bajo nivel (asignación de memoria estilo C, punteros), menos cómodo con el enfoque extremadamente OOP (es decir, cuando las clases se hacen por tener clases). Casi completamente autodidacta. Es decir, definitivamente no soy un novato, pero hay áreas en las que podría mejorar.