¿Qué es un lenguaje de programación?

Resolución de Problemas

  • La programación es una herramienta para resolver problemas de forma automática usando un ordenador.
  • Todo programa surge de un problema o una necesidad concreta.
  • Resolver un problema implica seguir varias fases:

Fases de desarrollo de una solución informática

  • Análisis del problema:

    • Entender bien qué se quiere resolver.
    • Identificar entradas (datos de partida), procesos y salidas (resultados esperados).
  • Diseño de la solución:

    • Elaborar una estrategia o plan para resolver el problema.
    • Usar representaciones como:
      • Pseudocódigo
      • Diagramas de flujo
      • Algoritmos
  • Codificación:

    • Traducir el diseño a un lenguaje de programación (C++, Python, Java…).
    • Se escribe el programa en un archivo de texto con una sintaxis concreta.
  • Prueba y depuración:

    • Ejecutar el programa con diferentes datos.
    • Verificar que la salida es correcta.
    • Corregir errores (bugs) de lógica o de sintaxis.

Algoritmos

  • Un algoritmo es una secuencia finita de pasos que resuelven un problema. Características:
    • Finito: tiene un número limitado de pasos.
    • Preciso: cada paso debe ser claro y no ambiguo.
    • Efectivo: cada paso debe poder llevarse a cabo.

Lenguajes de programación

  • Un lenguaje de programación es un lenguaje formal que permite escribir instrucciones comprensibles para una computadora.
  • Se utilizan para crear algoritmos ejecutables.

Tipos de lenguajes de programación:

  • Lenguajes de bajo nivel:

    • Muy cercanos al hardware (como el ensamblador).
    • Más difíciles de escribir y entender.
  • Lenguajes de alto nivel:

    • Más fáciles de leer y escribir para los humanos.
    • Más portables y productivos.
    • Ejemplos: C++, Python, Java, JavaScript, etc.

Paradigmas de programación

  • Imperativa: describe cómo se hace algo (C++, Python, Java).
  • Declarativa: describe qué se quiere hacer (SQL, Prolog).
  • Orientada a objetos: organiza el programa en objetos que interactúan (C++, Java).
  • Funcional: basada en funciones matemáticas sin efectos secundarios (Haskell, Lisp).

Proceso de ejecución: compilación e interpretación

  • Compilación:

    • Traduce todo el código fuente a código máquina antes de ejecutar.
    • Produce un archivo ejecutable.
    • Ejemplos: C, C++, Rust.
    • Ventajas: más rápido en tiempo de ejecución.
    • Inconvenientes: más lento de compilar; menos flexible en tiempo real.
  • Interpretación:

    • Traduce y ejecuta línea por línea al mismo tiempo.
    • No genera un ejecutable final.
    • Ejemplos: Python, JavaScript.
    • Ventajas: más flexible y portable.
    • Inconvenientes: más lento que un programa compilado.
  • Mixtos (compilación intermedia + máquina virtual):

    • Se realiza una compilación inicial, generando un código intermedio que se interpreta con un intérprete.
    • Ejemplo: Java (compila a bytecode que se ejecuta en la JVM).
    • Balance entre rendimiento y portabilidad.

Herramientas de programación

  • Editores de texto / IDEs: VS Code, CLion, Code::Blocks.
  • Compiladores: g++, clang, javac.
  • Intérpretes: python, node, etc.
  • Depuradores: herramientas para encontrar errores.