Pregunta

A todas las personas que saben cálculo lambda:¿Qué beneficio ha comprado usted, con respecto a la programación?Te recomiendo que las personas aprenden?

¿Fue útil?

Solución

Si desea programar en cualquier lenguaje de programación funcional, es esencial.Quiero decir, ¿qué tan útil es para saber acerca de las máquinas de Turing?Bueno, si usted escribe C, el lenguaje de paradigma está muy cerca de las máquinas de Turing, dispone de un puntero de instrucción y una instrucción en curso, y la máquina se toma alguna acción en el estado actual y, a continuación, ambles, junto a la siguiente instrucción.

En un lenguaje funcional, usted simplemente no puede pensar como que ... que no es el lenguaje de paradigma.Usted tiene que pensar en volver al cálculo lambda, y cómo los términos son evaluados allí.Será mucho más difícil para usted para ser eficaz en un lenguaje funcional si no sabes cálculo lambda.

Otros consejos

El beneficio de cálculo lambda es que es un modelo extremadamente simple de cálculo que es equivalente a una máquina de Turing.Pero mientras que una máquina de Turing es más como el lenguaje ensamblador, cálculo lambda es mas como un lenguaje de alto nivel.Y si aprenden Iglesia codificaciones que le ayudará a aprender la técnica de programación llamado continuación el estilo de pases, lo cual es bastante útil para la implementación de retroceso de búsqueda y otros trucos.

El principal uso del cálculo lambda en la práctica es que es una gran herramienta de laboratorio para el estudio de nuevos lenguajes de programación ideas.Si usted tiene una idea para una nueva característica del lenguaje, puede añadir la nueva característica para el cálculo lambda y usted consigue algo que es expresiva suficiente para el programa de mientras se lo suficientemente simple para estudiar muy a fondo.Este uso es realmente más para los diseñadores de lenguajes y teóricos que para los programadores.

Cálculo Lambda es también muy cool en su propio derecho:como conocer el lenguaje ensamblador, que se profundizar su comprensión de la computación.Es especialmente divertido para programa de una máquina de turing universal en el cálculo lambda.Pero este es un elemento fundamental de las matemáticas, no práctica de programación.

Para ser honesto, el aprendizaje de cálculo lambda antes de programación funcional que se me ha hecho darme cuenta de que los dos son tan ajenos como C es cualquier programación imperativa.

Cálculo Lambda es un lenguaje de programación funcional, una esotérica, una de Turing tarpit si te gusta;accidentalmente es también la primera.

La mayoría de los lenguajes de programación funcional no requiere que usted aprenda cálculo lambda, lo que sea que signifique, cálculo lambda es increíblemente mínima, se puede "aprender" de sus axiomas en menos de una hora.Para conocer los resultados obtenidos a partir de ella, como la fixedpoint teorema, la Iglesia-Rosser Teorema et cetera es simplemente irrelevante para la programación funcional.

También, lambda-abstracciones son a menudo considerada "funciones", no estoy de acuerdo con eso, ellos son los algoritmos, no funciones, una diferencia menor de edad, la mayoría de los 'lenguajes funcionales' el tratamiento de sus funciones más en la forma clásica de las matemáticas hace.

Sin embargo, por ejemplo, de utilizar eficazmente Haskell usted necesita para comprender ciertas sistemas de tipo de, que independientemente de cálculo lambda, el Sistema F tipo de sistema puede ser aplicado a todas las "funciones" y no requiere de lambda abstracciones a todos.Comúnmente en las matemáticas nos dicen que f :R^2 -> R :f (x) = x^2.Podría haber dicho:f (x) = x^2 ::R -> R -> R.De hecho, Haskell viene bastante cerca de esta notación.

Cálculo Lambda es un formalismo teórico, Haskell funciones realidad no hay nada más 'lambda abstracciones' de f :f(x) = x^2 en realidad, lo que hace lambda abstracciones interesante es que nos permite definir cuáles son normalmente vistos como 'constantes' como 'funciones', no funcionales del lenguaje hace que, debido a la enorme sobrecarga computacional.Haskell y por igual, es sólo un restringido forma de Sistema F tipo de sistema de aplicado a funciones como se usan en la clásica de las matemáticas.Funciones en Haskell no son, ciertamente, el anónimo formalmente simbólico de la reducción de los solicitantes como están en el lambda-cálculo.La mayoría de los lenguajes de programación funcional no son simbólicos de reducción basado en la re-escritura de los sistemas.Balbucea son, hasta cierto grado, pero eso es un paradigma en su propia y su lambda de la palabra clave " realmente no satisface a llamar cálculo lambda.

