Lenguajes de Programación

Un lenguaje de programación es un conjunto de símbolos y reglas que definen las tareas que realizará un ordenador.

Elementos de un Lenguaje de Programación

  • Constantes: Posiciones de memoria cuyo valor no se puede cambiar durante la ejecución del programa. Cada constante se identifica con un nombre.
  • Variables: Posiciones de memoria cuyo valor puede modificarse. Se definen con un tipo de dato que limita los valores que se le pueden asignar.
    • Tipos de datos simples: Contienen un único valor (caracteres, números reales, números enteros, valores lógicos).
    • Tipos de datos complejos: Compuestos por tipos de datos simples.
      • Homogéneos: Todos los datos son del mismo tipo.
      • Heterogéneos: Datos simples de diferente tipo.
  • Operadores: Relacionan datos, generando un nuevo valor.
    • Aritméticos: Realizan operaciones matemáticas.
    • Lógicos: Comparan valores y devuelven verdadero o falso.
    • De asignación: Guardan en una variable el resultado de una variable, una operación o una comparación.
  • Palabras reservadas: Cadenas de caracteres con significado especial dentro del lenguaje. Solo se usan para su propósito definido.
  • Estructuras condicionales: Ejecutan código según si una condición es verdadera o falsa.
  • Estructuras iterativas (bucles): Repiten un bloque de código mientras una condición sea verdadera.
  • Procedimientos y funciones: Bloques de código con nombre que se ejecutan desde otro punto del programa. Una función devuelve un valor, un procedimiento no.
  • Recursividad: Cuando un bloque de código se llama a sí mismo.
  • Bloques de código: Conjuntos de instrucciones que se ejecutan secuencialmente. Pueden estar anidados.
  • Comentarios: Texto que ayuda a entender el código. El compilador los ignora.

Ejemplos de código fuente

  • Cobol
  • Lisp

Clasificación de los Lenguajes de Programación

Nivel de abstracción

  • Bajo: Programación según las características del procesador (ej. código máquina).
  • Medio: Mayor abstracción, pero con características de bajo nivel (ej. ensamblador).
  • Alto: Manejan conceptos cercanos al pensamiento humano (ej. Pascal, Java).

Propósito

  • General: Para todo tipo de tareas (ej. Pascal, Java).
  • Específico: Para un objetivo concreto (ej. Csound para audio).
  • De sistemas: Para sistemas operativos o drivers (ej. C).
  • De script: Para tareas de control y auxiliares (ej. bash).

Evolución histórica

  • 1GL: Código máquina.
  • 2GL: Ensamblador.
  • 3GL: Lenguajes modernos (ej. C, Java).
  • 4GL: Diseñados con propósito concreto (ej. SQL).

Paradigma de programación

  • Imperativo: Programas como una serie de órdenes secuenciales.
  • Orientado a objetos: Sistemas de objetos que interactúan (ej. C++, Java).
  • Funcional: Se basa en la evaluación de funciones, a menudo recursivas (ej. Haskell).

Arquitectura del Software

Define los componentes que realizan tareas de computación, sus interfaces y la comunicación entre ellos.

Modelos o vistas

Describen los aspectos del software usando lenguajes como el natural, diagramas de flujo o diagramas de estado. Tres vistas fundamentales:

  • Estática: Describe los componentes de la arquitectura.
  • Funcional: Describe la función de cada componente.
  • Dinámica: Describe la interacción y comportamiento de los componentes.

Arquitecturas comunes

  • Monolítica: Software estructurado en grupos funcionales ajustados.
  • Cliente-servidor: Carga de cálculo repartida en dos partes independientes.
  • Tres niveles: Especialización de cliente-servidor con capas de presentación, cálculo y almacenamiento.
  • MVC (Modelo-Vista-Controlador):
    • Modelo: Representa la información.
    • Vista: Presenta el modelo al usuario.
    • Controlador: Responde a eventos y actualiza el modelo.