Última actualización: agosto 2025
Antes de comenzar con Java, es conveniente realizar una pequeña introducción a la programación, que nos ayude a situarnos. Vamos a ver en que consiste programar, lo que es un algoritmo, un diagrama de flujo y un seudocódigo. Pero por encima de todo, veremos que programar es acerca de resolver problemas.
Conceptos preliminares
Existen una serie de conceptos que conviene interiorizar antes de ponerse a programar. Al menos deberíamos tener bien claros los siguientes:
Ciencias de la computación: Conjunto de disciplinas que emplean la computación para el estudio y resolución de problemas.
Las ciencias de la computación tienen como propósito resolver problemas utilizando ordenadores para desarrollar la solución. Las ciencias de la computación NO son el estudio de los computadores.
¿Qué es programar?: Programar es el proceso de crear un conjunto de instrucciones para indicar al ordenador como debe realizar una tarea concreta.
¿Qué es un algoritmo?: Un algoritmo es una secuencia inequívoca de instrucciones que permiten al ordenador resolver un problema.
Paradigmas de la programación
Un paradigma de programación es un enfoque fundamental para escribir y estructurar programas, que define cómo se deben organizar las instrucciones y cómo interactúan los datos y las funciones. Los paradigmas de programación más importantes son:
Programación Imperativa
Las instrucciones del programa se ejecutan en un orden específico. Solo posee tres estructuras de programación:
- Secuencial: las instrucciones se ejecutan una detrás de otra.
- Bifurcaciones: una condición indica que conjunto de instrucciones se ejecutarán.
- Repeticiones: ejecuta repetidamente un conjunto de instrucciones.
Programación Procedural
Estilo de programación basado en la ejecución secuencial de instrucciones, donde el código se organiza en procedimientos, también denominados funciones o rutinas. Se enfoca en describir cómo se deben realizar las tareas mediante una serie de pasos ordenados, empleando variables y controlando el flujo con estructuras como bucles y condicionales. Mejora la modularidad al dividir el código en fragmentos más pequeños, pero complica el trabajo con programas grandes y complejos.
Ejemplos de lenguajes que funcionan con este paradigma son C y Pascal.
Programación Orientada a Objetos (POO)
Organiza el código en objetos que representan entidades del mundo real. Estos objetos son instancias de clases (plantillas generales para la creación de objetos) y combinan datos (atributos) y comportamientos (métodos) para simular el comportamiento de la entidad real. Se basa en principios como la abstracción, encapsulamiento, herencia y polimorfismo, facilitando la reutilización, mantenimiento y escalabilidad del software.
Lenguajes comunes en este paradigma son Java, C++ y Python.
Programación Declarativa.
Describe qué se quiere lograr sin especificar cómo hacerlo. En lugar de detallar los pasos a seguir, se enfocan en declarar condiciones, relaciones o reglas que deben cumplirse.
Ejemplos comunes de este paradigma son SQL, HTML o CSS.
Modularización
La modularización es la práctica de dividir un programa en partes más pequeñas y manejables llamadas módulos o componentes, cada uno encargado de una tarea específica, y funcionando de forma autónoma.
Cada módulo puede desarrollarse, probarse y mantenerse de forma independiente, lo que mejora la legibilidad, reutilización del código, organización y facilidad de mantenimiento.
La cohesión y el acoplamiento son dos conceptos fundamentales en la modularización de los programas, que sirven para evaluar la calidad de los módulos del mismo.
La cohesión hace referencia al grado en que los elementos dentro de un módulo trabajan juntos para cumplir la función de este. Una alta cohesión significa que el módulo tiene una única tarea bien definida y los elementos están estrechamente relacionados para realizarla. Al contrario, una baja cohesión significa que el módulo tiene varias tareas mal definidas y los elementos están relacionados de manera débil.
Es deseable que los módulos tengan una alta cohesión, porque hace que el módulo sea más claro, mantenible y reutilizable.
El acoplamiento se refiere al grado de dependencia entre módulos. Un módulo con alto acoplamiento depende mucho de otros, lo que complica su actualización sin afectar a los demás. Se busca el bajo acoplamiento entre módulos para que sean lo más independientes posibles, y los cambios en uno no afecten al resto.
Si tenemos una baja cohesión y alto acoplamiento esto dificulta el mantenimiento y la prueba del sistema, al contrario, si la aplicación tiene una alta cohesión y un bajo acoplamiento, será un sistema fácil de mantener y comprensible para el resto de los programadores.
Lenguajes de programación
Cada sistema de computación entiende un lenguaje de muy bajo nivel que es específico al tipo de hardware del mismo. Este lenguaje es denominado código máquina.
Por el contrario, los programadores, cuando escriben software, utilizan un lenguaje de alto nivel mucho más cercano al lenguaje humano y por tanto mucho más sencillo de entender para una persona.
Podemos distinguir tres niveles de lenguajes de programación:
Código máquina
Lenguaje de muy bajo nivel que es el que entiende el ordenador.

- Instrucciones que pueden ser directamente ejecutadas por la CPU.
- Lenguaje numérico compuesto estrictamente por ceros y unos.
- Lenguaje más rápido posible de ejecución.
- Tedioso para detectar y corregir errores. Lenguaje muy poco amigable.
Bajo nivel: Lenguaje de bajo nivel próximo al código máquina, pero adaptado para que resulte más sencillo de programar a una persona.

- Muy próximo al código máquina.
- El más conocido es el lenguaje ensamblador.
- Necesita ser “Traducido” por un compilador (el ensamblador) a código máquina para que sea entendido por el ordenador.
Alto nivel: Lenguaje con juego de instrucciones próximo al leguaje humano por lo que resulta mucho más intuitivo programar en él.
- Proveen un alto nivel de abstracción del código máquina.
- Son sencillos de aprender.
- Necesitan un traductor para comunicarse con el ordenador, que sólo entiende código máquina.
- Hay cientos de lenguajes de este tipo.
Los lenguajes de programación más populares en 2018 fueron: Java, Python, Javascript, C++, C#, PHP, PERL, SWIFT, R y RUST
Compilación Vs Ejecución
Normalmente programaremos en un lenguaje de alto nivel, muy rara vez en un lenguaje de bajo nivel y nunca en código máquina.
Como el ordenador sólo entiende código máquina, vamos a necesitar un traductor para el código programado en un lenguaje de alto nivel. Tenemos dos posibilidades para traducirlo a código máquina:
- Compilador: Traducimos directamente todo el programa a código máquina y ejecutamos.
- Interprete: Vamos traduciendo las instrucciones a código máquina una a una, según tengamos que ejecutarlas.
Un programa compilado va a ser más rápido en la ejecución. Un programa interpretado permitirá hacer cambios durante la ejecución.
NOTA: Este post es parte de la colección “Conceptos básicos de programación”. Puedes ver el índice de esta colección aquí.