Software

De MateWiki
Saltar a: navegación, buscar

En un ordenador podemos encontrar dos partes principales: hardware y software. El hardware corresponde a todos los dispositivos físicos que contiene el ordenador (teclado, pantalla, ratón, elementos internos). Estos elementos no pueden funcionar por sí mismos, sino que necesitan un programa que los haga funcionar. Estos programas son lo que se conocen como software. Existen muchas clases de software dentro de un ordenador. El software principal es el sistema operativo, que es el que nos permite usar el ordenador, y también el que permite que nuestros propios programas se ejecuten e interactúen con el hardware de una manera sencilla.

1 Tipos de programas

El ordenador no es capaz de funcionar sin un programa básico, que se encarga de gestionar el hardware, y de comunicar otros programas con el hardware. Este programa es el sistema operativo. Un mismo ordenador puede funcionar con muchos sistemas operativos diferentes. Los ordenadores personales suelen funcionar con el sistema operativo Windows[1]. Pero también es posible instalar otros sistemas operativos como alguna de las distribuciones de GNU/Linux[2] o de las versiones de los sistemas BSD[3]. El sistema operativo es el programa que hace posible que otros programas interactúen con el usuario, a través del hardware (usando el ratón, la pantalla, el teclado). También es el que nos permite que los programas que escribamos se ejecuten en la máquina sin preocuparnos por los detalles específicos de la máquina.

Existen muchos otros tipos de programas. Normalmente, estamos acostumbrados a las aplicaciones de escritorio, que tienen una interfaz gráfica (ventanas). Aunque a veces no seamos conscientes, también usamos otros tipos de programas que no tienen una interfaz gráfica. Por ejemplo, nuestro navegador web se comunica con servidores web, que son programas que se ejecuten en otros ordenadores en Internet. Wikipedia en español contiene una clasificación de tipos de programas[4].

En el cálculo científico e ingenieril los programas suelen funcionar en línea de comandos. En estos programas es más importante qué cálculos realizan y cómo los realizan, que la interfaz que ofrecen al usuario. Aunque los entornos de programación para cálculo científico, como MATLAB y Octave UPM, también permiten escribir que se comuniquen con el usuario a través de ventanas, en vez de usando la línea de comandos.

2 Conceptos

Un programa siempre está diseñado para ejecutarse sobre un sistema operativo concreto. Por tanto, de manera general, no es posible instalar un programa destinado a un sistema operativo en otro diferente. Existen excepciones a esta regla. Por ejemplo, las diferentes versiones del sistema operativo Windows son en realidad diferentes sistemas operativos, pero están diseñados de manera que un programa pensado para una versión funcione también en el resto de versiones. En otras ocasiones, el intérprete está disponible en diferentes sistemas operativos (como ocurre por ejemplo con MATLAB o con Octave UPM), lo que posibilita que un programa escrito para esos intérpretes se pueda ejecutar en varios sistemas operativos.

Un programa se escribe en un lenguaje de programación. El fichero con el texto en ese lenguaje se conoce como código fuente. El sistema operativo no es capaz de ejecutar directamente el código fuente de un programa. Para poder ejecutarlo hay dos opciones:

  • Traducir el código fuente a lenguaje máquina usando un compilador. El fichero ejecutable resultante se denomina a veces código binario, y no es legible directamente por las personas.
  • Interpretar directamente el código fuente usando un intérprete
Un ejemplo de código fuente escrito en lenguaje M:
 1 % Entrada de datos
 2 n = input('¿Hasta que numero quieres sumar? ');
 3 
 4 % Algoritmo: suma todos los numeros
 5 s = 0;
 6 for k=1:n
 7   s = s + k;
 8 end
 9 
10 % Salida de datos
11 fprintf('La suma de 1 a %d es %d\n', n, s);

El código fuente se suele acompañar de números de línea para facilitar la localización de partes concretas del código. Aunque se suela representar con los números de línea, estos números no forman parte del programa en sí, y son solo una ayuda visual para el programador.

Los programas suelen contener comentarios en su código fuente. En el caso del lenguaje M, los comentarios son las líneas que empiezan por el caracter %. Un comentario puede aparecer al principio de una línea, o al final de la misma, justo después del código. Los compiladores e intérpretes siempre ignoran los comentarios de un programa. Los comentarios son útiles para el programador, para que pueda entender su código fácilmente tiempo después de haberlo escrito. También ayudan a otras personas a entender nuestro código más fácilmente. Los comentarios deberían siempre decir qué hace una parte del programa, pero nunca cómo la va a hacer (eso es justo lo que describe el código en sí del programa). Es importante escribir comentarios en los programas, pero con moderación, hay que evitar escribir tantos comentarios o más como código. Es importante también entender que en el caso del lenguaje M el símbolo % se usa en otros contextos donde no indica un comentario. Por ejemplo, dentro de una cadena de texto, indica el comienzo de un modificador de formato (en el caso del código de arriba, %d es un modificador de formato que se sustituirá por un valor numérico sin decimales).

3 Estructuración de un programa

Existen diferentes metodologías de programación[5]. En el cálculo científico, la técnica más habitual es la programación imperativa[6] y estructurada[7].

En este tipo de programación, es conveniente dividir el programa en tres partes principales:

  • Entrada de datos
  • Algoritmo
  • Salida de datos

La entrada de datos se encarga de recoger los valores que son necesarios para realizar el cálculo. Estos valores pueden pedirse al usuario para que los introduzca por teclado, pueden leerse de ficheros que estén guardados en el disco duro o pueden ser argumentos de entrada a una función.

El algoritmo se encarga de realizar los cálculos, y transforma los datos de entrada en los de salida. Es el núcleo principal del programa, y si es muy largo y complejo, puede subdividirse en varias funciones para simplificar el diseño del programa.

La salida de datos se encarga de devolver los valores de salida del algoritmo. Puede mostrar los resultados por pantalla para informar al usuario, escribir los valores en un fichero del disco duro o bien devolver los resultados como argumentos de salida de una función.

No siempre es posible estructurar nuestro programa siguiendo este esquema. Es siempre recomendable en cualquier caso intentar seguir este modelo, ya que facilita la tarea de programación, y también la de mantenimiento de los programas, ya que es más fácil leer el código y entender lo que hace si sigue este modelo. En muchas ocasiones, un programa que no sigue este modelo es un síntoma de un programa que no está bien diseñado.

Cuando estemos ante programas muy complejos, es una buena idea dividir el programa en trozos más pequeños, e implementar cada uno de estos trozos como una función. El programa principal simplemente llamaría a estas funciones, y sería mucho más sencillo de entender incluso sin necesidad de mirar el contenido de las funciones.

4 Referencias

  1. Sistema operativo Windows (Wikipedia ES)
  2. GNU/Linux (Wikipedia ES)
  3. BSD (Wikipedia ES)
  4. Clasificación de tipos de programas (Wikipedia ES)
  5. Programas y algoritmos (técnicas de programación) (Wikipedia ES)
  6. Programación imperativa (Wikipedia ES)
  7. Programación estructurada (Wikipedia ES)