Me preguntaba qué características únicas puedo aprender de Scheme que me ayudarían a ser un mejor programador.
Tengo mucha experiencia en los idiomas principales, y estoy buscando expandir mis horizontes y aprender sobre aspectos funcionales que faltan en otros idiomas. Estoy familiarizado con los cierres de javascript, las expresiones lambda de C #, y me preguntaba en qué me puedo centrar en lo que falta en otros idiomas. Aparte de la sintaxis de Lisp, me siento como lo que he visto hasta ahora que ya he encontrado en otros idiomas.
¿Qué es exclusivo de Scheme / Lisp que me enseñará algo nuevo?
functional-programming
lisp
scheme
bunglestink
fuente
fuente
Respuestas:
Quizás la característica definitoria más importante de Lisp es "Código como datos". No obtendrá esa experiencia de la misma manera con ningún otro idioma. En C #, el análogo más cercano son los árboles de expresión.
Es esa calidad lo que hace de Lisp un excelente lenguaje para el análisis. También es la cualidad que motivó a Paul Graham a decir de Lisp: "Lo inusual de Lisp, de hecho, la cualidad definitoria de Lisp, es que puede escribirse en sí mismo". Aunque los compiladores de alojamiento propio no son nada nuevo, ningún lenguaje lo hace con tanta elegancia como Lisp.
La metaprogramación (algo en lo que Lisp también se destaca) también es algo que vale la pena aprender.
Batiendo los promedios por Paul Graham
http://www.paulgraham.com/avg.html
fuente
Sí, te ayudará a pensar de forma recursiva. Solo lo estudié (esquema) durante un mes más o menos en una clase de lenguaje de programación y me ayudó a evolucionar mi forma de pensar y resolver problemas de programación.
Siempre es valioso probar otros paradigmas de programación; Luego regresas renovado al mundo OO con nuevas ideas.
No es la sintaxis, sino el razonamiento, es un excelente ejercicio cerebral. Además de la recursividad y el uso interesante de las listas, no hay mucho más en mi humilde opinión, pero vale la pena.
fuente
Continuación :
e intente implementar el operador ambiguo de McCarthy :
fuente
Puedo pensar en lo siguiente:
También creo que los lenguajes lisp deberían ser geniales para definir lenguajes específicos de dominio (DSL). Eso es algo sobre lo que querrás leer si aún no lo sabes.
fuente