2010-10-26 16 views
15

Estoy en mi segundo año de mi especialización en CS, y solo he tenido cursos en C (primer curso y luego en un curso de estructuras de datos polimórficos), C++ (enfoque OOP), ensamblado de MIPS y un curso de compilación. Trabajé en WinForms y C# durante el verano. Trabajé con Little Schemer y estoy realmente interesado en aprender algún tipo de LISP.¿Qué tan viable es emacs LISP además de editar emacs?

Emacs es mi editor de elección - Emacs LISP debería ser un gran lugar para comenzar.

Además de personalizar emacs, ¿en qué otro lugar podría usar emacs LISP? Crear un ejecutable a partir de un código elisp parece casi imposible según link text. ¿Qué otras limitaciones hay?

¿Debo aprender Scheme o Common Lisp?

+2

De posible interés podría ser esta pregunta relacionada, que tiene respuestas que debaten los pros/contras de Emacs lisp y el ceceo común. http://stackoverflow.com/questions/3840443/how-to-go-about-learning-common-lisp-and-emacs-lisp –

+0

No importa. Como especialista en CS, debes aprender a aprender. Aprender alguna forma de Lisp es genial. Cuál elegir no importa en realidad. Es fácil trasladar lo que aprende de uno a otro. – Stefan

Respuesta

11

Emacs es un editor de texto. Emacs Lisp es, en el fondo, un lenguaje de edición de texto.

Pinnacles of elisp today - IMO - son ERC, el cliente de emacs IRC, y org-mode, un muy buen sistema de organización. También hay un cliente de correo electrónico para emacs.

Así que para crear complementos de edición de texto, no creo que puedas vencer a elisp/emacs.

Para el desarrollo de aplicaciones autónomo, Common Lisp es probablemente la mejor opción. Estoy a favor de la implementación de CLISP, pero SBCL también es muy popular. Hay una gran cantidad de implementaciones de Lisp. Alguien bromeó una vez recientemente que hay más compiladores Lisp que empresas que usan Lisp. : -o

+0

SBCL parece ser el más popular en estos días, por ejemplo, la encuesta reciente de Xach (que incluía compiladores tanto gratuitos como comerciales) vio más del 80% usando SBCL. – Ken

4

Esto es por supuesto subjetiva, pero creo aprendiendo Common Lisp o (estándar) Esquema general es más útil, sólo por el simple hecho de que entonces no se limitará a un compilador. Es difícil prever todo lo que puede querer hacer con su código, entonces, ¿por qué bloquearlo en una sola implementación?

3

Emacs Lisp es más un lenguaje de scripting que es específico para el entorno de Emacs, útil para saber si quiere competir con Stallman en Emacs o si desea escribir extensiones.

Common Lisp es el estándar de facto para Lisp. Scheme es más pedagógico, principalmente debido a su asociación con la famosa clase y libro MIT (SICP), aunque es poderoso por sí mismo.

Sin embargo, son diferentes. En cierto sentido, Scheme es uno de los lenguajes informáticos más pequeños que existen (en términos de la biblioteca estándar). La definición del idioma es de unas seis páginas. Common Lisp es uno de los lenguajes de computadora más grandes que existen.

También hay ejemplos más interesantes. Hace unos años estaba jugando con un dialecto de Lisp que tenía soporte para el código de C y Python en línea, así como la importación y el uso de objetos C y Python y funciones de llamada directamente desde ellos. Sin embargo, parece haberse desvanecido en la oscuridad ya que no puedo encontrar una referencia en Google.

5

Como han dicho otros, Emacs lisp contiene muchas primitivas para crear un editor de texto.

Dicho esto, sigue siendo ceceo, y sentirse cómodo con lisp (Emacs, común o esquema) es casi el mismo en todos.

Puede usar el common lisp package para obtener acceso a la mayoría de las macros de lisp comunes si desea usarlas.

Puede usar Emacs lisp para escribir scripts de shell (consulte this question), si eso le interesa. El manejo del proceso inferior es útil si desea conectarse a otros procesos en ejecución (consulte comint).

Busque un proyecto en el que desee trabajar, y luego deje que su decisión fluya de eso. Si Emacs lisp se ajusta bien, úselo, si el lisp común funciona bien, úselo.

3

Recomendaría el esquema de pollo (http://www.call-cc.org) si estás interesado en aprender algo de Lisp. Tiene una documentación muy buena, está desarrollada activamente, funciona en una variedad de plataformas y tiene un gran sistema de extensión llamado 'huevos' que contiene muchas bibliotecas para la codificación de actaul que el esquema no especifica directamente.

Por otro lado, emacs es un excelente entorno de desarrollo para el aprendizaje de emacs lisp, que es muy útil para la creación de scripts y (obviamente) la personalización de emacs. Tener documentación para funciones y variables solo una C-h f, C-h v y C-h A hace que el desarrollo sea mucho más fácil; una vez que aprendes algunas de las convenciones de nombres más oscuros que ha creado elisp a lo largo de los años.

4

Parece que está buscando learn a lisp. Para ese esquema a menudo se recomienda, y dices que estás leyendo The Little Schemer.

PLT Racket que anteriormente era PLT Scheme es un muy buen esquema de desarrollo y entorno de aprendizaje. El enfoque principal original de PLT Scheme fue didáctico, el cambio de nombre de Scheme a Racket es un juego de palabras malo pero pretende indicar que el sistema también es maduro y suficiente para el uso productivo del "mundo real".