2.5 Fundamentos de los Lenguajes de Programación (FPL)

Los fundamentos de los lenguajes de programación están enraizados en las matemáticas discretas, la lógica y los lenguajes formales, y proporcionan una base para la comprensión de los complejos lenguajes de programación modernos. Aunque los lenguajes de programación varían según el paradigma del lenguaje y el dominio del problema, y evolucionan en respuesta tanto a las necesidades sociales como al avance tecnológico, comparten un modelo abstracto subyacente de computación y desarrollo de programas. Esto sigue siendo cierto incluso a medida que el hardware del procesador y su interfaz con las herramientas de programación se entrelazan y complejizan progresivamente. Una comprensión de las abstracciones y paradigmas de programación comunes permite un aprendizaje más rápido de los lenguajes de programación.

El área de conocimiento de Fundamentos de los Lenguajes de Programación se ocupa de articular los conceptos y principios subyacentes de los lenguajes de programación, la especificación formal de un lenguaje de programación y el comportamiento de un programa, explicar cómo se implementan los lenguajes de programación, comparar las fortalezas y debilidades de varios paradigmas de programación, y describir cómo los lenguajes de programación interactúan con entidades como sistemas operativos y hardware. Los conceptos aquí cubiertos son aplicables a varios lenguajes y comprender estos principios ayuda al aprendiz a pasar fácilmente de un lenguaje a otro, así como a seleccionar un paradigma y lenguaje de programación que mejor se adapte al problema en cuestión.

Los lenguajes de programación son el medio a través del cual los programadores describen conceptos con precisión, formulan algoritmos y razonan sobre soluciones. A lo largo de su carrera, un científico de la computación aprenderá y trabajará con muchos lenguajes diferentes, por separado o juntos. Los desarrolladores de software deben entender diferentes modelos de programación, características y construcciones de programación, y conceptos subyacentes para tomar decisiones de diseño informadas entre lenguajes que admiten múltiples enfoques complementarios. Sería útil saber cómo se definen, componen e implementan las características de los lenguajes de programación para mejorar la eficiencia de ejecución y el mantenimiento a largo plazo del software desarrollado. También es útil un conocimiento básico de la traducción de lenguajes, el análisis de programas, el comportamiento en tiempo de ejecución, la gestión de memoria y la interacción de procesos concurrentes que se comunican entre sí mediante paso de mensajes, memoria compartida y sincronización. Finalmente, algunos desarrolladores e investigadores necesitarán diseñar nuevos lenguajes, un ejercicio que requiere una mayor familiaridad con los principios básicos.

KA Core Tier1 Core Tier2 Electivo
2.5.1 Programación Orientada a Objetos I: Fundamentos     No
2.5.2 Programación Orientada a Objetos II: Encapsulación, Subtipado y Reflexión     No
2.5.3 Programación Funcional     No
2.5.4 Programación Lógica     No
2.5.5 Scripting de Shell     No
2.5.6 Programación Dirigida por Eventos y Reactiva     No
2.5.7 Computación Paralela y Distribuida     No
2.5.8 Programación Orientada a Aspectos     No
2.5.9 Sistemas de Tipos I: Fundamentos     No
2.5.10 Sistemas de Tipos II: Polimorfismo y Tipado Complementario     No
2.5.11 Teoría de Tipos Avanzada     No
2.5.12 Modelo de Ejecución y Memoria de Sistemas     No
2.5.13 Gestión de Memoria     No
2.5.14 Traducción y Ejecución de Lenguajes     No
2.5.15 Abstracción y Representación de Programas     No
2.5.16 Análisis Sintáctico     No
2.5.17 Análisis Semántico del Compilador     No
2.5.18 Análisis de Programas y Analizadores     No
2.5.19 Generación de Código     No
2.5.20 Comportamiento en Tiempo de Ejecución y Sistemas     No
2.5.21 Construcciones de Programación Avanzadas     No
2.5.22 Pragmática del Lenguaje     No
2.5.23 Semántica Formal     No
2.5.24 Metodologías de Desarrollo Formal     No
2.5.25 Principios de Diseño de Lenguajes de Programación     No
2.5.26 Sociedad, ética y Profesión     No



Subsecciones
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM