vale tutorial sirve que programacion pena para inteligencia funciones funcional entornos descargar desarrollo artificial aprender haskell

haskell - tutorial - programacion funcional



¿Por qué debería querer aprender haskell? (8)

Tampoco creo que pueda enchufar fácilmente una parte del código Haskell en el motor del juego.

Si solo quieres escribir motores de juegos 3D, tal vez no tenga mucho sentido aprender Haskell.

Si quieres ser un programador completo capaz de programar en múltiples paradigmas y actualmente solo conoces los lenguajes tipo C, vale la pena echarle un vistazo.

Cada vez que aprendes un nuevo idioma muy diferente, el aprendizaje del siguiente idioma es más fácil porque no solo estás memorizando nueva sintaxis, sino que también estás aprendiendo diferentes formas de pensar acerca de la programación. Si prueba un nuevo idioma y ve alguna característica nueva, lo entenderá más rápidamente si puede relacionarlo con otra función en un idioma que ya conoce. Cuantos más idiomas conozca, es más probable que esta nueva característica sea similar a algo que haya visto anteriormente.

También es útil tener muchas herramientas disponibles en tu caja de herramientas. Algunos problemas se resuelven mejor en un idioma que en otro. Si tiene 5 tipos de idiomas muy diferentes, puede seleccionar el mejor para cada problema. Si solo conoces 2 o 3 idiomas muy similares, algunos problemas serán fáciles de resolver, pero otros pueden ser más difíciles que si usaras un idioma que sea mejor para esa tarea específica.

Posible duplicado:
Haskell vs. programación de procedimientos en el mundo real

Pocas veces oí a gente diciendo cosas como "Todos los programadores deben conocer a Haskell", "No eres un programador si no conoces a Haskell", y así sucesivamente. Sin embargo, no estoy exactamente seguro de si debería molestarme tratando de obtener un breve entendimiento de ese idioma o no. Jugar con el intérprete (para obtener una comprensión intuitiva de los conceptos básicos) llevará al menos unos días (si no semanas), y no estoy exactamente seguro de si el resultado valdrá la pena.

Un poco de historia (para tener una idea de mi conocimiento)
Empecé a programar cuando era un niño (entre 10 o 13 años atrás) con una calculadora programable, pasé a básico, luego al ensamblado no x86 (la multiplicación y división de reimplementación, y la escritura del controlador de mouse auto-modificable fue divertido), pascal, delphi, ahora estoy usando C ++ casi exclusivamente. Conozca mi camino en torno a Unix shell, puede escribir software en python y probablemente en cualquier cosa (si tengo un libro de referencia cercano) que remotamente se parece a C ++ o Pascal (es decir, bloques, control de flujo similar, etc.). La especialización es la programación en 3D y sombreadores. "Peces en el agua" con operaciones de bajo nivel (Asignación de memoria estilo C, punteros), menos cómodo con un enfoque extremadamente OOP (es decir, cuando las clases se hacen por el solo hecho de tener clases). Casi completamente autodidacta. Es decir, definitivamente no es un novato, pero hay áreas en las que podría mejorar.

Entonces ... ¿qué podría ganar estudiando Haskell en este momento? Hasta donde yo sé, este lenguaje no es muy utilizado, por lo que es probable que haya menos bibliotecas con las que interactuar (como con la programación Delphi, puedes hacer programación de DirectX en Delphi, si realmente quieres, pero puedes No escriba 3dsmax / maya plugin con él (bueno, probablemente sea teóricamente posible, pero ciertamente no será fácil)). Tampoco creo que pueda enchufar fácilmente una parte del código Haskell en el motor del juego.

Entonces, ¿qué tipo de conocimiento útil puedo obtener de él?

PD: No compraré el argumento "si aprendes otro idioma, probablemente aprenderás algo que probablemente será útil".


(Seguramente esta es una pregunta duplicada, pero no puedo encontrar una ahora).

Lo aprendes para aprender programación funcional pura, lo que te obliga a hacer muchas cosas de una manera completamente diferente. Obtienes una nueva forma de pensar. Programación sin estado? Programación sin efectos? Todo es flojo? Sistema de tipo loco con tipo de inferencia? ¿Qué demonios son las mónadas? Tu mente será soplada repetidas veces, pero al final saldrás con nuevas perspectivas / técnicas de programación funcional que son difíciles de detectar si no tienes Haskell en toda regla.

