Está en la página 1de 16

Documentación técnica:

Aprender a programar
2 de 16
Índice

1. Introducción …………………………………………………………………………………………………………………… 5

2. Definición ……………………………………………………………………………………………………………………… 6

3. Un buen estilo de programación ………………………………………………………………………… 9

4. Código compilado o interpretado ……………………………………………………………………… 11

5. Paradigmas de programación ………………………………………………………………


……………… 12

5.1. Programación imperativa o procedimental ……………………………………… 12

5.2. Programación orientada a objetos …………………………………………


……………… 14
4 de 16
1. Introducción

La generación de código o fase de programación es una de las etapas básicas en el


proceso de fabricación de las aplicaciones informáticas. También denominado
proceso de escritura del código fuente, es uno de los momentos principales en los
que el programador escribe las sentencias en el lenguaje de programación que
contienen las instrucciones que se van a dar al ordenador.

La generación de código permite construir programas. Siguiendo las


recomendaciones para un buen estilo de programación, se conseguirá que el
código sea legible, eficaz, que esté libre de errores y que su funcionamiento se
pueda comprobar por partes independientes entre sí.

El siguiente ejemplo, muestra el código en JavaScript necesario para seleccionar


un texto de un cuadro de texto y darle el foco (es decir, seleccionar la parte
deseada con el clic del ratón).

<html>
<head>
<script type="text/javascript">
function setfocus()
{
document.forms[0].txt.select();
document.forms[0].txt.focus();
}
</script>
</head>

<body>
<form>
<input type="text" name="txt" size="40" value="Esta es la frase completa">
<input type="button" value="Pinche con el ratón para seleccionar el texto"
onclick="setfocus()">
</form>
</body>
</html>

5 de 16
2. Definición

No existen reglas fijas para construir programas informáticos que sean claros,
comprensibles y que funcionen cómo deben. Existen guías muy generales, pero es
el estilo individual de cada programador/a, la claridad de sus ideas, la forma en
que es capaz de entender y recoger las necesidades del cliente, su creatividad, su
capacidad de abstracción, las que definitivamente contribuirán al éxito de esa
tarea.

El programador es el encargado de diseñar soluciones a los problemas planteados


por los clientes y de escribirlos como un programa informático. Es muy
importante que un programador novel desarrolle buenos hábitos de estilo que le
permitan desenvolverse adecuadamente en su vida profesional. Los equipos de
desarrollo de aplicaciones son habitualmente grupos de personas que elaboran el
código de forma colaborativa. Por eso, es fundamental conocer las buenas
prácticas y saber trabajar en equipo.

El proceso de fabricar un programa informático sigue habitualmente un modelo


de desarrollo en cascada, también denominado ciclo de vida de desarrollo del
software. Es un enfoque que ordena rigurosamente las etapas de la fabricación,
desde la recogida de los requisitos del cliente hasta las pruebas finales, de tal
forma que el inicio de cada etapa debe esperar a la finalización de la etapa
anterior. Las etapas son:

1. Análisis y especificación de requisitos.


2. Diseño del programa.
3. Codificación (programación).
4. Verificación del programa: fase de pruebas y test.
5. Mantenimiento.

6 de 16
2. Definición

Figura 1. Fases del ciclo de vida del software en cascada y con iteraciones posibles.

La versión original de este ciclo de vida fue propuesta por Winston W. Royce en
1970 y posteriormente revisada por Barry Boehm en 1980 e Ian Sommerville en
1985. Con esta metodología, cualquier error de diseño detectado en la etapa de
prueba conduce necesariamente al primer paso, al rediseño, y nueva
programación de todo el código afectado, con lo que los costes del desarrollo
pueden crecer vertiginosamente. Hay que entender, que cada paso completo en el
modelo en cascada puede suponer varios meses de tiempo o incluso años.

Por ese motivo, en los últimos años se han puesto en marcha otras metodologías,
más apropiadas para los programas informáticos construidos hoy en día. Se
denominan desarrollo iterativo e incremental y desarrollo ágil.

El desarrollo iterativo e incremental recomienda la construcción de secciones


