2008-12-11 8 views
16

Estoy trabajando en un kit de herramientas (una especie de Live-CD Lisp-in-a-Box) para las personas nuevas en Common Lisp, y quiero asegurarme de que sea ampliamente satisfactorio. ¿Qué te atrae de Lisp? ¿Qué necesita/necesita/necesita para comenzar y mantenerlo interesado?¿Qué te hace querer aprender Common Lisp? ¿Qué quieres de eso?

Lo que tengo hasta ahora: SBCL 10.22, Emacs 22.3, SLIME y LTK agrupados y configurados en un Live CD en Linux que arranca completamente en la memoria RAM.


He publicado el resultado de esto; está disponible en el Thnake website.

Respuesta

1

esto hace:

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Por supuesto también me gustaría aprender más de Python 3.0, Erlang, y F #. Creo que los lenguajes funcionales (por no decir que Python es un lenguaje funcional) brindan una perspectiva diferente. Cuanta más perspectiva tenga, mejores soluciones podrá construir. También se trata de usar las herramientas correctas para el trabajo, pero si al menos no estás familiarizado con algo, quizás nunca pienses que puedes resolver un problema con una herramienta en particular. Supongo que se remonta al viejo dicho de que para un carpintero todo parece un clavo. No quiero estar martillando C# en todo cuando hay mejores soluciones disponibles. Además, los tiempos cambian y las modas hacen con ellos.

6

Mi sugerencia es incluir un servidor HTTP como Hunchentoot y un popular marco web. Sospecho que la mayoría de las personas que quieren aprender Lisp estos días lo hacen por leer a Paul Graham, y queriendo imitar su éxito en la construcción de Viaweb, por lo que poder crear y modificar fácilmente aplicaciones web potentes sería un fuerte punto de venta para su vida DISCOS COMPACTOS.

+0

Buen punto, pero Hunchentoot es un servidor HTTP, no un framework web. ¿Crees que algo así como Weblocks sería una buena opción? – JasonFruit

+0

No tengo mucha experiencia con aplicaciones web en Common Lisp, pero realmente no hay ninguna razón para no incluir tantos marcos de trabajo populares y servidores HTTP como sea posible. Weblocks suena similar al servidor web de PLT, así que creo que sería un buen comienzo, pero que sea muy, muy fácil de poner en marcha. –

+0

Incluiría UnCommon Web (UCW): es un marco web CL interesante. –

9

Incluiría, al menos, cl-ppcre, clx, Hunchentoot y Weblocks.

Supongo que tendría que negociar con los autores respectivos, pero incluir "On Lisp", "Practical Common Lisp" y "Successful Lisp" sería una gran ventaja para el CD.

Lo que sería realmente agradable es usar stumpwm como administrador de ventanas en tu CD en vivo.

+1

Me encantaría usar stumpwm, pero estoy buscando que esto sea fácil para personas de muchos antecedentes; stumpwm es genial, pero idiosincrásico. – JasonFruit

+0

Buena llamada en los libros; Tendré que hablar al menos con Peter Seibel, que creo que es la opción más probable. – JasonFruit

+1

Tal vez podrías al menos dar stumpwm como una opción (utilizo gdm para la pantalla de inicio de sesión, donde puedes elegir tu administrador de ventanas). – Svante

3

Leer Paul Graham hace que quiera aprender Common Lisp. Pero si realmente me siento a intentar aprenderlo, el impulso desaparece.

+1

Entonces, ¿qué es lo que lo desanima? Me gustaría tratar de suavizarlo tanto como sea posible para que la gente tenga una mejor experiencia. – JasonFruit

+0

¡Excelente respuesta !: D – ShreevatsaR

+3

¡La programación es difícil, vamos de compras! –

3

