Programa informático


Programa informático

Programa informático

Para otros usos de este término, véase Programa.

Un Programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. Sin programas, estas máquinas no pueden funcionar.[1] [2] Al conjunto general de programas, se lo denomina software y así, se refiere al equipamiento lógico o soporte lógico de una computadora digital.

En informática, se los denomina comúnmente binarios, (propio en sistemas unix, donde debido a la estructura de este último, los ficheros no necesitan hacer uso de extensiones. Posteriormente, los presentaron como ficheros ejecutables, con extensión .exe, en los sistemas operativos de la familia Windows) debido a que una vez que han pasado por el proceso de compilación y han sido creados, las instrucciones que se escribieron en un lenguaje de programación que los humanos usan para escribirlos con mayor facilidad, se han traducido al único idioma que la máquina comprende, combinaciones de ceros y unos llamada código máquina. El mismo término, puede referirse tanto a un programa ejecutable, como a su código fuente, el cual es transformado en un binario cuando es compilado.

Generalmente el código fuente lo escriben profesionales conocidos como programadores. Se escribe en un lenguaje que sigue uno de los siguientes dos paradigmas: imperativo o declarativo y que posteriormente puede ser convertido en una imagen ejecutable por un compilador. Cuando se pide que el programa sea ejecutado, el procesador ejecuta instrucción por instrucción.

De acuerdo a sus funciones, se clasifican en software de sistema y software de aplicación. En los computadores actuales, al hecho de ejecutar varios programas de forma simultánea y eficiente, se le conoce como multitarea.

Contenido

Programación

Artículo principal: Programación
Código fuente de un programa escrito en el lenguaje de programación Java

La programación consiste en diseñar, escribir, depurar y compilar el denominado código fuente. La persona que tiene la habilidad para programar se le llama programador o desarrollador de software. Usualmente, al proceso de programación se le llama desarrollo de software. El término ingeniería de software se está volviendo popular, refiriéndose a la ingeniería como disciplina.

Paradigmas en los lenguajes de programación

Los programas se pueden clasificar por el paradigma del lenguaje de programación que se usa para producirlos. Los principales paradigmas son imperativos y declarativos.

Los programas que usan un lenguaje imperativo especifican un algoritmo, usan declaraciones, expresiones y sentencias.[3] Una declaración asocia un nombre de variable con un tipo de dato, por ejemplo: var x: integer; . Una expresión contiene un valor, por ejemplo: 2 + 2 contiene el valor 4. Finalmente, una sentencia debe asignar una expresión a una variable o usar el valor de una variable para alterar el flujo de un programa. Por ejemplo: x := 2 + 2; if x == 4 then haz_algo();. Una crítica común en los lenguajes imperativos es el efecto de las sentencias de asignación sobre una clase de variables llamadas "no locales".[4]

Los programas que usan un lenguaje declarativo especifican las propiedades que la salida debe conocer y no especifica cualquier detalle de implementación. Dos amplias categorías de lenguajes declarativos son los lenguajes funcionales y los lenguajes lógicos. Los lenguajes funcionales (como Haskell) no permiten asignaciones de variables no locales, así, se hacen más fácil, por ejemplo, programas como funciones matemáticas.[4] El principio detrás de los lenguajes lógicos (como Prolog) es definir el problema que se quiere resolver (el objetivo) y dejar los detalles de la solución a el sistema de Prolog.[5] El objetivo es definido dando una lista de sub-objetivos. Cada sub-objetivo también se define dando una lista de sus sub-objetivos, etcétera. Si al tratar de buscar una solución, una ruta de sub-objetivos falla, entonces tal sub-objetivo se descarta y sistemáticamente se prueba otra ruta.

La forma en la cual es programa se crea puede ser por medio de texto o de forma visual. En un lenguaje de programación visual, los elementos son manipulados gráficamente en vez de especificarse por medio de texto.

Compilación o interpretación de lenguajes de programación

