El punto principal en la evolución de distancia de C++ hacia Java - desde una perspectiva Lisp - es el uso de la llamada 'memoria administrada':
- datos etiquetados
- recolección de basura precisa
- operaciones de bajo nivel seguras
- el uso de una máquina virtual con instrucciones específicas del lenguaje
- carga de código
Este modelo no era inusual en el mundo de Lisp, donde había implementaciones de software y hardware de máquinas virtuales con instrucciones específicas del lenguaje.
Por ejemplo, Interlisp de BBN y Xerox tenían una máquina virtual (en la década de 1970). También hubo estaciones de trabajo Interlisp (1970s-1980s) donde se proporcionó el conjunto de instrucciones en el nivel del procesador (microcodificado). Las instrucciones se verifican en tiempo de ejecución (does + have the right arguments). Esto también es muy similar a lo que usaba un tiempo de ejecución en Smalltalk. Los sistemas Xerox Smalltalk e InterLisp se ejecutaban en el mismo hardware, pero con diferentes microcódigos.
Eso significa que uno puede buscar en un depurador en los datos JVM y el depurador siempre sabe qué tipos primitivos hay. La reflexión puede usarse para obtener información. Esto es similar a cómo se puede mirar en Lisp con un depurador en los objetos. En C++ esto solo es posible cuando hay información de depuración presente, que generalmente solo es el caso durante el desarrollo.
Por lo tanto, la JVM se parece en cierto modo a un 'tiempo de ejecución' típico de Lisp.
Eso es diferente con C++, donde los datos de C++ son bits de bajo nivel (generalmente) y no había 'memoria administrada'.
James Gosling (el "padre" de Java) sabía un poco sobre Lisp desde la implementación de Gosling Emacs en C en Unix a principios de la década de 1980. Su Emacs tenía un dialecto de Lisp extraño para extender el editor: Mocklisp.
Aparte de eso, Java y Lisp son muy diferentes, por lo que 'a mitad de camino' puede no ser el caso, pero ayudó, por ejemplo, a superar la hostilidad contra algo como 'recolección de basura'. Desafortunadamente, especialmente en los primeros tiempos de Java, Java y JVM también estaban sobre promocionados y después de un tiempo los problemas de rendimiento se volvieron obvios. Esa fue una razón para la muerte de las aplicaciones de escritorio que eran lentas (tiempo de inicio lento, tiempo de respuesta lento, ...).
Si había alguna arrastrando hacia Lisp, desde luego, no se muy lejos. Si es posible, publique un enlace, parece una afirmación extraña y me gustaría verla en contexto. –
Esta pregunta sería más apropiada en http://programmers.stackexchange.com/ –
@Tom en esa discusión, Scott McKay, un antiguo Scheme y Dylan hacker forma el software ITA, dice 'Sí, arrastró a mucha gente hasta la mitad de Lisp '. ¿A qué se están refiriendo todos? Estoy confundido. – Surya