functional-programming lisp clojure scheme sicp

functional programming - ¿Qué idioma usarías para el autoaprendizaje del SICP?



functional-programming lisp (18)

Capté el error para aprender programación funcional de verdad.

Por lo que he escuchado , SICP es mucho más que solo una programación funcional.

Capté el error para aprender programación funcional de verdad. Entonces mi próximo proyecto de autoaprendizaje es trabajar a través de la Estructura e Interpretación de Programas de Computadora . Desafortunadamente, nunca aprendí Lisp, ya que no era un CS major en la universidad.

Si bien el SICP no enfatiza las herramientas para la programación, hacer los ejercicios implica seleccionar un lenguaje similar a Lisp para usar. Parece que alguna implementación de Scheme sería la ruta de menor resistencia. Por otro lado, escuché de otros que han usado Common Lisp y Clojure . Me parece que es más probable que Common Lisp o Clojure se usen en el código de producción y, por lo tanto, un poco mejor para mi currículum. Por cierto, entiendo por completo el argumento de que aprender un idioma vale la pena por sí mismo, pero aprender un idioma que ayude a mi currículum sigue siendo un beneficio. Soy un capitalista y un académico sobre mi aprendizaje.

Si tuviera que estudiar SICP, ¿qué idioma elegiría y por qué? Idealmente, me gustaría utilizar un lenguaje que pueda ejecutarse en la JVM. Ciertamente puedo trabajar con un lenguaje donde REPL funciona con bash y emacs.

ADICIÓN: ¿Alguno de ustedes intentó leer SICP sin usar Scheme? Si es así, ¿cómo fue tu experiencia?


Escucho de otros que han usado Common Lisp y Clojure.

Debe usar el lenguaje que más le motive, pero el 99% de las personas que trabajan a través del SICP van a utilizar Scheme.


pero aprender un idioma que ayude a mi currículum sigue siendo un beneficio.

Debería intentar usar VB6 o COBOL, entonces, ya que hay mucho trabajo de facturación por ahí.


Creo que Clojure se ajusta perfectamente a lo que quieres hacer. Es mucho más funcional que Scheme porque las estructuras de datos son inmutables y puede ser muy útil ya que se ejecuta en la JVM. Pero tenga en cuenta que terminará aprendiendo Scheme de todos modos para poder entender el código en el libro.


El código en el libro es Scheme, por lo que tendrás que leerlo de todos modos; es mejor que lo escribas. ¡Tal vez te guste!


Estoy de acuerdo en que solo debes usar Scheme. Sin embargo, si realmente tienes ganas de usar Common Lisp o Clojure, elegiría este último. Scheme y Clojure son ambos Lisp-1, por lo que el código en el libro será más congruente entre los dos (excepto para las llamadas finales, pero si comprende cómo compensar, estará bien). Common Lisp es un Lisp-2 y probablemente ocultará la belleza de lo que el SICP está tratando de enseñarte.


No es una respuesta directa, pero espero que esta información sea útil para cualquiera que trabaje a través del SICP. Asegúrate de echar un vistazo a los videos aquí:

http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/

Hay 20 episodios de una hora cada uno. Fueron presentados por Abelson y Sussman en 1986 para los empleados de Hewlett Packard. Los puse en mi iPod y los vi mientras viajaba. Fascinante.

Además, el texto completo del libro está disponible en línea en http://mitpress.mit.edu/sicp/


Para obtener un valor real del libro, deberá usar Scheme. Qué implementación de esquema depende de su entorno actual:

Windows - Dr Scheme (esquema PLT) - http://download.plt-scheme.org/ Linux - Si se trata de una cuenta remota, puede considerar MZScheme (PLTScheme) ( http://download.plt-scheme.org/ De lo contrario, querrá usar Dr Scheme si esta es una instancia local de Linux.


Usé lua cuando eché un vistazo a sicp

funciona bastante bien


Usa Scheme Es uno de los lenguajes más simples y fáciles que existen, y pasará muy poco tiempo aprendiendo lo suficiente como para entender el SICP. Una vez que comprenda el SICP, verá cómo se aplican los conceptos en cualquier idioma.


Usa cualquier cosa menos esquema.

Mientras usa algo más que el esquema, se le animará a pensar más, y evitará la tentación de volver a escribir los ejemplos. Es una buena cosa.

Por supuesto, tiene que ser lo suficientemente similar, en sentido lisp-1, por lo que clojure y arc son buenos para ir.


Use DrScheme . Como han dicho otros, Scheme es un lenguaje simple, y DrScheme es un excelente entorno para usarlo, que tiene mucho soporte y documentación de mediocre a bueno.


Advertencia: no he leído todo el libro

Dado que los ejemplos se basan en cierres y continuaciones, sería más útil utilizar un lenguaje con ambas características, de lo contrario, tendría que implementarlas usted mismo.

Por ejemplo, escribir un evaluador metacircular en Scheme aprovecha el hecho de que Scheme proporciona cierres y continuaciones.


Como alguien que contrata gente, le diré que tener Scheme en un currículum es algo bueno. Tener Scheme, SML, Ocaml o Haskell en su currículum sugiere que usted es un programador muy completo y un gran pensador.

Dicho esto, si está intentando una programación funcional, ¿por qué no Haskell? El esquema es multiparadigm, puede ser OO, Funcitonal, basado en Streams o cualquier otra cosa bajo el sol. Esto hace que sea increíble probar nuevos estilos de programación y paradigmas, pero si su objetivo es estrictamente funcional, puede ser un problema. (Usted terminará escribiendo un código no funcional y no se dará cuenta).


Trabajé durante (la mayoría) a principios de este año y usé Common Lisp, simplemente porque no tenía Scheme disponible (no preguntes).

Como ya se ha señalado, Scheme es un lenguaje Lisp-1, mientras que Common Lisp es un Lisp-2. Hay suficientes diferencias entre los idiomas como para significar que ha pensado cuidadosamente sobre la traducción del código en el libro, por lo que me obligó a realmente entender el material.


He usado el esquema para mi autoestudio. La mejor manera de aprender de SICP es hacer todos los ejercicios de manera relegiosa.

He usado Gnu Guile para el esquema.


Creo que Scheme sería la elección natural (ya que es el lenguaje "nativo" del SICP)

Sin embargo, dado que el verdadero valor del SICP proviene de los conceptos más que de la mecánica del lenguaje en particular, creo que sería un valioso ejercicio de aprendizaje intentarlo en cualquier lenguaje tipo Lisp. Personalmente probé algunos de los ejercicios en Clojure y todos se traducen bastante bien.

Para los interesados ​​hay un proyecto en curso para crear una traducción de Clojure de SICP .


Si bien podrías usar algo que no sea Scheme, estarías innecesariamente agregando trabajo extra y posiblemente evitándote entender completamente de qué se trata el libro. SICP fue un libro introductorio de programación. Es un trampolín hacia temas más profundos en informática. Atascarse en ''traducir'' de Scheme a CL o Clojure probablemente oscurecería los puntos más delicados. Sería una pena, porque el SICP es realmente una puerta de entrada para entender de qué se trata realmente la programación.

Learning Scheme es realmente directo (especialmente comparado con CL y Clojure) y, de hecho, tanto el curso introductorio como el libro asumen que el estudiante ya no lo sabe. CL y Clojure llevan un equipaje considerable en relación con la tarea en cuestión.