Si un programa está escrito en un lenguaje de programación comprensible para un humano, se le llama código fuente. El código fuente se puede convertir en un archivo ejecutable con la ayuda de un compilador o también puede ser ejecutado de inmediato por medio de un intérprete.

Los programas que son compilados comúnmente son llamados ejecutables, imágenes binarias, o simplemente como binarios, ya que la forma en que se almacena el código de los ejecutables es en binario. Los compiladores se utilizan para traducir el código fuente de un lenguaje de programación, ya sea a código objeto o a código de máquina. El código objeto necesita una transformación más para convertirse en código de máquina, y el código de máquina es el código nativo del procesador, listo para su ejecución. Un lenguaje de programación utilizado comúnmente para compilar es el lenguaje C.

Los programas interpretados podrían primeramente ser decodificados e inmediatamente después ejecutarse, o también puede darse el caso que se transforme a una eficiente representación intermedia para su futura ejecución. BASIC, Perl, y Python son ejemplos de lenguajes en los cuales los programas se ejecutan inmediatamente. De forma alternativa, los programas escritos en Java primeramente son compilados y almacenados en un código independiente de la máquina al cual se le llama bytecode. Un intérprete llamado máquina virtual ejecuta dicho bytecode cuando se le solicita.

La desventaja principal de los intérpretes es que los programas se ejecutan más lentamente que si fueran compilados. El código interpretado es más lento que el código compilado porque el intérprete debe de decodificar cada sentencia cada vez que se carga y luego ejecutar dicha acción. Sin embargo, el desarrollo del software puede ser más rápido usando un intérprete porque las pruebas sobre el código fuente se llevan de forma inmediata cuando se omite la fase de compilación. Otra desventaja de los intérpretes es que el intérprete debe de estar presente en la computadora para poder ejecutar los programas, en cambio los programas hechos con compiladores no necesitan tener el compilador presente en tiempo de ejecución.

Un lenguaje de programación no es estricta y exclusivamente compilado o interpretado. La clasificación usualmente refleja el método más popular de la ejecución del lenguaje. Por ejemplo, BASIC se trata como un lenguaje interpretado y C como un lenguaje compilado, a pesar de la existencia de compiladores para BASIC e intérpretes para C.

Programas que se auto-modifican

Un programa en ejecución se trata de forma diferente que los datos en los cuales opera. De cualquier forma, en algunos casos ésta distinción es ambigua, especialmente cuando un programa se modifica a sí mismo. El programa modificado es secuencialmente ejecutado como parte del mismo programa. Se pueden escribir programas auto-modificables en lenguajes como Lisp, COBOL y Prolog.

Ejecución y almacenamiento de los programas

Típicamente, los programas se almacenan en una memoria no volátil (por ejemplo un disco), para que luego el usuario de la computadora, directa o indirectamente, solicite su ejecución. Al momento de dicha solicitud, el programa es cargado en la memoria de acceso aleatorio o RAM del equipo, bajo el control del software llamado sistema operativo, el cual puede acceder directamente al procesador. El procesador ejecuta (corre) el programa, instrucción por instrucción hasta que termina. A un programa en ejecución se le suele llamar también proceso. Un programa puede terminar su ejecución en forma normal o por causa de un error, dicho error puede ser de software o de hardware.

Programas empotrados en hardware

El microcontrolador a la derecha de la Memoria USB está controlada por un firmware empotrado.

Algunos programas están empotrados en el hardware. Una computadora con arquitectura de programas almacenados requiere un programa inicial almacenado en su ROM para arrancar. El proceso de arranque es para identificar e inicializar todos los aspectos del sistema, desde los registros del procesador, controladores de dispositivos hasta el contenido de la memoria RAM.[6] Seguido del proceso de inicialización, este programa inicial carga al sistema operativo e inicializa al contador de programa para empezar las operaciones normales. Independiente de la computadora, un dispositivo de hardware podría tener firmware empotrado para el control de sus operaciones. El firmware se utiliza cuando se espera que el programa cambie en raras ocasiones o nunca, o cuando el programa no debe perderse cuando haya ausencia de energía.[7]

