¿Cuál es el mejor libro para leer para obtener una comprensión profunda de cómo funcionan realmente los lenguajes de programación?

Hay dos formas de entender los lenguajes de programación:

El enfoque conceptual es comprender los lenguajes de programación en su conjunto; un libro como http://www.amazon.com/Programmin… sería un buen comienzo.

El enfoque práctico es aprender un montón de idiomas para obtener la gestalt de los lenguajes de programación: puede considerar un libro como http://www.amazon.com/Seven-Lang… o elegir algunos idiomas de diferentes tipos (funcional, dinámico, de tipo estático) y apréndalos de sus respectivos tutoriales y fuentes, así como de las fuentes de los marcos creados con ellos. Como ejemplo del último enfoque, puede aprender Ruby de los tutoriales en http://www.ruby-lang.org/en/docu…, luego pruebe el marco de Ruby on Rails leyendo http: //guides.rubyonrails .org / ge …, explore la fuente de los rieles (https://github.com/rails/) como un ejemplo de buen código ruby, y sumérjase en la fuente ruby ​​en https://github.com/ruby/ruby.

Sugeriría probar primero el enfoque práctico, que puede mejorar la experiencia de aprender los aspectos conceptuales.

Siempre es mejor comenzar desde donde estás y aprender desde allí. Conoces Java, así que comienza desde allí.

1) ¿Qué es un idioma ?:

  • Aprenda cómo los compiladores e intérpretes analizan su “código”: la respuesta del usuario de Quora a ¿Cuáles son algunas buenas recomendaciones de libros sobre programación de compiladores?
  • Cómo funcionan los enlazadores y cargadores: enlazadores y cargadores
  • Vea la salida del lenguaje ensamblador del código C / C ++.
  • Comprender C aprendiendo ensamblaje
  • Aprendiendo C con gdb
  • ¿Cómo funciona JNI?
  • Envolviendo una biblioteca C ++ con JNI – introducción
  • ¿Cómo interactúa su programa con el sistema operativo?
    Categoría: internos
    Anatomía de un programa en memoria

2) Intérprete de juguetes:

  • Para empezar, escriba un simple intérprete similar a SQL / inglés para seleccionar registros específicos de una tabla.
  • Use una clase Java simple para almacenar datos de empleados en una tabla de empleados en memoria / archivo plano.
  • Haga esto sin / con comprobación de sintaxis.
  • Ahora intente descubrir cómo la biblioteca JDBC podría estar haciendo esto a la luz de su experiencia con la implementación de Toy Interpreter.
  • Busque el código fuente abierto de JDBC para obtener más información. Controladores JDBC de código abierto
  • Código SQLite basado en C envuelto usando Emscripten dentro de javascript sql.js: kripken / sql.js

3) Comprender el modelo de objetos Java y el diseño de objetos

  • Mire bajo el capó de Java y JVM internos.
  • Use la reflexión para mirar en Clase Clase y agregar / eliminar métodos, etc. http://www.ibm.com/developerworks/java/library/j-dyn0429
  • Use Class Class para convertir una cadena que contiene código java en instancias de clase / objeto adecuadas.
  • Comprenda los componentes internos de JVM: capítulos en línea gratuitos del interior de la máquina virtual Java de Bill Venners
  • Acercarse a Java / JVM internos

Nota: Delicious (y otros sitios de marcadores) tiene una colección de marcadores de varias personas sobre diferentes temas. ¡Entonces, en lugar de perder el tiempo en Google, puede hacer una metabúsqueda para hacer uso de los marcadores de otras personas!

Siempre puedes googlear también.

Si quiere decir cuáles son los pasos más pequeños (como decir cuál es la partícula más pequeña de la que está hecha la materia), primero debe conocer la programación de nivel más bajo. Como todo, el resultado de cualquier lenguaje se reduce a precepto sobre precepto. Si omite altos niveles como la optimización o la compilación (reemplazando los pasos abstractos con las instrucciones de máquina finitas que realmente manipulan la memoria), puede ver mejor lo que realmente está haciendo.

Quizás los mejores libros serían sobre máquinas de estado en realidad. Usé Mapping The Atari ver en atarimania.com y una hoja de datos MC6502 para el conjunto de instrucciones.

Creo que mi punto es que creo que necesita información discreta (libros o lo que sea), pero la comprensión del lenguaje para controlarla requiere crearla usted mismo utilizando su imaginación, no solo leer lo que alguien escribió sobre el tema. El problema hoy es que a los niños se les enseña que se supone que no debemos saber, o que no queremos saber. Simplemente memorizan procedimientos de alto nivel y dan por sentado todo lo que depende. Si realmente quieres saber, ¡más poder para ti!

Descargo de responsabilidad: es más emocionante dejar algo misterioso. Aprender cómo funciona todo realmente puede ser más aburrido de lo que imaginabas. Aún así, me encanta, aunque no lo explico a algunos porque no están dispuestos a dejar de lado sus ideas mágicas preconcebidas sobre algo.