reducidas de código, que se van probando y testeando para facilitar la detección
de problemas de importancia antes de que sea demasiado tarde. Este modelo de
trabajo permite la obtención de diversas versiones del producto software, así
como la depuración de los errores y su validación progresiva antes de su entrega
final al cliente (Figura 1). Los procesos iterativos suelen ayudar también a que la
relación con el cliente sea más fluida, especialmente para los casos en los que no
saben bien cómo definir lo que quieren o que las necesidades estén sujetas a
variaciones imprevisibles.

7 de 16
2. Definición

El desarrollo ágil de software utiliza un desarrollo iterativo como base, pero su


punto de vista y forma de trabajar es más ligero y está más centrado en las
personas que en el caso de las metodologías tradicionales. Los procesos ágiles
utilizan una conexión rápida con el cliente como mecanismo de control de
producción, en lugar de una excesiva planificación (Figura 2). La interacción con el
cliente se canaliza por medio de pruebas periódicas del software que se va
fabricando, lo que da lugar a que aparezcan varias versiones de éste con rapidez
(sprints).

Figura 2. Ciclo de vida del software en metodología ágil

8 de 16
3. Un buen estilo de programación

La programación de aplicaciones informáticas requiere conocer las reglas de la


sintaxis del lenguaje de programación: cuáles son las palabras clave o palabras
reservadas, cómo escribir sentencias de código, cuándo poner llaves o corchetes,
o punto y coma. Incluso el formato y la apariencia del código que se escribe son
indicadores de la calidad del programa. También hay que prestar mucha atención
a las normas que existen para dar nombre a las variables, a las clases, los objetos,
los métodos. Casi todas las empresas que desarrollan aplicaciones informáticas
establecen sus propias normas de notación, de nomenclatura, etc., para sus
equipos de codificación.

Por ejemplo:

/**
* El comentario comienza con una barra y dos asteriscos.
* Cada nueva línea lleva un asterisco al comienzo.
* @param {string} nombre indica que una función recibe un parámetro de tipo
* string y que el nombre del parámetro es nombre.
* @descriptor Cada descriptor que añadamos irá en una línea independiente.
*/

/**
* @fileoverview Ejemplo de MiappMenu, menú desplegable con efecto de
expansión
* @version 3.5
* @author Perico Palotes <pericopalotes@correo.com>
* @copyright saberprogramarbien.com, Abril 2020
*
* Histórico
* v2.7 – Se mejoró el funcionamiento en el navegador Mozilla Firefox
* v2.1 – Se mejoró el efecto de expansión de los submenús con sombreado
* v1.3 – Se mejoró el diseño gráfico
* ----
* La primera versión de MiappMenu fue escrita por Perico Palotes
*/

Una mención especial se merecen los comentarios al código, los cuales


constituyen una componente esencial de la documentación interna de los

9 de 16
3. Un buen estilo de programación

programas. Éstos sirven de ayuda al lector u otro programador/a para explicar las
secciones del código fuente. Los buenos comentarios no pueden hacer mucho
para mejorar una mala codificación, pero los malos comentarios pueden empeorar
muchísimo un buen código y quizás hacer que no pueda ser mantenido. Hay que
recordar que, habitualmente, se trabaja en equipo y es muy habitual tener que
programar sobre una sección hecha por un compañero/a, o incluso integrar
código de terceros (otros programadores que lo ofrecen en abierto a la comunidad
de desarrolladores). Revisa los diferentes comentarios del Estándar JSDoc 1.

La mayor parte de los programas permiten al programador utilizar varias líneas


como comentario. En general, es importante que los comentarios sean breves y
descriptivos, utilicen las etiquetas normalizadas (como @author o @license), no
falten delante de cualquier función o sección de código, e incluyan la fecha de
actualización. Los comentarios no deberían generar ruido en el código, sino
explicarlo y apoyarlo.

Las sangrías controladas de secciones del listado de código de un programa se


utilizan también para mejorar su legibilidad. Como en cualquier otro texto escrito
tienen dos propósitos principales: identificar las unidades de la estructura del
texto y mitigar el proceso de lectura y entendimiento. En programación, no basta
con tener inventiva y ser ingenioso; también es importante ser disciplinado y
ordenado.

