¿Cuáles son las partes de los lenguajes de programación de computadoras?

Aquí hay un bosquejo de alto nivel muy tosco:

La especificación del idioma:

  • Una gramática
  • Una especificación de la semántica de cada construcción en la gramática.

Tipos de construcciones a menudo especificadas como parte de un lenguaje:

  • Expresiones, como referencias variables, llamadas a funciones, operaciones aritméticas, números
  • Declaraciones: como asignaciones variables y bloques de cambio o if / else en la mayoría de los idiomas
  • Definiciones / declaraciones de funciones, variables, etc.
  • Módulos y espacios de nombres
  • Tipos, firmas / contratos / interfaces
  • Clases y objetos

Software que le permite ejecutar programas en el idioma: todos los idiomas incluyen algunas de estas partes, pero quizás no todas:

  • Lexer y analizador – para programas de lectura
  • Comprobador de tipos: solo para idiomas de tipo estático
  • Intérprete o VM: ejecuta programas en el idioma
  • Compilador: traduce un idioma a otro
  • Entorno de tiempo de ejecución: el contexto para ejecutar programas en el intérprete o VM
  • Recolector de basura

Datos sobre los que operan los programas anteriores:

  • Árboles de sintaxis abstracta
  • Ambientes
  • Datos del programa
  • Tipos
  • Pila de llamadas y montón de datos
  • Continuaciones
  • Cosas a nivel del sistema operativo como hilos y controladores de archivos

Dos buenos libros para aprender más:

  • Fundamentos de los lenguajes de programación , por Friedman et al.
  • Lenguajes de programación: aplicación e interpretación , por Krishnamurthi.