Creo que el uso de cálculo lambda con respecto a la programación, en la práctica es que es un muy mínimo sistema que capta la esencia de la abstracción (o "anónimo", las funciones o los cierres, si se quiere).Aparte de que no creo que generalmente es esencial, excepto cuando se necesita para implementar la abstracción de sí mismo (como Tetha (114646) que se mencionan).

También estoy completamente en desacuerdo con Denis Bueno (114701) ¿quién dice que es esencial para la programación funcional.Es perfectamente posible definir, utilizar o entender un lenguaje funcional sin ningún cálculo lambda en todo.Con el fin de entender la evaluación de los términos en los lenguajes funcionales (que, en mi opinión, algo se contradice con el uso de un lenguaje funcional) lo más probable es que sea mejor de aprender sobre el plazo de reescritura de sistemas.

Estoy de acuerdo con aquellos que dicen que es teóricamente posible aprender programación funcional sin el aprendizaje del cálculo lambda—pero ¿cuál es la ventaja de no el aprendizaje del cálculo lambda?No es como si se necesita una gran inversión de tiempo.

Lo más probable es que le ayudará a entender la programación funcional mejor.Pero incluso si no, es una cosa interesante que vale la pena aprender.El Y-combinator es una cosa de la belleza.

Si sólo desea ser un técnico y escribir programas para hacer las cosas, entonces usted realmente no necesita saber lambda-cálculo, finito de máquinas de estado, pushdown autómatas, expresiones regulares, gramática independiente del contexto, matemáticas discretas, etc.

Pero si tienes curiosidad acerca de los misterios más profundos que subyacen a esta materia, usted puede comenzar a preguntarse cómo estas preguntas pueden ser contestadas.Los conceptos son hermosos y se expanda su imaginación.También creo que, dicho sea de paso, hacer un mejor practicante.

Lo que me enganchó fue Minsky del libro de Cálculo:Finito y lo Infinito de las Máquinas.

El cálculo lambda es un modelo computacional, como la máquina de turing.Por lo tanto, es útil si usted necesita para implementar un determinado evaluador de un lenguaje basado en este modelo, sin embargo, en la práctica, sólo se necesita la idea básica (uh.lugar argumento semánticamente correcta en el cuerpo de una función?) y de eso se trata.

Una posible manera de aprender el cálculo lambda es

http://en.wikipedia.org/wiki/Lambda_Calculus

O, si quieres más, aquí está mi blog dedicado al cálculo lambda y cosas por el estilo

http://weblogs.manas.com.ar/lziliani/

Como toda abstracción de los cálculos, con el cálculo lambda puede crear un modelo de material utilizado en la mayoría de los lenguajes de programación, como la tipificación.Para más información sobre esto, uno de los mejores libros con usos prácticos de cálculo lambda en este sentido es

http://www.amazon.com/Types-Programming-Languages-Benjamin-Pierce/dp/0262162091/ref=sr_1_1?ie=UTF8&s=books&qid=1222088714&sr=8-1

He encontrado que el cálculo Lambda fue útil para entender cómo la programación funcional trabajado en un nivel más profundo.Especialmente cómo implementar los lenguajes funcionales.

Se ha hecho más fácil para mí para entender los conceptos avanzados como tipo de sistemas y evaluaciones de estrategias (por ejemplo,llamar por su nombre frente a la llamada por valor).

No creo que uno necesita saber nada acerca de la Lambda cálculo para el uso funcional básica de las técnicas de programación.Sin embargo la comprensión del cálculo lambda es más fácil de aprender avanzados de teoría de la programación.

También me gustaría mencionar que si usted está haciendo cualquier cosa en el área de la PNL, cálculo lambda es la base de un enorme cuerpo de trabajo en la composición semántica.

Los beneficios para mí es más compacta sinérgico de programación.Cosas tiende a fluir de forma horizontal más que vertical.Además es muy útil para la creación de prototipos algoritmos sencillos.No sé si estoy utilizando al máximo de su potencial, pero creo que es muy útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top