Todo en clbuild (http://common-lisp.net/project/clbuild) debe ser un buen candidato para ser incluido. Por cierto, todos los paquetes en su lista excepto Emacs también son administrados por clbuild. Creo que sería bueno si la colección de proyectos en clbuild pudiera reunir un impulso hacia standard-common-lisp-library-hood.

7

Emacs casi me impidió aprender Common Lisp. Costó un gran esfuerzo atravesarlo. Emacs y SLIME son demasiado para principiantes y nunca serán muy satisfactorios para los principiantes. Si quiero aprender un nuevo lenguaje de programación, quiero que todo lo demás se mantenga fuera de mi camino mientras lo aprendo. La tarea de aprender Lisp es bastante difícil sin tecnicismos añadidos y complicaciones de establecer un entorno. Aislar la variable.

Configure SBCL con rlwrap o un equivalente. rlwrap admite una coincidencia de pares muy básica y búsquedas de historial, e incluso puede completar pestañas. No es tan elegante como SLIME, pero un principiante no necesita SLIME. Un principiante debe poder ejecutar hello-world sin pasar una hora peleando con Emacs. Proporcione Emacs/SLIME como una opción pero no lo requiera.

+2

Veo el punto aquí, pero Emacs es tan frecuente entre los tipos de Lisp y tan perfectamente acoplado al lenguaje que creo que a las personas les molestaría sugerir que aprendan sobre cualquier otra cosa (casi digo "menos"). – JasonFruit

+2

Emacs es frecuente entre Lisp EXPERTS. No principiantes Si alguien estaba aprendiendo C por primera vez, ¿debería el paso uno ser "Instalar Visual Studio y pasar un día aprendiendo cómo usarlo como un profesional"? No, sería "Escribe tu código en un editor de texto simple y compíbalo manualmente de la manera difícil". –

+4

Hogwash. Aprendí Lisp y Emacs simultáneamente, y creo que se refuerzan mutuamente. Emacs/Slime proporciona terminación de símbolos, búsqueda automática de argumentos de función y fácil acceso a la documentación, navegación por código, etc., todo lo cual ayuda tremendamente a ponerme al día. – huaiyuan

4

Lo que realmente me interesaría en Common Lisp es un conjunto moderno de bibliotecas a nivel de .NET o Java, así como también una documentación realmente buena que no es grosera. En términos de software, un buen editor gui a lo largo de las líneas de notepad ++ o jEdit sería bueno. Emacs/vi & los editores basados ​​en texto siempre parecen pintorescos y anticuados para un desarrollo serio.

+2

Heh. Siempre tengo ganas de volver a la edad de piedra cuando tengo que usar cualquier cosa _el menos_ que emacs o vim. – Svante

+2

Cierto, de alguna manera usar vim o emacs parece ser el doble de productivo que usar decir Eclipse ... –

1

Emacs tiene un poco de una curva de aprendizaje, pero es ideal para un desarrollo serio, sin molestos guiones movidos por el mouse en el camino del código (basado en texto).

El modo CUA listo para usar está habilitado en estos días (así que Cx, Cc, Cv funciona "estándar"), y hay un menú con operaciones de archivo como guardar, etc., por lo que no debería tan duro de un slog, si todo está preempaquetado. Pero la preconfiguración del archivo .emacs para garantizar que el modo CUA está habilitado, SLIME no tiene que ser configurado por el usuario, etc. es una necesidad más de más documentación dentro del usuario para las configuraciones de .emacs - enlaces a EmacsWiki, etc. (hrm, si esto está en un CD, es poco probable que el usuario lo configure por sí mismo, ¿no?)

4

Incluya Emacs, por supuesto, pero es posible que desee tener algo más amable.

El entorno de Lisp que encontré más fácil de encontrar era Macintosh Common Lisp, con el editor de FRED (Fred se asemeja a Emacs deliberadamente). Digitool no logró llegar a la era actual de los Mac, pero abrieron muchas de sus cosas a medida que se plegaban. Pruebe www.clozure.com o busque "openmcl" en Google.

Hubo un proyecto para ejecutar el entorno Fred en Openmcl, pero no sé el estado de improviso (no he hecho nada con Lisp en mucho tiempo, y no he estado prestando atención en el envío de correos liza).

Por lo tanto, mis recomendaciones:

Pregunta a Paul Graham si usted puede incluir "En Lisp". Como está regalando una descarga de forma gratuita, las probabilidades son buenas de que dé permiso. (Su otro excelente libro de Lisp, "ANSI Common Lisp", aparentemente todavía se está vendiendo, por lo que es poco probable que te dé permiso allí).

Al menos echa un vistazo a las cosas de MCL para ver si hay algo que puedas encontrar Hazlo más fácil. Emacs es un gran entorno de Lisp, pero es un poco intimidante para el principiante.

No he consultado la documentación de SBCL últimamente. ¿Es bastante legible y amigable para principiantes? Quizás alguien podría escribir algunas instrucciones rápidas sobre cómo comenzar y cómo depurar. Enfatice el uso del mouse al principio, incluso si usa Emacs.

0

Creo que la idea de incluir tutoriales es excelente.

Además de las ya indicadas, no es tanto el libro más fácil para los novatos en Lisp (Una Introducción al Cálculo Simbólico) y varios excelentes sitios web escondidos por ahí en la web que la gente debería conocer.Aquí están:

+0

Me aseguraré de configurar algunos buenos marcadores predeterminados, gracias por la sugerencia. – JasonFruit

0

Por lo que undertand que está haciendo Thnake.

¡Gracias por su gran distribución en vivo!

Lo probé hace un par de días y me pareció bastante impresionante e interesante.

Hay un par de cosas que obviamente carece, como LTK ya que ya ha incluido Common Lisp y Tcl/Tk. Y como existe gtk, puede incluir enlaces y documentación para CL y Python.

También hay una necesidad en Lisp Hyperspec, y la preconfiguración de Slime para usarlo. (Lo mismo para la documentación de Python y Tcl) Puede ser que sea mejor agregar emacs-w3m para una búsqueda de documentación rápida y conveniente.

+0

Después de hablar con Zach Beane y otros, lo estoy reconsiderando: estoy abandonando Python, agregando más bibliotecas, reuniendo algunos materiales de instrucción y lanzándolo con un sitio web adecuado. También voy a cambiarle el nombre a algo menos tonto. Me alegra saber que te gustó y gracias por las ideas. – JasonFruit

0

Definitivamente también debe agregar Vim, configurado con el complemento RainbowParenthsis.

rlwrap para SBCL es una buena idea, y también lo es (require: sb-aclrepl).

Los weblocks deberían venir con cl-prevalence y quizás Elephant/BDB, también.

1

Tengo cierto interés en aprender Lisp, pero no me gusta la mayoría de los recursos disponibles. ¿Qué hay de extender este proyecto a la creación de una especie de "comunidad" responsable de proporcionar tutoriales o algo así, para hacer que Common Lisp sea más popular y fácil de aprender? ¿Idea mala/extraña/inútil?

+0

Buena idea, tipo equivocado. No soy bueno creando "comunidad". – JasonFruit