Teoría 01.01 Conceptos Básicos de Programación
Teoría 01.01 Conceptos Básicos de Programación
Teoría 01.01 Conceptos Básicos de Programación
¿Qué es programar?
La programación
Qué es programar
Veremos, a lo largo del tema, unos ejemplos de situaciones en las que volveremos
a recordar esta definición, como si de un mantra se tratase.
Para programar, leyendo una vez más su definición, necesitamos solo dos cosas:
● 2. Que la máquina lo haga por nosotros. Y para eso necesitamos una forma
de decírselo. Para decirle cosas a una máquina vamos a usar lo mismo que
necesitamos para hablar con otras personas, es decir, un lenguaje.
011011101101011010101110101
1
Se llama igual, pero es diferente de una máquina a otra, aunque todos se parecen mucho en filosofía y
prestaciones.
Pero, en esencia, todo sigue siendo igual: las instrucciones se transfieren a la
memoria ram, y se ponen en fila una detrás de otra junto con los datos que van a
manipular, y el procesador de la máquina las va ejecutando una por una.
Lenguajes formales
¿Una máquina entiende inglés o castellano para comunicarse con ella? De momento
no2.
Entonces, ¿es necesario aprender lenguaje máquina para decirle cosas? Tampoco.
Existen lenguajes intermedios, inventados por el ser humano, con el fin de poder
expresarnos más fácilmente, más parecido a nuestra lengua materna y más
adaptados a como observamos el mundo y lo describimos. La pregunta importante
aquí es: ¿para qué inventar nuevos lenguajes artificiales parecidos a nuestro
lenguaje natural, cuando ya tenemos nuestro propio lenguaje natural?
Precisamente por eso, porque nuestro lenguaje es natural, es decir, tiene
ambigüedades, ironías, etc., que no se pueden traducir luego fácilmente al lenguaje
de la máquina.
Dar instrucciones a una máquina mecánica3 sería desastroso si estas tuvieran más
de una interpretación posible. Por esto, a los lenguajes que van bien para dar
instrucciones a una máquina se les llama lenguajes formales: solo tienen una
posible interpretación. Por eso mismo, programar es fácil; basta con entender que:
Hay muchos lenguajes formales de programación a día de hoy. Entre los más
populares están, por ejemplo Python, Java, Kotlin, Swift, Javascript, Typescript,
PHP, C, C++, C#, Go, Ruby, Rust, R y un largo etcétera.
2
Aunque se está trabajando mucho para que pueda ser así en el futuro.
3
Máquina = mecánica
Página 2
Un ordenador, en realidad, no entiende ninguno de estos lenguajes, pero para eso
existen unos programas intermedios que sirven para lo siguiente:
Paradigmas de programación
Qué es un paradigma de programación
En realidad es el lenguaje más simple con el que podemos programar, porque tan
solo consta de un conjunto de instrucciones pequeño y sencillo, no más de 25 o 50
instrucciones diferentes, típicamente. Pero precisamente por esa razón, desde el
punto de vista de las personas, se convierte en un lenguaje muy incómodo para
expresar ideas complejas. ¿Se puede programar el Super Mario a base de sumas y
restas, escribiendo directamente los 0s y los 1s de la máquina? En teoría, sí. Pero
en la práctica, esta tarea se vuelve muy compleja, por no decir imposible. Es aquí
donde entran otros paradigmas; unos de bajo nivel, otros de nivel medio y otros de
alto nivel. Se dice que un paradigma tiene más alto nivel cuanto más se acerca a
nuestro lenguaje natural.
El ensamblador
011011101101011010101110101
ADD #27, D0
4
En ocasiones, a lenguajes intermedios.
Página 3
El código espagueti
También aparecieron diagramas de flujo, que son esquemas visuales con los que
“programar” bajo un determinado paradigma, sin tener que pensar todavía en la
sintaxis concreta de un lenguaje.
Este paradigma ya permitió hacer programas un poco más complejos, pero seguía
teniendo un problema fundamental: el hecho de que las bifurcaciones podían ir en
cualquier dirección y sin ningún criterio, hacía extremadamente difícil estar seguros
de que el programa ejecutaba efectivamente lo que uno quería. A día de hoy, a este
paradigma liado y enmarañado se le conoce, con una mezcla de cariño y de estupor
simultáneos, como programación espagueti. Y es ahí donde entró un paradigma que
lo cambió todo: la Programación Estructurada.
La Programación Estructurada
5
Aunque en realidad lo demostraron Böhm y Jacopini, en 1966.
Página 4
La Programación Orientada a Objetos
Programación Estructurada
La Programación Estructurada es un paradigma muy sencillo y bastante útil que se
basa en el teorema de Dijkstra. Dijkstra dijo básicamente que:
La secuencia dice algo que no es obvio, pero parece natural: las instrucciones se
ejecutan en serie, ordenadas en el tiempo, nunca dos o más a la vez. Primero se
hace A, luego B y luego C.
Página 5
Segunda estructura: la alternativa
Página 6
Hay que observar que esta es la variante “oficial” de la iteración, gobernada por un
guardian, cuya pregunta cerrada (sí o no) controla cada nueva posible iteración,
antes de que esta se produzca.
Funciones
Waterfall
El teorema de la Programación Estructurada está muy bien, pero ¿cómo se manejan
dichas estructuras? ¿cómo las sacamos? ¿por instinto? ¿y si el programa es muy
grande y muy complejo? Aquí entra una metodología de desarrollo de software que
se llama waterfall7.
Las cuatro etapas más relevantes en el método waterfall son las siguientes, y en
este orden: análisis, diseño, codificación y testing.
Fase 1: Análisis
6
También procedimento, subrutina, método, etc. Depende un poco del contexto y del lenguaje. Tiene
muchos nombres diferentes debido a la importancia vital que tiene en la programación estructurada.
7
Existen otras metodologías diferentes, algunas más modernas y experimentales, pero las cuatro fases
principales del waterfall son una base importante que se debe conocer y controlar.
Página 7
basta solo con eso: es necesario asegurarse de que efectivamente, y no de manera
vaga, sabemos hacer aquello que luego queremos expresar en el lenguaje.
En otras palabras, el análisis consiste en hacer un mismo, con sus propias manos y
sin el ordenador, el problema que queramos resolver. Es lo mismo que hacemos de
niños en el colegio al aprender a sumar o multiplicar: repetimos una y otra vez los
mismos procedimientos hasta que estamos seguros de que sabemos hacer cierto
algoritmo mecánico.
Fase 2: Diseño
Ahora sí: en el diseño se trata de describir cómo se ha hecho aquello que hemos
hecho varias veces durante el análisis. Y para describir esto, tenemos que seguir las
tres estructuras de la programación estructurada.
Página 8
Fase 3: Codificación
En la tercera fase, toca traducir los diagramas del diseño al lenguaje con el que
queremos programar. Por ejemplo, el diseño anterior, en lenguaje Python quedaría
así:
Página 9
● Esta fase está separada del diseño porque en el diseño es muy importante
pensar en el problema y no contaminarse todavía con el lenguaje específico
con el que luego hablaremos con la máquina.
Fase 4: Testing
Las técnicas de testing dan para hablar largo y tendido, y exceden el alcance de
este tema introductorio.
8
Al menos por el momento…
Página 10