El problema con tratar de ser específico, es que tratar de decirle a un no Haskeller lo que aprenderán de Haskell es como tratar de explicar el color "verde" a un hombre ciego.


Aprender un lenguaje funcional será un cambio de lo que está acostumbrado. Entonces sí, probablemente aprendas algo útil;)


Hace unos años, una chica bonita de nuestro departamento decidió estudiar Informática a tiempo parcial. ¡Muchas personas se sorprendieron al descubrir que uno de los cursos introductorios se estaba enseñando usando Haskell como el / el lenguaje de programación! Aunque no tenía experiencia con Haskell, tenía algunos antecedentes en Lisp y otros lenguajes de programación funcional y pude ayudarla con sus ejercicios.

No, no hay un final feliz para esta historia: ella se retiró, se casó con otra persona y no la he visto en mucho tiempo. Pero creo que la anécdota muestra cómo el conocimiento puede ser útil cuando menos lo esperas.

En términos más prácticos: es posible que haya notado que la velocidad de la CPU ha topado con una pared hace algunos años, y ahora la forma más práctica de obtener más rendimiento de las computadoras es instalar múltiples CPU. Ahora sucede que la mayoría, si no todos, los lenguajes de programación que conoce son esencialmente de tarea única y están sujetos al cuello de botella de Von Neumann . Una solución obvia es la programación paralela, pero eso puede ser muy doloroso si las partes paralelas de su programa terminan compartiendo el estado, es decir, la memoria, y este es el caso más frecuente.

Resulta que la Programación Funcional es un estilo que le permite sortear en su mayoría los problemas de programación en paralelo con estado compartido. Dicho de otra manera, es bastante fácil escribir programas en el estilo FP que sean "naturalmente" seguros para subprocesos y adecuados para el procesamiento en paralelo. Dependiendo del idioma, el compilador y el hardware, es posible que encuentre (como hice recientemente) partes de su programa que se ejecutan en paralelo sin haber hecho ninguna codificación explícita para el paralelismo.

Frecuentemente estoy equivocado, pero creo que la Programación Funcional resultará ser uno de los paradigmas de programación más candentes del futuro a medida que la programación paralela se vuelve más importante y más difícil. Puede que Haskell no sea el idioma de elección, mi favorito personal es actualmente Clojure, pero bien valdría la pena echarle un vistazo a uno o más lenguajes de FP.


Hay varias cosas que puedes obtener, principalmente en la forma en que piensas sobre las cosas. Por ejemplo, es interesante notar qué es un lenguaje mínimo. Si pasa por SICP (y los mismos conceptos también se aplican a Haskell), notará que no necesita sintaxis de bucle. No necesita funciones predefinidas que funcionen en estructuras más grandes. Puede definir casi todo lo que necesita si le dan un contra constructor / deconstructor, o una forma de definir uno, y la capacidad de recurrir funciones. Puede definir todo lo demás usted mismo, y es un ejercicio interesante para hacerlo. Y esto es solo la punta del iceberg.

En un nivel más práctico, por ejemplo, hace un par de semanas estaba haciendo tareas en OCaml y gimiendo "¿por qué este lenguaje $% $% # tiene call/cc !?!" Me quedé boquiabierta cuando me di cuenta de lo que estaba pensando: nunca me lo habría perdido si no supiera qué era, y no sabría de qué se trataba si no echaba un vistazo a Scheme, Haskell, Rubí.

Puede encontrar muchos buenos ejemplos en el concurso de ICFP; el que realmente me cautivó fue esta entrada en este concurso . Crearon un nuevo lenguaje dentro de Haskell para resolver su problema.


Los lenguajes funcionales como Haskell son una manera diferente de pensar sobre un problema. Son útiles para aprender y enseñar estructuras de datos y algoritmos, ya que simplifican ese tipo de problemas.

Si usa el STL de C ++, que tiene conceptos funcionales que son similares a Haskell y a otros idiomas, tener una base en Haskell ayudará a entender cómo funciona el STL.

Si usa XSL: T para transformar XML, eso es muy funcional en su diseño.



Yo diría que si es una tarea no lo hagas. De lo contrario, comienza a leer this y deberías ver después de 10 minutos si estás aburrido o si estás agarrado y no puedes dejar de leerlo.