Pregunta

Estoy muy intrigado por Gambit Scheme, en particular, por su amplia gama de plataformas soportadas, y su capacidad para poner el código C directamente en su fuente Esquema cuando sea necesario. Dicho esto, es un esquema, que tiene menos "pilas incluidas" en comparación con Common Lisp. Algunas personas, como la codificación de un montón de cosas a partir de cero, (también denominado vigorosa Yak-afeitar), pero no a mí!

Esto me lleva a mis dos preguntas, dirigidas a las personas que han utilizado tanto Gambito y un poco de sabor de Common Lisp:

1) ¿Qué eficacia tiene un mejor acceso a las bibliotecas? Esquema tiene un menor número de bibliotecas que Common Lisp. Sin embargo, Gambit Scheme tiene acceso más suave en C / C ++ de código y bibliotecas, que superan en número a las bibliotecas de Common Lisp. En su opinión, ¿la suavidad de FFI de Gambito compensan su falta de bibliotecas nativas?

2) ¿De qué sistemas de objetos de Scheme (por ejemplo TinyCLOS, Meroon) en comparación con CLOS de Common Lisp? Si has encontrado que carecen de ellos, ¿qué característica (s) ¿Lo que más extrañas? Por último, lo importante es un sistema de objetos en Lisp / Scheme en el primer lugar? He oído hablar de empresas basado en Lisp enteras (por ejemplo ITA Software) no percepción CLOS por completo. Son objetos que realmente opcional en Lisp / Scheme? Me temo que si no tiene un sistema Gambit objeto bueno, es posible que se pierda ellos (mi fondo de programación es puramente orientado a objetos).

Gracias para ayudar a un convertido aspirante de C ++ / Python,

- Matt

PD: Alguien con más de 1500 representante, ¿podría crear una etiqueta de "Gambit"? :!) Gracias Jonas

¿Fue útil?

Solución

1) No he utilizado Gambit Scheme, así que no puedo realmente decir la suavidad de la C / C ++ es la integración. Pero todos Lisps comunes que he utilizado tienen completamente funcional C FFI: s. Por lo que la disponibilidad de bibliotecas de C es el mismo. Se necesita un poco de trabajo para integrar, pero supongo que este es el caso con Gambit Scheme también. Después de todo, Lisp y C son diferentes idiomas ..? Pero tal vez usted tiene una experiencia diferente, me gustaría conocer más en ese caso.

Usted puede estar interesado en Quicklisp , una muy buena nuevo proyecto Common Lisp - que hace que sea muy fácil instalar una gran cantidad de bibliotecas de calidad.

2) C ++ y Python están diseñados para uso OOP y clases como los medios típicos de estructurar los datos de encapsulación y. CLOS no tiene esta ambición en absoluto. En cambio, proporciona funciones genéricas que pueden ser especializadas para determinados tipos de argumentos - no necesariamente clases. Básicamente, esto permite programación orientada a objetos, pero en Common Lisp, POO es una herramienta de gran utilidad en lugar de algo fundamental para hacer las cosas.

Creo CLOS es mucho más bien diseñado y flexible que el C ++ modelo de objetos -. TinyCLOS no debería ser diferente en ese aspecto

Otros consejos

Claro régimen en su conjunto tiene un menor número de bibliotecas en el estándar definido, pero cualquier aplicación esquema dado por lo general se basa en que la norma para incluir más "pilas incluidas" tipo de funciones.

Gambit, por ejemplo, utiliza el nieve sistema de paquetes que le dará el acceso a varias bibliotecas de soporte.

Otros Esquemas les fue aún mejor, tener acceso a más (o mejores) bibliotecas de soporte. Tanto Raqueta (con planeta ) y pollo (con huevos ) inmediatamente vienen a la mente.

Dicho esto, el Common Lisp es muy rica y también un gran número de bibliotecas interesantes y útiles son un simple asdf-instalación de distancia.

En cuanto a sistemas de objetos de Scheme, personalmente me inclino a favor de pollo Esquema y he tomado para favorecer cooperativas. Dicho esto, no hay absolutamente nada de malo en TinyCLOS. De cualquier serviría bien y realmente no encontrar nada a faltar. Aunque esta última afirmación podría tener más que ver con el hecho de que no tienden a depender de una gran cantidad de objetos orientados-ismos al escribir Esquema. Ambos sistemas en mi experiencia tienden a superficie cuando quiero escribir "protocolos" y luego tener una forma de especializarse en el protocolo, si eso tiene sentido.

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