clojure - Lisp en el mundo real
scheme common-lisp (30)
Experimenté con Lisp (en realidad Scheme) y descubrí que es un lenguaje muy bonito del que me interesa aprender más. Sin embargo, parece que Lisp nunca se usa en proyectos serios, y no lo he visto como una habilidad deseada en ninguna publicación de trabajo. Me interesa escuchar a cualquiera que haya usado Lisp o lo haya visto utilizado en el "mundo real", o quién sabe si se considera un lenguaje puramente académico.
Si comenzara mi propio gran proyecto de software ahora, tomaría la decisión de mi idioma de acuerdo con los criterios anteriores. Claro, me encanta Lisp, CLOS es impresionante, rocas de alcance léxico reales, las macros Lisp son geniales (cuando se usan según las indicaciones), y personalmente me gusta mucho la sintaxis Lisp. [...] Pero tomaría mucho, o requeriría circunstancias especiales, convencerme de elegir Lisp para un importante proyecto de software, si estuviera a cargo de hacer la elección. - Dan Weinreb
¿Cuenta el elisp de Emacs? Ese es el uso más "real" con el que estoy familiarizado (aunque tampoco estoy seguro de que Emacs cuente como "mundo real").
Algunos más recientes:
- Thanandar, un juego de navegador alemán: http://www.thanandar.de/
- Aula Polska, una comunidad de empresarios polacos: http://www.aulapolska.pl/
- LAMsight, una aplicación de encuesta médica: https://www.lamsight.org/
- Wigflip, un patio de recreo de tonta gfx: http://wigflip.com/ :)
- Clutu, crucigramas multiplayer AJAX: http://www.clutu.com/
Los tres primeros fueron escritos usando Weblocks, un marco web de CL. Wigflip y Clutu usan Hunchentoot puro.
¡Ahora codifica! :)
Bueno, no es convencional, pero uso lisp para la mayor parte de mi código de investigación que sea manejable. Es de lejos el mejor lenguaje que he encontrado para el equilibrio entre el dinamismo y la expresividad sin dejar de generar un rendimiento decente para los números, etc.
Busque ACL2 . Es un motor de lógica formal basado en lisp que se ha utilizado para varios proyectos del "mundo real", como los métodos formales de seguridad del software y las pruebas de corrección del hardware de punto flotante.
Creo que Autocad tiene extensiones que usan Lisp para extender el producto. Ver AutoLISP .
El Telescopio Espacial Hubble está programado utilizando herramientas de planificación Lisp. El transbordador espacial era. El telescopio de Webb será. La compañía que escribo Lisp analiza miles de millones de dólares en reclamos de seguro de salud y ha estado creciendo a ~ 30% por año, incluso durante la recesión. Hemos sido comprados por una gran compañía, y uno de nuestros programadores combinó (en realidad mejoró) el rendimiento del software (de la gran compañía) para analizar las reclamaciones de Medicare, empezando desde cero, solo, en un año. (gran compañía) ''s código, no en Lisp, tomó 6 años y varios programadores. El problema, en lo que se refiere a la carrera, es que muchos escuchan el twaddle sobre "muchos paréntesis tontos e irritantes", y así sucesivamente. La mayoría de los gerentes no "entienden" y preferirían tener un proyecto en un idioma lo suficientemente familiar como para que puedan microgestionar. Piensan "Lisp = AI" y ni siquiera quieren considerar la posibilidad de que sea un buen lenguaje de propósito general. Simplemente tapan sus orejas. No hay herramientas pulidas para hacer sitios web amigables con M $ o clustering o pipelining de aplicaciones Java existentes, y eso es el 90% de lo que le importa a TI en estos días de crecimiento por adquisición. Podría seguir, pero eso me amargaría. :)
El lenguaje de programación Scheme se utiliza como un lenguaje de scripting por FLUENT Flow Modeling Software (dinámica de fluidos computacional, CFD).
El sistema de plug-in de GIMP se basa en Scheme, creo. No sé si esto es completamente "mundo real", pero parece ser una aplicación práctica de Lisp, al menos.
El software ITA usa una buena cantidad de CL.
Franz, Inc. proporciona una lista inagotable de historias de éxito en su sitio web. Sin embargo:
No asuma que Lisp solo es útil para animación y gráficos, inteligencia artificial, bioinformática, B2B y comercio electrónico, minería de datos, aplicaciones EDA / semiconductores, sistemas expertos, finanzas, agentes inteligentes, gestión del conocimiento, CAD mecánico, modelado y simulación. Lenguaje natural, Optimización, Investigación, Análisis de riesgos, Programación, Telecomunicaciones y Autoría web simplemente porque estas son las únicas cosas que sucedieron en la lista. - Kent Pitman
GNU Make es extensible con esquema. Un caso para la programación del mundo real :)
https://www.gnu.org/software/make/manual/html_node/Guile-Integration.html
Google App Inventor está escrito en Scheme
Hay muchas empresas, proyectos y productos que usan Lisp en una variedad de roles: he trabajado para varios de ellos.
Hay dos puntos relevantes:
es posible que nunca sepa que su última pieza de electrónica de consumo se creó con, o incluso se programó en, Common Lisp, o que algún servicio que utiliza es alimentado por un servidor Lisp. Sería incorrecto concluir que Lisp "nunca se usó".
... y, como tantos dominios, esos trabajos nunca aparecieron en Monster.com. El hecho de que nunca haya visto una oferta de empleo no significa que no haya oportunidades requeridas por Lisp o herramientas adecuadas para el trabajo.
Lejos de la lista de agotados en http://www.franz.com/success/all_customer_apps.lhtml
Lisp intentó el salto a la velocidad de la luz a principios de los 80. Antes de que existieran las PC, había "Lisp Machines" producidas comercialmente, que se parecen mucho a las estaciones de trabajo modernas, pero que se veían "hasta abajo". El hardware de Lisp eventualmente perdió a Intel (al igual que todo lo demás). El software Lisp finalmente perdió en C / C ++. Hay una variedad de teorías de por qué esto es todo esto es así. http://www.andromeda.com/people/ddyer/lisp/
Lisp se utiliza en la composición de la música algorítmica del mundo real con la biblioteca de música común . Notas de Rick Taube del Metalevel es un gran texto introductorio al tema que tiene un montón de ejemplos en Lisp para componer. Vea el directorio de ejemplos here y una copia del texto here .
Matthew Eric Bassett sobre el uso de Racket en la industria del cine: http://www.youtube.com/watch?v=37owCjWnkK0
Daniel Liebgold en Racket y PS3: http://www.youtube.com/watch?v=oSmqbnhHp1c
Me acabo de dar cuenta ahora de que Maxima , un programa de álgebra simbólica, está escrito en Common Lisp. He estado usando eso por bastante tiempo y creo que también es un muy buen ejemplo de vida real.
Para la aplicación AutoCAD, AutoLISP / Visual LISP se usan mucho para proyectos reales y hay una gran comunidad de usuarios.
Paul Graham ha usado y escrito sobre ViaWeb que fue escrito en LISP
Lea sobre esto aquí - superando el promedio
Peter Christensen compiló una gran lista de compañías de ceceo (financieramente) exitosas.
Quedé bastante impresionado cuando descubrí que el PRISM («El proyecto Prism es un proyecto a largo plazo para crear herramientas de software para la planificación de la radioterapia, incluidas las herramientas de inteligencia artificial, así como los sistemas de simulación manual») está escrito en Common Lisp.
En mi trabajo, estoy escribiendo un software que usa DICOM y debo decir que escribir una buena implementación de DICOM es una tarea difícil. En su report , describen cómo Common Lisp les permitió construir una buena implementación de DICOM que es mejor (al menos en cierto modo) que otras implementaciones con menos esfuerzo.
Si mis planes funcionan, ¡todos usaremos Scheme en 5 años a partir de ahora! ;pag
Un proyecto de código abierto bastante reciente que aún disfruta de una actividad de desarrollo consistente y considerable es LilyPond .
Es un programa de notación musical que toma un archivo de texto fácil de escribir como entrada y lo convierte en hermosas partituras (archivos pdf). Ofrece todo tipo de formas de jugar con la salida si lo desea. Incluso puede producir archivos MIDI de sonido decente. Lo uso cada vez que necesito producir buenas partituras que otros músicos leerán. ¡Creo que es mejor que Finale y es gratis !
En la categoría comercial, también está Igor Engraver de Notehead . Lamentablemente, el sitio no me permite publicar un enlace directo a la página que habla sobre Lisp, así que vaya a descargas y busque en la parte inferior un enlace "Lisp".
También está Naughty Dog (una compañía de juegos de computadora) que usa Lisp en sus juegos. Este artículo habla de eso e incluso muestra algún código.
Y hay muchos otros que han sido mencionados y vinculados, pero estos son los principales que resuenan conmigo (ser un compositor / programador / jugador / ... tipo).
Veo que algunas personas ya lo han mencionado, pero lisp es ampliamente utilizado en el desarrollo personalizado de Autocad. Autocad incluye un intérprete de lisp incorporado. Es una de las formas más simples de extender el producto y proporciona la capacidad de mejorar rápidamente su productividad.
No se requiere compilación, en el lado del usuario, y 1, o más, expresiones de línea de lisp pueden ser ingresadas en la línea de comando y ejecutadas inmediatamente en el dibujo. Para diseñadores y dibujantes dispuestos a dar incluso un pequeño paso para aprender los conceptos básicos de lisp, puede proporcionar una gran ayuda de productividad.
Autocad proporciona una serie de otras formas de personalizar sus productos; ObjectARX (C ++), VB, C #, etc. La interfaz de lisp es de lejos la más fácil de aprender e implementar. Y la mayoría de los otros entornos de desarrollo usan el ceceo de alguna manera.
El intérprete de lisp estaba disponible en una versión muy temprana de Autocad y se llamaba Variables y expresiones. Fue bastante limitado, pero fue tan exitoso para los usuarios que se agregó funcionalidad adicional rápidamente. Un IDE visual completo fue más tarde (en la versión 2000, creo).
No me gustaría adivinar cuántos millones (¿billones?) De líneas de código lisp están disponibles para Autocad. Una búsqueda en google en "autocad .lsp" devuelve 2,3 millones de visitas.
Ok, suficiente tipeo, ha vuelto a funcionar para mí, escribiendo más lisp para mi proyecto actual :)
como una pequeña startup, hemos creado algo que algunas personas llaman un "servidor de aplicaciones". pero, de hecho, es solo un conjunto de bibliotecas de lisp comunes integradas para conectividad SQL y aplicaciones web. algunos detalles están disponibles en la página del proyecto cl-dwim
Usando eso, hemos desarrollado y operado una aplicación web para el gobierno húngaro que recolecta datos de los gobiernos locales y calcula la parte relevante del presupuesto del país. este es el segundo presupuesto que estamos planeando ahora.
tiene alrededor de 4000 usuarios y se ejecuta en un grupo de computadoras.
a partir del "lenguaje académico": estamos jugando con cosas como continuaciones persistentes para el modelado de procesos de negocio. es un código de ceceo aleatorio con algunas primitivas relacionadas con el proceso y algunas restricciones. puede detenerse en puntos aleatorios en el código y dormirse (entrar en la base de datos) mientras espera algún evento externo.
¿es práctico o académico? tú decides... :)
ITA Software usa Common Lisp para su motor de búsqueda de baja tarifa QPX que impulsa sitios como Orbitz , Kayak y American y United Airlines entre muchos otros. También se usa en parte para su próximo sistema de reserva de pasajeros para Air Canada. Paul Graham ha escrito un poco sobre Lisp en ITA en el pasado.
(Descargo de responsabilidad: yo trabajo allí)
Reddit fue escrito originalmente en Lisp y luego reescrito en Python. Hay un buen análisis del cambio y lo que significa para Lisp en Finding Lisp .