Programas cargados manualmente

Interruptores para la carga manual en una Data General Nova 3

Los programas históricamente se cargaron manualmente al procesador central mediante interruptores. Una instrucción era representada por una configuración de estado abierto o cerrado de los interruptores. Después de establecer la configuración, se ejecutaba un botón de ejecución. Este proceso era repetitivo. También, históricamente los programas se cargaban manualmente mediante una cinta de papel o tarjetas perforadas. Después de que el programa se cargaba, la dirección de inicio se establecía mediante interruptores y el botón de ejecución se presionaba.[8]

Programas generados automáticamente

La programación automática es un estilo de programación que crea código fuente mediante clases genéricas, prototipos, plantillas, aspectos, y generadores de código para aumentar la productividad del programador. El código fuente se genera con herramientas de programación tal como un procesador de plantilla o un IDE. La forma más simple de un generador de código fuente es un procesador macro, tal como el preprocesador de C, que reemplaza patrones de código fuente de acuerdo a reglas relativamente simples.

Un motor de software da de salida código fuente o lenguaje de marcado que simultáneamente se vuelve la entrada de otro proceso informático. Podemos pensar como analogía un proceso manejando a otro siendo el código máquina quemado como combustible. Los servidores de aplicaciones son motores de software que entregan aplicaciones a computadoras cliente. Por ejemplo, un software para wikis es un sevidor de aplicaciones que permite a los usuarios desarrollar contenido dinámico ensamblado a partir de artículos. Las Wikis generan HTML, CSS, Java, y Javascript los cuales son interpretados por un navegador web.

Ejecución simultánea

Véase también: Proceso (informática) y Multiprocesamiento

Muchos programas pueden correr simultáneamente en la misma computadora, a lo cual se le conoce como multitarea y puede lograrse a través de mecanismos de software o de hardware. Los sistemas operativos modernos pueden correr varios programas a través del planificador de procesos — un mecanismo de software para conmutar con frecuencia la cantidad de procesos del procesador de modo que los usuarios puedan interactuar con cada programa mientras estos están corriendo.[9] También se puede lograr la multitarea por medio del hardware; las computadoras modernas que usan varios procesadores o procesadores con varios núcleos pueden correr muchos programas a la vez.[10]

Categorías funcionales

Los programas se pueden categorizar según líneas funcionales. Estas categorías funcionales son software de sistema y software de aplicación. El software de sistema incluye al sistema operativo el cual acopla el hardware con el software de aplicación.[11] El propósito del sistema operativo es proveer un ambiente en el cual el software de aplicación se ejecuta de una manera conveniente y eficiente.[11] Además del sistema operativo, el software de sistema incluye programas utilitarios que ayudan a manejar y configurar la computadora. Si un programa no es software de sistema entonces es software de aplicación. El middleware también es un software de aplicación que acopla el software de sistema con la interfaz de usuario. También son software de aplicación los programas utilitarios que ayudan a los usuarios a resolver problemas de aplicaciones, como por ejemplo la necesidad de ordenamiento.

Véase también