El estilo tiene importantes consecuencias en la programación, y puede servir, no


solo a que el código sea más legible y entendible sino a reducir el número de
errores que se presentan durante el desarrollo del programa. Al mismo tiempo, el
programa mismo resulta más fácil de leer y de comprender por otros
programadores, quienes pueden, en algún momento, ser llamados para realizar
modificaciones o actualizaciones del mismo. Es lo que se denomina, la fase de
mantenimiento del programa. En esta fase, los programadores solucionan los
errores y revisan el código producido por personas extrañas a ellos. Por ello, es
habitual dedicar mucho más tiempo al mantenimiento de un programa que el que
se dedicó a su desarrollo original.

1
Estándar JSDoc (http://usejsdoc.org/)

10 de 16
4. Código compilado o interpretado

La generación de código permite construir programas desde el punto de vista de


los humanos. El programador/a escribe las líneas de código utilizando un lenguaje
de programación que se parece en algo a las instrucciones en lenguaje natural, o al
menos en inglés. Pero el lenguaje de los humanos no es lo que entienden las
máquinas y ahí es donde entra un programa especial que se llama compilador. El
compilador convierte un programa (que ya se ha comprobado que es
sintácticamente correcto) en una serie de instrucciones que van a ser
interpretadas por una máquina o un ordenador. Ejemplos de lenguajes compilados
incluyen C, C++, Java, Go y Rust, entre muchos otros.

Existen compiladores muy sofisticados que pueden realizan traducciones en


paralelo para construir código que pueda ser utilizado en diferentes plataformas,
como Windows, Mac, Linux, Arduino o iOS. Es lo que se denomina, código
interoperable.

Existen algunos lenguajes de programación cuyo código no necesita, realmente,


ser compilado. Se llaman lenguajes interpretados. Éstos, son convertidos al
lenguaje máquina a medida que son ejecutados. Ejemplos de lenguajes
interpretados incluyen Ruby y Python.

El caso de JavaScript (abreviado comúnmente como JS) es un poco especial. Es


un dialecto del estándar ECMAScript basado en prototipos, imperativo,
débilmente tipado y dinámico. Gran parte de la estructura de JavaScript está
basada en los mismos estándares que ECMA International define en su
especificación, por lo que todos los navegadores de Internet modernos interpretan
el código JavaScript integrado en las páginas web.

El proceso de compilado de JavaScript no es como el de muchos otros lenguajes


compilados bien conocidos que generan un archivo .exe u otro archivo final. Pero
si existe un proceso de pre-compilación y ejecución para validar el código y
verificar que no presenta errores, los Early Errors (Errores Tempranos), que
puedan invalidar el programa. Por ello, se puede considerar que JS es un lenguaje
híbrido, traducido a un código intermedio. Es interpretado y compilado, aunque no
se genere un archivo final de tipo ejecutable (.exe).

11 de 16
5. Paradigmas de programación

Un paradigma de programación es un estilo de desarrollo de programas, un


método para realizar cómputos y, también, la manera en que se deben estructurar
y organizar las tareas que va a ejecutar un programa. Los lenguajes de
programación, necesariamente, se encuadran en uno o varios paradigmas a la vez
a partir del tipo de órdenes que permiten implementar, algo que tiene una relación
directa con su sintaxis y la forma de su código.

Los principales paradigmas de programación son:

• Imperativo. Los programas se componen de un conjunto de sentencias que


cambian su estado. Son secuencias de comandos que ordenan acciones a la
computadora.

• Declarativo. Opuesto al imperativo. Los programas describen los resultados


esperados sin listar explícitamente los pasos a llevar a cabo para alcanzarlos.

• Lógico. El problema se modela con enunciados de lógica de primer orden.

• Funcional. Los programas se componen de funciones, es decir,


implementaciones de comportamiento que reciben un conjunto de datos de
entrada y devuelven un valor de salida.

• Orientado a objetos. El comportamiento del programa es llevado a cabo por


objetos, entidades que representan elementos del problema a resolver y tienen
atributos y comportamiento.

• Dirigido por eventos. El flujo del programa está determinado por sucesos
externos (por ejemplo, una acción del usuario).

• Orientado a aspectos. Apunta a dividir el programa en módulos


independientes, cada uno con un comportamiento distinto y bien definido.

En la actualidad, el más usado es el de la programación orientada a objetos.

5.1. Programación imperativa o procedimental

La programación imperativa, también se llama procedimental, procedural o


programación por procedimientos. El código está formado por un único bloque
contiguo de instrucciones que marcan órdenes respecto a lo que el ordenador

12 de 16
5. Paradigmas de programación

debe hacer. Si hay un grupo de instrucciones que se repiten a lo largo de los


programas, se pueden englobar en procedimientos o funciones y así ser luego
invocadas desde diferentes puntos del programa sin tener que repetir el código.

Por tanto, es un estilo de programación basado en estructurar el código de un


programa en componentes, que reciben el nombre de procedimientos, subrutinas
o funciones (ver Figura 3).

Figura 3. Programación imperativa o procedimental

Dentro de sus ventajas destacan la comprensibilidad, el desarrollo modular y la


capacidad de reutilización:

• Comprensibilidad. La estructuración de un programa en procedimientos


proporciona una comprensión más clara del código al programador, lo cual
facilita las labores de diseño, depuración de errores y mantenimiento.

• Desarrollo modular. Los procedimientos y funciones similares o que trabajan


con los mismos datos se pueden agrupar en módulos, facilitando su desarrollo

13 de 16
5. Paradigmas de programación

y aislamiento para realizar pruebas de forma individual o para que sean


codificadas por distintos grupos de trabajo.

• Capacidad de reutilización. El código de los procedimientos puede ser


compilado y almacenado en ficheros de librería. Éstas pueden ser reutilizadas
en cualquier programa mediante el enlazado de las librerías al comienzo del
programa.

5.2. Programación orientada a objetos

La programación orientada a objetos es una manera de diseñar un programa


basándose en la interacción entre distintos objetos que tienen determinadas
propiedades y con los cuales se pueden realizar determinadas acciones. Por
ejemplo, un programa para gestionar una tienda de electrodomésticos contendrá
objetos Empleados, Clientes y Electrodomésticos. Los clientes podrán buscar,
seleccionar y comprar electrodomésticos, los empleados darlos de alta en el
inventario, venderlos y hacer facturas.

Los objetos tienen tres propiedades fundamentales:

• Comportamiento: se refiere a lo que es posible hacer con un objeto. En el caso


de los electrodomésticos, se pueden, por ejemplo, comprar, reparar o meter en
el inventario.

• Estado: Los objetos tienen un estado en todo momento, definido por el


conjunto de las variables o campos que contienen. Por ejemplo, el estado de un
cliente es su nombre, apellidos, dirección de contacto, DNI, lista de
electrodomésticos comprados y facturas a su nombre.

• Identidad: Cada objeto existe independientemente del resto. A veces, puede


darse la paradoja de que dos objetos tengan su estado igual (todos los campos
iguales) pero son objetos diferentes. Esto no debe sorprender ya que de igual
forma que dos mellizos son idénticos, no por ello dejan de ser dos personas
independientes.

Una de las principales características de la programación orientada a objetos es


que los datos (estado) y las funciones relacionadas (comportamiento) de los
objetos están agrupados en una sola entidad, en lugar de estar dispersos por el

14 de 16
5. Paradigmas de programación

código. Es decir, el objeto tiene la función de “caja”, encapsulando los datos y el


comportamiento relacionados.

Para los programadores, el cambio de una programación procedimental a una


orientada a objetos puede resultar algo complicada. Como desarrolladores hay
que cambiar la forma de pensar. En vez de dar órdenes al ordenador hay que
pensar en diseñar el sistema que se quiere programar como un conjunto de
objetos, en lugar de como un conjunto de funciones (procedimientos) invocadas
una tras otra y pasándose datos más o menos arbitrarios para solucionar el
problema. En el caso de la tienda de electrodomésticos, un primer diseño de clases
de objetos sería la siguiente (Figura 4):

Figura 4. Diagrama de objetos tipo Empleado, Cliente y Electrodoméstico.

15 de 16

También podría gustarte