Referencias

  1. Stair, Ralph M., et al (2003). Principles of Information Systems, Sixth Edition. Thomson Learning, Inc., pp. 132. ISBN 0-619-06489-7. (en inglés).
  2. Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley, pp. 58. ISBN 0-201-50480-4. (en inglés).
  3. Wilson, Leslie B. (1993). Comparative Programming Languages, Second Edition. Addison-Wesley, pp. 75. ISBN 0-201-56885-3. (en inglés).
  4. a b Wilson, Leslie B. (1993). Comparative Programming Languages, Second Edition. Addison-Wesley, pp. 213. ISBN 0-201-56885-3. (en inglés).
  5. Wilson, Leslie B. (1993). Comparative Programming Languages, Second Edition. Addison-Wesley, pp. 244. ISBN 0-201-56885-3. (en inglés).
  6. Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley, pp. 30. ISBN 0-201-50480-4. (en inglés).
  7. Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall, pp. 11. ISBN 0-13-854662-2. (en inglés).
  8. Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley, pp. 6. ISBN 0-201-50480-4. (en inglés).
  9. Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley, pp. 100. ISBN 0-201-50480-4. (en inglés).
  10. Akhter, Shameem (2006). Multi-Core Programming. Richard Bowles (Intel Press), pp. 11-13. ISBN 0-9764832-4-6. (en inglés).
  11. a b Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley, pp. 1. ISBN 0-201-50480-4. (en inglés).

Bibliografía

  • Knuth, Donald E. (1997). The Art of Computer Programming, Volume 1, 3rd Edition. Boston: Addison-Wesley. ISBN 0-201-89683-4. (en inglés).
  • Knuth, Donald E. (1997). The Art of Computer Programming, Volume 2, 3rd Edition. Boston: Addison-Wesley. ISBN 0-201-89684-2. (en inglés).
  • Knuth, Donald E. (1997). The Art of Computer Programming, Volume 3, 3rd Edition. Boston: Addison-Wesley. ISBN 0-201-89685-0. (en inglés).
Obtenido de "Programa inform%C3%A1tico"

Wikimedia foundation. 2010.

Mira otros diccionarios:

  • Programa — Saltar a navegación, búsqueda Según el contexto, programa puede tener diversos significados: Programa informático, secuencia de instrucciones que una computadora puede interpretar y ejecutar; Aplicación informática, programa informático diseñado… …   Wikipedia Español

  • informático — informático, ca adjetivo 1. De la informática: sistema informático, programa informático. paquete* informático o paquete de programas. adjetivo,sustantivo masculino y femenino 1. Que trabaja en el sector de la informática: personal informático.… …   Diccionario Salamanca de la Lengua Española

  • Programa Weasel — Saltar a navegación, búsqueda El programa Weasel (en español, Comadreja ) es una simulación desarrollada por el etólogo británico Richard Dawkins con el objetivo de demostrar el poder relativo de la selección cumulativa en la evolución de… …   Wikipedia Español

  • programa — Secuencia de instrucciones, escritas en lenguaje informático de programación, que controla la función de un ordenador. Diccionario Mosby Medicina, Enfermería y Ciencias de la Salud, Ediciones Hancourt, S.A. 1999 …   Diccionario médico

  • Maya (programa) — Saltar a navegación, búsqueda Autodesk Maya Desarrollador Autodesk www.autodesk.com/maya Información general …   Wikipedia Español

  • Depurador informático — Un depurador (en inglés, debugger), es una herramienta para depurar o limpiar de errores algún programa informático. Habitualmente, entre las opciones de compilación, deben añadirse instrucciones para generar información para el depurador. El… …   Enciclopedia Universal

  • Filtro (programa) — Saltar a navegación, búsqueda Un filtro es un programa informático para procesar una corriente de datos. Algunos sistemas operativos como Unix son ricos en programas de filtro. Véase también Filtro (Unix) Obtenido de Filtro (programa) Categoría:… …   Wikipedia Español

  • Transcripción (programa) — Un programa de transcripción es un programa informático que ayuda o realiza la conversión de la voz humana en texto. El significado primario del término software de transcripción ha cambiado con el tiempo, con la introducción de nuevas… …   Wikipedia Español

  • Virus informático — Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas. Puedes añadirlas así o avisar …   Wikipedia Español

  • Derecho informático — El derecho informático, ha sido analizado desde diversas perspectivas. Por un lado el Derecho Informático se define como: Un conjunto de principios y normas que regulan los efectos jurídicos nacidos de la interrelación entre el Derecho y la… …   Wikipedia Español


We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.